From 5f0e9b63d2913013db85ec497b24db8dc81dce7e Mon Sep 17 00:00:00 2001 From: Tamo Date: Thu, 28 Apr 2022 10:48:57 +0200 Subject: [PATCH] chore(dump): add tests --- Cargo.lock | 229 ++++--- Cargo.toml | 6 + meilisearch-http/Cargo.toml | 1 + .../tests/assets/v1_v0.20.0_movies.dump | Bin 0 -> 10909 bytes .../v1_v0.20.0_movies_with_settings.dump | Bin 0 -> 11063 bytes .../v1_v0.20.0_rubygems_with_settings.dump | Bin 0 -> 7055 bytes .../tests/assets/v2_v0.21.1_movies.dump | Bin 0 -> 11202 bytes .../v2_v0.21.1_movies_with_settings.dump | Bin 0 -> 11289 bytes .../v2_v0.21.1_rubygems_with_settings.dump | Bin 0 -> 7154 bytes .../tests/assets/v3_v0.24.0_movies.dump | Bin 0 -> 11198 bytes .../v3_v0.24.0_movies_with_settings.dump | Bin 0 -> 11280 bytes .../v3_v0.24.0_rubygems_with_settings.dump | Bin 0 -> 7060 bytes .../tests/assets/v4_v0.25.2_movies.dump | Bin 0 -> 11468 bytes .../v4_v0.25.2_movies_with_settings.dump | Bin 0 -> 11545 bytes .../v4_v0.25.2_rubygems_with_settings.dump | Bin 0 -> 7511 bytes meilisearch-http/tests/common/mod.rs | 2 +- meilisearch-http/tests/common/server.rs | 10 +- meilisearch-http/tests/dumps.rs | 22 - meilisearch-http/tests/dumps/data.rs | 68 ++ meilisearch-http/tests/dumps/mod.rs | 645 ++++++++++++++++++ meilisearch-http/tests/integration.rs | 1 + meilisearch-http/tests/snapshot/mod.rs | 4 +- .../src/index_controller/dump_actor/mod.rs | 7 +- 23 files changed, 853 insertions(+), 142 deletions(-) create mode 100644 meilisearch-http/tests/assets/v1_v0.20.0_movies.dump create mode 100644 meilisearch-http/tests/assets/v1_v0.20.0_movies_with_settings.dump create mode 100644 meilisearch-http/tests/assets/v1_v0.20.0_rubygems_with_settings.dump create mode 100644 meilisearch-http/tests/assets/v2_v0.21.1_movies.dump create mode 100644 meilisearch-http/tests/assets/v2_v0.21.1_movies_with_settings.dump create mode 100644 meilisearch-http/tests/assets/v2_v0.21.1_rubygems_with_settings.dump create mode 100644 meilisearch-http/tests/assets/v3_v0.24.0_movies.dump create mode 100644 meilisearch-http/tests/assets/v3_v0.24.0_movies_with_settings.dump create mode 100644 meilisearch-http/tests/assets/v3_v0.24.0_rubygems_with_settings.dump create mode 100644 meilisearch-http/tests/assets/v4_v0.25.2_movies.dump create mode 100644 meilisearch-http/tests/assets/v4_v0.25.2_movies_with_settings.dump create mode 100644 meilisearch-http/tests/assets/v4_v0.25.2_rubygems_with_settings.dump delete mode 100644 meilisearch-http/tests/dumps.rs create mode 100644 meilisearch-http/tests/dumps/data.rs create mode 100644 meilisearch-http/tests/dumps/mod.rs diff --git a/Cargo.lock b/Cargo.lock index 7b0897571..abdac2c1c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -77,7 +77,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "465a6172cf69b960917811022d8f29bc0b7fa1398bc4f78b3c466673db1213b6" dependencies = [ - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] @@ -212,7 +212,7 @@ checksum = "7525bedf54704abb1d469e88d7e7e9226df73778798a69cea5022d53b2ae91bc" dependencies = [ "actix-router", "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] @@ -285,9 +285,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27" +checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc" dependencies = [ "backtrace", ] @@ -319,7 +319,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27" dependencies = [ "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] @@ -330,15 +330,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed6aa3524a2dfcf9fe180c51eae2b58738348d819517ceadf95789c51fff7600" dependencies = [ "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] [[package]] name = "atomic-polyfill" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d862f14e042f75b95236d4ef1bb3d5c170964082d1e1e9c3ce689a2cbee217c" +checksum = "e14bf7b4f565e5e717d7a7a65b2a05c0b8c96e4db636d6f780f03b15108cdd1b" dependencies = [ "critical-section", ] @@ -368,9 +368,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e121dee8023ce33ab248d9ce1493df03c3b38a659b240096fcbd7048ff9c31f" +checksum = "11a17d453482a265fd5f8479f2a3f405566e6ca627837aaddb85af8b1ab8ef61" dependencies = [ "addr2line", "cc", @@ -545,7 +545,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "562e382481975bc61d11275ac5e62a19abd00b0547d99516a415336f183dcd0e" dependencies = [ "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] @@ -659,16 +659,16 @@ checksum = "fff857943da45f546682664a79488be82e69e43c1a7a2307679ab9afb3a66d2e" [[package]] name = "clap" -version = "3.1.8" +version = "3.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71c47df61d9e16dc010b55dba1952a57d8c215dbb533fd13cdd13369aac73b1c" +checksum = "7c167e37342afc5f33fd87bbc870cedd020d2a6dffa05d45ccd9241fbdd146db" dependencies = [ "atty", "bitflags", "clap_derive", + "clap_lex", "indexmap", "lazy_static", - "os_str_bytes", "strsim", "termcolor", "textwrap", @@ -683,10 +683,19 @@ dependencies = [ "heck", "proc-macro-error", "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] +[[package]] +name = "clap_lex" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "189ddd3b5d32a70b35e7686054371742a937b0d99128e76dde6340210e966669" +dependencies = [ + "os_str_bytes", +] + [[package]] name = "concat-arrays" version = "0.1.2" @@ -694,7 +703,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1df715824eb382e34b7afb7463b0247bf41538aeba731fba05241ecdb5dc3747" dependencies = [ "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] @@ -768,9 +777,9 @@ dependencies = [ [[package]] name = "critical-section" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc1e89b93912c97878305b70ef6b011bfc74622e7b79a9d4a0676c7663496bcd" +checksum = "95da181745b56d4bd339530ec393508910c909c784e8962d15d722bacf0bcbcd" dependencies = [ "bare-metal 1.0.0", "cfg-if 1.0.0", @@ -881,7 +890,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] @@ -893,7 +902,7 @@ checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ "convert_case", "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "rustc_version 0.4.0", "syn 1.0.91", ] @@ -1052,7 +1061,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c134c37760b27a871ba422106eedbb8247da973a09e82558bf26d619c882b159" dependencies = [ "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] @@ -1080,9 +1089,9 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98" +checksum = "c0408e2626025178a6a7f7ffc05a25bc47103229f19c113755de7bf63816290c" dependencies = [ "cfg-if 1.0.0", "libc", @@ -1107,9 +1116,9 @@ checksum = "4d3d6188b8804df28032815ea256b6955c9625c24da7525f387a7af02fbb8f01" [[package]] name = "flate2" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" +checksum = "b39522e96686d38f4bc984b9198e3a0613264abaebaff2c5c918bfa6b6da09af" dependencies = [ "cfg-if 1.0.0", "crc32fast", @@ -1223,7 +1232,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" dependencies = [ "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] @@ -1301,7 +1310,7 @@ checksum = "e45727250e75cc04ff2846a66397da8ef2b3db8e40e0cef4df67950a07621eb9" dependencies = [ "proc-macro-error", "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] @@ -1313,9 +1322,9 @@ checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" [[package]] name = "git2" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3826a6e0e2215d7a41c2bfc7c9244123969273f3476b939a226aac0ab56e9e3c" +checksum = "5e77a14ffc6ba4ad5188d6cf428894c4fcfda725326b37558f35bb677e712cec" dependencies = [ "bitflags", "libc", @@ -1393,7 +1402,7 @@ checksum = "d076121838e03f862871315477528debffdb7462fb229216ecef91b1a3eb31eb" dependencies = [ "atomic-polyfill", "hash32", - "spin 0.9.2", + "spin 0.9.3", "stable_deref_trait", ] @@ -1476,9 +1485,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4" +checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" [[package]] name = "httpdate" @@ -1562,9 +1571,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e70ee094dc02fd9c13fdad4940090f22dbd6ac7c9e7094a46cf0232a50bc7c" +checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" [[package]] name = "itertools" @@ -1613,9 +1622,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.56" +version = "0.3.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" +checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" dependencies = [ "wasm-bindgen", ] @@ -1630,9 +1639,9 @@ dependencies = [ [[package]] name = "jsonwebtoken" -version = "8.0.1" +version = "8.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "012bb02250fdd38faa5feee63235f7a459974440b9b57593822414c31f92839e" +checksum = "cc9051c17f81bae79440afa041b3a278e1de71bfb96d32454b477fd4703ccb6f" dependencies = [ "base64", "pem", @@ -1665,15 +1674,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.122" +version = "0.2.124" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec647867e2bf0772e28c8bcde4f0d19a9216916e890543b5a03ed8ef27b8f259" +checksum = "21a41fed9d98f27ab1c6d161da622a4fa35e8a54a8adc24bbf3ddd0ef70b0e50" [[package]] name = "libgit2-sys" -version = "0.13.2+1.4.2" +version = "0.13.3+1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a42de9a51a5c12e00fc0e4ca6bc2ea43582fc6418488e8f615e905d886f258b" +checksum = "c24d36c3ac9b9996a2418d6bf428cc0bc5d1a814a84303fc60986088c5ed60de" dependencies = [ "cc", "libc", @@ -1689,9 +1698,9 @@ checksum = "33a33a362ce288760ec6a508b94caaec573ae7d3bbbd91b87aa0bad4456839db" [[package]] name = "libz-sys" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f35facd4a5673cb5a48822be2be1d4236c1c99cb4113cab7061ac720d5bf859" +checksum = "92e7e15d7610cce1d9752e137625f14e61a28cd45929b6e12e47b50fe154ee2e" dependencies = [ "cc", "libc", @@ -1922,7 +1931,7 @@ checksum = "10a9062912d7952c5588cc474795e0b9ee008e7e6781127945b85413d4b99d81" dependencies = [ "log", "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] @@ -1936,6 +1945,18 @@ dependencies = [ "crc", ] +[[package]] +name = "manifest-dir-macros" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b60d42baa153de5741281aa3d8a0ec1866777902f8162c04ce7b7c1e31415e8f" +dependencies = [ + "once_cell", + "proc-macro2 1.0.37", + "quote 1.0.18", + "syn 1.0.91", +] + [[package]] name = "maplit" version = "1.0.2" @@ -2004,6 +2025,7 @@ dependencies = [ "itertools", "jsonwebtoken", "log", + "manifest-dir-macros", "maplit", "meilisearch-auth", "meilisearch-error", @@ -2218,12 +2240,11 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.4.4" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +checksum = "d2b29bd4bc3f33391105ebee3589c19197c4271e3e5a9ec9bfe8127eeff8f082" dependencies = [ "adler", - "autocfg", ] [[package]] @@ -2272,7 +2293,7 @@ checksum = "79ef208208a0dea3f72221e26e904cdc6db2e481d9ade89081ddd494f1dbaa6b" dependencies = [ "cfg-if 1.0.0", "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] @@ -2384,9 +2405,9 @@ dependencies = [ [[package]] name = "object" -version = "0.27.1" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" +checksum = "40bec70ba014595f99f7aa110b84331ffe1ee9aece7fe6f387cc7e3ecda4d456" dependencies = [ "memchr", ] @@ -2417,9 +2438,6 @@ name = "os_str_bytes" version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" -dependencies = [ - "memchr", -] [[package]] name = "page_size" @@ -2538,9 +2556,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" [[package]] name = "pin-utils" @@ -2607,7 +2625,7 @@ checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", "version_check", ] @@ -2619,7 +2637,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "version_check", ] @@ -2704,9 +2722,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "632d02bff7f874a36f33ea8bb416cd484b90cc66c1194b1a1110d067a7013f58" +checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" dependencies = [ "proc-macro2 1.0.37", ] @@ -2752,9 +2770,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" +checksum = "fd249e82c21598a9a426a4e00dd7adc1d640b22445ec8545feef801d1a74c221" dependencies = [ "autocfg", "crossbeam-deque", @@ -2764,14 +2782,13 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" +checksum = "9f51245e1e62e1f1629cbfec37b5793bbabcaeb90f30e94d2ba03564687353e4" dependencies = [ "crossbeam-channel", "crossbeam-deque", "crossbeam-utils 0.8.8", - "lazy_static", "num_cpus", ] @@ -3075,7 +3092,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" dependencies = [ "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] @@ -3219,9 +3236,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "spin" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "511254be0c5bcf062b019a6c89c01a664aa359ded62f78aa72c6fc137c0590e5" +checksum = "c530c2b0d0bf8b69304b39fe2001993e267461948b890cd037d8ad4293fa1a0d" dependencies = [ "lock_api", ] @@ -3273,7 +3290,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d" dependencies = [ "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "unicode-xid 0.2.2", ] @@ -3293,16 +3310,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", "unicode-xid 0.2.2", ] [[package]] name = "sysinfo" -version = "0.23.8" +version = "0.23.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad04c584871b8dceb769a20b94e26a357a870c999b7246dcd4cb233d927547e3" +checksum = "4eea2ed6847da2e0c7289f72cb4f285f0bd704694ca067d32be811b2a45ea858" dependencies = [ "cfg-if 1.0.0", "core-foundation-sys", @@ -3375,7 +3392,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" dependencies = [ "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] @@ -3432,9 +3449,9 @@ checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" [[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", ] @@ -3447,9 +3464,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" +checksum = "0f48b6d60512a392e34dbf7fd456249fd2de3c83669ab642e021903f4015185b" dependencies = [ "bytes", "libc", @@ -3472,7 +3489,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" dependencies = [ "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] @@ -3514,9 +3531,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" dependencies = [ "serde", ] @@ -3529,9 +3546,9 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1bdf54a7c28a2bbf701e1d2233f6c77f473486b94bee4f9678da5a148dca7f" +checksum = "5d0ecdcb44a79f0fe9844f0c4f33a342cbcbb5117de8001e6ba0dc2351327d09" dependencies = [ "cfg-if 1.0.0", "log", @@ -3542,20 +3559,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b" +checksum = "cc6b8ad3567499f98a1db7a752b07a7c8c7c7c34c332ec00effb2b0027974b7c" dependencies = [ "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", ] [[package]] name = "tracing-core" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90442985ee2f57c9e1b548ee72ae842f4a9a20e3f417cc38dbc5dc684d9bb4ee" +checksum = "f54c8ca710e81886d498c2fd3331b56c93aa248d49de2222ad2742247c60072f" dependencies = [ "lazy_static", ] @@ -3583,9 +3600,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-normalization" @@ -3763,9 +3780,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" +checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -3773,24 +3790,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" +checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" dependencies = [ "bumpalo", "lazy_static", "log", "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.29" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395" +checksum = "6f741de44b75e14c35df886aff5f1eb73aa114fa5d4d00dcd37b5e01259bf3b2" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -3800,22 +3817,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" +checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" dependencies = [ - "quote 1.0.17", + "quote 1.0.18", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" +checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" dependencies = [ "proc-macro2 1.0.37", - "quote 1.0.17", + "quote 1.0.18", "syn 1.0.91", "wasm-bindgen-backend", "wasm-bindgen-shared", @@ -3823,15 +3840,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" +checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" [[package]] name = "web-sys" -version = "0.3.56" +version = "0.3.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb" +checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/Cargo.toml b/Cargo.toml index 03f4f5597..33b961446 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,3 +7,9 @@ members = [ "meilisearch-auth", "permissive-json-pointer", ] + +[profile.dev.package.flate2] +opt-level = 3 + +[profile.dev.package.milli] +opt-level = 3 diff --git a/meilisearch-http/Cargo.toml b/meilisearch-http/Cargo.toml index 0a248f702..9f06debaf 100644 --- a/meilisearch-http/Cargo.toml +++ b/meilisearch-http/Cargo.toml @@ -79,6 +79,7 @@ walkdir = "2.3.2" [dev-dependencies] actix-rt = "2.7.0" assert-json-diff = "2.0.1" +manifest-dir-macros = "0.1.14" maplit = "1.0.2" paste = "1.0.6" serde_url_params = "0.2.1" diff --git a/meilisearch-http/tests/assets/v1_v0.20.0_movies.dump b/meilisearch-http/tests/assets/v1_v0.20.0_movies.dump new file mode 100644 index 0000000000000000000000000000000000000000..9d0f4e0667b29d7097d8440b6a08e4e83c521157 GIT binary patch literal 10909 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 literal 0 HcmV?d00001 diff --git a/meilisearch-http/tests/assets/v1_v0.20.0_rubygems_with_settings.dump b/meilisearch-http/tests/assets/v1_v0.20.0_rubygems_with_settings.dump new file mode 100644 index 0000000000000000000000000000000000000000..83436d4e72edd40d3ee56eac9ce6fbe49deb36bb GIT binary patch literal 7055 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 literal 0 HcmV?d00001 diff --git a/meilisearch-http/tests/assets/v2_v0.21.1_movies.dump b/meilisearch-http/tests/assets/v2_v0.21.1_movies.dump new file mode 100644 index 0000000000000000000000000000000000000000..ee7bf060002289a81667300d9cd9e80add4fa6c6 GIT binary patch literal 11202 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 literal 0 HcmV?d00001 diff --git a/meilisearch-http/tests/assets/v2_v0.21.1_movies_with_settings.dump b/meilisearch-http/tests/assets/v2_v0.21.1_movies_with_settings.dump new file mode 100644 index 0000000000000000000000000000000000000000..03483a2646364a1aa71b267a474cf5877049592c GIT binary patch literal 11289 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 literal 0 HcmV?d00001 diff --git a/meilisearch-http/tests/assets/v2_v0.21.1_rubygems_with_settings.dump b/meilisearch-http/tests/assets/v2_v0.21.1_rubygems_with_settings.dump new file mode 100644 index 0000000000000000000000000000000000000000..1bad10b87d44bc373ee1c429773d9052a5a60348 GIT binary patch literal 7154 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 literal 0 HcmV?d00001 diff --git a/meilisearch-http/tests/assets/v3_v0.24.0_movies.dump b/meilisearch-http/tests/assets/v3_v0.24.0_movies.dump new file mode 100644 index 0000000000000000000000000000000000000000..3d692812bbbc5d16a3b81250931cda3e1f4dc8e0 GIT binary patch literal 11198 zcmb7|Q+Ff`!)%jGY~zVLW+$20wr$(CZBJ}xV%xT@iEXpLcb$K5>TciF+E=xTI0hE% z|K-=U--h#{WSSZOoQB~O(*mD3Z3pmP{JIMh&=OiUI++ug5(wK*N?%gZ$Wj%M;eY<> zmGK_`k@At;aoQOIiKl8t1Nd#TnN{CBEr|}fed~R5vL6=j`)6WK;5%F+tk%6L3Z%X@ zBYofZ{;blXRJHoIM!iPwvr@UHCA%fR`oy85;%hQlbvW%g1!tg9hrPNfK)5hXyX__0qK__UmmHs zP%N@3JEx*yKLQ`fOzkU{-9sSrE-j0nHJcgnQoTwH(B+EtAyw6bjy-SRPs$@mfhVu& zu|s`Rs%JT!C*Q-nf$BSVF+OY3^I`(ej}=uvnf6kbTn736}=a0 z{Fx`?_gCNIa1j(&17;9KIIRqWL3AZfJcBpeH!Z@F=WN}6*L_&M zFjteW1Gz^HhSkI{cGB>tnxR;O#Dgu;Iaj3&2US|}ph6{^I<_6)K@3;g!owqdoF&bO zJ|%Y!WO5p)&UlvMNBxHUoLgo`uXuJ$<^kroy}QZv+;A|!dezFn#`UyF2D_-IAQI2_HL6} zy`KY#J=Sy_Z6!?_U#eGtR;OQ z7w!UTrArk!7E?~tvCXB#ZHX*cNH=3N|7*m+iR5M9xq(W<(S}1CC;}R9)=x&dH@NcZ zSQZ=QmZ<~G1gBk~Qn(wARKrD`yp?2a%ImClo;W|kL6Wgk0PTVj3dGXeiAvm$Cw4Tk zFCLlL$mL-xs7xKRc@(Cy9ZV{t=ZlZa;;nXD16B-;31Cgt;ro#}nF;rbeDMk+Q(24Y zwAM*%L%=2cu)f)B$mN2)u~E}ma(L_O#dorY$W0A%-|1+>blQt{QK zJ3p*6OQd1&gba;FbA7-RJA*?o8JxgmCu9_%G(O;$()eKJ>8B@{6cSKDGb#f;qPihaGmbuc_@r;4 z_czOLz`|BI6EsU}RI-#X0%_bU75#0)w2`}?%AW3KEl`-AQ9bC$O(=ZY0%=2z_!xbeL>ssY=%HJK*4oF(4`JV8F zei-{Qmmp^WmQ5R|akuR&>(ta-(McD$b zIn*{#dgtd#{R}9gqx2}9429aD|5NWI3$qtRFN4ePM{CeqU~yROo3yw1>micQsJYk1 zm#ifDcTpwes9>^rg%{R<>qL}y}O-bLwjl&xiLc@dS} z&EJkpB}>LNrrjbx<0J)ZT(D+^z#5UEGzKCVE}W}0&bty5{Z?VtwW4=p5zqJ0i<)6a7&9+{uf3~}z2>I-(rPBLtSC{TO{?#k%M>7pr&3!;(WE$HOL z3PN4yNQx16K1ObXOP&Ar>gw3-l{qTFAyN#%*JOe+`l<4Z;yklOE)UmY;uFamScYS!Zmfqv`}l{ z1rxf(D*i|&!p~GM0TFx0d8GUD8` zE#e|ZRc8%=#3+pU$19ghR>f?R^0g7!cCKB!nr5oSUs8V=AzIc;_ei-oZXIP`N58( z8=UzpTTC6P2?w03R87nRm-tk)L|jNPdJ8+f08_v>q$;FH?u^*G3(QnJ&~WQeqYTCiIHYS{C=@W;4}TuCaJ z6Z#H0W(-*Mq9%3_osrPu%EEXcpf?3mrcs`h8lV?K`+{EG~D1ce%W@Oj({4o(nwf>1fvDfQ1tDLiXeYjSkh0k!#n&kHSIHne-5iF zu@-c|RDy^&Uf2{>>kB^%=MtvHME+rE1yFK5t;C-{fio$EL!h8e8)-nRJGu=UB2KEZ zmks5%CPyhYyk+Q(#>e5%vT<}f;pew+MW2yxQfJVPdQq;1#t*AJ{dxwyIS;&UpJ@4^ zA*7SRHu{><3Zao1pe(LU#F3XK;K3Hl6V8s+rJqX1&IuF27Z>H~8u8Mb+E(tF zL^W#c70)CFpDJ;$%6%fgKNll(VTO%^4-Y%oqqzT*U6mb$14qHC3m59Zdr$oBne0RL zy8om4WHYp3y6(mQq1=(lH$!B=K2&I3vtz{;<9k#6@IH>8gu(Mf!QPto3|pgJvl0F+ zIZ`F@a1*2%8_ZWE3>$aU?sg@lQva+nEL1HJ zxRlANT80{Qy!R3owaRH0k$*0#lXLb2#^M~l{FXMYLsIX;qJzAlBYdxj&K?c@SMp#{@g<74iLE!uYbLh`_?CmSK8)ZfqY|Vs{A{!P7 zY0>P3RmQl5Ma(}XUQZI_2W# zeP28o*n?_cQ`66hE(GvC5Ho+>b>xiMVZP1abM6_z;Hrc29_nJHCVV#Rdv%1l$)ZKi zBvh_#;MPcj(|&R=Fc%YPjg)Jm0ynDP3N)khuJzk0f-E8;s#@9St zE48m%@u3v8=}fikyECBnY%L9jcN6av-ZDEH^U-{#`?em1%JBjH+AT+j`L7cyiHWJ4 zm!uR%kVuSwbC(&mY`-RU@3*9}8)=#+$=ghreNes`DlJXz=&nW-MaIKZUB`Uh zm@(P(9VhYo z)sV=?ETPoW$|#=ZW{e19Dv?>|3dMU2AysW&RWkRuP36(^oFW#|NhD^N4MBgH|9Ld% z1dv2|Uad(~bf#vAyyd9u#HOUEPPa7Z1R4-3+%g*UAyVUTSs$nzAn_3gj)-2&6Xh~B z*cRzn7s0L}G_yvDTHv><2EQh2^CVXY&Hp+PKkbsF>d82ag$vz8*bhs2y@N@55>Z}? zeBB#f>V7w4@pH?rJK*Pz>KXePG3@SG)~s2Ta@&6}{#l zCBE$`8y?AHAi$fR`AsVPB*QD0@j$Z^qngRabR3&pn-1G9qTmEiBNPm)<{Yj?!BC3k zm4fJ%6FC3-NVxYv0F53I-BnkHN-o=*W=*u+|CbytP5z+>qstVha-Mn=sx=&f>g;Pq zg~!m7jO_;xsYaXkj(?S`+UH`Iw_{cvObg$!oW&4u;-p!>Wznix9nhgontUl1{l=AG z*`{ILYTl=!7n9a0Ujucpn_@)`L4GEERODu5r4T+hZixy{DS*e*8CHGcv|4;SuvC!gF37EC zZbv0S+%I+qQi;s1FS5`zNz$~GHSSQzLPKXq==j_hddn%DK6tXrOgyOOT}X2ALUl*4 zfK;NBGGZDVMWu*$)8ZE&r+&C5Wi4`>NF-11=k$}>2YszIkRJkla_eTczNaRdU)X(k zxbb##`Btg;JT|w+zr9O$tFaKWo{g^nque9zGK;;FpDxc=TIsaV!Kzn!kZUH1G#mqK zk}w8$mx=CI3!b#;fyg+pZo7;qf)hoJ`_TE3`gk!AGLq05Wpdf&o$}Ic~A$RA=-M_D=4 zw@031Y&xeY=eU-&*F$oiIzbcedPB*j2jIV(E3u|*wRd0DK@Pvm8ZD2O5-$&xq072m@= z;6vV{l1S+Lrv5ZmLN2m9S;Gg#QXLkH~!Bs7jAV z!(ygQs_VOPt<&rC1KIbS^^#8Nzyj_H zS68mA0!TP&4QL_Lk_ZYlHRTO?HAyMtV1P&H8vcjp zt1uCmkN01QDKhnWIW*0=EQ0r?xv~Bt6I>~+RaQ;A6LK$NB%DID91;PErZdCf=~KFK ziy-b?9Z7@)eADEzTh*({$l6-*)suf6t$ldQ%~PqfuGbY2d-03diG6FxigeeOH8$Cs zd6TA}TC;R0v?(q7$$)I0@^G5mwxH2mC;6B?olU+=dU6$^B=RO>A{3fNde38`IE)uP zi>X$uhCDwo5%~9>+Uzo|mJ{LKDJIzFAc)BfNdFm(0a@~g1v!;W?vAGYG3YpvXrw=7 zzQ&){>!DkC%*12QUdfX?tpnsC;B@F z0^T=~BE1OZ<`Z9-_58WR5>=$`D9hZz;9Qr}XooCD7!^}i?3~*i_$i+oOo;s+)R`uH zUS()P`#GZn+VbeA5XLQK`Yj--^465UO_cOku*(Yg8j3X6Aglo2%R~`_S+gtJjD&Bf|j40QEQjbdzZcE0^u4-%f4?81o(=Bu9MMo(ylqojdzU8w#U{59; z4a-9j-WA>HmHNLoDUW%o!Cd11V9=vfSYIX3`d>0}5=(xJEb4se!bO1JL-8vphJ$mG z>56C~l7C7tnG?=Ma6N7o5!;R6DsoiHJJ^IlKC%i?Q11@%xzXLfO;g{=!2Dh+cu7ML zP0d|ASOtCq7-HNz^s67Gn_tLM?~VcEOY>~mExEyV{)Emb7w?C%VV*`MhZYScld5^^ReVZ#wEyj8)6uq> zrl@d+Jc6WH3?}{XMIw4+r>W>%G7!EKG^i*wsPtiy!{($uwhaut8b%i1;h#Vf~z37PeS*_#YrD{@*Y_p5Je%SuE^zf z9Y!HV{>8mZqYJNN!R+eJx)xEeikt|2!`bLRXZ#_(`lD18#?hqI zDl@8O=hENY|BWQz^z^)AvoV2J#GF!+TlB}ig>Es~F{ay~ zvZjdK)U#Gh8ebb-sSQRJ+Z$*)4zEU;?&-{VGqC6hBon*Sa_run*nzs4J6|d1E(*LK zor}tb&dGPEP2=3V^k^tCbixd8gPb6g&IfgF^KO!&(einh8<~yG!l~TUrqfNxo0+`D z(OVTV&Qoq=85wA5?rTF{#Kc=eCny23l6kg&ibBJyo%l)7MHco;=h>!6Wd+C(Y3#6g zqGm@RlVZeQwc-U#e$XqhX0fqnxSz_O=+`+6(4Tly5~C3wG;y3y&TAX}w6PWiG0@8m z`XFE2xwtF|(F{&FGzvK=IlXuCh*(wX@OyBSTeE76EteS8g%V4tgbAsaYpeN~brGmh zaQm$LjH6=)5el^|X(XItbbJs7>vROA&%h5Bbo0ocO575|EW`R;Z7`=KPwgi{kyq#v zE@Q`thS~h^i;X9;=(!~F+e$7;ME4@iF)DQ)nimrmtjk%W6*qB&zTQi{X!g`=@ffF` z?ZoQE=R~edY+(=xU5*q`KxI!Wk2}q;Q=~86uV? z`0&WmqF(A?apY3dBuIATe@&P~(+MQaC3x94X)};9F_1OV@aN3yV>@=WPVk-wW6cGO zdYgt2<&MeJ;lAD7 z+ab_ROkVtrW8soquyxf;JEA}C?l*KNm$&7ut5KpUU+r@+zl|9s1%;`bCa-@iGUhf* zQ7^Qa?A{1FxVgv{QB81$OwYsymUj>6H6G}OEzuRf2{^e-=c%?xg4w$8ox6DiQs4pUH#QJ=6l`p z_wMH7$@SLF2sJ`4r9JjqUtZUOOOqR3&l06ZjeFOMv0u*){R>TE|BG_+n$&}V2Hwkg zkj`WWFcKzS;F$DYHs3jrpQu*IML1k6oj5{?Id|re6%i`DV$X=0DDDp3)y&TL`!29R zsZ$u^W96+&sRsprGa`kc0>o-n#1g;nw}24%BAXMe7fGgM4I)bmvj;u#|zs0x*@UBNcR8*I%F}c zjV!-#QhAK{E6_6tfK!4+X0nbg;d-$0sovfQ=Ihsy)E$Dr3duH8M6&Stl00Z|`$6URS9?|C;KN;p88gT&j+iDwT3kKp|GQJ8t`k=@+#KV= zEVye!_Ku?*7Kq~~+%BTWszXqe)J2!K;g0nXGHP-Wo4ma1KC0-`|1%W}>l`{)W9}ug zE}QUu{^SNHr_iY;SY-og+FAV_4_O{23j~`3W*s^-D*?4&zsB1TQYhAk#i?FB)O;N3_p)90^iyK8yvq%D zYFDjC)HmFjyAFr`?wJR!;m4>;6^xqA<|Xr#g;l}w&EQ0TA$h49R6$yUQP_;nMZasU z)>tUODsEu>G8GC?35F;+WUM2(O*6+0`#~O9g05uc5aU;PqbfUh%p#5*4!lHlqf51? zDpNcd@n)4gHtfe0X+%^GQR)=oIAnfJk*tQJ1stjY>hQ*an&Fl z_ILyzO4sO#6d4N@$(yBwl#Dz5QP*(f;kFj0Qp)L~wc*W^mZv!#54<0j_6kTquyKj*4$ z&O_MXs@{RL)Wz(EBLC~I&}6Y9_$4ol{l42>{Ak5~=NaHRmFfTZ;3Pa(_!ugjOs6zy z!4dbgp2$yPc#iN~Y5qY^&>x-bj~DF04-vr()tZoBNP4m6l6Tl~O`z`6=JR+6eDN}Q zdTzyzE$&)MtEo#AMw^f?+dn-ej%i%GL^JBy8y#ZVE zlM8+fW>Q6lTO<$7URmD0Q*0+Faf&YX-cI{F5&r>y%F+T(-ZmbD;G--g9jA%SU|d_lo8MC z$xvj5AuF9kBt=nc&*_>ePxPwnuIzJpT9_>4_^&XaLgkUQ(I;eW>h0_3<>jW@!*{cr zrw6~87?{9OUW0$F7PDQ6g;5N+lU(Vul3jd;)|1iU%BH6gq?wmeNFZ3y$Rm?|tkZN~ zd_<$|Bn$K}$mUCQ`zOMUF55wJ9XEiMdGP_&p=Vst2)*Gb$$7>|?r=&g(ZlF)*eI-j z+GK306^()aL}SIh2EGKu(Au2~_w}5Uynsa3lIib>k~$j>+C_ayKYAAMXS<+^NfP2a z5yw@^*AI+bT7fyOem$(6&Gjo^d!Dub@L!Z1(J%G!^vKiaZHv!K_)y}l?pupgzh#ek z?vp3A@Q^!M^A4PPYyCL&%%KhDdp@Q%a}9Cs#++JWms}OI{!rr#95D(+h1XQwd7E~h zKU^xD|47OJ*UA|Q90T`!0BXTw6KW0kNbqATW1hH%qOkE3Y|XB?usqIL%x+wF=kK=e zAp>uHPEl^zy4{_0t&_aNriW`thT3qIA?;TR4K6jygPBtyAeyTW7$SOShi{n?Bgnj`0N?TEMcG6r%iupN62S=TO{*1 z)S;qHAvYJX>hoPZU&QsG8ea*2qUtk!R>tytTj`68s^9gQ=}U%K*D5;w-*Yac5TUhE ztQlNHd(`v}TYQ{Eab{1Gjrekq0nLv~N}6T-BR5yIZ;L=DfPzlApSH(cU&`P$a>)JYY^XIrt2 z>9{r7V_fBZNR+s##ddi0mxuQa%K{kvyk2j|zXiD?gp?#M%cy|P93j%jxe+G+h{~8? z$bC)$>`^^}=b=PXhK(Swz=Ro8u)4G;m?Uh`UkAbHl$Fb5?L48pmcEJk(4k_p`$y8+ zJpOzY95M05TQ3bcGd>G5Z^!0Ye6SXE9Psg1uj1leGujQK8#Lt7>I@3;na~-%Cw>If zShkQpPSqk%#w-HG&E~_2+LDx9+(Qk{$uOtoyi7oxo~BNObd)1N2IhrHAQXDjChA3S zdgZuTQXYH?d)afM-+q$)(p5i(+jugGQZ`k?e40a*VMazCbWvNm44P%mhnn3IeHG+2 z#;w&4CP&d_h0A|o5>y&XhZEl?zs2xp#9Opo`&Oh$%eqL`l^Z{3%1neH-*)^96lgY= zs4#qEdYK5~L~s!>Hcy_^1N75K%jl09&8Skji~B8{NqME7t!kredQ8VnU{m1bSc9VS zE3b`Htp>|G7eIIOcnYJQqdu2Wc#J7#y(na4@6G7ux`K{X(|+B$YK!Mcp3H~C(+#>6 zc8oD~WW*vp<1XA4jrQ_70o|bP-{(_r^zMgE5sxua&%wfLN9)LkUD-o3G#B#eRT5LJ z-+(TAis;m6+xsAG;(;4d)FVYGJDd75PWEN?h>m}6M0wK^&Ix{30M`Mu&@&Li{C7i! zt5GeauCxr-7KV&{@K#F(tf)k*y~=OiL>S#E`xEEPFL=I?<$ab>D=ebfF4*JglLj_l z_nENb$!@k(v z5i)s@tFHndeM=Kzp#^zKwq(gL1d+Nr=VnHmlh@TQl0|IdV79HBi>G1#dgHlB1y2s1SwRy+v>lWE zW7uo*IUSIjknVT7Vm*YnU6Ee@yAnyixWq|CMxkq_?(^1_y7*U1O_w6b3g#o=?qhxr zggUNzXYhU3;PLg{2Pza!lC!zK1r-P^w*`QPZk@iZ#$3l!7Qd__=J}+D7SBs*NC^ye z&lUqBHqV;!3{lyAxgH#Y2RIB4ENJC9{ARx`_utqbpH0jqcN3*cA7Q0Dg*WO-j(z=W z#{;AT(&|D-oPu$IG-?aKK=OUoM1LKL45p^StfEL zglPuoYwl!F;MVvXWRm7J>+tF!==XIS@VD*a`FaoZ=%Xw4lY)am{F&|d({P!770{xr zcPLP}SMv?hs};Bod^Lpzp@9j$XzWcZyLfolKN7>7+1AD3kn9NG1{8aICI6(@)@*^? zs~T58dxwDObf^Ws#z{;Dzuk_ylw_WvW0*fX+9qwn#ErAWh@ZRJwU?_~an>+;KvPTr zq+oX6&>;#Z?`EZ%b&GSUeyuCa%IvB1rAt$zPMybQ+~iV#IqZu<59{R*=<`#c5Tx_< zx@Eux3ZT1+h`A0ZeP9IX#BKfu!oT*mvjGJpTn@bf7d!q}`(Jf;tnoD=|2}*v+sEc~ z=Hcg;=xNC*C(-G_*^uMg*hs@FPyXeKeeu0T{P+x+cjXI)nlt*bw1wjNyj*@&%Z_)c zlAT)~HXUavTZ#v`FHLXtTkRhv;zEJF8`_AJGv3)=O)@?l8ikKTVkAE2eR_vC4gYJy zYjhK}jgwN1v-}yz89( zFOgpb4pa^l{JWD8F|9P_t2c*kjoOZCDF4FURBf#^bj~EQaX#;KY+YB(E;_Yde*#;- zGkx~7byv0$-ph8)SMz|k7EfXU9Us|?A0nm|Z4J~o_0|E0gKjlPV$K_nT3eqnCOJDn zUEh;qqvk6h!_|h(G#Le}mo4Y^9rO5n9Vn$Hr(Qwj37s*YlepJCYmR(kPoHwem;ZVS z&zKX;GtNY581I5ExO%r$EAPL4u5EZFKW{lU8S!8SU)smYR<3+ZRlMgAvDJJ|KY#AV z9iI8yYkO(3-S1D8W=otY1eG=v9&qOPxk-@4f>Mjd1o0Gb{qn!Du+@V+_rmg1+x}F8 zoWI=pIn z`8Uh-Gyj)bA^5w45Yd%krQOeH-lWU7)-lzhB<&$-em<4Ly?Hb-pPy-C8{95K9gI02 z2_NY1b+$|PVr8YFcIO8^IUaylHq*EicZbs0boW(*vrADKEko`F;&k&RAb9w7}&r0otDy~cJchP!TX$$oqYA@ZDlrL8Q1_v@`GQs6CM#HIU z_R4;6vsZk2#dD=ZcE#&seaxeglk>{7(ta39QeOXH5{FCHx_WOUnJ6gr?_`vTbO~lz z|HRoKJ8@UdFDMp$i}bBA)1>>8HJ(7PiWYsmaqIweHjL}u5yRYVh%`~3WBOHmIogi@ zddH0+^CqOE9Jw%H_a)uPW~SCmxs^q=?`82mRj$=@rOTGCCMj1)Z}|D_2a_f6-lTG# zg`=d=V#44+xjyI=X~4v0D)e*~U}4^Pl+*F#Yj5IW)t=CrJbw z+FOtyZt0naZT{rn#<*pK^eI^_mMmrNWM}bb8g@sM7#eA9g!4u)yt9}3&8yQQ0v4DI zByfe=Vsg@+80oHEt!+Dg=0$A(#gaeMUqvT~l*DBf-WrCX=6M75DGp@uTd8~*u(w#D z=KTzN$WBbhh}z@@aU|5Mq$pzoG3I=NhHgkJ9Zzlw8+??tfn$9PiJ6Zo(@I|uU6N?1 z6`Hav7kp{NV1@3r<;h~#(@cKBm8w5HMryw8+p?2wKIL9M?CbC0Jtzfko*&+N1or5p zjBt1vPA1VWo-!E__UVa4`bZ5sk1($_`JGAvVZc%?vCFE`!EJ4GrJpmeAxXPgh?Ivp z&e>lRe~J7<9z}j%M*!g&xk={Mxs_VTf=cPGYfC~rMD86=*(2qny{i5GiHbxte^3@0 zMKtVA@-6w$0dukyKK|-sqID@8^n)BQw{^i(VE}2&62#nIjQa1hoX(p;*&9>Fm*Jw{ z8v`e&0s7_WZ?JM%pAMkZ$%ciWbW1Ap58PBChL&sBPX7D;W%Xrs(Y{7EU! znP19J@DpiOATe6h<2G^~THzSWx5L%}__q4gNW9b&SZ5(ubhbMP_)H{Zv3aUY7g0Q!3uXnuG0}Bw$=8$O zT2VTf-$O>-d>>{9OLo}uy!6*a9qc#Z(lLKZ$1ES}wm8td_1kz3Ns$|kk@ck7T#zl1 zpKZj*ab@IB%)bu_x>NcE&28JQapZIgk4dC4DK13S(tD5!Fv?YTL`{tArZZ$M*Yt8a zJK`e;3EqwKT!bWEcI|l8neyr~<;W1G?bYO@D=8}{Mjc?-D}#xV5wCzzLQ$<<|1c_^ zz)=_Xr1Q*&+wsOziN|gamjrb+2Q5WTY&Ris2IYbYF)C@1Qfj9zF^Mh@l-5e@Ojc6!y$-NbJ% z%qbf09uUN;a9L3?5NuXDPym(fUi2$?fE>z9z~NL7jm>?=vY731=it=y^`&W+HvXv{ zYjyVR=_Su|$!VesygD{%-vhaLbg+)l4H<-=nQLNUhlI*mQ~X1rii?#B49W~_hpYE7Y6)%HAy*>TZ8Al*_-n_kh?F%qY3bNA*4f$_ z71!(OK|+rzRnZ$vESPyTR=S?fifD>}Bj!mu_E8 z_cuoa+QjhshkQ7Q9&_SEmjJk?c=6L~JL+At=bo$9qK}Yg|2>tFD3TXUqO}nqNVjnI zqA#%M-yoImqd2qdUs4SUkgVIf;C&v$GLSKeU{829o!VTSn`_Lfk`kjaVCbAH-Jx;( z>(3^UnC9I)v578$GtpyZS=#|6zMs|%3;dLsv`L-B9w`X#4*%juRZcEVmu{!+%2-uv z@D7jr9hL~Z0r8hDbR2@QUX3Pk!mms~Q$>}= z>X5Fi!3p7G*pzi|Yu)U#gr#R!T-mlUSlOiFvQr6!TS>mia9*lE#wq-i=t&j(WM|E` z?u)5_rm5e=^h@W}?JVX(9iNw*Lzk|)_E?Wl@m)!v@xV$H`(9j+4*0v9*^id(Y06Xa zx%0!q!ggq68Moc9_BLxIcG>D0wQ@f0qZzW*0~zb!U@c$vi$hJo5d2=YK7^v|>n;1J zcBH(EM5dnkNyGQ+okmAEWK0BjGdcI4un{0v4coceUJ9%M^&xv2CA2if?2*68w8R29 zs2~&QZlI7x5Tch_TzF$0$#8Bi+4PTAy#fqVQQ@Ai5$S%fvMGxvcS}iSu`gf)fg*gI zbdWhNTos7M@B$++8DgUB$}?B7weFPOJBUy-)o`Mp{2>mtK5ga)n$BlZCm;E$K@G80 z68pFH{Ij{LMSna&a<~JL4z4;`7!>CstDbnOS}nmF*1^VUxmt>27_qDr;q?kKk8;kZ z`}kP;L@Wt&!TD@)5!oXi?#q#AJb72mOq-Ml`VC_vj4TdwDPH*|WT|;$(qeS>Ct(Ui ziSaUP{A$?86PZ_>>mDLWs7a$-fr7!FiF0|!cpl+JndlsT*u+ zYMd#cyaK*NXbh0evyzu6sKNWKDLTv%smoe(xjwBc;^U9DvgKwZH+=ow0$2iYfs3dE z%OJoL!H0m;*H(N>XOQKqir^^D(d=9726e0`HrGQ-Cf8$SnSl_e{Lj0s%3B6Q1ZN72 z_xL_;HtQ=AU9-ojm{MbSSZhtJpqH_@n#@sYwmwD`!2uj_f$3XOa1H@La&jdvl zgh9vA!PNiiO>^^3G|f?W+*LifR8=(-9V}bndIWPezl#LosI$5+43rKK`H4csL@nft z2%1~0NVhIXW7Oc;+F?db@w$}5P17`cQEPZ(JbB}p7U|Zi;=Ti#TvGSx+sxUDv zD?iLixkw;{P`Zb)%Pn(gs6||ch&}jIDh}Q_3LG@yggr-QYB^hjBB*^?2}E+0M6;;t z3Eo|k;Bb|cY5TYm4nic^AM)E#UlXIL`IL0m>n&s^T5xVq%TepDa0PQp(4!+wnpw3Y zSDhtAH~kc%VqlHee#9yZ6c(J)z+B8|Wl1U~kW2o~GS`(+ zvXkDVmLjDizx&pn!1iPcha3t=vNWeKe_%4kgHf|3jzv3m_>?fd&KZ|dszV7f?1RyX z5urVqWPiuZ{0K{^H0`jm3`{lrl$wrv0f06tH1e%n*2=qZ0wP9%F5BN?~#LuMWv1d#Q z%7$Zu;P)f^O0i0+En27cq* zr+vye+C~l}nTr!4RNKd#*@4NQTEl^+H_+x?-^Q9{veYm`RG>^jGS9qDtWm^5eq-J& zGHPeMb13LNW)~7jK;y(;7(Ez_8QnkcCPEDzf34&LetXFVl!8Jtice;~M*;~o35Za> zmX#&f82_MnwpXL8*1F+>LolbVP{QZlO@Up)R%fMLyvEQMvNylUsmUmqf!$MWQMDYV zj-gD*89yeL>w~!gwwykr%FL`cQaKvQmZQe{FB|K>a@T?#|LQ6tdOLB#NMk`j99Q<~AqQ`mTapbmwn@~GYJ$c1kiVp&qC#P>?8n?X?4&oysOs8rO`7WMEcgq8A*SAdMDCyQ1*9L$1iC~ie zB~rw**)Zq<%d$gSbd1Yq1CiJYyao8G_Q&#`6q-|;vKY!6=!-YU15%byKo`lBYvn1| z6BWcws^eH-s2v`ECjqk-&$xF8Taj5v6^o&2LwQ7>>`hApvyx{|-k%Ka;jY=G2pRTQ z3%;pEgI7<;x#*=Qz@(=W+7x(xV3^cq;3g2U&Ac*cj$0sMPB4!`^}FH9BncZJZXp8! z#^XvI!0wVIri>*QQZv#NnIzn+nZgUc9`}3mrnUMCq>@ z#Gs1|x_(1&^C@CKRo-X<_S8JRxTR!oUM>z!w$0{>EyX#+zxR7Bbd9W^d)1koJ_wz= z!EFIjD{G@SG4r9*qpN+{lS{Gdt+Dvjmm66}>(|Cs57&$L?BSC_Tac|J1{SR^DT`($ zNMpVk;O_oTR#V!Gu@_cc0T(k(Ntyr*TvUY7OHRUcOkF~Pn>2@hx)mXce(@HqBc9Xz zCXBdoQYv|f;1EfFs|C>q!k|;wKWau48Hh6@dy1hsc`_5H?Pt`^win@y7{rJ2U;T$P}MWv!bZ`SZiVHT z9=!({Y7H9uf}VZ}xJu_~!S-mK3^>c)G;JW!X4k&=ckTEud-Shu1D*Z3f&BSQU(1I-pIA=>P8MH%HgEB=W_Bemb;Nk^t#&S(rXV44(oVD_=@k8amEEmG}cx4qI zR=iTC@$XadmWj#Z8G1A8c%^{}xP(RDRBrd4V1 zr&pChPF}v{W0X)la^$OtkZ;mRENeWL*1b7*a+Msk{Ttk_;FLu?6IDL8%%c%5Qnm>T z81kp33`&-qHvNsk?m>~8APNIb?JJ&cZrXPPYkv)HiGK$C?rCsxYlK%clpyra6a!OF zh&lw!3+rEQxNM263Y2{=ln&?oPKu_|I`6kX8oU9jT8U&#OzTu%AeO$92vG0KIB zQ>uySF`d}u`xtZ!_)${d3aROGX*Cy~t6-y{rxXCY!cBm%!&A7PP!kKZT31>+th*~x z*uvVSTR3GzYzeG*uJCeH;7=K2YQ8`FI!@+_t5{6Yo-7HpbCsz4*bt8zKBVJb@1sn4 z6mPpVjCLV3U+e|;26T%Vltv>~wYtSAm=|gy9 zW6i2b-3gEVeKSy}H06^NF(_Ol#}T(eHgc%wA_c@zpR$`)!@BA%eJ6V;Kv&?HjJJ;f z$dB$t&W&Tp3H8ZqL`b3!?C;C&6zI&3%SBT=9Zj7*z52M@+a8zryr~Kl^oM=K$hu7F zGAIST0zoV9D33fA1BJJfMNIJY=6>ZhPWNlzxuGzd2ayu(Y$G58d80m}T%|YWvk5r5 ztSwYCFFCS9Znjqq94d-&@ixPsAfHvxE*1^dGTj+WeXl0uw`jyc>UW&$Rb>u^6(|b^ zMdM3WP!~t~Dw6fJxu^ck;r|jGjtRI8cMSTPeH&edA0> zpWK-3{2^_Kd+yeyfB5@oBVN5Pb(~yH$_Vh+qbp5HD(AK=<(0>??B8)#`gz49fBpzZ zch6!~2cCc6i3k}ap0y!nw&?YV`BJLH8zMd0z11d!1Om0eOwuSby)1edw@?0OLOGO!)o7Ub=Sm0 zdzz$g5Hx0h@0nVt3}Ia7YU*aFh~P;M&HP6cmS>C9i%G}E>4PGLQK`0a8%BNb@jLH3 zGS!eTHD2(#J{zwxcHR(ymhNKZ{GQGd-zQ4K8_mDxw=2&FnY#;; z*X`4))UM479sn)CV@0gX2UZ;docz(_*snw}X~JyM6-#*&W~d#&eF;Oan5a>fVJJ0c z{Sw06on~TrStkFk-Bu+lKv`Q-q4+u96)uBJ!5KvDybdjH%Bmt|ZrO(XC(CVYkUz<- z`2=J*X`uc~%G;9Cnbp&y{8Id@!gzk|{%;QYuL)O7D8e4Vte@0!SwF5Kg_5PhD)@(| zXwE`Ru$UukbAApZR;L&hej|zbjl(}1j3;LD@PKQy&HQY6x0xwY9{MtQ z8 zEQ^|#TzcBLSE>^J1Ax-dI&)({NkG#vmr*N29WZ)fk|fhZC5~+f^^XW#J5#vp!wB4Bf1~yvZB;Y< zrb0iitkh6*|1*AtFO?IA5wCpH8eC~2#>;lQEbi-7o?|RD8=A=YU~#u3_J1R?sCJP+ zPFZHGb5jh~4EpLw@s}>#q+x8mKs8aZgZ4>aS9EVv^hil3e|{J9wwF_~@7x!roX=nP zBVSpJiwuU~QX8t!{HAuQ08@OZta-01)HnCft{A8{Yb7ei?_yGO1Ae*zu6K90 zi*=IGB){9(_$B3SU3l8>n~VV5$FEcp*MRHVMfy`!e*e?~(E~*=NUTb9wbA*zw1=3> zsVMby6fePY@AAX0k>8_nTJfj*l0PS2X(v6BPEMflt1I5_(ZJla>r_a+e4m-eFr) z+)dHZh=WW)1IPhm&@Vo1Unda>aKD?N7Fq~q4%^`)ebeaaR~IJSp*b2`9eCM+mMHWH z!-hykM>5rc$4G22&!zGKs-BHdq#?=}(JJ`(bYiw;Nb*13F4fFJD#9SzJ0R!rm%=0JogKw;uNY zrG5jlUu4DhXBr+p(FU9YoMlg%9VQ_emu%KZ4^8hh@<>_Wsl!tj1BQZ)t$Ct|f(H9Z z(SGz&M7f90hoA)Hx#&a=#~2zxre6j<5+vz|R2ao7 zyR+!g6iKnmV&nIgF<^Q4M&bWfaB&I%vfIbS_3+D~rHc?0XP^JnX*I3&Hnfg9{&Q#% z+{q_|R_RoQ2;T{%DTL6k+jen`@m|w15UH^3 z0dP5VD)X*hr8_>6!X5A~WMd!|fcqFEh_Bc0g_jFq!SxVjZCmak~ zb3~}bt*5^we0f(vL`sP3=nN?^$}q=%5rR`ADw3%prK5K z$Q$0NCp~08f8Zb^(`9%xYqmESBLKzK)?US(?$$Cj_IDCj z-j>3GIIFN9(O}Z00j9d;5>u;%sHM6zF)i;PfM+@NcuAY*!L*|kj}BI>EkJp#d47n0 z(~pY3h6jv7&G?7umruM%HFV>Nc5hTdLk_48RtT}dPF z+HvIXMn=c9&De537s6mPl4Mz&rbp)HD7=Q&>m}`O*xz z8{D&&QZK>5zu6W_GmaZwpqLn6%n>%95r~Jdmqi1^!^^g&d{y1o1gg*gk2ky1555jJ z`z;vCg&kA(_ePV3**{vVT)H$X_7$(_U$;J%8k&iC9Sx=fo=T9XvxKZw0(fw{FQAqJ zR6=e;*tJm+=a@m6iwo-w^v0-j{QDXr0HsAMxqvYD^i`-NqrKiRk#h24S>_nxb^*1D z$o|w-RVF17N5v1vjQRlD(Kh{Oi%j)y0SYHyulXc=94_TjN>c#3Y`9jQv#7>!QlbqT zo%Y0E`EpLF5lft!13(OeRiMu1f*Ajc?fDE*?9A3;xi8^L=6jx`f{7K2fJ}N4ei#uYP#wdB#s}ekZ zM!?y?5Eq-7BpngFq98#mF-~|G+KyEAd=FV?<Q|W>oA|)-NvJ#TtLxI?RABzn{S+WPa87a1q&mpQJI6%WGcG4CTtgVpy%-5OYaPGu zF=4RrRykM#29H0ryd3&uF@}iT?^9cQgt~QNSI+awLuBkrLmvW(Z2H*StQPnGuuI=j%8tGKmI6^mT-(V=wTjchzY zqQ|&Sb7w^&%i#9Fu&9p4_h2k zZN?VoSthQ0z{5x+`>j08N;i*-n2FBUC2$J%)@?_04?tVp*s&j7)0o{+deMu*G z9slen{1cg+d5PbieycCO(g5M7bharV}T4*kIaWFZ`_yVt|^)yaeE2UZQ;;)bD z&DVz*v&(I}l$`I@f0y1awwqTv)!5z(UwkjmXji6&S?bm3n5x0K+HS#YAchLnL*nX#*sNu=MPm4l8?W|}$1uyJC9wxSQt2EtoymSR+`xfuq8%~jBMG?$OC z4jGnmqdhiFA0|)l|8Rjdrp=up_+8QprzMFw4{N3mTSw}$@b-G%`5*JBcR`2uH9?;g z3FX^CFFOI#Ps5)dQq>TE$I|C}{MQ?3vd@oxGS~MuOTj$_yTEk{kNCMdkFR!$2=MrL z;35==W{2XCeYpw|Slqs3Iy?k=rF+>81?>HA2MXkT$%8gvn-oFjVJ(&7Tle15@0 z-V3(9=Z;Spr>pyr914lw!5LILp1uhq7eS@mZPvmOxw^E4=J{Luy(>&u+nh9*JE%OE zUz%R%dw1VdX+rR@=@m97h3kh+gN&8#$lT|C?j$5Pp#I}iU|jg{@s%%c^Yc=SM`&_r zxaad$&e-}R`5^kgyHZr_@`d5mw04p2N$sfh+Whk~@^qNwDyIrE4Gm>Qa6ie+<6R0b z^eHHQxVs93o@2TH@CFX49S0S5mw!$II$rZXg9c>M*pLhStbQ{XzBIXSQPX%2RifE< z#6keEqE^{r_-I{v-@p>-Dq;-Qp$Q(+=`3_H-HKC3dw%=8E(7*;Plz+Va`FYV=myYIKhB(F&e~M7)1e z)p+mr$RC0O*Z&&$5`+y2`S;-{I@~p9Opm!XTx7q2(!)2hNQD&KwswpQn_T*v7uWy@3g(x?xZBh2W&Or z4|wG}H|(0HXpLOBzUc380R4h(r>;XgL%nsw%eM46gm1U=OzO04GWKQrLAh%OR# uOv*Mc+P^#EW^6T`RP#1ob832aF!h)vr><#Oj7u&k4SrK2IZ6K} z2mL#yK|kyNQ(PzMKS=#DmPwJ%Ugv2N-S-`+VB0hY^v`TgDe9jy%cQ0acEXrx8xM%_ zF(+PMf8_dqH!0FWMDrlMO`=o;`Q&_JyQVuinjGPU360fqgb7SY_&E1j zZz%@5)?&M+N$sB0bU3RBMCo6z+-%=hENN1Q#xm4Fl}SxC?%e7p^d zHMs~<_jTpEs z^Yt7)wRH=zOTfznDUnPCl75;6M|61qo?3LzWM)TnIw(42u5BG; zU&}1rl+$1_&3B34nnETvk_3x$d~mMYokuB{PfuhK1UXU7Rip*K-pWk*FB)38tvom{ z(oBNq6}J-Rqeq0>aauI=V495e437^Po@LpMn2gR`6cHFsYa)Ls@*O!mQy!wCY{S|6 z7Il5-0BM74v-Bp!+_DgP=%0}VL<|rTP3{&ZTSnwo>~QMUizGN+7NP+{oPoIFYYzmU z>&BVA&)J^mbf(USotri5@q7Ar?6&i9Pn3V=x-ou>*oZYLyq1`KU{_ogTqAMn(gAgZ5@)eMXj!7++pTW zB$y4+mQe}eZMu!hRhUd)ziG+$Og#*UeyTL4^V{n;5FFu_>}R#ZfQcRvQ=5P^7)4U) z8pF)8Gw|&?g!%V}S9X($Bv(!Y=86A8rmFkPn>w{tS~4hiJ8NMLnu<$lVv8E!zakx35eWUktc}5q&8LUwjkj%;mbvuZgd*aEx;{;(k~!71uI$P%C}UnXOLts zA)5CV?sq!0b{xwzjm~N~upk4=;WbTmC9+kzi`v0E592L3uqZ)ENpWz~_C$tS)!5SF zUC3~kxk72%u-0lhrg`dz(6q9jw$av0_T}~0FDzI}m<7@8_x7eDod~0x@Sga(o1ey8 z5PZ??3*kB1BI<4rQ3Wc~?xP_#1e>YX00%jwO33mmdmZMY?u4LLfB-U5?}Uaukpb6% zQ50aTd1XI<^C7r`F~`_}Yyp+uLTV(dvH}o*5)Xa@>4J6*#h95xI)T#mAo%Nau?X8{ zazWrGymJNaya&|-(Th87Z_Vy72WnBLQERBIpO;&NH`8>B_y7i(N9k(SLGmgUH&Fsa zW5~gVLLeog?1A2Hvb!_kxlQwsN*)^;Tk}z%oeSQUFq}%m5_?Jij%;+gOaFPt3M@lr2230- zivi9;x7U@`u9}kW(2T#`cru))A!f2>mG!ob>Myl_XkJGdtj<_H;V#3sGFoLKkmTDU zjKU&pl^figbh#9JkV|Ps<$Ss6tf+`&{wxJhMZQYX+eiX#A!<>yX!Y70DPGkA)=T#g zwH06-K)YGufRB`pAhm7w>Om(_Z(O$Dh%am)Mas;6-WjZ?Y^w?9(^cp%(zrd#Cnlv+=itXjx)J$`nD+;Rs%h4!+DXWQ9JJ;9YKElmw)*6uYUF8KmF_f{l|a(?|=TX zC%}*Y{`bHB$AA9um;ZeT#?&*rHaom%+-PzwIl!)InE7)k6h5*5yoKEVFJ+$Otplt5}`P%*hNwxfmBb{B?R~>;G#e|0T#wb(yItC zE`r~Ok>dAs!F*P4BdCY<$S5UwC)*Q z^Ze1HGr%f12ce}4N)5&JG;n40J04acQU8|uewk^$74AWiQan1$xYy}epJiE;nS3<6 zMrV%!r6IATnBKM0vm%@TMM0WV9DBS|(7uBF8^{fSv~HmcfE$oJ1h^n_aC-4$WM;q{ z{1B>Pbk_rHhVQy)F$}>amDSf^8ahNGJHYdRZpFXb)Z0cb%~3osQ(I;rw>O?dPKSKC&hCh88oD|Q53uQ9}x z8ndeBbPe+r6rIb7Bazs zwTN|x-t4~35j8+oSS}^LH4Bl`CjCt*tbWv*#cOWp4Lu&RlB+x`*Pgnxi6^;XX-+-85 z0ahb|x#BSeI`c-bHmB-Y^`j z^#oKop+EJrw9QF;zkfDd+^n=sW3fSS0OTrjU0STgjnw%+E0d(&5mVSeA)s|pZ1eNS zk5}L?I9#e*MDdvDkYa%)y8;WST?LJj z7Q;y}@I^>U z9AUtawe^upu~TiY3h)8}^LYq;9__c<^xI=dTnc}o)^XZYrg$K#lZDAO0`jkP13Y|DQL$c*P;_pDF^XLi@0ygRCAtC>l|?KJn-Nt$JoZdswue(Wtr)V|f|a_m^r zefw30=W(aMJwLSTWwA!80?U|h#0qM~b{Nk>b<87QBLJ%IgJDQtl;DKbk*SbzA=&FuFn+_zHy)xpK{x{#RF{cKqdfAM+1uQ?12@3@8@oICE?%V20;6WV@7aJ2 z>M42JeA+y3YtM)Dfi6knXYSb5%=P zldDE=vz}Ume&q3H0TiUGRU7lYx`H4{cy(X`nZ_xp4Vw2fVW~N zgNvfbLI{bF(9VB0>F^ru5O8qDvtIc60XnJVfXx1#V?s+n%~&b)TGqqkU=aR#4d6aR z3Czo{%1C!9c3Vs$cu)v4@)F*4jxxh%2b!7;Af`!ifSSVzCu%QiVr$|!n|uMBaH^NmznLBZtx?_2AKOZor2EW_aA zeFyOL@Bbl(@cH{+pW+yfWWW=L;5)rCHN9aeBAKt%*X33jUmUk|zL0uP@6)n7w z!Qo5SclB{>8?rHS(I3Y!-c6p?e?{aX2tv&wzndhB`Tnnq0EBQ2`$J%<@a z+j!`~cxkfKq|*C|f+l?40pxB9aO^J+Qjj5R&-qrN8hQ;_R2i=U_< z*Y&6~8U=A<=9mtE!M1|fI27aafk zkUitJ$1S(5AbTVV@;v6TQxv4^(J|S06y(kzzHx)M737RVK`yw1b&>}udvxvbc#vt# z49c0;L2>R#6l8MB%u^Jk?9rpvcoYO#(`K&ewH4%zL_xO2nQ?-Gv^~0PJR#0BXPmh< z?-r`YNHpYG7C%WtXpr1v<0*tp8&j>>jd64&T!M$E3Qy7yTBJu^Z#)|EX54fXJ=N0C zNXP__d#-y*DFhY?3&YrWYE=up-ZNMy4bhRX37+M8I)&a>LuipMM-Fc+8ZyBSP0#H5 z&`9V6&!v!7PSB9HNLcmpXvmqlu4!3a9~uRp;LV_+!%nG<o&mX^uog^xU8`ip;&) z(aJ-XgnG+XEw}{cca`W7zNOf#qATYTy2pa9}7|diQO5eprEdX zMnNfnhFrsTPSTLFNXr?I4^ax))-!l#U!IPFQ}AZgfE;R_q9J9G9ve>{q83tH%<1?L z8wIBT8e$N!PVpgak@jfnA&}Ucxwh*VR!2jl;1obZ7M|feMMG$jCbP#voYHeV+R8Y0 zI(tKG6r2KR$ngyG{`=pRMS9E~OFcxf>H{R_bvXq#3QobBF~f9D*uJYR()GrJ6gZo? zhGn^39~uRx02;#oYwG?LYh{rp_r??DxHGeuLAz+1jf7KRCa?IAdum8oq)kWULnfPX z$7bDAuxuop0<$S+&M6vF7O77CjzvQbL<(kgkNL2Xa0<-vxP6KbX^V8su^a}b$n{cm z`_3^EHWE&OdA8-;pWCi1k{ixgcJL@NiBMxR*4YJTBjFS{{>Mr8-@&Ual2SgFD96qX zHUpnmM_*dUfk(nAaBg_^DQH_;q+^Z6hd@IPRB*P}Jyg6i$S@#<{2;HKnSy{Y1y`@w+2w9WdZCja++5xH`lKU2vZ2Dwo!ifIMS%0l;82lA2ZXUiOUHH zQ^+QkJGOriQYA=Y=f z*O6W*)JIOzgQbF}Xj?&;LiKHKBa`HHWI9UykeuB5Q;xCOlR^kgL9Ti_lAU*GI8qzK z^djjB#gTohsEPV00#g_Y2@|bnG(L`W6_kud8Kvu~Sv9{y2uxupWX!&v(fBx0B2buu zT;~I3`-$Zcn8Hvf#AD|>bUCt|aUun4NB^76cdUxQ6ox|mz}j}+q05nCFqOt#p*+Tj z;hOG;6oDypg@`CNsL$g_A(+|+9nmMXa+;`*A~1!a5SPY!uFvgAZVe_+K}V)J^~dBX z*T)c;!ca&(Y@Pbtj-*C}lDDlV%aLM6Q!Hl)OkpVGJuX|PK93_sVYr;0LPr>9O_72j zFomH|HrvRoe;nzQKnm4SLe-}GAp>CwRM9qW!5>Eo4ms69<5@U$ZvF?t6u9qLxgKpl zj_juk6sDl3`H}r}5ED5y5T?MKw9$h0aim=Rv>+6+v)N&z`TML82vcBH-csmtq+C51 zKolY!6;BltIW-Wbz*fGI(fB&D0wq$g5!FX{Opiu8l}5Bpb1QTQVG5(k=|*+R>&Q%;cgU#6LqR$#1i}=8wKn>k zzK(Q9iMD-YR`fmYIhX&X5C~HU4Q)H$q1%yeDEV@JQag-IZQ^nc!W1GnW4&7cab$>~ z+zj2vbOp;`Q&)N&3j&z(Gycl0j%JiDpwu3N* z{sQSnHrC_Fd)NwyLPUp{$IoON5T;PdxzWAsab*AJqeR5X8hPmFn1UQKdh3IW0t`d3Idsw7`Wdf~i7Y6rQ>JeeaPm;xQGn`?udK90QS8iFWf z*5e`7nQaFIQ|JmYr>y78J&rVjsbkHNKh{PL=By9|Q=kz!*G9kX*OA32=b;=OAX--Q ziJS%mQ|JnXnyjCPUPlJZ9cx}a+DI+u?+^r2=n9pZt#i58kq$G=ILCbnaqy2q5KN)} z_U^8YYW>HNqfHKsLZ(N5gKX~R91u*QD6l z&&GNjSp?Gouuh78>WiPL0tvwsx$}|JNToozAF3-~##{1q$C?mKp(|9BwxiJH z$i&IUs#C`l^D3Lzc7iYk9_4B4wcw8$&rZB6v{-BdWAWT8pm^;6r(CtVM5T?+7vDHBuKi$g` zgeeG1Tc7s%$C2qECsw1AxPNWA%`=S?geizp-{v+Hx*b_4Ij3DAwxd5}$P~*J2vZPm zygtM0k0TwWBYOYEGUftTv}u8)*8^hMtZLbAANv zyyn)%b*yM#R1EF?b}mQrp4(+~t!a)bDJ`BCg*>IJYE%Z@ZWly#QZd=8*fJJAKG_p2 zX-0I(wedfVt&$E5=gIm#Y~N}v3GZtGX>EYi5*CV~PAgn;qJYmu_z^Ap@*vh7jfc1K z=kfD#?PisCW&Yb(TFvm~61QEyZ{LC(8{S&^oTD{cj}K5-riC zN1Gye2v=OKsMO%bd9)cTk>uqpWKqi@#@-(Pvi7p=CHLm1v0|L6JhU(trokN8tod#Z8}7HR3m89bkGY8x|@~!5dGh-VwcvH ziEhNchGFF1(1(GNGql>QjEQF11`fd<&WEC)0lDicx?2E@T7iKNUH^b5lhcPb-=;5JE{l)B#PhARBjY3N?zWGW-R1|_vPlAKXM|voo@SxpEsh-m$pPX zkn#yz@A0CIX{QoE@~515anbhiLb_(Z5jW|@gT+jLeaeTu zZ_~ch-!0Ok=xj6d82(R^=Xop(5rtkdNcj>DwJT{7ll&V*T*OUOn%C2J^|gDMH~aHN z@QdFzX=dv2^)sczf$!DtmTX|t_MZOP_whp^{oQdUXOBQP-VBFxpGN(q6$&2Nk->O> zSwnVVIU>W83!h#ZyOF477+%LGYUkIk8TMKA3ZoK3va>Akuc|cGf{RsUB<&$A4iy*~ zsdrQ|N<~2`TIIQ@2Vo*FF|{9=1Lyj*M4$XWe#A}reQFQ_E3;v8M1qzL z#DNe*-VX;QAiil>adm2NcG`;FkwLJ%t2xBnm1~cPo%69@$BM&xR;Qd80Phf{1CnVZ6k8?X&Q9qf#DM65^HYLH!O zi20RR+*V6)*iV`~AuAm42Kh9^!0maF@^<6sg=?`zqqRgyNEwJ@qhP@Mx&#)dPh0fo ziv#b5LlM^_wlYUBfB!C5a4PyN{7Awk0bd`HbNk%Aw{faM0#qoO6>Jm6Hqj}o{_#@o zFf{_i={%}nWD0VKGA1s3OA%++2pZc{A@f~qgX=-ckpQ-Q`YoNGSL#HjZ7M6jva>Z6mqZ>FmLgX+v(^zE|I2O&78Y6Xdoo-J6lDyd02nh3S|k7J6!;66z%7L8IMm zN<4wB1^rp&8#~GnFnS3YgBwH!(&IXS3?qr_g3LRBKLl{^65|W^h1nse1}7ob6AhjG zY=LMcK4KwtQAI2PVIU7>rM$*WB7Vah<%oQiG&9D7ZJ}@kDJ(08c$R<-7xbjC;o^6x z%nfy!++{3a-=u0wO3G*0pl+lRI>VJ(VE-pni_uMK5tw}Z+Cn;Y4Y;Yvq_Tt zT!Fi>^!Dsr@32}gGf=lXHt*E6a_>$p5~UqD3vqs*4jr#eFHL(@b+kl*Fo_6!9p2w*Wd#Q@7i0VScRJ zl1PVnRbZ|Li<^)if>FlDNc#KbH5r8H_R?;M>A5CQBQR>yL$n-mImsavE{;jk49)j+ z_oO8M@^m4hhm)B77DCLGcRf*cRLG#62_{*Tltqgy;#J%Y#8kwlmDi#YZlsHg^(6nH z!uOBXb29;~2$Oc=LGm&_i0^Q9Pw9k2qrHCnH>X;ryW!+m~w!K}pGS@=uxT z&FyK74g z{tDmX@BZmlU93m2NH#iq_^Wzi4P@#L*!mUzUz00erF-mbo;m|}5L2+-PuJSeStD(+ zZZ*dPl48sgPIf~ZGs6KR;7Hh#j@BBXThu2;XW>3i^s@KF0-K6hsllIP%Vq{Au-u=Wa!GJjQW1^vEn=M*@&hEwH zILT|kd^6`t3R%Kn=ziK5CT+P*9biXAr8lT> zue-gkBKFqFhmqDU*wnHzo{4n@+;9G}`!aUI^MFg}Ne*=0sz`Ni&iEmj>|`(7(^(WR zUL2@;3nIm5eRcn9x$4{4G?&yNS6jJ2-qUL+)1YoJx6d7{+`)NuVOT!`e^j8mLRJg$ z$}pu7BjYL_t!8rDtb4oH<_Ly_4Fzu~?i>gb9qOQByU_fbfMQH#(wYIk#W%f)Sw^Lj9q6pmCU-f%UT0S zEg?=(m=6g`YZR2m8@gZ8il(X;+j6OCp-bV&99-R8!?RY>j|}q4xYhjT|GWeQS&`_C=9|}r=Nu_*pjm3PZd;=^bDuM+{*AE!mHJC?&JbWOC$l&0{qe#=*>)Xn5J)Yzh4^(>>{cB?xXQjPd6`HC zW@W`d-9ZES8AKA*ykcgRB79uk86)dUl#8>(!IFTBViV`{aA?32+Sa>4Aq9Nx|3*T% zPZ%J($~-TE;fH-Cu8Jj(*}~;^G5m4w;Il&-@w0Fa@Xu#EgN6=YkG-(<7)rM8fM!#Tn1sJSVK?@ zdyU8%)qX3Mv;M1yPF{Yeur!woofpSBO*AYjAEs#Ounf1+W+jb9;S4<$R=F;Mdjjf_ zRce&&dkF(ndc>q(KxDOa1b^r(=h8eUr^L7}b{FjP($m}L{mo3Mb3z#{AJyUf9fXcT zB^-Dj8fk{MtAZxpVNg&iO~$i5P>RZzzOt1lh7e51#L2TS&T}z}Zy`s#VgSRK)AL6# zqQoI7OQPokKzKTQqIuCU;TRLXlst~M7yEQ42vfBDD>VBYVB`2DV zp5BOcQxa(qk_0Ad24e`{Xk3h+pb!3g<0+Dge7gB0VOazHl+<3Kw-n_z`MA^c*_Ywn zF=@p7d0ZM*i;fu=c3vop6>e}Ne9mnnUX83%yXi0vgVwmMHo-&6EikNo;ejnoN$k1F ztxROaAMNpB&qYS>dUGgoaAyY%Af|a}Ka`?)p;t0h6GUy1;@T@VK;RvvDg}!wR*}Ry zLt{l9JCSWVaRd>XM}qZ;6Cl>WB(>l~pUY-}W zPKn#lq{skadA{-7AyjYo((I#@Mg7L*?r_dZ;BM7Dg);o*S$O z&^BU-fykp^1hgmBS$GbNkzXwsRkX13OCw-{ z(d!o)HE@24=v=oJl0J_LP`xypJ)Rsq{d;c1{*L}W4>Iw>?W^_}j!L~s1YNMoilQ_o zwSyoSZcC|8bYzA%7bR{o{(nG7V#K^aLnv~b|7L+riI?yQfZ0gS%Iz(yo1l9K?o6&( zU1yjoLoB&)=N?IE3H9aQc=w5-u)SWxY^Nz#iINg=V66${rt7!;mMsnK=D-0hg0&e+ z*h|O&f<;GX2o#cAP>)JeM#0Mlx)53{p!kyrqh(=Xnv&d1;+HbwB!!-9N^>8~@wKbt zTcD7(XB>X1bL=~np4!pn=FiP51Ya5O^zZNg_qhqZ?yvo5zP`EP`fGni%u+L2vBw`vPf4v8 zG7?quf+%cQN1?isj%dQ3xRqE_EF{9hk~jF#FoF7ahOLPdJ>lGdT0dk-7%H^`zTL{GYNJ|Szbbr<+wPCq3cs|@?3>@M zOSf%VqcDA&bQ*>jz2qX`EEsrCzbO={ji)K>3mPnPlTF%FTc3IooQ#=yhha@>Wh$z{IPV|B`v5z)6GmOXKE^By z09`kc7dd*073}JAsge=%8EBFaJnZ+pr3#JJzrxPME{bUPqUH@G@!vfM9XPP_ipX_s-7?#BjU}GqbTy|XsycBl_ z3${H#dD4O{Xbwp2yQXy^S{t1f#6IDJU*+jN8+Uo0y~`zi9%fBeI)CMCJMOsE-?fF5WGpmq_Gfmmyl!hg-*NrfJ^l)HHC%X5W zl+K^6_gdQ;#JQQkm?w|prJK`>CZ%FLJy&>}yGE{;SdOBLU{U9XGKa{xw$=g}QAk4H z(r5lP>Hel3c92n@biV<xm!VkmsS6a8S9&1H8&E6yk)rgg zn2ye}@5Tm^>4tQBmcV(TFaaKiLPMos=eY|VV$c_YWoshPGwld|2X=eWSSz!rIVI`3 zE=4uk9|s|le2DuSa4I|MP$k1VIqk5i#Eqp|%vy zw#CepAkEDMuwr>pt4xC{R4}84V@pit_-08dpEU!ipt#68W6uiR==lsO-w2*jeLQ2) zxN!@^Uy-r>TJtD>%M`$5dFC+7xh=rc9RfNVsp_raRTuKKlxu8)*b@6};zf<*&#dXw z5q-n^B3B&K(+Co~pAsa65lG=l-0cOJej5`RbA~>ow;b|b{Vm=Nzc1PE)(APs#2?)a z;_cqPP*m8mb{VWvtya^#RIe5J_96a+UGr=)sK6!0P3}@f9UD=JGwJHG+(lW$%RS49 zXp%QbA??VV0%!E)De*)+44MN-6}=(AdpuhIc=P#g3D!~MLo_|HHsXv?7g56#ro4>B_tOugR&v7Q#T^EMllymCXI<`a}s7 z@KMW45QbuD?&Qt7!%0jN-_~PX^CI_t1y8v@0Zc3}r0Fv0GoCIaobkzw`pXkkdGc78 zcU$u-Ot{22II!E?LF5ziDt@enG+)~?S?>$Rbw#@PJ{OJ9HYq!_YBHHrFIcbPQNW=z zx`mmJt~y>C4VR|$>D;T-kKH-%@$m)171X$1zSuAR!4k>J)#~xI5kF>Sr~RS@A@PsL1`YpBB0Up?=m+@z3%n^%@ z`y?gWiR{FB6Sg&{xd1zSZcJ=X?ebhDKj>FdnyBG4t%=ev;sY84K3DIYATr4u^ZN+i zWYMrHuJJj@>tF-49mGXG@OaX$|I#--*P^2zjD+gx@Lb%^W>f}83+(c=7jcG~iBRl7 zSUz>`gc4@uK1P%csiIpW95Wz~;kpEdK}y=@N&$OcYSsbEFZ}OD<<2Jv^#<;Wc*VL7 zj}^cwO+`s-o*adxSdlf$_U%+-mPU0L;4L;Ka_U^q%k2eWCHBLlC_NsjhPkJT=BO{X zga~}G1({KIXr{pV-0@P<67C(3rJ<>*Y=$jhDD-$zgIdON0{09Jz>H2{0H@!KKlIEx zl(3}Hn0&4$humrDnt$@fdde82b6{(XiGi5zlQ5PFWbXbW(Y&C~eDtaFnhfgYAOaQMv)YS?7S=H|e7LdKHB}9qA^EpOp<@t_%#GUYe}- zJ@1(7gy4`e=fam^VScKFN%1E2SMqugTM`OIFEh-)<%>zZh2B78%6k`$yd?2ro&!%v zP3}4|{7_g{F(fD*xtoWv6yU{BYbKuF`#PjmqXjBZs>xu_)XBs zWzs+&x?OYt8F{KLnp?vtRDiL+4mTY(SV>-%!!=6=aj0<=U!u>S(0YyLujfAhxasncG4$W1T<95)BONL&( zTLLy%DuJ0|LLH@s^JZB-a?5j=D)9UQ?QPpUPkdg{xMif(!^rg_wqRyr__Gu0AiuBR@#Q^ z7xZ_Bm9M?6htr#@+f6EX0ZMz!b;10uMU!SX!rmnc&06>FRb#*2T{<9j!T?YuXMmViII(J|F&fm^ET#p@j*4ktOO59%KTCB3@bPJ#2@m$= z5C5Yk?wePMgW6r6%?d2+ix8oktBvz?F8B??{jz&JbS!KIl z(-#+LB39X_DWh!SN-XoUg&M(&gsgR;^neb}zcL8mPq<`vD}`7>W5Fo6Az=EW%#V)E zyZd8~ReQE!0x&164%{fG3nQjMB7{W5pnv@CQ(4!J;*qW3_VJVX&-iq^EE9|Gr$R4s zhz(m}DY~%3G?y0ve_}YVZyxv~$JZ|OJ%6-!HFjMcl!);C-4SnDeAuLPv%#y~+jZ>N zqfnO_=0-uh>SK@dr7^$^o?#CV-4<;dBPDL@Jk7V&Cy;RCD_Lb!e712!Z$Lj7SpgF$ z0_|BR2u7^@!1CpFayI@84ba*;l!S{WATMeTCQB~}U%zEr|Dr^%Dak$QK7(AE9wj2^ z+O*?vnQG7;anSWYp5eKWT>zVW=KaRdQ)YCIFH@kz5p=E=tv0vUIZuXkFx8G_FUJ(e zqXadcJmaxFCbPzL!M$kFZUF3XE2~GXxQ%xEzp~&LzHTWReGgoM-95FN+(CPXB|k5P zIqS>RV7G3aY7AYo?a}Kvq-y_MPy+`#9r7UDbZ#G++YAFe@pCHy)nkW=;(t2iO5jx5 zqJ5e(uT6FQJ|clrdDz78|FTihi3vQsAidhzhN+%CVDdPmO1Y^Yy@mvt<-?bKO~|11 zJ}PtzU3rXg=wI{$FP&k5^!UdaJq2fJM+bi`QQ9|J&v=rUR>SxYY96fJ-XW; zp7!ims$*<8edN2pnKpM~HflYpMseERNu-_0Oj_-qT8oMd=$|c_9uME~195ir)UxEb zbuCW*n!Av(p)qsJEgpo@S!`$r-L_q!s&e49#darV6r9?zZ=5}dR#|s5-W)X-=Mm}c zm(NZ)*G$5pp<1#T}Yqwz!@?yz4_mxw>T`eT|jcwIZ? zU|a#$!bosw*c)9>ne?xjA^7~JH$_8kaFuEBgT>bYAN$d3_8Sf2{I9pw41CRZDeS;i zrME6{y;pYFIrt$ZZZfH4WP1%&mtpw>=Y%opxJxJ9Dhl39+MMYXsDvE=G{dztBsIIS z_VL85zls-r--3Hr^U849@%$Lhwnb7*b17pR>`6Ak5~dF)eS|X0uq(~u39gYT7u3H~ z0yjDwFQBo=sBKIN4QnW$+JW;eN506Z=85=MNNv0ZNADucmway4c;YS|U;cQxFmR7fnR`s2e;j>WxdX^LTv^%Mv!FHx4KDE9p|~u*3_P)1WAa0=ISnB<@!JE14H8vmt- zFLoNvD|bGs(2UyMcA>lELJwN5U(VEv6YueqpR^K<%ak7Um4c!W4cc2+%P?vE=WVef zpH2emB?He$tk(w=prGlH)4Uho&Eo-#HCX5Ey!?hx~Yt^M$X=JA30UQ09VqBQx*}X9#rT&wu!Z|Dlaq-KrpjGMW}u& zyB)D^3&(qei(E+>L;a`2fZId=oz!eXr{ie~UT^cIE1{aXg>kU<ZmN4bpSjFesTX$^Z#cxlyCx9}W{w@J!tQxfKI}J;C%y z-R+E*T^>GMPi4@Yu`*wCb+2)CXOrfpn*UCKJT*v7+QB2K(bb8M9t2YVg0v~ z!85{6ynP;(OfqIXnU9MQh4e8lUg0{9lKyw{>h!9CVf6r1G^1W%hF~(-hIY{zp`(ki zN4WN8p;mAa&2h6AeDO&d`MEuH_Aj7uHq;(A2}zdmxBPsykpn#KJ`yUya?jINlcj@1 z7VL*u-V7(vUq5JDlr!WoPNPGTzLJ!F!^ktBuXJKP@vk;~@?*bj&tLI*mD`&Wb0*b< zz>Y$DqbWP``h@bw@W?%Lo6U$?=-cNVvm#Kff^J`z!Q$izEDF-*MO4GC9AT2D`B5hS zKb6tJ5C>fQm}C03FT)9@^qWB-f$g)%AoXdH(21C0;D^De6qPHa9lW7@mc9vhP@(BL z!;`5k?w{^T4wwWI>o=m@*{?;_56i1;-DqE zTS-3{{Um+Y-F zZ4KBh$-UuE5__?9(Jt4>H8NVJq^`#30Pv)bM znKr!&JBH|bQXPv<6 zYRT!gFF2C){qx$^qY)Jq97L8|Gx@ zw2|G{eKM>#>6THWVmt9?L0o&1^7`%Em-uO>B7-vnqSp8OaSFZ_#^ASE_~y=*2Y!4z z!mNk_pY5&R2gSy=4}J+Hmi9eU|E5pny2G-|Pl5Lqcc%=;QzOELZYYGhZKz=dL{f6g zzsKsrSrb)f5?eMB3${Y4K+9mAZ2Q97(Y3D$ZdZtYv@Of%96 zRDbo)PV?PH@G)=V%t z?diJ{(4X?nkPjPe0?q7SswVE?o9n;wAH4VmWc(S7=vx?g_4z!nOr*FDEOxTl1o8q% zmW4F}e?86r*fM-RA+G%}YM*lV?>h+fzP|=c#BtF4cixjEzW8@C7MjC{S-zpiXVOpA;r!MWOk+hU}|dq z&sAVyz##Z?QvWNfzwl3Ws<)r~&ws$@{r(U|9P(u;45T@B|14gnZK;2*SEg2_+E;E;x#5;-q$6itkU;G% zw}VEpl1zZfPFZ|%$v%pg;5On^0|>rNt2HWDr&7H;mk88&i7xuRO}dvQA}{`HuF*M$ zPS!_8@XYV0rLXwcq-}l9b&n=xx)u#j`n%MCy;0i~xS!cA)g55w1w0oLhM8!-@oT;1 z$~mf)wOomP<*Jd&YE|hiZsPYBXR%_bYUQ`gzlBQng|mG6th;d{$AMW!$NjtK7{j3e z2*Nf0pVmG5*8Q9RG}Hu?nc#Cwb#ad1b_5pGImdTlv+lK>x|0S+hmBVQS3||#-3s@G z|EQfhyMF-m$syF`}1&1e56<-I5T`9YDK``M=j zjz7o(iTDgp0*ZHQdbfWB4;R8JWe8saQhznzbd*g%9P2*6;*T#UyqAAoF;d7TxU}>f z1iTA#BHVAw8#1w`O+Dn;Wc74QeTSOb&`Vbv-5x@t^xY@$^mF)Iy8^}gee--b{zdG^ ze!N=*PxUwvk(}kXxwA{G*;mL2ROns&qJi+DecpF()~<95^p+L0(>EHI_$FW0RIE#m zT%vq!Y>W!|_--i;K)hyGvBJLd)vhtVGU?s2W4q6zQcK2%T3lDG@vm8HyGoU4T`i>i g{>;DY`26w|+>3ub`hTw0qaRS=wvtzn0uYe@0j`gY`~Uy| literal 0 HcmV?d00001 diff --git a/meilisearch-http/tests/assets/v4_v0.25.2_movies_with_settings.dump b/meilisearch-http/tests/assets/v4_v0.25.2_movies_with_settings.dump new file mode 100644 index 0000000000000000000000000000000000000000..4374e131c1767499dd3c570209c579bb5894dd88 GIT binary patch literal 11545 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 LpCdWv0H6Q>S--1~ literal 0 HcmV?d00001 diff --git a/meilisearch-http/tests/assets/v4_v0.25.2_rubygems_with_settings.dump b/meilisearch-http/tests/assets/v4_v0.25.2_rubygems_with_settings.dump new file mode 100644 index 0000000000000000000000000000000000000000..1dfc22e8e8c63a7caed02c0f7ba957e71333b4cb GIT binary patch literal 7511 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 literal 0 HcmV?d00001 diff --git a/meilisearch-http/tests/common/mod.rs b/meilisearch-http/tests/common/mod.rs index e734b3621..b076b0ea5 100644 --- a/meilisearch-http/tests/common/mod.rs +++ b/meilisearch-http/tests/common/mod.rs @@ -3,7 +3,7 @@ pub mod server; pub mod service; pub use index::{GetAllDocumentsOptions, GetDocumentOptions}; -pub use server::Server; +pub use server::{default_settings, Server}; /// Performs a search test on both post and get routes #[macro_export] diff --git a/meilisearch-http/tests/common/server.rs b/meilisearch-http/tests/common/server.rs index b439ec52e..884036228 100644 --- a/meilisearch-http/tests/common/server.rs +++ b/meilisearch-http/tests/common/server.rs @@ -79,9 +79,9 @@ impl Server { } } - pub async fn new_with_options(options: Opt) -> Self { - let meilisearch = setup_meilisearch(&options).unwrap(); - let auth = AuthController::new(&options.db_path, &options.master_key).unwrap(); + pub async fn new_with_options(options: Opt) -> Result { + let meilisearch = setup_meilisearch(&options)?; + let auth = AuthController::new(&options.db_path, &options.master_key)?; let service = Service { meilisearch, auth, @@ -89,10 +89,10 @@ impl Server { api_key: None, }; - Server { + Ok(Server { service, _dir: None, - } + }) } /// Returns a view to an index. There is no guarantee that the index exists. diff --git a/meilisearch-http/tests/dumps.rs b/meilisearch-http/tests/dumps.rs deleted file mode 100644 index 843347bde..000000000 --- a/meilisearch-http/tests/dumps.rs +++ /dev/null @@ -1,22 +0,0 @@ -#![allow(dead_code)] -mod common; - -use crate::common::Server; -use serde_json::json; - -#[actix_rt::test] -async fn get_unexisting_dump_status() { - let server = Server::new().await; - - let (response, code) = server.get_dump_status("foobar").await; - assert_eq!(code, 404); - - let expected_response = json!({ - "message": "Dump `foobar` not found.", - "code": "dump_not_found", - "type": "invalid_request", - "link": "https://docs.meilisearch.com/errors#dump_not_found" - }); - - assert_eq!(response, expected_response); -} diff --git a/meilisearch-http/tests/dumps/data.rs b/meilisearch-http/tests/dumps/data.rs new file mode 100644 index 000000000..a5d7f3426 --- /dev/null +++ b/meilisearch-http/tests/dumps/data.rs @@ -0,0 +1,68 @@ +use std::path::PathBuf; + +use manifest_dir_macros::exist_relative_path; + +pub enum GetDump { + MoviesRawV1, + MoviesWithSettingsV1, + RubyGemsWithSettingsV1, + + MoviesRawV2, + MoviesWithSettingsV2, + RubyGemsWithSettingsV2, + + MoviesRawV3, + MoviesWithSettingsV3, + RubyGemsWithSettingsV3, + + MoviesRawV4, + MoviesWithSettingsV4, + RubyGemsWithSettingsV4, +} + +impl GetDump { + pub fn path(&self) -> PathBuf { + match self { + GetDump::MoviesRawV1 => { + exist_relative_path!("tests/assets/v1_v0.20.0_movies.dump").into() + } + GetDump::MoviesWithSettingsV1 => { + exist_relative_path!("tests/assets/v1_v0.20.0_movies_with_settings.dump").into() + } + GetDump::RubyGemsWithSettingsV1 => { + exist_relative_path!("tests/assets/v1_v0.20.0_rubygems_with_settings.dump").into() + } + + GetDump::MoviesRawV2 => { + exist_relative_path!("tests/assets/v2_v0.21.1_movies.dump").into() + } + GetDump::MoviesWithSettingsV2 => { + exist_relative_path!("tests/assets/v2_v0.21.1_movies_with_settings.dump").into() + } + + GetDump::RubyGemsWithSettingsV2 => { + exist_relative_path!("tests/assets/v2_v0.21.1_rubygems_with_settings.dump").into() + } + + GetDump::MoviesRawV3 => { + exist_relative_path!("tests/assets/v3_v0.24.0_movies.dump").into() + } + GetDump::MoviesWithSettingsV3 => { + exist_relative_path!("tests/assets/v3_v0.24.0_movies_with_settings.dump").into() + } + GetDump::RubyGemsWithSettingsV3 => { + exist_relative_path!("tests/assets/v3_v0.24.0_rubygems_with_settings.dump").into() + } + + GetDump::MoviesRawV4 => { + exist_relative_path!("tests/assets/v4_v0.25.2_movies.dump").into() + } + GetDump::MoviesWithSettingsV4 => { + exist_relative_path!("tests/assets/v4_v0.25.2_movies_with_settings.dump").into() + } + GetDump::RubyGemsWithSettingsV4 => { + exist_relative_path!("tests/assets/v4_v0.25.2_rubygems_with_settings.dump").into() + } + } + } +} diff --git a/meilisearch-http/tests/dumps/mod.rs b/meilisearch-http/tests/dumps/mod.rs new file mode 100644 index 000000000..8395ec3aa --- /dev/null +++ b/meilisearch-http/tests/dumps/mod.rs @@ -0,0 +1,645 @@ +mod data; + +use crate::common::{default_settings, Server}; +use meilisearch_http::Opt; +use serde_json::json; + +use self::data::GetDump; + +#[actix_rt::test] +async fn get_unexisting_dump_status() { + let server = Server::new().await; + + let (response, code) = server.get_dump_status("foobar").await; + assert_eq!(code, 404); + + let expected_response = json!({ + "message": "Dump `foobar` not found.", + "code": "dump_not_found", + "type": "invalid_request", + "link": "https://docs.meilisearch.com/errors#dump_not_found" + }); + + assert_eq!(response, expected_response); +} + +// all the following test are ignored on windows. See #2364 +#[actix_rt::test] +#[cfg_attr(target_os = "windows", ignore)] +async fn import_dump_v1() { + let temp = tempfile::tempdir().unwrap(); + + for path in [ + GetDump::MoviesRawV1.path(), + GetDump::MoviesWithSettingsV1.path(), + GetDump::RubyGemsWithSettingsV1.path(), + ] { + let options = Opt { + import_dump: Some(path), + ..default_settings(temp.path()) + }; + let error = Server::new_with_options(options) + .await + .map(|_| ()) + .unwrap_err(); + + assert_eq!(error.to_string(), "The version 1 of the dumps is not supported anymore. You can re-export your dump from a version between 0.21 and 0.24, or start fresh from a version 0.25 onwards."); + } +} + +#[actix_rt::test] +#[cfg_attr(target_os = "windows", ignore)] +async fn import_dump_v2_movie_raw() { + let temp = tempfile::tempdir().unwrap(); + + let options = Opt { + import_dump: Some(GetDump::MoviesRawV2.path()), + ..default_settings(temp.path()) + }; + let server = Server::new_with_options(options).await.unwrap(); + + let (indexes, code) = server.list_indexes().await; + assert_eq!(code, 200); + + assert_eq!(indexes.as_array().unwrap().len(), 1); + assert_eq!(indexes[0]["uid"], json!("indexUID")); + assert_eq!(indexes[0]["name"], json!("indexUID")); + assert_eq!(indexes[0]["primaryKey"], json!("id")); + + let index = server.index("indexUID"); + + let (stats, code) = index.stats().await; + assert_eq!(code, 200); + assert_eq!( + stats, + json!({ "numberOfDocuments": 53, "isIndexing": false, "fieldDistribution": {"genres": 53, "id": 53, "overview": 53, "poster": 53, "release_date": 53, "title": 53 }}) + ); + + let (settings, code) = index.settings().await; + assert_eq!(code, 200); + assert_eq!( + settings, + json!({"displayedAttributes": ["*"], "searchableAttributes": ["*"], "filterableAttributes": [], "sortableAttributes": [], "rankingRules": ["words", "typo", "proximity", "attribute", "exactness"], "stopWords": [], "synonyms": {}, "distinctAttribute": null, "typoTolerance": {"enabled": true, "minWordSizeForTypos": {"oneTypo": 5, "twoTypos": 9}, "disableOnWords": [], "disableOnAttributes": [] }}) + ); + + let (tasks, code) = index.list_tasks().await; + assert_eq!(code, 200); + assert_eq!( + tasks, + json!({ "results": [{"uid": 0, "indexUid": "indexUID", "status": "succeeded", "type": "documentAddition", "details": { "receivedDocuments": 0, "indexedDocuments": 31944 }, "duration": "PT41.751156S", "enqueuedAt": "2021-09-08T08:30:30.550282Z", "startedAt": "2021-09-08T08:30:30.553012Z", "finishedAt": "2021-09-08T08:31:12.304168Z"}]}) + ); + + // finally we're just going to check that we can still get a few documents by id + let (document, code) = index.get_document(100, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({"id": 100, "title": "Lock, Stock and Two Smoking Barrels", "overview": "A card shark and his unwillingly-enlisted friends need to make a lot of cash quick after losing a sketchy poker match. To do this they decide to pull a heist on a small-time gang who happen to be operating out of the flat next door.", "genres": ["Comedy", "Crime"], "poster": "https://image.tmdb.org/t/p/w500/8kSerJrhrJWKLk1LViesGcnrUPE.jpg", "release_date": 889056000}) + ); + + let (document, code) = index.get_document(500, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({"id": 500, "title": "Reservoir Dogs", "overview": "A botched robbery indicates a police informant, and the pressure mounts in the aftermath at a warehouse. Crime begets violence as the survivors -- veteran Mr. White, newcomer Mr. Orange, psychopathic parolee Mr. Blonde, bickering weasel Mr. Pink and Nice Guy Eddie -- unravel.", "genres": ["Crime", "Thriller"], "poster": "https://image.tmdb.org/t/p/w500/AjTtJNumZyUDz33VtMlF1K8JPsE.jpg", "release_date": 715392000}) + ); + + let (document, code) = index.get_document(10006, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({"id": 10006, "title": "Wild Seven", "overview": "In this darkly karmic vision of Arizona, a man who breathes nothing but ill will begins a noxious domino effect as quickly as an uncontrollable virus kills. As he exits Arizona State Penn after twenty-one long years, Wilson has only one thing on the brain, leveling the score with career criminal, Mackey Willis.", "genres": ["Action", "Crime", "Drama"], "poster": "https://image.tmdb.org/t/p/w500/y114dTPoqn8k2Txps4P2tI95YCS.jpg", "release_date": 1136073600}) + ); +} + +#[actix_rt::test] +#[cfg_attr(target_os = "windows", ignore)] +async fn import_dump_v2_movie_with_settings() { + let temp = tempfile::tempdir().unwrap(); + + let options = Opt { + import_dump: Some(GetDump::MoviesWithSettingsV2.path()), + ..default_settings(temp.path()) + }; + let server = Server::new_with_options(options).await.unwrap(); + + let (indexes, code) = server.list_indexes().await; + assert_eq!(code, 200); + + assert_eq!(indexes.as_array().unwrap().len(), 1); + assert_eq!(indexes[0]["uid"], json!("indexUID")); + assert_eq!(indexes[0]["name"], json!("indexUID")); + assert_eq!(indexes[0]["primaryKey"], json!("id")); + + let index = server.index("indexUID"); + + let (stats, code) = index.stats().await; + assert_eq!(code, 200); + assert_eq!( + stats, + json!({ "numberOfDocuments": 53, "isIndexing": false, "fieldDistribution": {"genres": 53, "id": 53, "overview": 53, "poster": 53, "release_date": 53, "title": 53 }}) + ); + + let (settings, code) = index.settings().await; + assert_eq!(code, 200); + assert_eq!( + settings, + json!({ "displayedAttributes": ["title", "genres", "overview", "poster", "release_date"], "searchableAttributes": ["title", "overview"], "filterableAttributes": ["genres"], "sortableAttributes": [], "rankingRules": ["words", "typo", "proximity", "attribute", "exactness"], "stopWords": ["of", "the"], "synonyms": {}, "distinctAttribute": null, "typoTolerance": {"enabled": true, "minWordSizeForTypos": { "oneTypo": 5, "twoTypos": 9 }, "disableOnWords": [], "disableOnAttributes": [] }}) + ); + + let (tasks, code) = index.list_tasks().await; + assert_eq!(code, 200); + assert_eq!( + tasks, + json!({ "results": [{ "uid": 1, "indexUid": "indexUID", "status": "succeeded", "type": "settingsUpdate", "details": { "displayedAttributes": ["title", "genres", "overview", "poster", "release_date"], "searchableAttributes": ["title", "overview"], "filterableAttributes": ["genres"], "stopWords": ["of", "the"] }, "duration": "PT37.488777S", "enqueuedAt": "2021-09-08T08:24:02.323444Z", "startedAt": "2021-09-08T08:24:02.324145Z", "finishedAt": "2021-09-08T08:24:39.812922Z" }, { "uid": 0, "indexUid": "indexUID", "status": "succeeded", "type": "documentAddition", "details": { "receivedDocuments": 0, "indexedDocuments": 31944 }, "duration": "PT39.941318S", "enqueuedAt": "2021-09-08T08:21:14.742672Z", "startedAt": "2021-09-08T08:21:14.750166Z", "finishedAt": "2021-09-08T08:21:54.691484Z" }]}) + ); + + // finally we're just going to check that we can still get a few documents by id + let (document, code) = index.get_document(100, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({ "title": "Lock, Stock and Two Smoking Barrels", "genres": ["Comedy", "Crime"], "overview": "A card shark and his unwillingly-enlisted friends need to make a lot of cash quick after losing a sketchy poker match. To do this they decide to pull a heist on a small-time gang who happen to be operating out of the flat next door.", "poster": "https://image.tmdb.org/t/p/w500/8kSerJrhrJWKLk1LViesGcnrUPE.jpg", "release_date": 889056000 }) + ); + + let (document, code) = index.get_document(500, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({"title": "Reservoir Dogs", "genres": ["Crime", "Thriller"], "overview": "A botched robbery indicates a police informant, and the pressure mounts in the aftermath at a warehouse. Crime begets violence as the survivors -- veteran Mr. White, newcomer Mr. Orange, psychopathic parolee Mr. Blonde, bickering weasel Mr. Pink and Nice Guy Eddie -- unravel.", "poster": "https://image.tmdb.org/t/p/w500/AjTtJNumZyUDz33VtMlF1K8JPsE.jpg", "release_date": 715392000}) + ); + + let (document, code) = index.get_document(10006, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({"title": "Wild Seven", "genres": ["Action", "Crime", "Drama"], "overview": "In this darkly karmic vision of Arizona, a man who breathes nothing but ill will begins a noxious domino effect as quickly as an uncontrollable virus kills. As he exits Arizona State Penn after twenty-one long years, Wilson has only one thing on the brain, leveling the score with career criminal, Mackey Willis.", "poster": "https://image.tmdb.org/t/p/w500/y114dTPoqn8k2Txps4P2tI95YCS.jpg", "release_date": 1136073600}) + ); +} + +#[actix_rt::test] +#[cfg_attr(target_os = "windows", ignore)] +async fn import_dump_v2_rubygems_with_settings() { + let temp = tempfile::tempdir().unwrap(); + + let options = Opt { + import_dump: Some(GetDump::RubyGemsWithSettingsV2.path()), + ..default_settings(temp.path()) + }; + let server = Server::new_with_options(options).await.unwrap(); + + let (indexes, code) = server.list_indexes().await; + assert_eq!(code, 200); + + assert_eq!(indexes.as_array().unwrap().len(), 1); + assert_eq!(indexes[0]["uid"], json!("rubygems")); + assert_eq!(indexes[0]["name"], json!("rubygems")); + assert_eq!(indexes[0]["primaryKey"], json!("id")); + + let index = server.index("rubygems"); + + let (stats, code) = index.stats().await; + assert_eq!(code, 200); + assert_eq!( + stats, + json!({ "numberOfDocuments": 53, "isIndexing": false, "fieldDistribution": {"description": 53, "id": 53, "name": 53, "summary": 53, "total_downloads": 53, "version": 53 }}) + ); + + let (settings, code) = index.settings().await; + assert_eq!(code, 200); + assert_eq!( + settings, + json!({"displayedAttributes": ["name", "summary", "description", "version", "total_downloads"], "searchableAttributes": ["name", "summary"], "filterableAttributes": ["version"], "sortableAttributes": [], "rankingRules": ["typo", "words", "fame:desc", "proximity", "attribute", "exactness", "total_downloads:desc"], "stopWords": [], "synonyms": {}, "distinctAttribute": null, "typoTolerance": {"enabled": true, "minWordSizeForTypos": {"oneTypo": 5, "twoTypos": 9}, "disableOnWords": [], "disableOnAttributes": [] }}) + ); + + let (tasks, code) = index.list_tasks().await; + assert_eq!(code, 200); + assert_eq!( + tasks["results"][0], + json!({"uid": 92, "indexUid": "rubygems", "status": "succeeded", "type": "documentAddition", "details": {"receivedDocuments": 0, "indexedDocuments": 1042}, "duration": "PT14.034672S", "enqueuedAt": "2021-09-08T08:40:31.390775Z", "startedAt": "2021-09-08T08:51:39.060642Z", "finishedAt": "2021-09-08T08:51:53.095314Z"}) + ); + assert_eq!( + tasks["results"][92], + json!({"uid": 0, "indexUid": "rubygems", "status": "succeeded", "type": "settingsUpdate", "details": {"displayedAttributes": ["name", "summary", "description", "version", "total_downloads"], "searchableAttributes": ["name", "summary"], "filterableAttributes": ["version"], "rankingRules": ["typo", "words", "desc(fame)", "proximity", "attribute", "exactness", "desc(total_downloads)"]}, "duration": "PT0.008886S", "enqueuedAt": "2021-09-08T08:40:28.660188Z", "startedAt": "2021-09-08T08:40:28.660766Z", "finishedAt": "2021-09-08T08:40:28.669652Z"}) + ); + + // finally we're just going to check that we can still get a few documents by id + let (document, code) = index.get_document(188040, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({"name": "meilisearch", "summary": "An easy-to-use ruby client for Meilisearch API", "description": "An easy-to-use ruby client for Meilisearch API. See https://github.com/meilisearch/MeiliSearch", "version": "0.15.2", "total_downloads": "7465"}) + ); + + let (document, code) = index.get_document(191940, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({"name": "doggo", "summary": "RSpec 3 formatter - documentation, with progress indication", "description": "Similar to \"rspec -f d\", but also indicates progress by showing the current test number and total test count on each line.", "version": "1.1.0", "total_downloads": "9394"}) + ); + + let (document, code) = index.get_document(159227, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({"name": "vortex-of-agony", "summary": "You dont need to use nodejs or go, just install this plugin. It will crash your application at random", "description": "You dont need to use nodejs or go, just install this plugin. It will crash your application at random", "version": "0.1.0", "total_downloads": "1007"}) + ); +} + +#[actix_rt::test] +#[cfg_attr(target_os = "windows", ignore)] +async fn import_dump_v3_movie_raw() { + let temp = tempfile::tempdir().unwrap(); + + let options = Opt { + import_dump: Some(GetDump::MoviesRawV3.path()), + ..default_settings(temp.path()) + }; + let server = Server::new_with_options(options).await.unwrap(); + + let (indexes, code) = server.list_indexes().await; + assert_eq!(code, 200); + + assert_eq!(indexes.as_array().unwrap().len(), 1); + assert_eq!(indexes[0]["uid"], json!("indexUID")); + assert_eq!(indexes[0]["name"], json!("indexUID")); + assert_eq!(indexes[0]["primaryKey"], json!("id")); + + let index = server.index("indexUID"); + + let (stats, code) = index.stats().await; + assert_eq!(code, 200); + assert_eq!( + stats, + json!({ "numberOfDocuments": 53, "isIndexing": false, "fieldDistribution": {"genres": 53, "id": 53, "overview": 53, "poster": 53, "release_date": 53, "title": 53 }}) + ); + + let (settings, code) = index.settings().await; + assert_eq!(code, 200); + assert_eq!( + settings, + json!({"displayedAttributes": ["*"], "searchableAttributes": ["*"], "filterableAttributes": [], "sortableAttributes": [], "rankingRules": ["words", "typo", "proximity", "attribute", "exactness"], "stopWords": [], "synonyms": {}, "distinctAttribute": null, "typoTolerance": {"enabled": true, "minWordSizeForTypos": {"oneTypo": 5, "twoTypos": 9}, "disableOnWords": [], "disableOnAttributes": [] }}) + ); + + let (tasks, code) = index.list_tasks().await; + assert_eq!(code, 200); + assert_eq!( + tasks, + json!({ "results": [{"uid": 0, "indexUid": "indexUID", "status": "succeeded", "type": "documentAddition", "details": { "receivedDocuments": 0, "indexedDocuments": 31944 }, "duration": "PT41.751156S", "enqueuedAt": "2021-09-08T08:30:30.550282Z", "startedAt": "2021-09-08T08:30:30.553012Z", "finishedAt": "2021-09-08T08:31:12.304168Z"}]}) + ); + + // finally we're just going to check that we can still get a few documents by id + let (document, code) = index.get_document(100, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({"id": 100, "title": "Lock, Stock and Two Smoking Barrels", "overview": "A card shark and his unwillingly-enlisted friends need to make a lot of cash quick after losing a sketchy poker match. To do this they decide to pull a heist on a small-time gang who happen to be operating out of the flat next door.", "genres": ["Comedy", "Crime"], "poster": "https://image.tmdb.org/t/p/w500/8kSerJrhrJWKLk1LViesGcnrUPE.jpg", "release_date": 889056000}) + ); + + let (document, code) = index.get_document(500, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({"id": 500, "title": "Reservoir Dogs", "overview": "A botched robbery indicates a police informant, and the pressure mounts in the aftermath at a warehouse. Crime begets violence as the survivors -- veteran Mr. White, newcomer Mr. Orange, psychopathic parolee Mr. Blonde, bickering weasel Mr. Pink and Nice Guy Eddie -- unravel.", "genres": ["Crime", "Thriller"], "poster": "https://image.tmdb.org/t/p/w500/AjTtJNumZyUDz33VtMlF1K8JPsE.jpg", "release_date": 715392000}) + ); + + let (document, code) = index.get_document(10006, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({"id": 10006, "title": "Wild Seven", "overview": "In this darkly karmic vision of Arizona, a man who breathes nothing but ill will begins a noxious domino effect as quickly as an uncontrollable virus kills. As he exits Arizona State Penn after twenty-one long years, Wilson has only one thing on the brain, leveling the score with career criminal, Mackey Willis.", "genres": ["Action", "Crime", "Drama"], "poster": "https://image.tmdb.org/t/p/w500/y114dTPoqn8k2Txps4P2tI95YCS.jpg", "release_date": 1136073600}) + ); +} + +#[actix_rt::test] +#[cfg_attr(target_os = "windows", ignore)] +async fn import_dump_v3_movie_with_settings() { + let temp = tempfile::tempdir().unwrap(); + + let options = Opt { + import_dump: Some(GetDump::MoviesWithSettingsV3.path()), + ..default_settings(temp.path()) + }; + let server = Server::new_with_options(options).await.unwrap(); + + let (indexes, code) = server.list_indexes().await; + assert_eq!(code, 200); + + assert_eq!(indexes.as_array().unwrap().len(), 1); + assert_eq!(indexes[0]["uid"], json!("indexUID")); + assert_eq!(indexes[0]["name"], json!("indexUID")); + assert_eq!(indexes[0]["primaryKey"], json!("id")); + + let index = server.index("indexUID"); + + let (stats, code) = index.stats().await; + assert_eq!(code, 200); + assert_eq!( + stats, + json!({ "numberOfDocuments": 53, "isIndexing": false, "fieldDistribution": {"genres": 53, "id": 53, "overview": 53, "poster": 53, "release_date": 53, "title": 53 }}) + ); + + let (settings, code) = index.settings().await; + assert_eq!(code, 200); + assert_eq!( + settings, + json!({ "displayedAttributes": ["title", "genres", "overview", "poster", "release_date"], "searchableAttributes": ["title", "overview"], "filterableAttributes": ["genres"], "sortableAttributes": [], "rankingRules": ["words", "typo", "proximity", "attribute", "exactness"], "stopWords": ["of", "the"], "synonyms": {}, "distinctAttribute": null, "typoTolerance": {"enabled": true, "minWordSizeForTypos": { "oneTypo": 5, "twoTypos": 9 }, "disableOnWords": [], "disableOnAttributes": [] }}) + ); + + let (tasks, code) = index.list_tasks().await; + assert_eq!(code, 200); + assert_eq!( + tasks, + json!({ "results": [{ "uid": 1, "indexUid": "indexUID", "status": "succeeded", "type": "settingsUpdate", "details": { "displayedAttributes": ["title", "genres", "overview", "poster", "release_date"], "searchableAttributes": ["title", "overview"], "filterableAttributes": ["genres"], "stopWords": ["of", "the"] }, "duration": "PT37.488777S", "enqueuedAt": "2021-09-08T08:24:02.323444Z", "startedAt": "2021-09-08T08:24:02.324145Z", "finishedAt": "2021-09-08T08:24:39.812922Z" }, { "uid": 0, "indexUid": "indexUID", "status": "succeeded", "type": "documentAddition", "details": { "receivedDocuments": 0, "indexedDocuments": 31944 }, "duration": "PT39.941318S", "enqueuedAt": "2021-09-08T08:21:14.742672Z", "startedAt": "2021-09-08T08:21:14.750166Z", "finishedAt": "2021-09-08T08:21:54.691484Z" }]}) + ); + + // finally we're just going to check that we can still get a few documents by id + let (document, code) = index.get_document(100, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({ "title": "Lock, Stock and Two Smoking Barrels", "genres": ["Comedy", "Crime"], "overview": "A card shark and his unwillingly-enlisted friends need to make a lot of cash quick after losing a sketchy poker match. To do this they decide to pull a heist on a small-time gang who happen to be operating out of the flat next door.", "poster": "https://image.tmdb.org/t/p/w500/8kSerJrhrJWKLk1LViesGcnrUPE.jpg", "release_date": 889056000 }) + ); + + let (document, code) = index.get_document(500, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({"title": "Reservoir Dogs", "genres": ["Crime", "Thriller"], "overview": "A botched robbery indicates a police informant, and the pressure mounts in the aftermath at a warehouse. Crime begets violence as the survivors -- veteran Mr. White, newcomer Mr. Orange, psychopathic parolee Mr. Blonde, bickering weasel Mr. Pink and Nice Guy Eddie -- unravel.", "poster": "https://image.tmdb.org/t/p/w500/AjTtJNumZyUDz33VtMlF1K8JPsE.jpg", "release_date": 715392000}) + ); + + let (document, code) = index.get_document(10006, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({"title": "Wild Seven", "genres": ["Action", "Crime", "Drama"], "overview": "In this darkly karmic vision of Arizona, a man who breathes nothing but ill will begins a noxious domino effect as quickly as an uncontrollable virus kills. As he exits Arizona State Penn after twenty-one long years, Wilson has only one thing on the brain, leveling the score with career criminal, Mackey Willis.", "poster": "https://image.tmdb.org/t/p/w500/y114dTPoqn8k2Txps4P2tI95YCS.jpg", "release_date": 1136073600}) + ); +} + +#[actix_rt::test] +#[cfg_attr(target_os = "windows", ignore)] +async fn import_dump_v3_rubygems_with_settings() { + let temp = tempfile::tempdir().unwrap(); + + let options = Opt { + import_dump: Some(GetDump::RubyGemsWithSettingsV3.path()), + ..default_settings(temp.path()) + }; + let server = Server::new_with_options(options).await.unwrap(); + + let (indexes, code) = server.list_indexes().await; + assert_eq!(code, 200); + + assert_eq!(indexes.as_array().unwrap().len(), 1); + assert_eq!(indexes[0]["uid"], json!("rubygems")); + assert_eq!(indexes[0]["name"], json!("rubygems")); + assert_eq!(indexes[0]["primaryKey"], json!("id")); + + let index = server.index("rubygems"); + + let (stats, code) = index.stats().await; + assert_eq!(code, 200); + assert_eq!( + stats, + json!({ "numberOfDocuments": 53, "isIndexing": false, "fieldDistribution": {"description": 53, "id": 53, "name": 53, "summary": 53, "total_downloads": 53, "version": 53 }}) + ); + + let (settings, code) = index.settings().await; + assert_eq!(code, 200); + assert_eq!( + settings, + json!({"displayedAttributes": ["name", "summary", "description", "version", "total_downloads"], "searchableAttributes": ["name", "summary"], "filterableAttributes": ["version"], "sortableAttributes": [], "rankingRules": ["typo", "words", "fame:desc", "proximity", "attribute", "exactness", "total_downloads:desc"], "stopWords": [], "synonyms": {}, "distinctAttribute": null, "typoTolerance": {"enabled": true, "minWordSizeForTypos": {"oneTypo": 5, "twoTypos": 9}, "disableOnWords": [], "disableOnAttributes": [] }}) + ); + + let (tasks, code) = index.list_tasks().await; + assert_eq!(code, 200); + assert_eq!( + tasks["results"][0], + json!({"uid": 92, "indexUid": "rubygems", "status": "succeeded", "type": "documentAddition", "details": {"receivedDocuments": 0, "indexedDocuments": 1042}, "duration": "PT14.034672S", "enqueuedAt": "2021-09-08T08:40:31.390775Z", "startedAt": "2021-09-08T08:51:39.060642Z", "finishedAt": "2021-09-08T08:51:53.095314Z"}) + ); + assert_eq!( + tasks["results"][92], + json!({"uid": 0, "indexUid": "rubygems", "status": "succeeded", "type": "settingsUpdate", "details": {"displayedAttributes": ["name", "summary", "description", "version", "total_downloads"], "searchableAttributes": ["name", "summary"], "filterableAttributes": ["version"], "rankingRules": ["typo", "words", "desc(fame)", "proximity", "attribute", "exactness", "desc(total_downloads)"]}, "duration": "PT0.008886S", "enqueuedAt": "2021-09-08T08:40:28.660188Z", "startedAt": "2021-09-08T08:40:28.660766Z", "finishedAt": "2021-09-08T08:40:28.669652Z"}) + ); + + // finally we're just going to check that we can still get a few documents by id + let (document, code) = index.get_document(188040, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({"name": "meilisearch", "summary": "An easy-to-use ruby client for Meilisearch API", "description": "An easy-to-use ruby client for Meilisearch API. See https://github.com/meilisearch/MeiliSearch", "version": "0.15.2", "total_downloads": "7465"}) + ); + + let (document, code) = index.get_document(191940, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({"name": "doggo", "summary": "RSpec 3 formatter - documentation, with progress indication", "description": "Similar to \"rspec -f d\", but also indicates progress by showing the current test number and total test count on each line.", "version": "1.1.0", "total_downloads": "9394"}) + ); + + let (document, code) = index.get_document(159227, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({"name": "vortex-of-agony", "summary": "You dont need to use nodejs or go, just install this plugin. It will crash your application at random", "description": "You dont need to use nodejs or go, just install this plugin. It will crash your application at random", "version": "0.1.0", "total_downloads": "1007"}) + ); +} + +#[actix_rt::test] +#[cfg_attr(target_os = "windows", ignore)] +async fn import_dump_v4_movie_raw() { + let temp = tempfile::tempdir().unwrap(); + + let options = Opt { + import_dump: Some(GetDump::MoviesRawV4.path()), + ..default_settings(temp.path()) + }; + let server = Server::new_with_options(options).await.unwrap(); + + let (indexes, code) = server.list_indexes().await; + assert_eq!(code, 200); + + assert_eq!(indexes.as_array().unwrap().len(), 1); + assert_eq!(indexes[0]["uid"], json!("indexUID")); + assert_eq!(indexes[0]["name"], json!("indexUID")); + assert_eq!(indexes[0]["primaryKey"], json!("id")); + + let index = server.index("indexUID"); + + let (stats, code) = index.stats().await; + assert_eq!(code, 200); + assert_eq!( + stats, + json!({ "numberOfDocuments": 53, "isIndexing": false, "fieldDistribution": {"genres": 53, "id": 53, "overview": 53, "poster": 53, "release_date": 53, "title": 53 }}) + ); + + let (settings, code) = index.settings().await; + assert_eq!(code, 200); + assert_eq!( + settings, + json!({ "displayedAttributes": ["*"], "searchableAttributes": ["*"], "filterableAttributes": [], "sortableAttributes": [], "rankingRules": ["words", "typo", "proximity", "attribute", "exactness"], "stopWords": [], "synonyms": {}, "distinctAttribute": null, "typoTolerance": {"enabled": true, "minWordSizeForTypos": {"oneTypo": 5, "twoTypos": 9}, "disableOnWords": [], "disableOnAttributes": [] }}) + ); + + let (tasks, code) = index.list_tasks().await; + assert_eq!(code, 200); + assert_eq!( + tasks, + json!({ "results": [{"uid": 0, "indexUid": "indexUID", "status": "succeeded", "type": "documentAddition", "details": { "receivedDocuments": 0, "indexedDocuments": 31944 }, "duration": "PT41.751156S", "enqueuedAt": "2021-09-08T08:30:30.550282Z", "startedAt": "2021-09-08T08:30:30.553012Z", "finishedAt": "2021-09-08T08:31:12.304168Z"}]}) + ); + + // finally we're just going to check that we can still get a few documents by id + let (document, code) = index.get_document(100, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({ "id": 100, "title": "Lock, Stock and Two Smoking Barrels", "overview": "A card shark and his unwillingly-enlisted friends need to make a lot of cash quick after losing a sketchy poker match. To do this they decide to pull a heist on a small-time gang who happen to be operating out of the flat next door.", "genres": ["Comedy", "Crime"], "poster": "https://image.tmdb.org/t/p/w500/8kSerJrhrJWKLk1LViesGcnrUPE.jpg", "release_date": 889056000}) + ); + + let (document, code) = index.get_document(500, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({ "id": 500, "title": "Reservoir Dogs", "overview": "A botched robbery indicates a police informant, and the pressure mounts in the aftermath at a warehouse. Crime begets violence as the survivors -- veteran Mr. White, newcomer Mr. Orange, psychopathic parolee Mr. Blonde, bickering weasel Mr. Pink and Nice Guy Eddie -- unravel.", "genres": ["Crime", "Thriller"], "poster": "https://image.tmdb.org/t/p/w500/AjTtJNumZyUDz33VtMlF1K8JPsE.jpg", "release_date": 715392000}) + ); + + let (document, code) = index.get_document(10006, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({ "id": 10006, "title": "Wild Seven", "overview": "In this darkly karmic vision of Arizona, a man who breathes nothing but ill will begins a noxious domino effect as quickly as an uncontrollable virus kills. As he exits Arizona State Penn after twenty-one long years, Wilson has only one thing on the brain, leveling the score with career criminal, Mackey Willis.", "genres": ["Action", "Crime", "Drama"], "poster": "https://image.tmdb.org/t/p/w500/y114dTPoqn8k2Txps4P2tI95YCS.jpg", "release_date": 1136073600}) + ); +} + +#[actix_rt::test] +#[cfg_attr(target_os = "windows", ignore)] +async fn import_dump_v4_movie_with_settings() { + let temp = tempfile::tempdir().unwrap(); + + let options = Opt { + import_dump: Some(GetDump::MoviesWithSettingsV4.path()), + ..default_settings(temp.path()) + }; + let server = Server::new_with_options(options).await.unwrap(); + + let (indexes, code) = server.list_indexes().await; + assert_eq!(code, 200); + + assert_eq!(indexes.as_array().unwrap().len(), 1); + assert_eq!(indexes[0]["uid"], json!("indexUID")); + assert_eq!(indexes[0]["name"], json!("indexUID")); + assert_eq!(indexes[0]["primaryKey"], json!("id")); + + let index = server.index("indexUID"); + + let (stats, code) = index.stats().await; + assert_eq!(code, 200); + assert_eq!( + stats, + json!({ "numberOfDocuments": 53, "isIndexing": false, "fieldDistribution": {"genres": 53, "id": 53, "overview": 53, "poster": 53, "release_date": 53, "title": 53 }}) + ); + + let (settings, code) = index.settings().await; + assert_eq!(code, 200); + assert_eq!( + settings, + json!({ "displayedAttributes": ["title", "genres", "overview", "poster", "release_date"], "searchableAttributes": ["title", "overview"], "filterableAttributes": ["genres"], "sortableAttributes": [], "rankingRules": ["words", "typo", "proximity", "attribute", "exactness"], "stopWords": ["of", "the"], "synonyms": {}, "distinctAttribute": null, "typoTolerance": {"enabled": true, "minWordSizeForTypos": { "oneTypo": 5, "twoTypos": 9 }, "disableOnWords": [], "disableOnAttributes": [] }}) + ); + + let (tasks, code) = index.list_tasks().await; + assert_eq!(code, 200); + assert_eq!( + tasks, + json!({ "results": [{ "uid": 1, "indexUid": "indexUID", "status": "succeeded", "type": "settingsUpdate", "details": { "displayedAttributes": ["title", "genres", "overview", "poster", "release_date"], "searchableAttributes": ["title", "overview"], "filterableAttributes": ["genres"], "stopWords": ["of", "the"] }, "duration": "PT37.488777S", "enqueuedAt": "2021-09-08T08:24:02.323444Z", "startedAt": "2021-09-08T08:24:02.324145Z", "finishedAt": "2021-09-08T08:24:39.812922Z" }, { "uid": 0, "indexUid": "indexUID", "status": "succeeded", "type": "documentAddition", "details": { "receivedDocuments": 0, "indexedDocuments": 31944 }, "duration": "PT39.941318S", "enqueuedAt": "2021-09-08T08:21:14.742672Z", "startedAt": "2021-09-08T08:21:14.750166Z", "finishedAt": "2021-09-08T08:21:54.691484Z" }]}) + ); + + // finally we're just going to check that we can still get a few documents by id + let (document, code) = index.get_document(100, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({ "title": "Lock, Stock and Two Smoking Barrels", "genres": ["Comedy", "Crime"], "overview": "A card shark and his unwillingly-enlisted friends need to make a lot of cash quick after losing a sketchy poker match. To do this they decide to pull a heist on a small-time gang who happen to be operating out of the flat next door.", "poster": "https://image.tmdb.org/t/p/w500/8kSerJrhrJWKLk1LViesGcnrUPE.jpg", "release_date": 889056000 }) + ); + + let (document, code) = index.get_document(500, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({ "title": "Reservoir Dogs", "genres": ["Crime", "Thriller"], "overview": "A botched robbery indicates a police informant, and the pressure mounts in the aftermath at a warehouse. Crime begets violence as the survivors -- veteran Mr. White, newcomer Mr. Orange, psychopathic parolee Mr. Blonde, bickering weasel Mr. Pink and Nice Guy Eddie -- unravel.", "poster": "https://image.tmdb.org/t/p/w500/AjTtJNumZyUDz33VtMlF1K8JPsE.jpg", "release_date": 715392000}) + ); + + let (document, code) = index.get_document(10006, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({ "title": "Wild Seven", "genres": ["Action", "Crime", "Drama"], "overview": "In this darkly karmic vision of Arizona, a man who breathes nothing but ill will begins a noxious domino effect as quickly as an uncontrollable virus kills. As he exits Arizona State Penn after twenty-one long years, Wilson has only one thing on the brain, leveling the score with career criminal, Mackey Willis.", "poster": "https://image.tmdb.org/t/p/w500/y114dTPoqn8k2Txps4P2tI95YCS.jpg", "release_date": 1136073600}) + ); +} + +#[actix_rt::test] +#[cfg_attr(target_os = "windows", ignore)] +async fn import_dump_v4_rubygems_with_settings() { + let temp = tempfile::tempdir().unwrap(); + + let options = Opt { + import_dump: Some(GetDump::RubyGemsWithSettingsV4.path()), + ..default_settings(temp.path()) + }; + let server = Server::new_with_options(options).await.unwrap(); + + let (indexes, code) = server.list_indexes().await; + assert_eq!(code, 200); + + assert_eq!(indexes.as_array().unwrap().len(), 1); + assert_eq!(indexes[0]["uid"], json!("rubygems")); + assert_eq!(indexes[0]["name"], json!("rubygems")); + assert_eq!(indexes[0]["primaryKey"], json!("id")); + + let index = server.index("rubygems"); + + let (stats, code) = index.stats().await; + assert_eq!(code, 200); + assert_eq!( + stats, + json!({ "numberOfDocuments": 53, "isIndexing": false, "fieldDistribution": {"description": 53, "id": 53, "name": 53, "summary": 53, "total_downloads": 53, "version": 53 }}) + ); + + let (settings, code) = index.settings().await; + assert_eq!(code, 200); + assert_eq!( + settings, + json!({ "displayedAttributes": ["name", "summary", "description", "version", "total_downloads"], "searchableAttributes": ["name", "summary"], "filterableAttributes": ["version"], "sortableAttributes": [], "rankingRules": ["typo", "words", "fame:desc", "proximity", "attribute", "exactness", "total_downloads:desc"], "stopWords": [], "synonyms": {}, "distinctAttribute": null, "typoTolerance": {"enabled": true, "minWordSizeForTypos": {"oneTypo": 5, "twoTypos": 9}, "disableOnWords": [], "disableOnAttributes": [] }}) + ); + + let (tasks, code) = index.list_tasks().await; + assert_eq!(code, 200); + assert_eq!( + tasks["results"][0], + json!({ "uid": 92, "indexUid": "rubygems", "status": "succeeded", "type": "documentAddition", "details": {"receivedDocuments": 0, "indexedDocuments": 1042}, "duration": "PT14.034672S", "enqueuedAt": "2021-09-08T08:40:31.390775Z", "startedAt": "2021-09-08T08:51:39.060642Z", "finishedAt": "2021-09-08T08:51:53.095314Z"}) + ); + assert_eq!( + tasks["results"][92], + json!({ "uid": 0, "indexUid": "rubygems", "status": "succeeded", "type": "settingsUpdate", "details": {"displayedAttributes": ["name", "summary", "description", "version", "total_downloads"], "searchableAttributes": ["name", "summary"], "filterableAttributes": ["version"], "rankingRules": ["typo", "words", "desc(fame)", "proximity", "attribute", "exactness", "desc(total_downloads)"]}, "duration": "PT0.008886S", "enqueuedAt": "2021-09-08T08:40:28.660188Z", "startedAt": "2021-09-08T08:40:28.660766Z", "finishedAt": "2021-09-08T08:40:28.669652Z"}) + ); + + // finally we're just going to check that we can still get a few documents by id + let (document, code) = index.get_document(188040, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({ "name": "meilisearch", "summary": "An easy-to-use ruby client for Meilisearch API", "description": "An easy-to-use ruby client for Meilisearch API. See https://github.com/meilisearch/MeiliSearch", "version": "0.15.2", "total_downloads": "7465"}) + ); + + let (document, code) = index.get_document(191940, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({ "name": "doggo", "summary": "RSpec 3 formatter - documentation, with progress indication", "description": "Similar to \"rspec -f d\", but also indicates progress by showing the current test number and total test count on each line.", "version": "1.1.0", "total_downloads": "9394"}) + ); + + let (document, code) = index.get_document(159227, None).await; + assert_eq!(code, 200); + assert_eq!( + document, + json!({ "name": "vortex-of-agony", "summary": "You dont need to use nodejs or go, just install this plugin. It will crash your application at random", "description": "You dont need to use nodejs or go, just install this plugin. It will crash your application at random", "version": "0.1.0", "total_downloads": "1007"}) + ); +} diff --git a/meilisearch-http/tests/integration.rs b/meilisearch-http/tests/integration.rs index 45b632520..25b4e49b6 100644 --- a/meilisearch-http/tests/integration.rs +++ b/meilisearch-http/tests/integration.rs @@ -2,6 +2,7 @@ mod auth; mod common; mod dashboard; mod documents; +mod dumps; mod index; mod search; mod settings; diff --git a/meilisearch-http/tests/snapshot/mod.rs b/meilisearch-http/tests/snapshot/mod.rs index 5c626a888..a0645733e 100644 --- a/meilisearch-http/tests/snapshot/mod.rs +++ b/meilisearch-http/tests/snapshot/mod.rs @@ -41,7 +41,7 @@ async fn perform_snapshot() { ..default_settings(temp.path()) }; - let server = Server::new_with_options(options).await; + let server = Server::new_with_options(options).await.unwrap(); let index = server.index("test"); index @@ -67,7 +67,7 @@ async fn perform_snapshot() { ..default_settings(temp.path()) }; - let snapshot_server = Server::new_with_options(options).await; + let snapshot_server = Server::new_with_options(options).await.unwrap(); verify_snapshot!(server, snapshot_server, |server| => server.list_indexes(), diff --git a/meilisearch-lib/src/index_controller/dump_actor/mod.rs b/meilisearch-lib/src/index_controller/dump_actor/mod.rs index 16e328e3b..00be3a371 100644 --- a/meilisearch-lib/src/index_controller/dump_actor/mod.rs +++ b/meilisearch-lib/src/index_controller/dump_actor/mod.rs @@ -256,13 +256,8 @@ fn extract_dump( .parent() .map(ToOwned::to_owned) .unwrap_or_else(|| ".".into()); - if cfg!(windows) { - std::env::set_var("TMP", temp_path); - } else { - std::env::set_var("TMPDIR", temp_path); - } - let tmp_src = tempfile::tempdir()?; + let tmp_src = tempfile::tempdir_in(temp_path)?; let tmp_src_path = tmp_src.path(); from_tar_gz(&src_path, tmp_src_path)?;