From 191c1adc9bd59d913881a683edabacf8279a3274 Mon Sep 17 00:00:00 2001 From: Mist Date: Fri, 29 Nov 2024 23:44:37 +0800 Subject: [PATCH 1/2] [Refactor] refactor use codesnap library --- .cargo/config.toml | 6 + generator/Cargo.lock | 620 +++++++++++------- generator/Cargo.toml | 18 +- generator/src/code.rs | 84 --- generator/src/color.rs | 44 -- generator/src/components.rs | 10 - generator/src/components/background.rs | 147 ----- generator/src/components/breadcrumbs.rs | 90 --- generator/src/components/code_block.rs | 17 - generator/src/components/container.rs | 42 -- generator/src/components/editor.rs | 2 - generator/src/components/editor/code.rs | 75 --- .../src/components/editor/mac_title_bar.rs | 109 --- .../src/components/highlight_code_block.rs | 76 --- generator/src/components/interface.rs | 3 - .../src/components/interface/component.rs | 204 ------ .../src/components/interface/render_error.rs | 27 - generator/src/components/interface/style.rs | 80 --- generator/src/components/line_number.rs | 100 --- generator/src/components/rect.rs | 106 --- generator/src/components/watermark.rs | 82 --- generator/src/config.rs | 63 -- generator/src/copy.rs | 46 -- generator/src/copy_ascii.rs | 80 --- generator/src/edges.rs | 3 - generator/src/edges/edge.rs | 5 - generator/src/edges/margin.rs | 31 - generator/src/edges/padding.rs | 30 - generator/src/highlight.rs | 107 --- generator/src/lib.rs | 90 ++- generator/src/path.rs | 10 - generator/src/save.rs | 27 - generator/src/snapshot.rs | 78 --- generator/src/snapshot_config.rs | 12 + generator/src/text.rs | 121 ---- 35 files changed, 470 insertions(+), 2175 deletions(-) delete mode 100644 generator/src/code.rs delete mode 100644 generator/src/color.rs delete mode 100644 generator/src/components.rs delete mode 100644 generator/src/components/background.rs delete mode 100644 generator/src/components/breadcrumbs.rs delete mode 100644 generator/src/components/code_block.rs delete mode 100644 generator/src/components/container.rs delete mode 100644 generator/src/components/editor.rs delete mode 100644 generator/src/components/editor/code.rs delete mode 100644 generator/src/components/editor/mac_title_bar.rs delete mode 100644 generator/src/components/highlight_code_block.rs delete mode 100644 generator/src/components/interface.rs delete mode 100644 generator/src/components/interface/component.rs delete mode 100644 generator/src/components/interface/render_error.rs delete mode 100644 generator/src/components/interface/style.rs delete mode 100644 generator/src/components/line_number.rs delete mode 100644 generator/src/components/rect.rs delete mode 100644 generator/src/components/watermark.rs delete mode 100644 generator/src/config.rs delete mode 100644 generator/src/copy.rs delete mode 100644 generator/src/copy_ascii.rs delete mode 100644 generator/src/edges.rs delete mode 100644 generator/src/edges/edge.rs delete mode 100644 generator/src/edges/margin.rs delete mode 100644 generator/src/edges/padding.rs delete mode 100644 generator/src/highlight.rs delete mode 100644 generator/src/path.rs delete mode 100644 generator/src/save.rs delete mode 100644 generator/src/snapshot.rs create mode 100644 generator/src/snapshot_config.rs delete mode 100644 generator/src/text.rs diff --git a/.cargo/config.toml b/.cargo/config.toml index d47f983..ed561c7 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -9,3 +9,9 @@ rustflags = [ "-C", "link-arg=-undefined", "-C", "link-arg=dynamic_lookup", ] + +[target.x86_64-unknown-linux-musl] +rustflags = ["-C", "target-feature=-crt-static"] + +[target.aarch64-unknown-linux-musl] +rustflags = ["-C", "target-feature=-crt-static"] diff --git a/generator/Cargo.lock b/generator/Cargo.lock index 7ad648b..8fed741 100644 --- a/generator/Cargo.lock +++ b/generator/Cargo.lock @@ -1,12 +1,12 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "ahash" @@ -31,15 +31,36 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "arboard" -version = "3.4.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb4009533e8ff8f1450a5bcbc30f4242a1d34442221f72314bea1f5dc9c7f89" +checksum = "df099ccb16cd014ff054ac1bf392c67feeef57164b05c42f037cd40f5d4357f4" dependencies = [ "clipboard-win", "core-graphics", @@ -56,21 +77,21 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "base64" @@ -108,6 +129,16 @@ dependencies = [ "objc2", ] +[[package]] +name = "bstr" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "bumpalo" version = "3.16.0" @@ -116,18 +147,18 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.16.1" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" +checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", @@ -149,7 +180,7 @@ dependencies = [ "ahash", "cached_proc_macro", "cached_proc_macro_types", - "hashbrown", + "hashbrown 0.14.5", "once_cell", "thiserror", "web-time", @@ -175,9 +206,12 @@ checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0" [[package]] name = "cc" -version = "1.1.6" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" +checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -191,6 +225,20 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-targets 0.52.6", +] + [[package]] name = "clipboard-win" version = "5.4.0" @@ -200,6 +248,30 @@ dependencies = [ "error-code", ] +[[package]] +name = "codesnap" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "969705c26569d1cc4ba1f77a6bf904108403d57f4e7c6de074508c2b14e26d73" +dependencies = [ + "anyhow", + "arboard", + "base64", + "cached", + "chrono", + "cosmic-text", + "derive_builder", + "once_cell", + "regex", + "rgb", + "serde", + "serde_json", + "syntect", + "thiserror", + "tiny-skia", + "two-face", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -212,9 +284,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics" @@ -242,16 +314,16 @@ dependencies = [ [[package]] name = "cosmic-text" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70b7eecd441fdfc092d6afcb4d00a521ee6d3dc3ad882575ce13bf38be53fb71" +checksum = "59fd57d82eb4bfe7ffa9b1cec0c05e2fd378155b47f255a67983cb4afe0e80c2" dependencies = [ "bitflags 2.6.0", "fontdb", "log", "rangemap", "rayon", - "rustc-hash", + "rustc-hash 1.1.0", "rustybuzz", "self_cell", "swash", @@ -352,6 +424,37 @@ dependencies = [ "syn", ] +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn", +] + [[package]] name = "dlib" version = "0.5.2" @@ -379,33 +482,43 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "erased-serde" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" +dependencies = [ + "serde", + "typeid", +] + [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "error-code" -version = "3.2.0" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b" +checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" [[package]] name = "fastrand" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" [[package]] name = "fdeflate" -version = "0.3.4" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +checksum = "07c6f4c64c1d33a3111c4466f7365ebdcc37c5bd1ea0d62aae2e3d722aacbedb" dependencies = [ "simd-adler32", ] @@ -418,9 +531,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", @@ -434,18 +547,18 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "font-types" -version = "0.5.5" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34fd7136aca682873d859ef34494ab1a7d3f57ecd485ed40eb6437ee8c85aa29" +checksum = "b3971f9a5ca983419cdc386941ba3b9e1feba01a0ab888adf78739feb2798492" dependencies = [ "bytemuck", ] [[package]] name = "fontconfig-parser" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a595cb550439a117696039dfc69830492058211b771a2a165379f2a1a53d84d" +checksum = "c1fcfcd44ca6e90c921fee9fa665d530b21ef1327a4c1a6c5250ea44b776ada7" dependencies = [ "roxmltree", ] @@ -495,16 +608,9 @@ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" name = "generator" version = "0.1.0" dependencies = [ - "arboard", - "cached", - "cosmic-text", - "nvim-oxi", - "regex", + "codesnap", + "mlua", "serde", - "syntect", - "thiserror", - "tiny-skia", - "two-face", ] [[package]] @@ -528,12 +634,32 @@ dependencies = [ ] [[package]] -name = "home" -version = "0.5.9" +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + +[[package]] +name = "iana-time-zone" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ - "windows-sys 0.52.0", + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", ] [[package]] @@ -544,9 +670,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "image" -version = "0.25.2" +version = "0.25.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99314c8a2152b8ddb211f924cdae532d8c5e4c8bb54728e12fff1b0cd5963a10" +checksum = "cd6f44aed642f18953a158afeb30206f4d50da59fbc66ecb53c66488de73563b" dependencies = [ "bytemuck", "byteorder-lite", @@ -557,19 +683,19 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.15.2", ] [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jpeg-decoder" @@ -579,18 +705,18 @@ checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] [[package]] name = "libc" -version = "0.2.155" +version = "0.2.166" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "c2ccc108bbc0b1331bd061864e7cd823c0cab660bbe6970e66e2c0614decde36" [[package]] name = "libloading" @@ -604,9 +730,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "linked-hash-map" @@ -644,9 +770,9 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap2" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" dependencies = [ "libc", ] @@ -659,14 +785,54 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", "simd-adler32", ] +[[package]] +name = "mlua" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae9546e4a268c309804e8bbb7526e31cbfdedca7cd60ac1b987d0b212e0d876" +dependencies = [ + "bstr", + "either", + "erased-serde", + "mlua-sys", + "mlua_derive", + "num-traits", + "parking_lot", + "rustc-hash 2.0.0", + "serde", + "serde-value", +] + +[[package]] +name = "mlua-sys" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efa6bf1a64f06848749b7e7727417f4ec2121599e2a10ef0a8a3888b0e9a5a0d" +dependencies = [ + "cc", + "cfg-if", + "pkg-config", +] + +[[package]] +name = "mlua_derive" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cfc5faa2e0d044b3f5f0879be2920e0a711c97744c42cf1c295cb183668933e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "nix" version = "0.28.0" @@ -704,76 +870,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "nvim-oxi" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13587f8434641462a0674bc575fb1ca88d66827118470df3c2608e769fc8e3ee" -dependencies = [ - "nvim-oxi-api", - "nvim-oxi-libuv", - "nvim-oxi-luajit", - "nvim-oxi-macros", - "nvim-oxi-types", - "thiserror", -] - -[[package]] -name = "nvim-oxi-api" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0926b8fac04e376a743a7519382ef21c9d6e3ef584338d439972b911e5d85554" -dependencies = [ - "nvim-oxi-luajit", - "nvim-oxi-macros", - "nvim-oxi-types", - "serde", - "serde_repr", - "thiserror", -] - -[[package]] -name = "nvim-oxi-libuv" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23c92031113da2a83addafb6d50508f96941f017ee2249b1d27b08094355cefd" -dependencies = [ - "nvim-oxi-luajit", - "thiserror", -] - -[[package]] -name = "nvim-oxi-luajit" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3d83bb0ca6908c82bad8b22379f7577d0d82aa050601c0dce15d7c691c2131a" -dependencies = [ - "thiserror", -] - -[[package]] -name = "nvim-oxi-macros" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0db91ed44967f43c9ac9f80ce629391f53787aac6212aac79966422940671f9" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "nvim-oxi-types" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2545fa96873e7bc0bd12e1e68582a89ca593fad872e996e479a8615ae986424" -dependencies = [ - "libc", - "nvim-oxi-luajit", - "serde", - "thiserror", -] - [[package]] name = "objc-sys" version = "0.3.5" @@ -875,9 +971,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "onig" @@ -901,14 +997,23 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "ordered-float" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" +dependencies = [ + "num-traits", +] + [[package]] name = "os_pipe" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29d73ba8daf8fac13b0501d1abeddcfe21ba7401ada61a819144b6c2a4f32209" +checksum = "5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -946,9 +1051,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "plist" @@ -965,9 +1070,9 @@ dependencies = [ [[package]] name = "png" -version = "0.17.13" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -984,9 +1089,9 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -1002,18 +1107,18 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.34.0" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f24d770aeca0eacb81ac29dfbc55ebcc09312fdd1f8bbecdc7e4a84e000e3b4" +checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" dependencies = [ "memchr", ] [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1046,9 +1151,9 @@ dependencies = [ [[package]] name = "read-fonts" -version = "0.19.3" +version = "0.22.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8b8af39d1f23869711ad4cea5e7835a20daa987f80232f7f2a2374d648ca64d" +checksum = "4a04b892cb6f91951f144c33321843790c8574c825aafdb16d815fd7183b5229" dependencies = [ "bytemuck", "font-types", @@ -1056,18 +1161,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "regex" -version = "1.10.5" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -1077,9 +1182,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -1088,15 +1193,24 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rgb" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" +dependencies = [ + "bytemuck", +] [[package]] name = "roxmltree" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cd14fd5e3b777a7422cca79358c57a8f6e3a703d9ac187448d0daf220c2407f" +checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" [[package]] name = "rustc-hash" @@ -1104,11 +1218,17 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" dependencies = [ "bitflags 2.6.0", "errno", @@ -1169,18 +1289,28 @@ checksum = "d369a96f978623eb3dc28807c4852d6cc617fed53da5d3c400feff1ef34a714a" [[package]] name = "serde" -version = "1.0.204" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] +[[package]] +name = "serde-value" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" +dependencies = [ + "ordered-float", + "serde", +] + [[package]] name = "serde_derive" -version = "1.0.204" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", @@ -1189,9 +1319,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.121" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ab380d7d9f22ef3f21ad3e6c1ebe8e4fc7a2000ccba2e4d71fc96f15b2cb609" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", "memchr", @@ -1200,15 +1330,10 @@ dependencies = [ ] [[package]] -name = "serde_repr" -version = "0.1.19" +name = "shlex" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "simd-adler32" @@ -1218,9 +1343,9 @@ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "skrifa" -version = "0.19.3" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab45fb68b53576a43d4fc0e9ec8ea64e29a4d2cc7f44506964cb75f288222e9" +checksum = "8e1c44ad1f6c5bdd4eefed8326711b7dbda9ea45dfd36068c427d332aa382cbe" dependencies = [ "bytemuck", "read-fonts", @@ -1255,9 +1380,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "swash" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d7773d67fe3373048cf840bfcc54ec3207cfc1e95c526b287ef2eb5eff9faf6" +checksum = "cbd59f3f359ddd2c95af4758c18270eddd9c730dde98598023cdabff472c2ca2" dependencies = [ "skrifa", "yazi", @@ -1266,9 +1391,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.72" +version = "2.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" +checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" dependencies = [ "proc-macro2", "quote", @@ -1299,39 +1424,40 @@ dependencies = [ [[package]] name = "sys-locale" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e801cf239ecd6ccd71f03d270d67dd53d13e90aab208bf4b8fe4ad957ea949b0" +checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" dependencies = [ "libc", ] [[package]] name = "tempfile" -version = "3.10.1" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", "fastrand", + "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", @@ -1423,12 +1549,11 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tree_magic_mini" -version = "3.1.5" +version = "3.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469a727cac55b41448315cc10427c069c618ac59bb6a4480283fcd811749bdc2" +checksum = "aac5e8971f245c3389a5a76e648bfc80803ae066a1243a75db0064d7c1129d63" dependencies = [ "fnv", - "home", "memchr", "nom", "once_cell", @@ -1458,11 +1583,17 @@ dependencies = [ "syntect", ] +[[package]] +name = "typeid" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" + [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-bidi-mirroring" @@ -1478,9 +1609,9 @@ checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-linebreak" @@ -1490,21 +1621,21 @@ checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" [[package]] name = "unicode-properties" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4259d9d4425d9f0661581b804cb85fe66a4c631cadd8f490d1c13a35d5d9291" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" [[package]] name = "unicode-script" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8d71f5726e5f285a935e9fe8edfd53f0491eb6e9a5774097fdabee7cd8c9cd" +checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "version_check" @@ -1524,19 +1655,20 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", @@ -1549,9 +1681,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1559,9 +1691,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", @@ -1572,15 +1704,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "wayland-backend" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90e11ce2ca99c97b940ee83edbae9da2d56a08f9ea8158550fd77fa31722993" +checksum = "056535ced7a150d45159d3a8dc30f91a2e2d588ca0b23f70e56033622b8016f6" dependencies = [ "cc", "downcast-rs", @@ -1592,9 +1724,9 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.5" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e321577a0a165911bdcfb39cf029302479d7527b517ee58ab0f6ad09edf0943" +checksum = "b66249d3fc69f76fd74c82cc319300faa554e9d865dab1f7cd66cc20db10b280" dependencies = [ "bitflags 2.6.0", "rustix", @@ -1629,20 +1761,20 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.4" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7b56f89937f1cf2ee1f1259cf2936a17a1f45d8f0aa1019fae6d470d304cfa6" +checksum = "597f2001b2e5fc1121e3d5b9791d3e78f05ba6bfa4641053846248e3a13661c3" dependencies = [ "proc-macro2", - "quick-xml 0.34.0", + "quick-xml 0.36.2", "quote", ] [[package]] name = "wayland-sys" -version = "0.31.4" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43676fe2daf68754ecf1d72026e4e6c15483198b5d24e888b74d3f22f887a148" +checksum = "efa8ac0d8e8ed3e3b5c9fc92c7881406a268e11555abe36493efabe649a29e09" dependencies = [ "dlib", "log", @@ -1667,11 +1799,20 @@ checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -1692,6 +1833,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-targets" version = "0.48.5" diff --git a/generator/Cargo.toml b/generator/Cargo.toml index f36125c..1476e1f 100644 --- a/generator/Cargo.toml +++ b/generator/Cargo.toml @@ -3,17 +3,11 @@ name = "generator" version = "0.1.0" edition = "2021" -[dependencies] -nvim-oxi = { features = ["neovim-0-9", "libuv"], version = "0.5.1" } -tiny-skia = "0.11.4" -syntect = "5.2.0" -cosmic-text = "0.12.0" -serde = "1.0.204" -arboard = { features = ["wayland-data-control"], version = "3.4.0" } -thiserror = "1.0.63" -regex = "1.10.5" -two-face = "0.4.0" -cached = "0.53.1" - [lib] crate-type = ["cdylib"] + +[dependencies] +codesnap = "0.7.1" +mlua = { version = "0.10.0", features = ["module", "luajit", "serialize"] } +serde = { version = "1.0.204", features = ["derive"] } + diff --git a/generator/src/code.rs b/generator/src/code.rs deleted file mode 100644 index e1f7560..0000000 --- a/generator/src/code.rs +++ /dev/null @@ -1,84 +0,0 @@ -use cached::proc_macro::cached; -use regex::Regex; - -const MIN_WIDTH: f32 = 100.; -pub const CHAR_WIDTH: f32 = 9.05; - -fn min_width(width: f32) -> f32 { - if width < MIN_WIDTH { - MIN_WIDTH - } else { - width - } -} - -pub fn calc_max_line_number_length(code_length: usize, start_line_number: usize) -> usize { - let max_line_number = code_length + start_line_number; - - // If code length is 1, the max_line_number will equal to start_line_number - (max_line_number - 1).to_string().len() -} - -pub fn calc_wh(text: &str, char_wdith: f32, line_height: f32) -> (f32, f32) { - let trimmed_text = prepare_code(text); - let lines = trimmed_text.lines(); - let max_length_line = lines.clone().into_iter().fold("", |max_length_line, cur| { - if cur.len() > max_length_line.len() { - cur - } else { - max_length_line - } - }); - let width = max_length_line.len() as f32 * char_wdith; - let height = lines.collect::>().len() as f32 * line_height; - - (width, height) -} - -// Because the code block is input by users, we need to calculate the width and height -// to make sure render the width and height of the "editor" shape correctly -#[cached(key = "String", convert = r#"{ format!("{}", text) }"#)] -pub fn calc_wh_with_min_width(text: &str, char_wdith: f32, line_height: f32) -> (f32, f32) { - let (width, height) = calc_wh(text, char_wdith, line_height); - - (min_width(width), height) -} - -// The tab character is incorrectly render using cosmic, need to replace all tab with space -// before render the code -fn replace_tab_to_space(text: &str) -> String { - let spaces = " ".repeat(2); - - str::replace(text, "\t", &spaces) -} - -// Find min indention of code lines, and remove the same indention from subsequent lines -fn trim_space(text: &str) -> String { - let lines = text.split("\n").collect::>(); - let regex = Regex::new(r"(?:^|\n)(\s*)").unwrap(); - let captures_iter = regex.captures_iter(text); - let space_lengths = captures_iter - .map(|capture| capture.get(1).unwrap().as_str().len()) - .collect::>(); - - if space_lengths.len() < lines.len() { - return text.to_string(); - } - - let need_to_remove_spaces = " ".repeat(space_lengths.into_iter().min().unwrap()); - - lines - .into_iter() - .map(|line| { - Regex::new(format!("^{}", need_to_remove_spaces).as_ref()) - .unwrap() - .replace(line, "") - .to_string() - }) - .collect::>() - .join("\n") -} - -pub fn prepare_code(code: &str) -> String { - trim_space(&replace_tab_to_space(&code)) -} diff --git a/generator/src/color.rs b/generator/src/color.rs deleted file mode 100644 index 59bfda2..0000000 --- a/generator/src/color.rs +++ /dev/null @@ -1,44 +0,0 @@ -use std::i64; -use tiny_skia::Color; - -const HEX_COLOR_LENGTH: usize = 7; -const HEX_COLOR_WITH_ALPHA_LENGTH: usize = 9; - -pub struct RgbaColor { - pub color: Color, -} - -pub fn is_valid_hex_color(color: &str) -> bool { - (color.len() == HEX_COLOR_LENGTH || color.len() == HEX_COLOR_WITH_ALPHA_LENGTH) - && color.starts_with("#") -} - -fn parse_color_to_rgba_hex(hex: &str) -> String { - if !is_valid_hex_color(&hex) || hex.len() == HEX_COLOR_WITH_ALPHA_LENGTH { - hex.to_string() - } else { - format!("{}ff", hex) - } -} - -impl Into for String { - fn into(self) -> RgbaColor { - let rgba_hex_color = parse_color_to_rgba_hex(&self); - // Remove the '#' symbol - let hex_color = &rgba_hex_color.to_lowercase()[1..rgba_hex_color.len()]; - let chars = hex_color.chars().collect::>(); - let splits = &chars - .chunks(2) - .map(|chunk| i64::from_str_radix(&chunk.iter().collect::(), 16).unwrap()) - .collect::>(); - - RgbaColor { - color: Color::from_rgba8( - splits[0] as u8, - splits[1] as u8, - splits[2] as u8, - splits[3] as u8, - ), - } - } -} diff --git a/generator/src/components.rs b/generator/src/components.rs deleted file mode 100644 index 6a31557..0000000 --- a/generator/src/components.rs +++ /dev/null @@ -1,10 +0,0 @@ -pub mod background; -pub mod breadcrumbs; -pub mod code_block; -pub mod container; -pub mod editor; -pub mod highlight_code_block; -pub mod interface; -pub mod line_number; -pub mod rect; -pub mod watermark; diff --git a/generator/src/components/background.rs b/generator/src/components/background.rs deleted file mode 100644 index a0b1822..0000000 --- a/generator/src/components/background.rs +++ /dev/null @@ -1,147 +0,0 @@ -use tiny_skia::{ - Color, GradientStop, LinearGradient, Paint, Pixmap, Point, Rect, SpreadMode, Transform, -}; - -use crate::{ - color::{is_valid_hex_color, RgbaColor}, - edges::{edge::Edge, padding::Padding}, -}; - -use super::interface::{ - component::{Component, ComponentContext, RenderParams}, - render_error::{self, RenderError}, - style::{ComponentAlign, ComponentStyle, RawComponentStyle}, -}; - -pub struct Background { - children: Vec>, - padding: Padding, -} - -impl Background { - pub fn new(padding: Padding, children: Vec>) -> Background { - Background { children, padding } - } - - pub fn parse_background_padding( - horizontal_background_padding: f32, - vertical_background_padding: f32, - background_padding: Option, - ) -> Padding { - match background_padding { - Some(padding) => Padding::from_value(padding), - None => Padding { - top: vertical_background_padding, - bottom: vertical_background_padding, - left: horizontal_background_padding, - right: horizontal_background_padding, - }, - } - } - - pub fn has_background(padding: &Padding) -> bool { - return padding.horizontal() != 0. || padding.vertical() != 0.; - } -} - -impl Component for Background { - fn children(&self) -> &Vec> { - &self.children - } - - fn style(&self) -> RawComponentStyle { - RawComponentStyle::default() - .align(ComponentAlign::Column) - .padding(self.padding.clone()) - } - - fn self_render_condition(&self) -> bool { - Self::has_background(&self.padding) - } - - fn draw_self( - &self, - pixmap: &mut Pixmap, - context: &ComponentContext, - _render_params: &RenderParams, - _style: &ComponentStyle, - _parent_style: &ComponentStyle, - ) -> render_error::Result<()> { - let mut paint = Paint::default(); - let w = pixmap.width() as f32; - let h = pixmap.height() as f32; - let params = &context.take_snapshot_params; - - paint.anti_alias = false; - match params.bg_color.as_ref() { - Some(color) => { - if !is_valid_hex_color(color) { - return Err(RenderError::InvalidHexColor(color.to_string())); - } - - let rgba_color: RgbaColor = color.to_string().into(); - - paint.set_color(rgba_color.color); - } - None => { - paint.shader = LinearGradient::new( - Point::from_xy(0., 0.), - Point::from_xy(w, 0.), - Background::get_theme(&context.take_snapshot_params.bg_theme)?, - SpreadMode::Pad, - Transform::identity(), - ) - .unwrap(); - } - }; - - pixmap.fill_rect( - Rect::from_xywh(0., 0., w, h).unwrap(), - &paint, - Transform::identity(), - None, - ); - - Ok(()) - } -} - -impl Background { - fn get_theme(theme: &str) -> render_error::Result> { - let theme = match theme { - "default" => vec![ - GradientStop::new(0.0, Color::from_rgba8(58, 28, 113, 255)), - GradientStop::new(0.5, Color::from_rgba8(215, 109, 119, 255)), - GradientStop::new(0.95, Color::from_rgba8(255, 175, 123, 255)), - ], - "sea" => vec![ - GradientStop::new(0.0, Color::from_rgba8(31, 162, 255, 255)), - GradientStop::new(0.4, Color::from_rgba8(18, 216, 250, 255)), - GradientStop::new(0.95, Color::from_rgba8(166, 255, 203, 255)), - ], - "grape" => vec![ - GradientStop::new(0.28, Color::from_rgba8(103, 90, 247, 255)), - GradientStop::new(0.95, Color::from_rgba8(189, 101, 250, 255)), - ], - "peach" => vec![ - GradientStop::new(0.22, Color::from_rgba8(221, 94, 137, 255)), - GradientStop::new(0.95, Color::from_rgba8(247, 187, 151, 255)), - ], - "summer" => vec![ - GradientStop::new(0.28, Color::from_rgba8(248, 165, 194, 255)), - GradientStop::new(0.95, Color::from_rgba8(116, 185, 255, 255)), - ], - "bamboo" => vec![ - GradientStop::new(0.22, Color::from_rgba8(107, 203, 165, 255)), - GradientStop::new(0.95, Color::from_rgba8(202, 244, 194, 255)), - ], - "dusk" => vec![ - GradientStop::new(0.22, Color::from_rgba8(255, 98, 110, 255)), - GradientStop::new(0.95, Color::from_rgba8(255, 190, 113, 255)), - ], - _ => return Err(RenderError::UnknownBackgroundTheme(theme.to_string())), - }; - - Ok(theme) - } -} diff --git a/generator/src/components/breadcrumbs.rs b/generator/src/components/breadcrumbs.rs deleted file mode 100644 index 94963d3..0000000 --- a/generator/src/components/breadcrumbs.rs +++ /dev/null @@ -1,90 +0,0 @@ -use cosmic_text::{Attrs, Color, Family}; -use regex::Regex; - -use crate::{code::calc_wh_with_min_width, edges::margin::Margin, text::FontRenderer}; - -use super::interface::{ - component::Component, - style::{ComponentStyle, RawComponentStyle, Size}, -}; - -pub struct Breadcrumbs { - children: Vec>, - path: String, - line_height: f32, - has_breadcrumbs: bool, -} - -impl Component for Breadcrumbs { - fn children(&self) -> &Vec> { - &self.children - } - - fn style(&self) -> RawComponentStyle { - let style = RawComponentStyle::default(); - - if self.has_breadcrumbs { - let (w, h) = calc_wh_with_min_width(&self.path, 8., self.line_height); - - style.size(Size::Num(w), Size::Num(h)).margin(Margin { - top: 5., - ..Margin::default() - }) - } else { - style - } - } - - fn draw_self( - &self, - pixmap: &mut tiny_skia::Pixmap, - context: &super::interface::component::ComponentContext, - render_params: &super::interface::component::RenderParams, - style: &super::interface::style::ComponentStyle, - _parent_style: &ComponentStyle, - ) -> super::interface::render_error::Result<()> { - if self.has_breadcrumbs { - let attrs = Attrs::new() - .color(Color::rgb(128, 132, 139)) - .family(Family::Name(&context.take_snapshot_params.code_font_family)); - - FontRenderer::new( - 12., - self.line_height, - context.scale_factor, - &context.take_snapshot_params.fonts_folder, - ) - .draw_text( - render_params.x, - render_params.y, - style.width, - self.line_height, - vec![(&self.path, attrs)], - pixmap, - ); - } - - Ok(()) - } -} - -impl Breadcrumbs { - pub fn from_path( - path: String, - line_height: f32, - separator: String, - has_breadcrumbs: bool, - ) -> Breadcrumbs { - let path = Regex::new("/") - .unwrap() - .replace_all(&path, separator) - .to_string(); - - Breadcrumbs { - children: vec![], - path, - line_height, - has_breadcrumbs, - } - } -} diff --git a/generator/src/components/code_block.rs b/generator/src/components/code_block.rs deleted file mode 100644 index 41d27be..0000000 --- a/generator/src/components/code_block.rs +++ /dev/null @@ -1,17 +0,0 @@ -use super::interface::component::Component; - -pub struct CodeBlock { - children: Vec>, -} - -impl Component for CodeBlock { - fn children(&self) -> &Vec> { - &self.children - } -} - -impl CodeBlock { - pub fn from_children(children: Vec>) -> CodeBlock { - CodeBlock { children } - } -} diff --git a/generator/src/components/container.rs b/generator/src/components/container.rs deleted file mode 100644 index afe595d..0000000 --- a/generator/src/components/container.rs +++ /dev/null @@ -1,42 +0,0 @@ -use tiny_skia::Pixmap; - -use super::interface::{ - component::{Component, ComponentContext, ComponentRenderParams}, - render_error::Result, - style::Style, -}; - -pub struct Container { - children: Vec>, -} - -impl Component for Container { - fn children(&self) -> &Vec> { - &self.children - } -} - -impl Container { - pub fn from_children(children: Vec>) -> Container { - Container { children } - } - - pub fn draw_root(&self, context: &ComponentContext) -> Result { - let style = self.parsed_style(); - let mut pixmap = Pixmap::new( - (style.width * context.scale_factor) as u32, - (style.height * context.scale_factor) as u32, - ) - .unwrap(); - - self.draw( - &mut pixmap, - context, - ComponentRenderParams::default(), - Style::default(), - Style::default(), - )?; - - Ok(pixmap) - } -} diff --git a/generator/src/components/editor.rs b/generator/src/components/editor.rs deleted file mode 100644 index 865586a..0000000 --- a/generator/src/components/editor.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod code; -pub mod mac_title_bar; diff --git a/generator/src/components/editor/code.rs b/generator/src/components/editor/code.rs deleted file mode 100644 index dfa62ec..0000000 --- a/generator/src/components/editor/code.rs +++ /dev/null @@ -1,75 +0,0 @@ -use crate::{ - code::{calc_wh_with_min_width, prepare_code, CHAR_WIDTH}, - components::interface::{ - component::{Component, ComponentContext, RenderParams}, - render_error, - style::{ComponentStyle, RawComponentStyle, Size, Style}, - }, - highlight::Highlight, - text::FontRenderer, -}; - -pub struct Code { - children: Vec>, - line_height: f32, - font_size: f32, - value: String, -} - -impl Component for Code { - fn children(&self) -> &Vec> { - &self.children - } - - fn style(&self) -> RawComponentStyle { - let (w, h) = calc_wh_with_min_width(&self.value, CHAR_WIDTH, self.line_height); - - Style::default().size(Size::Num(w), Size::Num(h)) - } - - fn draw_self( - &self, - pixmap: &mut tiny_skia::Pixmap, - context: &ComponentContext, - render_params: &RenderParams, - style: &ComponentStyle, - _parent_style: &ComponentStyle, - ) -> render_error::Result<()> { - let params = &context.take_snapshot_params; - let highlight = Highlight::new( - self.value.clone(), - params.code_font_family.clone(), - params.code_file_path.clone(), - params.extension.clone(), - ); - let highlight_result = highlight.parse(¶ms.themes_folder, ¶ms.theme)?; - - FontRenderer::new( - self.font_size, - self.line_height, - context.scale_factor, - &context.take_snapshot_params.fonts_folder, - ) - .draw_text( - render_params.x, - render_params.y, - style.width, - style.height, - highlight_result.clone(), - pixmap, - ); - - Ok(()) - } -} - -impl Code { - pub fn new(value: String, line_height: f32, font_size: f32) -> Code { - Code { - value: prepare_code(&value), - line_height, - font_size, - children: vec![], - } - } -} diff --git a/generator/src/components/editor/mac_title_bar.rs b/generator/src/components/editor/mac_title_bar.rs deleted file mode 100644 index eae4557..0000000 --- a/generator/src/components/editor/mac_title_bar.rs +++ /dev/null @@ -1,109 +0,0 @@ -use tiny_skia::{Color, FillRule, Paint, PathBuilder, Transform}; - -use crate::{ - components::interface::{ - component::{Component, ComponentContext, RenderParams}, - render_error, - style::{ComponentStyle, RawComponentStyle, Size, Style}, - }, - edges::margin::Margin, -}; - -pub struct MacTitleBar { - radius: f32, - children: Vec>, - render_condition: bool, -} - -impl Component for MacTitleBar { - fn children(&self) -> &Vec> { - &self.children - } - - fn style(&self) -> RawComponentStyle { - let demeter = self.radius * 2.; - - Style::default() - .size(Size::Num(demeter + 2. * 25.), Size::Num(demeter)) - .margin(Margin { - bottom: 10., - ..Margin::default() - }) - } - - fn render_condition(&self) -> bool { - return self.render_condition; - } - - fn draw_self( - &self, - pixmap: &mut tiny_skia::Pixmap, - context: &ComponentContext, - render_params: &RenderParams, - _style: &ComponentStyle, - _parent_style: &ComponentStyle, - ) -> render_error::Result<()> { - self.draw_control_buttons( - // Control bar construct by draw circles, after drawn, the path will be at the center, - // so the x, y need to offset by radius of the circle, and the next shape will still - // be drwan on the original point - render_params.x + self.radius, - render_params.y + self.radius, - pixmap, - vec![ - Color::from_rgba8(255, 94, 87, 255), - Color::from_rgba8(255, 186, 46, 255), - Color::from_rgba8(43, 200, 65, 255), - ], - 25., - Transform::from_scale(context.scale_factor, context.scale_factor), - ); - - Ok(()) - } -} - -impl MacTitleBar { - pub fn from_radius(radius: f32, render_condition: bool) -> MacTitleBar { - MacTitleBar { - radius, - children: vec![], - render_condition, - } - } - - fn draw_control_buttons( - &self, - x: f32, - y: f32, - pixmap: &mut tiny_skia::Pixmap, - colors: Vec, - gap: f32, - transform: Transform, - ) { - for (index, color) in colors.into_iter().enumerate() { - self.draw_control_button(x, y, pixmap, color, index as f32 * gap, transform); - } - } - - fn draw_control_button( - &self, - x: f32, - y: f32, - pixmap: &mut tiny_skia::Pixmap, - color: Color, - x_offset: f32, - transform: Transform, - ) { - let mut path_builder = PathBuilder::new(); - - path_builder.push_circle(x + x_offset, y, self.radius); - path_builder.close(); - - let path = path_builder.finish().unwrap(); - let mut paint = Paint::default(); - - paint.set_color(color); - pixmap.fill_path(&path, &paint, FillRule::Winding, transform, None); - } -} diff --git a/generator/src/components/highlight_code_block.rs b/generator/src/components/highlight_code_block.rs deleted file mode 100644 index cbefc09..0000000 --- a/generator/src/components/highlight_code_block.rs +++ /dev/null @@ -1,76 +0,0 @@ -use super::{ - interface::{component::Component, style::ComponentStyle}, - rect::EDITOR_PADDING, -}; -use tiny_skia::{Color, Paint, Rect, Transform}; - -#[derive(Default)] -pub struct HighlightCodeBlock { - children: Vec>, - line_height: f32, - start_line_number: usize, - end_line_number: usize, - render_condition: bool, -} - -impl Component for HighlightCodeBlock { - fn children(&self) -> &Vec> { - &self.children - } - - fn render_condition(&self) -> bool { - self.render_condition - } - - fn draw_self( - &self, - pixmap: &mut tiny_skia::Pixmap, - context: &super::interface::component::ComponentContext, - render_params: &super::interface::component::RenderParams, - _style: &super::interface::style::ComponentStyle, - parent_style: &ComponentStyle, - ) -> super::interface::render_error::Result<()> { - let mut paint = Paint::default(); - let start_y_offset = (self.start_line_number - 1) as f32 * self.line_height; - - paint.anti_alias = false; - paint.set_color(Color::from_rgba8(255, 255, 255, 10)); - pixmap.fill_rect( - Rect::from_xywh( - render_params.x - EDITOR_PADDING, - render_params.y + start_y_offset, - parent_style.width + EDITOR_PADDING * 2., - (self.end_line_number - self.start_line_number + 1) as f32 * self.line_height, - ) - .unwrap(), - &paint, - Transform::from_scale(context.scale_factor, context.scale_factor), - None, - ); - - Ok(()) - } -} - -impl HighlightCodeBlock { - pub fn from_line_number( - start_line_number: Option, - end_line_number: Option, - line_height: f32, - ) -> HighlightCodeBlock { - if end_line_number < start_line_number { - panic!("end_line_number should be greater than start_line_number") - } - - match start_line_number { - Some(start_line_number) => HighlightCodeBlock { - render_condition: true, - children: vec![], - line_height, - start_line_number, - end_line_number: end_line_number.unwrap(), - }, - None => HighlightCodeBlock::default(), - } - } -} diff --git a/generator/src/components/interface.rs b/generator/src/components/interface.rs deleted file mode 100644 index 87c3e6d..0000000 --- a/generator/src/components/interface.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod component; -pub mod render_error; -pub mod style; diff --git a/generator/src/components/interface/component.rs b/generator/src/components/interface/component.rs deleted file mode 100644 index 85c1638..0000000 --- a/generator/src/components/interface/component.rs +++ /dev/null @@ -1,204 +0,0 @@ -use super::{ - render_error, - style::{ComponentAlign, ComponentStyle, RawComponentStyle, Size, Style}, -}; -use crate::{config::TakeSnapshotParams, edges::edge::Edge}; -use std::sync::Arc; -use tiny_skia::Pixmap; - -pub struct ComponentContext { - pub scale_factor: f32, - pub take_snapshot_params: Arc, -} - -#[derive(Default, Clone)] -pub struct RenderParams { - pub x: f32, - pub y: f32, -} - -#[derive(Default)] -pub struct ComponentRenderParams { - pub parent_render_params: RenderParams, - pub sibling_render_params: RenderParams, -} - -impl ComponentRenderParams { - fn parse_into_render_params_with_style( - &self, - parent_style: ComponentStyle, - sibling_style: ComponentStyle, - style: ComponentStyle, - ) -> RenderParams { - match parent_style.align { - ComponentAlign::Row => RenderParams { - x: self.sibling_render_params.x - + sibling_style.width - + style.margin.left - + sibling_style.padding.horizontal(), - y: self.sibling_render_params.y + style.margin.top, - }, - ComponentAlign::Column => RenderParams { - x: self.sibling_render_params.x + style.margin.left, - y: self.sibling_render_params.y - + style.margin.top - + sibling_style.height - + sibling_style.padding.vertical(), - }, - } - } -} - -pub trait Component { - fn children(&self) -> &Vec>; - - fn align(&self) -> ComponentAlign { - ComponentAlign::Row - } - - fn initialize(&self, render_params: &RenderParams) -> RenderParams { - render_params.clone() - } - - // The render_condition determines whether the component should be rendered or not - fn render_condition(&self) -> bool { - true - } - - // The difference with render_condition is that self_render_condition still renders childrens - fn self_render_condition(&self) -> bool { - true - } - - fn draw_self( - &self, - _pixmap: &mut Pixmap, - _context: &ComponentContext, - _render_params: &RenderParams, - _style: &ComponentStyle, - _parent_style: &ComponentStyle, - ) -> render_error::Result<()> { - Ok(()) - } - - fn style(&self) -> RawComponentStyle { - RawComponentStyle::default() - } - - fn parse_size(&self, size: Size, dynamic_value: f32) -> f32 { - match size { - Size::Num(num) => num, - Size::Dynamic => dynamic_value, - } - } - - fn parsed_style(&self) -> Style { - // If render_condition return false, the whole component shouldn't rendered, - // includes its children - if !self.render_condition() { - return ComponentStyle::default(); - } - - // If self_render_condition return false, the component shouldn't rendered, - // so the corresponding style should be cleared - let style = if self.self_render_condition() { - self.style() - } else { - RawComponentStyle::default() - }; - let (width, height) = self.get_dynamic_wh(); - let width = self.parse_size(style.width, width) - + style.padding.horizontal() - + style.margin.horizontal(); - - Style { - min_width: style.min_width, - width: if width > style.min_width { - width - } else { - style.min_width - }, - height: self.parse_size(style.height, height) - + style.padding.vertical() - + style.margin.vertical(), - align: style.align, - padding: style.padding, - margin: style.margin, - } - } - - fn draw( - &self, - pixmap: &mut Pixmap, - context: &ComponentContext, - component_render_params: ComponentRenderParams, - parent_style: ComponentStyle, - sibling_style: ComponentStyle, - ) -> render_error::Result { - let style = self.parsed_style(); - let render_params = self.initialize( - &component_render_params.parse_into_render_params_with_style( - parent_style.clone(), - sibling_style.clone(), - style.clone(), - ), - ); - - // Render nothing on paint if render_condition return false - if !self.render_condition() { - return Ok(render_params.clone()); - } - - if self.self_render_condition() { - self.draw_self(pixmap, context, &render_params, &style, &parent_style)?; - } - - let children = self.children(); - let mut sibling_render_params = RenderParams { - x: render_params.x + style.padding.left, - y: render_params.y + style.padding.top, - }; - let mut sibling_style = ComponentStyle::default(); - - for child in children { - sibling_render_params = child.draw( - pixmap, - context, - ComponentRenderParams { - parent_render_params: render_params.clone(), - sibling_render_params, - }, - style.clone(), - sibling_style, - )?; - sibling_style = child.parsed_style(); - } - - Ok(render_params.clone()) - } - - // Dynamic calculate width and height of children, if the children is empty, get_dynamic_wh - // will return (0., 0.) - fn get_dynamic_wh(&self) -> (f32, f32) { - let children = self.children(); - let calc_children_wh = |cb: fn((f32, f32), &Box) -> (f32, f32)| { - children.iter().fold((0., 0.), cb) - }; - let style = self.style(); - - match style.align { - // If align is row, width is sum of children width, height is max of children height - ComponentAlign::Row => calc_children_wh(|(w, h), child| { - let style = child.parsed_style(); - - (w + style.width, h.max(style.height)) - }), - // If align is column, width is max of children width, height is sum of children height - ComponentAlign::Column => calc_children_wh(|(w, h), child| { - let style = child.parsed_style(); - - (w.max(style.width), h + style.height) - }), - } - } -} diff --git a/generator/src/components/interface/render_error.rs b/generator/src/components/interface/render_error.rs deleted file mode 100644 index a2d1be6..0000000 --- a/generator/src/components/interface/render_error.rs +++ /dev/null @@ -1,27 +0,0 @@ -use thiserror::Error; - -pub type Result = std::result::Result; - -#[derive(Debug, Error)] -pub enum RenderError { - #[error("Highlight code failed!")] - HighlightThemeLoadFailed, - - #[error("No such highlight syntax for {0}")] - HighlightCodeFailed(String), - - #[error("Unable to parse unknown background theme {0}")] - UnknownBackgroundTheme(String), - - #[error("Invalid hex color {0}")] - InvalidHexColor(String), - - #[error("No such file {0}")] - NoSuchFile(String), -} - -impl From for nvim_oxi::api::Error { - fn from(err: RenderError) -> Self { - nvim_oxi::api::Error::Other(err.to_string()) - } -} diff --git a/generator/src/components/interface/style.rs b/generator/src/components/interface/style.rs deleted file mode 100644 index 76ff31f..0000000 --- a/generator/src/components/interface/style.rs +++ /dev/null @@ -1,80 +0,0 @@ -use crate::edges::{margin::Margin, padding::Padding}; - -#[derive(Clone, Debug)] -pub enum ComponentAlign { - Row, - Column, -} - -pub enum Size { - Dynamic, - Num(f32), -} - -#[derive(Clone, Debug)] -pub struct Style { - pub width: T, - pub height: T, - pub min_width: f32, - pub align: ComponentAlign, - pub padding: Padding, - pub margin: Margin, -} - -pub type RawComponentStyle = Style; -pub type ComponentStyle = Style; - -impl Default for RawComponentStyle { - fn default() -> Self { - Style { - min_width: 0., - width: Size::Dynamic, - height: Size::Dynamic, - align: ComponentAlign::Row, - padding: Padding::default(), - margin: Margin::default(), - } - } -} - -impl Default for ComponentStyle { - fn default() -> Self { - Style { - min_width: 0., - width: 0., - height: 0., - align: ComponentAlign::Row, - padding: Padding::default(), - margin: Margin::default(), - } - } -} - -impl RawComponentStyle { - pub fn size(mut self, width: Size, height: Size) -> Self { - self.width = width; - self.height = height; - self - } - - // Only works if the width is calculate dynamically - pub fn min_width(mut self, min_width: f32) -> Self { - self.min_width = min_width; - self - } - - pub fn align(mut self, align: ComponentAlign) -> Self { - self.align = align; - self - } - - pub fn padding(mut self, padding: Padding) -> Self { - self.padding = padding; - self - } - - pub fn margin(mut self, margin: Margin) -> Self { - self.margin = margin; - self - } -} diff --git a/generator/src/components/line_number.rs b/generator/src/components/line_number.rs deleted file mode 100644 index b2a9ca1..0000000 --- a/generator/src/components/line_number.rs +++ /dev/null @@ -1,100 +0,0 @@ -use super::interface::{ - component::{Component, ComponentContext, RenderParams}, - render_error, - style::{ComponentStyle, RawComponentStyle, Size, Style}, -}; -use crate::{code::CHAR_WIDTH, edges::margin::Margin, text::FontRenderer}; -use cosmic_text::{Attrs, Color, Family}; - -const FONT_SIZE: f32 = 14.; - -#[derive(Default)] -pub struct LineNumber { - children: Vec>, - line_height: f32, - render_condition: bool, - line_number_content: Vec, - number_of_digit: usize, -} - -impl Component for LineNumber { - fn render_condition(&self) -> bool { - return self.render_condition; - } - - fn children(&self) -> &Vec> { - &self.children - } - - fn style(&self) -> RawComponentStyle { - Style::default() - .size( - Size::Num(CHAR_WIDTH * self.number_of_digit as f32), - Size::Num(self.line_number_content.len() as f32 * self.line_height), - ) - .margin(Margin { - right: 10., - ..Margin::default() - }) - } - - fn draw_self( - &self, - pixmap: &mut tiny_skia::Pixmap, - context: &ComponentContext, - render_params: &RenderParams, - style: &ComponentStyle, - _parent_style: &ComponentStyle, - ) -> render_error::Result<()> { - FontRenderer::new( - FONT_SIZE, - self.line_height, - context.scale_factor, - &context.take_snapshot_params.fonts_folder, - ) - .draw_text( - render_params.x, - render_params.y, - style.width, - style.height, - vec![( - &self.line_number_content.join("\n"), - Attrs::new() - .color(Color::rgb(73, 81, 98)) - .family(Family::Name(&context.take_snapshot_params.code_font_family)), - )], - pixmap, - ); - - Ok(()) - } -} - -impl LineNumber { - pub fn new(content: &str, start_line_number: Option, line_height: f32) -> LineNumber { - match start_line_number { - None => LineNumber::default(), - Some(start_line_number) => { - let lines = content.split("\n").collect::>(); - let max_line_number = lines.len() + start_line_number; - let number_of_digit = (max_line_number - 1).to_string().len(); - - LineNumber { - line_number_content: (start_line_number..max_line_number) - .map(|line_number| { - format!( - "{:>width$}", - line_number.to_string(), - width = number_of_digit - ) - }) - .collect::>(), - number_of_digit, - children: vec![], - render_condition: true, - line_height, - } - } - } - } -} diff --git a/generator/src/components/rect.rs b/generator/src/components/rect.rs deleted file mode 100644 index dd97b2d..0000000 --- a/generator/src/components/rect.rs +++ /dev/null @@ -1,106 +0,0 @@ -use super::interface::{ - component::{Component, ComponentContext, RenderParams}, - render_error, - style::{ComponentAlign, ComponentStyle, RawComponentStyle, Style}, -}; -use crate::edges::padding::Padding; -use tiny_skia::{FillRule, Paint, PathBuilder, Pixmap, Transform}; - -pub const EDITOR_PADDING: f32 = 20.; - -pub struct Rect { - radius: f32, - min_width: f32, - children: Vec>, -} - -impl Component for Rect { - fn children(&self) -> &Vec> { - &self.children - } - - fn style(&self) -> RawComponentStyle { - Style::default() - .min_width(self.min_width) - .align(ComponentAlign::Column) - .padding(Padding::from_value(EDITOR_PADDING)) - } - - fn draw_self( - &self, - pixmap: &mut Pixmap, - context: &ComponentContext, - render_params: &RenderParams, - style: &ComponentStyle, - _parent_style: &ComponentStyle, - ) -> render_error::Result<()> { - let mut path_builder = PathBuilder::new(); - let x = render_params.x; - let y = render_params.y; - let w = style.width; - let h = style.height; - - let rect_width = w - 2. * self.radius; - let rect_height = h - 2. * self.radius; - - path_builder.move_to(x + self.radius, y); - path_builder.line_to(x + self.radius + rect_width, y); - path_builder.line_to(x + self.radius + rect_width, y + self.radius); - - path_builder.line_to(x + rect_width + self.radius * 2., y + self.radius); - - path_builder.line_to( - x + rect_width + self.radius * 2., - y + rect_height + self.radius, - ); - path_builder.line_to(x + rect_width + self.radius, y + rect_height + self.radius); - path_builder.line_to( - x + rect_width + self.radius, - y + rect_height + self.radius * 2., - ); - - path_builder.line_to(x + self.radius, y + rect_height + self.radius * 2.); - path_builder.line_to(x + self.radius, y + rect_height + self.radius); - - path_builder.line_to(x, y + rect_height + self.radius); - - path_builder.line_to(x, y + self.radius); - path_builder.line_to(x + self.radius, y + self.radius); - path_builder.line_to(x + self.radius, y); - path_builder.line_to(x + self.radius + rect_width, y); - path_builder.push_circle( - x + rect_width + self.radius, - y + rect_height + self.radius, - self.radius, - ); - path_builder.push_circle(x + self.radius + rect_width, y + self.radius, self.radius); - path_builder.push_circle(x + self.radius, y + self.radius, self.radius); - path_builder.push_circle(x + self.radius, y + rect_height + self.radius, self.radius); - - path_builder.close(); - let path = path_builder.finish().unwrap(); - let mut paint = Paint::default(); - paint.set_color_rgba8(40, 44, 52, 237); - - pixmap.fill_path( - &path, - &paint, - FillRule::Winding, - Transform::from_scale(context.scale_factor, context.scale_factor), - // Transform::identity(), - None, - ); - - Ok(()) - } -} - -impl Rect { - pub fn new(radius: f32, min_width: Option, children: Vec>) -> Rect { - Rect { - radius, - children, - min_width: min_width.unwrap_or(0.), - } - } -} diff --git a/generator/src/components/watermark.rs b/generator/src/components/watermark.rs deleted file mode 100644 index 03500ac..0000000 --- a/generator/src/components/watermark.rs +++ /dev/null @@ -1,82 +0,0 @@ -use cosmic_text::{Align, Attrs, Family}; -use tiny_skia::Pixmap; - -use crate::{edges::margin::Margin, text::FontRenderer}; - -use super::interface::{ - component::{Component, ComponentContext, RenderParams}, - render_error, - style::{ComponentStyle, RawComponentStyle}, -}; - -pub struct Watermark { - children: Vec>, - value: String, -} - -impl Component for Watermark { - fn draw_self( - &self, - pixmap: &mut Pixmap, - context: &ComponentContext, - render_params: &RenderParams, - _style: &ComponentStyle, - _parent_style: &ComponentStyle, - ) -> render_error::Result<()> { - let params = &context.take_snapshot_params; - - let attrs = Attrs::new().family(Family::Name( - &context.take_snapshot_params.watermark_font_family, - )); - - FontRenderer::new( - 20., - 20., - context.scale_factor, - &context.take_snapshot_params.fonts_folder, - ) - .draw_line( - 0., - render_params.y, - pixmap.width() as f32, - pixmap.height() as f32, - ¶ms.watermark, - attrs, - Some(Align::Center), - pixmap, - ); - - Ok(()) - } - - fn children(&self) -> &Vec> { - &self.children - } - - fn render_condition(&self) -> bool { - self.value != "" - } - - fn style(&self) -> RawComponentStyle { - let default_style = RawComponentStyle::default(); - - if self.value != "" { - default_style.margin(Margin { - bottom: 22., - top: 15., - ..Margin::default() - }) - } else { - default_style - } - } -} - -impl Watermark { - pub fn new(value: String) -> Watermark { - Watermark { - children: vec![], - value, - } - } -} diff --git a/generator/src/config.rs b/generator/src/config.rs deleted file mode 100644 index 1e347d0..0000000 --- a/generator/src/config.rs +++ /dev/null @@ -1,63 +0,0 @@ -use nvim_oxi::conversion::{Error as ConversionError, FromObject, ToObject}; -use nvim_oxi::serde::{Deserializer, Serializer}; -use nvim_oxi::{lua, Object}; -use serde::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize, Clone)] -pub struct TakeSnapshotParams { - // Whether to display the MacOS style title bar - pub mac_window_bar: bool, - // Wartermark of the code snapshot - pub watermark: String, - // Editor title - pub title: Option, - pub code_font_family: String, - pub watermark_font_family: String, - pub code: String, - pub code_file_path: String, - pub extension: Option, - pub save_path: Option, - pub themes_folder: String, - pub fonts_folder: String, - pub theme: String, - pub bg_theme: String, - pub bg_color: Option, - // Breadcrumbs path - pub file_path: String, - pub breadcrumbs_separator: String, - pub has_breadcrumbs: bool, - pub start_line_number: Option, - pub highlight_start_line_number: Option, - pub highlight_end_line_number: Option, - pub min_width: Option, - pub bg_x_padding: f32, - pub bg_y_padding: f32, - pub bg_padding: Option, -} - -impl FromObject for TakeSnapshotParams { - fn from_object(obj: Object) -> Result { - Self::deserialize(Deserializer::new(obj)).map_err(Into::into) - } -} - -impl ToObject for TakeSnapshotParams { - fn to_object(self) -> Result { - self.serialize(Serializer::new()).map_err(Into::into) - } -} - -impl lua::Poppable for TakeSnapshotParams { - unsafe fn pop(lstate: *mut lua::ffi::lua_State) -> Result { - let obj = Object::pop(lstate)?; - Self::from_object(obj).map_err(lua::Error::pop_error_from_err::) - } -} - -impl lua::Pushable for TakeSnapshotParams { - unsafe fn push(self, lstate: *mut lua::ffi::lua_State) -> Result { - self.to_object() - .map_err(lua::Error::push_error_from_err::)? - .push(lstate) - } -} diff --git a/generator/src/copy.rs b/generator/src/copy.rs deleted file mode 100644 index 385db15..0000000 --- a/generator/src/copy.rs +++ /dev/null @@ -1,46 +0,0 @@ -use crate::{config::TakeSnapshotParams, snapshot::take_snapshot}; -#[cfg(target_os = "linux")] -use arboard::SetExtLinux; -use arboard::{Clipboard, ImageData}; - -use nvim_oxi::api; - -// The function will be called as FFI on Lua side -#[allow(dead_code)] -pub fn copy_into_clipboard(config: TakeSnapshotParams) -> Result<(), api::Error> { - let pixmap = take_snapshot(config.clone())?; - let premultplied_colors = pixmap.pixels(); - let colors = premultplied_colors - .iter() - .map(|premultplied_color| { - vec![ - premultplied_color.red(), - premultplied_color.green(), - premultplied_color.blue(), - premultplied_color.alpha(), - ] - }) - .flatten() - .collect::>(); - - let img_data = ImageData { - width: pixmap.width() as usize, - height: pixmap.height() as usize, - bytes: colors.into(), - }; - - #[cfg(target_os = "linux")] - std::thread::spawn(move || { - Clipboard::new() - .unwrap() - .set() - .wait() - .image(img_data) - .unwrap(); - }); - - #[cfg(not(target_os = "linux"))] - Clipboard::new().unwrap().set_image(img_data).unwrap(); - - Ok(()) -} diff --git a/generator/src/copy_ascii.rs b/generator/src/copy_ascii.rs deleted file mode 100644 index 08d37e0..0000000 --- a/generator/src/copy_ascii.rs +++ /dev/null @@ -1,80 +0,0 @@ -use crate::{ - code::{calc_max_line_number_length, calc_wh, prepare_code}, - config::TakeSnapshotParams, -}; -use arboard::Clipboard; -#[cfg(target_os = "linux")] -use arboard::SetExtLinux; -use nvim_oxi::api; -use std::cmp::max; - -const SPACE_BOTH_SIDE: usize = 2; - -fn optional(component: String, is_view: bool) -> String { - if is_view { - component - } else { - "".to_string() - } -} - -#[allow(dead_code)] -pub fn copy_ascii(params: TakeSnapshotParams) -> Result<(), api::Error> { - let code = prepare_code(¶ms.code); - let (width, height) = calc_wh(&code, 1., 1.); - let calc_line_number_width = - |start_line_number: usize| calc_max_line_number_length(height as usize, start_line_number); - let frame_width = max(width as usize, params.file_path.len()) + SPACE_BOTH_SIDE; - let frame_width = match params.start_line_number { - Some(start_line_number) => { - frame_width + SPACE_BOTH_SIDE + calc_line_number_width(start_line_number) - } - None => frame_width, - }; - let line = format!("│{}│\n", "─".repeat(frame_width)); - let frame_width_with_content = frame_width - 1; - let top_frame = format!("â•­{}â•®\n", "─".repeat(frame_width)); - let bottom_frame = format!("â•°{}╯", "─".repeat(frame_width)); - let code = code - .lines() - .enumerate() - .map(|(i, line)| { - format!( - "│ {:1$} │\n", - match params.start_line_number { - Some(start_line_number) => format!( - "{:1$} {line}", - start_line_number + i, - calc_line_number_width(start_line_number), - ), - None => line.to_string(), - }, - frame_width_with_content - 1 - ) - }) - .collect::(); - let text_line = |text: &str| format!("│ {:1$}│\n", text, frame_width_with_content); - let breadcrumbs = optional( - format!("{}{line}", text_line(¶ms.file_path)), - params.has_breadcrumbs, - ); - let ascii_snapshot = format!("{top_frame}{breadcrumbs}{code}{bottom_frame}"); - - #[cfg(target_os = "linux")] - std::thread::spawn(move || { - Clipboard::new() - .unwrap() - .set() - .wait() - .text(ascii_snapshot) - .unwrap(); - }); - - #[cfg(not(target_os = "linux"))] - Clipboard::new() - .unwrap() - .set_text(ascii_snapshot) - .map_err(|err| api::Error::Other(err.to_string()))?; - - Ok(()) -} diff --git a/generator/src/edges.rs b/generator/src/edges.rs deleted file mode 100644 index 00932f1..0000000 --- a/generator/src/edges.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod edge; -pub mod margin; -pub mod padding; diff --git a/generator/src/edges/edge.rs b/generator/src/edges/edge.rs deleted file mode 100644 index 69a0d23..0000000 --- a/generator/src/edges/edge.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub trait Edge { - fn horizontal(&self) -> f32; - - fn vertical(&self) -> f32; -} diff --git a/generator/src/edges/margin.rs b/generator/src/edges/margin.rs deleted file mode 100644 index 305ef65..0000000 --- a/generator/src/edges/margin.rs +++ /dev/null @@ -1,31 +0,0 @@ -use super::edge::Edge; - -#[derive(Clone, Default, Debug)] -pub struct Margin { - pub left: f32, - pub right: f32, - pub top: f32, - pub bottom: f32, -} - -impl Edge for Margin { - fn horizontal(&self) -> f32 { - self.left + self.right - } - - fn vertical(&self) -> f32 { - self.bottom + self.top - } -} - -impl Margin { - #[allow(dead_code)] - pub fn from_value(value: f32) -> Margin { - Margin { - left: value, - right: value, - top: value, - bottom: value, - } - } -} diff --git a/generator/src/edges/padding.rs b/generator/src/edges/padding.rs deleted file mode 100644 index 94c135f..0000000 --- a/generator/src/edges/padding.rs +++ /dev/null @@ -1,30 +0,0 @@ -use super::edge::Edge; - -#[derive(Clone, Default, Debug)] -pub struct Padding { - pub left: f32, - pub right: f32, - pub top: f32, - pub bottom: f32, -} - -impl Edge for Padding { - fn horizontal(&self) -> f32 { - self.left + self.right - } - - fn vertical(&self) -> f32 { - self.bottom + self.top - } -} - -impl Padding { - pub fn from_value(value: f32) -> Padding { - Padding { - left: value, - right: value, - top: value, - bottom: value, - } - } -} diff --git a/generator/src/highlight.rs b/generator/src/highlight.rs deleted file mode 100644 index 3df50e1..0000000 --- a/generator/src/highlight.rs +++ /dev/null @@ -1,107 +0,0 @@ -use std::collections::HashMap; - -use cosmic_text::{Attrs, Family, Style, Weight}; -use syntect::{ - easy::HighlightLines, - highlighting::{FontStyle, ThemeSet}, - parsing::{SyntaxReference, SyntaxSet}, - util::LinesWithEndings, -}; - -use crate::components::interface::render_error::RenderError; - -type SourceMap = HashMap<&'static str, &'static str>; - -pub struct Highlight { - content: String, - code_file_path: String, - extension: Option, - font_family: String, - highlighting_language_source_map: SourceMap, -} - -pub type HighlightResult<'a> = Vec<(&'a str, Attrs<'a>)>; - -impl Highlight { - pub fn new( - content: String, - font_family: String, - code_file_path: String, - extension: Option, - ) -> Highlight { - Highlight { - content, - code_file_path, - extension, - font_family, - highlighting_language_source_map: HashMap::from([("PHP", " Result { - // The extension exist only when users specified explicitly - // By default, using filepath to detect what syntax should use - let syntax = match &self.extension { - Some(extension) => syntax_set - .find_syntax_by_extension(&extension) - .ok_or(RenderError::HighlightCodeFailed(extension.to_string()))?, - None => syntax_set - .find_syntax_for_file(&self.code_file_path) - .map_err(|_| RenderError::NoSuchFile(self.code_file_path.to_string()))? - .ok_or(RenderError::HighlightCodeFailed( - self.code_file_path.to_string(), - ))?, - }; - - // The Syntect clearly distinguish between PHP and PHP Source - // Should use PHP as highlight language if the source content contains " Result, RenderError> { - let syntax_set = two_face::syntax::extra_newlines(); - let theme_set = ThemeSet::load_from_folder(theme_folder) - .map_err(|_| RenderError::HighlightThemeLoadFailed)?; - let syntax = &self.guess_syntax(&syntax_set)?; - let mut highlight = HighlightLines::new(syntax, &theme_set.themes[theme]); - let attrs = Attrs::new().family(Family::Name(self.font_family.as_ref())); - - // Highlight the content line by line using highlight_line function - Ok(LinesWithEndings::from(&self.content) - .map(|line| { - highlight - .highlight_line(line, &syntax_set) - .unwrap() - .into_iter() - .map(|(style, str)| { - let syntect::highlighting::Color { r, g, b, a: _ } = style.foreground; - let attrs = match style.font_style { - FontStyle::BOLD => attrs.weight(Weight::BOLD), - FontStyle::ITALIC => attrs.style(Style::Italic), - FontStyle::UNDERLINE => attrs.style(Style::Normal), - _ => attrs, - }; - - (str, attrs.color(cosmic_text::Color::rgb(r, g, b))) - }) - .collect::() - }) - .fold(vec![], |acc, cur| [acc, cur].concat()) - .into_iter() - .collect::()) - } -} diff --git a/generator/src/lib.rs b/generator/src/lib.rs index 4c1ed05..ac8e84a 100644 --- a/generator/src/lib.rs +++ b/generator/src/lib.rs @@ -1,30 +1,62 @@ -mod code; -mod color; -mod components; -mod config; -mod copy; -mod copy_ascii; -mod edges; -mod highlight; -mod path; -mod save; -mod snapshot; -mod text; - -use config::TakeSnapshotParams; -use copy::copy_into_clipboard; -use copy_ascii::copy_ascii; -use nvim_oxi::{api, Dictionary, Function}; -use save::save_snapshot; - -#[nvim_oxi::plugin] -fn generator() -> nvim_oxi::Result { - let copy_into_clipboard: Function> = - Function::from_fn(copy_into_clipboard); - - Ok(Dictionary::from_iter([ - ("copy_into_clipboard", copy_into_clipboard), - ("save_snapshot", Function::from_fn(save_snapshot)), - ("copy_ascii", Function::from_fn(copy_ascii)), - ])) +mod snapshot_config; + +use codesnap::snapshot::{image_snapshot::ImageSnapshot, snapshot_data::SnapshotData}; +use mlua::prelude::*; +use snapshot_config::SnapshotConfigLua; + +enum SnapshotType { + Png, + Svg, + Html, +} + +impl From for SnapshotType { + fn from(value: String) -> Self { + match value.as_str() { + "png" => SnapshotType::Png, + "svg" => SnapshotType::Svg, + "html" => SnapshotType::Html, + _ => SnapshotType::Png, + } + } +} + +impl SnapshotType { + fn snapshot_data(&self, image_snapshot: ImageSnapshot) -> LuaResult { + let data = match self { + SnapshotType::Png => image_snapshot.png_data(), + SnapshotType::Svg => todo!(), + SnapshotType::Html => todo!(), + } + .map_err(|_| mlua::Error::RuntimeError("Failed to generate snapshot data".to_string()))?; + + Ok(data) + } +} + +fn save( + _: &Lua, + (snapshot_type, path, config): (String, String, SnapshotConfigLua), +) -> LuaResult<()> { + let image_snapshot = config + .0 + .create_snapshot() + .map_err(|_| mlua::Error::RuntimeError("Failed to create snapshot".to_string()))?; + let snapshot_type: SnapshotType = snapshot_type.into(); + + snapshot_type + .snapshot_data(image_snapshot)? + .save(&path) + .map_err(|_| mlua::Error::RuntimeError(format!("Failed to save snapshot data to {}", path))) +} + +fn copy_to_clipboard(_: &Lua, snapshot_type: SnapshotType) {} + +#[mlua::lua_module(skip_memory_check)] +fn codesnap_generator(lua: &Lua) -> LuaResult { + let exports = lua.create_table()?; + + exports.set("save", lua.create_function(save)?)?; + + Ok(exports) } diff --git a/generator/src/path.rs b/generator/src/path.rs deleted file mode 100644 index 33d5164..0000000 --- a/generator/src/path.rs +++ /dev/null @@ -1,10 +0,0 @@ -use regex::Regex; -use std::env::{var, VarError}; - -pub fn parse_save_path(path: String) -> Result { - let home_path = var("HOME")?; - let regex = Regex::new(r"(~|$HOME)").unwrap(); - let path = regex.replace_all(&path, home_path); - - Ok(path.to_string()) -} diff --git a/generator/src/save.rs b/generator/src/save.rs deleted file mode 100644 index 4521cf0..0000000 --- a/generator/src/save.rs +++ /dev/null @@ -1,27 +0,0 @@ -use crate::{config::TakeSnapshotParams, path::parse_save_path, snapshot::take_snapshot}; -use nvim_oxi::api; - -// The function will be called as FFI on Lua side -#[allow(dead_code)] -pub fn save_snapshot(config: TakeSnapshotParams) -> Result<(), api::Error> { - match &config.save_path { - Some(path) => { - if !path.ends_with(".png") { - return Err(api::Error::Other( - "The save_path must ends with .png".to_string(), - )); - } - - let pixmap = take_snapshot(config.clone())?; - let path = parse_save_path(path.to_string()) - .map_err(|err| api::Error::Other(err.to_string()))?; - - pixmap - .save_png(path) - .map_err(|err| api::Error::Other(err.to_string())) - } - None => Err(api::Error::Other( - "Cannot find 'save_path' in config".to_string(), - )), - } -} diff --git a/generator/src/snapshot.rs b/generator/src/snapshot.rs deleted file mode 100644 index 04402d5..0000000 --- a/generator/src/snapshot.rs +++ /dev/null @@ -1,78 +0,0 @@ -use std::sync::Arc; - -use tiny_skia::Pixmap; - -use crate::components::background::Background; -use crate::components::breadcrumbs::Breadcrumbs; -use crate::components::code_block::CodeBlock; -use crate::components::container::Container; -use crate::components::editor::code::Code; -use crate::components::editor::mac_title_bar::MacTitleBar; -use crate::components::highlight_code_block::HighlightCodeBlock; -use crate::components::interface::component::ComponentContext; -use crate::components::interface::render_error; -use crate::components::line_number::LineNumber; -use crate::components::rect::Rect; -use crate::components::watermark::Watermark; -use crate::config::TakeSnapshotParams; - -// Scale the screenshot to 3 times its size -const SCALE_FACTOR: f32 = 3.; -const LINE_HEIGHT: f32 = 20.; -const VIEW_WATERMARK_PADDING: f32 = 82.; - -// The params is come from neovim instance -pub fn take_snapshot(params: TakeSnapshotParams) -> render_error::Result { - let context = ComponentContext { - scale_factor: SCALE_FACTOR, - take_snapshot_params: Arc::new(params.clone()), - }; - let background_padding = Background::parse_background_padding( - params.bg_x_padding, - params.bg_y_padding, - params.bg_padding, - ); - - // If vertical background padding is less than 82., should hidden watermark component - // If watermark text is equal to "", the watermark component is hidden - let watermark = if background_padding.bottom >= VIEW_WATERMARK_PADDING { - params.watermark - } else { - "".to_string() - }; - let pixmap = Container::from_children(vec![Box::new(Background::new( - background_padding, - vec![ - Box::new(Rect::new( - 16., - params.min_width, - vec![ - Box::new(MacTitleBar::from_radius(8., params.mac_window_bar)), - Box::new(Breadcrumbs::from_path( - params.file_path, - 15., - params.breadcrumbs_separator, - params.has_breadcrumbs, - )), - Box::new(CodeBlock::from_children(vec![ - Box::new(HighlightCodeBlock::from_line_number( - params.highlight_start_line_number, - params.highlight_end_line_number, - LINE_HEIGHT, - )), - Box::new(LineNumber::new( - ¶ms.code, - params.start_line_number, - LINE_HEIGHT, - )), - Box::new(Code::new(params.code, LINE_HEIGHT, 15.)), - ])), - ], - )), - Box::new(Watermark::new(watermark)), - ], - ))]) - .draw_root(&context)?; - - Ok(pixmap) -} diff --git a/generator/src/snapshot_config.rs b/generator/src/snapshot_config.rs new file mode 100644 index 0000000..7eed36c --- /dev/null +++ b/generator/src/snapshot_config.rs @@ -0,0 +1,12 @@ +use codesnap::config::SnapshotConfig; +use mlua::{FromLua, LuaSerdeExt}; + +pub struct SnapshotConfigLua(pub SnapshotConfig); + +impl FromLua for SnapshotConfigLua { + fn from_lua(value: mlua::Value, lua: &mlua::Lua) -> mlua::Result { + let config: SnapshotConfig = lua.from_value::(value)?; + + Ok(SnapshotConfigLua(config)) + } +} diff --git a/generator/src/text.rs b/generator/src/text.rs deleted file mode 100644 index 498b4b4..0000000 --- a/generator/src/text.rs +++ /dev/null @@ -1,121 +0,0 @@ -use cosmic_text::{ - Align, Attrs, AttrsList, Buffer, BufferLine, Color, FontSystem, LineEnding, Metrics, Shaping, - SwashCache, -}; -use tiny_skia::{Paint, Pixmap, Rect, Transform}; - -pub struct FontRenderer { - font_system: FontSystem, - scale_factor: f32, - metrics: Metrics, -} - -impl FontRenderer { - pub fn new( - font_size: f32, - line_height: f32, - scale_factor: f32, - fonts_folder: &str, - ) -> FontRenderer { - let mut font_system = FontSystem::new(); - - font_system.db_mut().load_fonts_dir(fonts_folder); - - let metrics = Metrics::new(font_size, line_height).scale(scale_factor.clone()); - - FontRenderer { - metrics, - font_system, - scale_factor, - } - } - - pub fn draw_text( - &mut self, - x: f32, - y: f32, - w: f32, - h: f32, - spans: Vec<(&str, Attrs)>, - pixmap: &mut Pixmap, - ) { - let mut buffer = Buffer::new(&mut self.font_system, self.metrics); - buffer.set_size( - &mut self.font_system, - Some(w * self.scale_factor), - Some(h * self.scale_factor), - ); - buffer.set_rich_text( - &mut self.font_system, - spans, - Attrs::new(), - Shaping::Advanced, - ); - self.draw(x, y, &mut buffer, pixmap); - } - - pub fn draw_line( - &mut self, - x: f32, - y: f32, - w: f32, - h: f32, - line: &str, - attrs: Attrs, - align: Option, - pixmap: &mut Pixmap, - ) { - let mut buffer = Buffer::new(&mut self.font_system, self.metrics); - let mut line = if cfg!(unix) { - BufferLine::new( - line, - LineEnding::Lf, - AttrsList::new(attrs), - Shaping::Advanced, - ) - } else if cfg!(windows) { - BufferLine::new( - line, - LineEnding::CrLf, - AttrsList::new(attrs), - Shaping::Advanced, - ) - } else { - panic!("Unsupported OS") - }; - - line.set_align(align); - buffer.lines = vec![line]; - buffer.set_size(&mut self.font_system, Some(w), Some(h)); - self.draw(x, y, &mut buffer, pixmap); - } - - fn draw<'a>(&mut self, x: f32, y: f32, buffer: &mut Buffer, pixmap: &mut Pixmap) { - let mut swash_cache = SwashCache::new(); - let default_font_color = Color::rgb(255, 255, 255); - - buffer.draw( - &mut self.font_system, - &mut swash_cache, - default_font_color, - |font_x, font_y, w, h, color| { - let mut paint = Paint { - anti_alias: true, - ..Default::default() - }; - - paint.set_color_rgba8(color.r(), color.g(), color.b(), color.a()); - - let rect = Rect::from_xywh( - font_x as f32 + x * self.scale_factor, - font_y as f32 + y * self.scale_factor, - w as f32, - h as f32, - ) - .expect("Cannot draw text on pixmap"); - - pixmap.fill_rect(rect, &paint, Transform::identity(), None); - }, - ); - } -} From a1da69f40a2cc1756ae3bfb0b97c9febbd1af200 Mon Sep 17 00:00:00 2001 From: The Mist Date: Sat, 7 Dec 2024 22:33:40 +0800 Subject: [PATCH 2/2] [Feat] add feature that allow users can generate ASCII snapshots (#138) --- generator/Cargo.lock | 4 +- generator/Cargo.toml | 2 +- generator/src/lib.rs | 68 ++++++++++++++---- lua/codesnap/config.lua | 55 ++++----------- lua/codesnap/init.lua | 133 ++++++++++++++++++++++------------- lua/codesnap/module.lua | 24 +++++++ lua/codesnap/static.lua | 56 +++++++++++---- lua/codesnap/utils/path.lua | 14 ++++ lua/codesnap/utils/table.lua | 36 +++++++--- lua/linux-x86_64generator.so | Bin 8683904 -> 0 bytes lua/mac-aarch64generator.so | Bin 6302864 -> 0 bytes lua/mac-x86_64generator.so | Bin 6584568 -> 0 bytes plugin/codesnap.lua | 48 +++++++------ 13 files changed, 288 insertions(+), 152 deletions(-) create mode 100644 lua/codesnap/module.lua delete mode 100755 lua/linux-x86_64generator.so delete mode 100755 lua/mac-aarch64generator.so delete mode 100755 lua/mac-x86_64generator.so diff --git a/generator/Cargo.lock b/generator/Cargo.lock index 8fed741..d277eab 100644 --- a/generator/Cargo.lock +++ b/generator/Cargo.lock @@ -250,9 +250,9 @@ dependencies = [ [[package]] name = "codesnap" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "969705c26569d1cc4ba1f77a6bf904108403d57f4e7c6de074508c2b14e26d73" +checksum = "14c21b08e3ff00129f07650e6f607193f2688003035e400ec2417b762cdf9ba8" dependencies = [ "anyhow", "arboard", diff --git a/generator/Cargo.toml b/generator/Cargo.toml index 1476e1f..349c0cf 100644 --- a/generator/Cargo.toml +++ b/generator/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" crate-type = ["cdylib"] [dependencies] -codesnap = "0.7.1" +codesnap = "0.7.2" mlua = { version = "0.10.0", features = ["module", "luajit", "serialize"] } serde = { version = "1.0.204", features = ["derive"] } diff --git a/generator/src/lib.rs b/generator/src/lib.rs index ac8e84a..3702281 100644 --- a/generator/src/lib.rs +++ b/generator/src/lib.rs @@ -1,5 +1,7 @@ mod snapshot_config; +use std::{ffi::OsStr, path::Path}; + use codesnap::snapshot::{image_snapshot::ImageSnapshot, snapshot_data::SnapshotData}; use mlua::prelude::*; use snapshot_config::SnapshotConfigLua; @@ -22,11 +24,21 @@ impl From for SnapshotType { } impl SnapshotType { - fn snapshot_data(&self, image_snapshot: ImageSnapshot) -> LuaResult { + fn snapshot_data( + &self, + image_snapshot: ImageSnapshot, + is_raw: bool, + ) -> LuaResult { let data = match self { - SnapshotType::Png => image_snapshot.png_data(), - SnapshotType::Svg => todo!(), - SnapshotType::Html => todo!(), + SnapshotType::Png => { + if is_raw { + image_snapshot.raw_data() + } else { + image_snapshot.png_data() + } + } + SnapshotType::Svg => image_snapshot.svg_data(), + SnapshotType::Html => image_snapshot.html_data(), } .map_err(|_| mlua::Error::RuntimeError("Failed to generate snapshot data".to_string()))?; @@ -34,29 +46,55 @@ impl SnapshotType { } } -fn save( - _: &Lua, - (snapshot_type, path, config): (String, String, SnapshotConfigLua), -) -> LuaResult<()> { - let image_snapshot = config +fn create_image_snapshot_by_config(config: &SnapshotConfigLua) -> LuaResult { + config .0 .create_snapshot() - .map_err(|_| mlua::Error::RuntimeError("Failed to create snapshot".to_string()))?; - let snapshot_type: SnapshotType = snapshot_type.into(); + .map_err(|_| mlua::Error::RuntimeError("Failed to create image snapshot".to_string())) +} - snapshot_type - .snapshot_data(image_snapshot)? +fn save(_: &Lua, (path, config): (String, SnapshotConfigLua)) -> LuaResult<()> { + let snapshot_type: SnapshotType = Path::new(&path) + .extension() + .and_then(OsStr::to_str) + .ok_or_else(|| mlua::Error::RuntimeError("Invalid file extension".to_string()))? + .to_string() + .into(); + + SnapshotType::from(snapshot_type) + .snapshot_data(create_image_snapshot_by_config(&config)?, false)? .save(&path) .map_err(|_| mlua::Error::RuntimeError(format!("Failed to save snapshot data to {}", path))) } -fn copy_to_clipboard(_: &Lua, snapshot_type: SnapshotType) {} +fn copy(_: &Lua, (snapshot_type, config): (String, SnapshotConfigLua)) -> LuaResult<()> { + SnapshotType::from(snapshot_type) + .snapshot_data(create_image_snapshot_by_config(&config)?, true)? + .copy() + .map_err(|_| mlua::Error::RuntimeError("Failed to copy snapshot to clipboard".to_string())) +} + +fn copy_ascii(_: &Lua, config: SnapshotConfigLua) -> LuaResult<()> { + config + .0 + .create_ascii_snapshot() + .raw_data() + .map_err(|_| mlua::Error::RuntimeError("Failed to generate ASCII snapshot".to_string()))? + .copy() + .map_err(|_| { + mlua::Error::RuntimeError("Failed to copy ASCII snapshot to clipboard".to_string()) + })?; + + Ok(()) +} #[mlua::lua_module(skip_memory_check)] -fn codesnap_generator(lua: &Lua) -> LuaResult { +fn generator(lua: &Lua) -> LuaResult { let exports = lua.create_table()?; exports.set("save", lua.create_function(save)?)?; + exports.set("copy", lua.create_function(copy)?)?; + exports.set("copy_ascii", lua.create_function(copy_ascii)?)?; Ok(exports) } diff --git a/lua/codesnap/config.lua b/lua/codesnap/config.lua index a91121b..a41da40 100644 --- a/lua/codesnap/config.lua +++ b/lua/codesnap/config.lua @@ -5,33 +5,7 @@ local static = require("codesnap.static") local table_utils = require("codesnap.utils.table") local config_module = {} -local assets_folder = static.cwd .. "/assets" - --- Auto generated codesnap filename based on the following rule: --- CodeSnap_y-m-d_at_h:m:s -local function auto_generate_snap_filename() - return os.date("CodeSnap_%Y-%m-%d_at_%H:%M:%S.png") -end - --- If the save_path is already configured, but no explicit filename is specified, --- it will be replaced with auto-generated filename -local function parse_save_path(save_path) - if save_path == nil or string_utils.ends_with(save_path, "png") then - return save_path - end - - local parsed_save_path = string_utils.ends_with(save_path, "/") and save_path or save_path .. "/" - - return parsed_save_path .. auto_generate_snap_filename() -end - -local function get_file_path(show_workspace) - local relative_path = path_utils.get_relative_path() - - return show_workspace and path_utils.get_workspace() .. "/" .. relative_path or relative_path -end - -function config_module.get_config(extension) +function config_module.get_config() local code = visual_utils.get_selected_text() local start_line_number = visual_utils.get_start_line_number() @@ -40,19 +14,20 @@ function config_module.get_config(extension) return end - local config = table_utils.merge({ - code = code, - extension = extension, - code_file_path = vim.fn.expand("%:p"), - fonts_folder = assets_folder .. "/fonts", - themes_folder = assets_folder .. "/themes", - theme = "base16-onedark", - file_path = static.config.has_breadcrumbs and get_file_path(static.config.show_workspace) or "", - start_line_number = static.config.has_line_number and start_line_number or nil, - }, static.config) - - config.save_path = parse_save_path(config.save_path) - + local config = table_utils.assign(static.config, { + code = { + content = code, + file_path = vim.fn.expand("%:p"), + line_number = { + start_number = start_line_number, + color = "#495162", + }, + }, + -- file_path = static.config.has_breadcrumbs and get_file_path(static.config.show_workspace) or "", + -- start_line_number = static.config.has_line_number and start_line_number or nil, + }) + + -- config.save_path = parse_save_path(config.save_path) return config end diff --git a/lua/codesnap/init.lua b/lua/codesnap/init.lua index 5da5971..0410419 100644 --- a/lua/codesnap/init.lua +++ b/lua/codesnap/init.lua @@ -2,75 +2,114 @@ local static = require("codesnap.static") local visual_utils = require("codesnap.utils.visual") local table_utils = require("codesnap.utils.table") local string_utils = require("codesnap.utils.string") +local path_utils = require("codesnap.utils.path") +local module = require("codesnap.module") local config_module = require("codesnap.config") local highlight_module = require("codesnap.highlight") local main = { cwd = static.cwd, - preview_switch = static.preview_switch, highlight_mode_config = nil, } -function main.setup(config) - static.config = table_utils.merge(static.config, config == nil and {} or config) -end +-- Prepare the path of the Rust module +-- Concat lib?.extension and ?.extension to package.cpath +package.cpath = path_utils.join(";", package.cpath, module.generator_file("?"), module.generator_file("lib?")) -function main.copy_into_clipboard_with_config(config) - require("generator").copy_into_clipboard(config) - vim.cmd("delmarks <>") - vim.notify("Save snapshot into clipboard successfully") -end - --- Take ASCII code snapshot into clipboard -function main.copy_ascii_snapshot(extension) - require("generator").copy_ascii(config_module.get_config(extension)) - vim.cmd("delmarks <>") - vim.notify("Save snapshot into clipboard successfully") +function main.setup(config) + static.config = table_utils.merge_config(static.config, config == nil and {} or config) end -function main.save_snapshot_with_config(config) - if string_utils.is_str_empty(static.config.save_path) then - error( - "If you want to save snapshot in somewhere, you should config the save_path before, refer: https://github.com/mistricky/codesnap.nvim?tab=readme-ov-file#save-the-snapshot", - 0 - ) - end - - local matched_extension = string.match(static.config.save_path, "%.(.+)$") +-- Save snapshot to specified save_path +--- @param save_path string +function main.save(save_path) + local generator = require("generator") - if matched_extension ~= "png" and matched_extension ~= nil then - error("The extension of save_path should be .png", 0) + if save_path == nil then + error("Save path is not specified", 0) end - require("generator").save_snapshot(config) + generator.save(save_path, config_module.get_config()) vim.cmd("delmarks <>") - ---@diagnostic disable-next-line: need-check-nil - vim.notify("Save snapshot in " .. config.save_path .. " successfully") + vim.notify("Save snapshot in " .. save_path .. " successfully!") end --- Take a snapshot and copy it into clipboard -function main.copy_into_clipboard(extension) - main.copy_into_clipboard_with_config(config_module.get_config(extension)) -end +-- Copy snapshot into clipboard +--- @param type? string +function main.copy(type) + local snapshot_type = type == nil and "png" or type + local generator = require("generator") --- Take a snapshot and save it into the specified path -function main.save_snapshot(extension) - main.save_snapshot_with_config(config_module.get_config(extension)) + generator.copy(snapshot_type, config_module.get_config()) + vim.cmd("delmarks <>") + vim.notify("The snapshot is copied into clipboard successfully!") end -function main.highlight_mode_copy_into_clipboard(extension) - main.highlight_mode_config = config_module.get_config(extension) +-- Generate ASCII code snapshot and copy it into clipboard +function main.copy_ascii() + local generator = require("generator") - highlight_module.create_highlight_selector_window( - "copy_into_clipboard_with_config", - visual_utils.get_selected_lines() - ) + generator.copy_ascii(config_module.get_config()) + vim.cmd("delmarks <>") + vim.notify("The ASCII code snapshot is copied into clipboard successfully!") end -function main.highlight_mode_save_snapshot(extension) - main.highlight_mode_config = config_module.get_config(extension) - - highlight_module.create_highlight_selector_window("save_snapshot_with_config", visual_utils.get_selected_lines()) -end +-- function main.copy_into_clipboard_with_config(config) +-- require("generator").copy_into_clipboard(config) +-- vim.cmd("delmarks <>") +-- vim.notify("Save snapshot into clipboard successfully") +-- end +-- +-- -- Take ASCII code snapshot into clipboard +-- function main.copy_ascii_snapshot(extension) +-- require("generator").copy_ascii(config_module.get_config(extension)) +-- vim.cmd("delmarks <>") +-- vim.notify("Save snapshot into clipboard successfully") +-- end +-- +-- function main.save_snapshot_with_config(config) +-- if string_utils.is_str_empty(static.config.save_path) then +-- error( +-- "If you want to save snapshot in somewhere, you should config the save_path before, refer: https://github.com/mistricky/codesnap.nvim?tab=readme-ov-file#save-the-snapshot", +-- 0 +-- ) +-- end +-- +-- local matched_extension = string.match(static.config.save_path, "%.(.+)$") +-- +-- if matched_extension ~= "png" and matched_extension ~= nil then +-- error("The extension of save_path should be .png", 0) +-- end +-- +-- require("generator").save_snapshot(config) +-- vim.cmd("delmarks <>") +-- ---@diagnostic disable-next-line: need-check-nil +-- vim.notify("Save snapshot in " .. config.save_path .. " successfully") +-- end +-- +-- -- Take a snapshot and copy it into clipboard +-- function main.copy_into_clipboard(extension) +-- main.copy_into_clipboard_with_config(config_module.get_config(extension)) +-- end +-- +-- -- Take a snapshot and save it into the specified path +-- function main.save_snapshot(extension) +-- main.save_snapshot_with_config(config_module.get_config(extension)) +-- end +-- +-- function main.highlight_mode_copy_into_clipboard(extension) +-- main.highlight_mode_config = config_module.get_config(extension) +-- +-- highlight_module.create_highlight_selector_window( +-- "copy_into_clipboard_with_config", +-- visual_utils.get_selected_lines() +-- ) +-- end +-- +-- function main.highlight_mode_save_snapshot(extension) +-- main.highlight_mode_config = config_module.get_config(extension) +-- +-- highlight_module.create_highlight_selector_window("save_snapshot_with_config", visual_utils.get_selected_lines()) +-- end return main diff --git a/lua/codesnap/module.lua b/lua/codesnap/module.lua new file mode 100644 index 0000000..3b8045d --- /dev/null +++ b/lua/codesnap/module.lua @@ -0,0 +1,24 @@ +local module = {} + +local path_utils = require("codesnap.utils.path") + +local OS_LIB_EXTENSION_MAP = { + mac = "dylib", + osx = "dylib", + windows = "dll", + linux = "so", +} + +local RUST_BUILD_DIR = path_utils.with_dir_name("../../../generator/target/debug") + +function module.get_lib_extension() + local extension = OS_LIB_EXTENSION_MAP[jit.os:lower()] + + return extension or "so" +end + +function module.generator_file(filename) + return path_utils.join("/", RUST_BUILD_DIR, filename .. "." .. module.get_lib_extension()) +end + +return module diff --git a/lua/codesnap/static.lua b/lua/codesnap/static.lua index 0c571c9..56aa802 100644 --- a/lua/codesnap/static.lua +++ b/lua/codesnap/static.lua @@ -2,21 +2,47 @@ local path_utils = require("codesnap.utils.path") return { config = { - mac_window_bar = true, - title = "CodeSnap.nvim", - code_font_family = "CaskaydiaCove Nerd Font", - watermark_font_family = "Pacifico", - watermark = "CodeSnap.nvim", - bg_theme = "default", - breadcrumbs_separator = "/", - has_breadcrumbs = false, - has_line_number = false, - show_workspace = false, - min_width = 0, - bg_x_padding = 122, - bg_y_padding = 82, - save_path = path_utils.get_default_save_path(), + window = { + mac_window_bar = true, + shadow = 20, + margin = { + x = 82, + y = 82, + }, + border = { + color = "#ffffff30", + }, + }, + code = { + font_family = "CaskaydiaCove Nerd Font", + theme = "candy", + }, + watermark = { + content = "CodeSnap", + font_family = "Pacifico", + color = "#ffffff", + }, + scale_factor = 3, + background = { + start = { + x = 0, + y = 0, + }, + ["end"] = { + x = "max", + y = 0, + }, + stops = { + { + position = 0, + color = "#6bcba5", + }, + { + position = 1, + color = "#caf4c2", + }, + }, + }, }, cwd = path_utils.back(path_utils.back(debug.getinfo(1, "S").source:sub(2):match("(.*[/\\])"))), - preview_switch = true, } diff --git a/lua/codesnap/utils/path.lua b/lua/codesnap/utils/path.lua index 37c06f8..6da3a00 100644 --- a/lua/codesnap/utils/path.lua +++ b/lua/codesnap/utils/path.lua @@ -2,6 +2,20 @@ local string_utils = require("codesnap.utils.string") local platform_utils = require("codesnap.utils.platform") local path_utils = {} +function path_utils.join(separator, ...) + local args = { ... } + + return table.concat(args, separator) +end + +function path_utils.dir_name() + return debug.getinfo(1).source:match("@?(.*/)") +end + +function path_utils.with_dir_name(path) + return path_utils.dir_name() .. path +end + function path_utils.get_escaped_cwd() local cwd = vim.fn.getcwd() diff --git a/lua/codesnap/utils/table.lua b/lua/codesnap/utils/table.lua index bfb993a..d7da6ef 100644 --- a/lua/codesnap/utils/table.lua +++ b/lua/codesnap/utils/table.lua @@ -2,9 +2,17 @@ local list_utils = require("codesnap.utils.list") local table_utils = {} function table_utils.assign(t, props) + local parsed_t = t or {} + for k, v in pairs(props) do - t[k] = v + if type(v) == "table" then + parsed_t[k] = table_utils.assign(parsed_t[k], v) + else + parsed_t[k] = v + end end + + return parsed_t end function table_utils.merge(t1, t2) @@ -15,6 +23,22 @@ function table_utils.merge(t1, t2) return t1 end +-- Merge two tables, if the value of the key in t2 is "none", it will be removed from t1 +-- which is useful for removing a key from the config, in CodeSnap, set border = None to remove the border +function table_utils.merge_config(t1, t2) + for k, v in pairs(t1) do + if type(v) == "table" and type(t2[k]) == "table" then + t1[k] = table_utils.merge_config(v, t2[k]) + elseif t2[k] == "none" then + t1[k] = nil + elseif t2[k] ~= nil then + t1[k] = t2[k] + end + end + + return t1 +end + function table_utils.is_array(t) return type(t[1]) == "number" end @@ -67,14 +91,4 @@ function table_utils.to_string(t) return parse(t) end --- function table_utils.to_string(t) --- local result = "" --- --- for key, value in pairs(t) do --- result = result .. key .. ":" .. tostring(value) .. "," --- end --- --- return "{" .. result .. "}" --- end - return table_utils diff --git a/lua/linux-x86_64generator.so b/lua/linux-x86_64generator.so deleted file mode 100755 index a2e7ea2581faf5931b0570d8aa0838d761c30d8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8683904 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 z z2Hqtv&NkOokKFx%@lbf5+|G~5ogK`2GIAfsosg$Dnd9cdOLFfsCO;<+a^sco1^KC1 zr`xFaX}v{mdk)Co^ER{Jp72QcPif0c6z&V}2oK4R*vA}q zAUqL17M=^A39p1VURv+rHmuVlpTgVZcfq^lcfBYy%O2_KR_g?vi>SNMedS$IMI5BQw?Ik@xk`hK5> zH_4s1o9osme<8d>z6v}fZ@>rSFM}uKtHQ_RuY%{~tHEdFuY*_QuZK5YQSV_bxJT~6 z+rqo#Z$!RN{w8=#z9D=>z6m@d-xNL-UXpK){DOQr++DTa!#401`CH%t`S$Q0`Ht|2 zd?)yjd{=l%z6X3lz8Ab8-v>S?@4}r|*7th=yh(mA+$TR2-XT8%9+DpgACMmnPsopf zkI9dP=j6x3XXGcsEAj~5aO*u-_sCB|zD@oSc$a(t?~|VfkIDZBJ|h1ZJR|=Ed`f;6 zyd?iLd_jIT+y@!Y4E%G@$Ab$ehBYz4W zk^dDwB!3p3lK%rfA%6~DkUtNflRNw3{r|P~{jLOWlD`P8oS z;U)Pt@CEs{aQAif9(I7Y$OCvlz6-o3JR;v6`62n9@RWRS_=NoJ@Pd3l_?-MexYMlf z_YioK{7|@0emJ~CeiS?;KN>zDKL(zV9}6Fo9}myT-wU6SzaL(ae-PeSqu#@Z;U4(_ z-X=d4-X%XB-Y1XYvG5W3$C1y-&w@|MKMgO1FUUWGy!-lk59h*L!UOWpA>R`okzauP zPm@FDr5@Ra;<_(XU?{v`5q^1r~Hwd?zR8r~%T8{8*f zz&qssgoot+h7W`%Z@FDrO@RWQ9 z_=G%w7v#IZ=j6M?optK_-4os<-y80e?+fpc?+*{j4}uTK4}mA-hr!3>N5XUR5I!S+ z7rY{W54^E%y@%uA9{GFWZSwcSyW}5)_l3vgA4Yyeelk2GKNUVDKOJ5QUkG>KSnnam zoR;uFc#r(!m=g&f3Qx(;!kmflLin8g)0pF|SKsev;7#&#;Xe82;2rV{;GysV`3U)h z{37_6{1SLhp2BD3UxioXUxPQ+ulMkExJUjic$@s&@UHN_@Rle;ht0e-fUP{{=o1UXeeIe4|zG;cswHc$<8I ze3$&6@ILv!;W7CO_A~E$Bl4Bu8TpIhQ}UO>OY&F17sA~Q>pi&0x5!@u56D-C_sG|P zN91e5hvduPDfzna3Hkc)g1iNvlWz=nHmdJ;Q+QLjPrf;a%_+`Mco(c^}>*KLH+*zYjhnkKif!2jLU)55o)c0ent=8r*qveZQx} zo8&RvCqEP3A^#*iBp<>DJ|+Jryd?iOd_n$# z{mpxqyG6Z+mEkS&7sCVcm%@AGuYgD7uY?cDUky*mUkjg*H{k{O8{l*Dwc*Z|_5H2` zZ<4PE_sKVacZ7%J8zDa+-vpkJZw4QeZvoHAm&0e|+rTUGZQ+gO^&WPBd*lJUO}-1f zOTIh2PrfHSCf^%ABHtIDk?#+mk{<*w$$Rhx`C)K(t9lPd!dv7aJRpA;yhr{Xctn02 zd`SLYcuM|0_=Nle@Phn9@HzQM;Lg_d{hk7El7AHLlb-?ake>+;$v+7nkPqPr`PuL> z`8n{M{5<%K{Cs#t{snkrn|cplgnQ%{!`tLvhIh%o0`HSw4v)#NgpY)0peUU_sE}wx5+Db zm;4!cpZxFeSony1fqX{(9DGXtJiH`#4lwUI3-TAj-Rip58J>!;cfD5k?)f40PhQr$#+D4M7}dTBi{`^CEo*HlJ5my zknat5-&*fsUwDgrKX^cXAiO6$B0m`UA$bp;k{=GAkRJ&z$V2#?{9SNo$NGM)H_6|F zyia}{yhHw8cu4+!_<;O_@Pz!s@G<$x@SOZq_>BB?ctsw=8$rE?kHbCkv*2y=A-qd| zHoQ;%S$Ir-E__7(Id~>~N`3+ICHV-xAio&y?o{vL%kUQYSKtBpHNcfQaO3X>g zzX6|+Uj;A7Gx%J%vvYmF*C5{{zYgvT?~vbsd`NyHd_aB^JR!dsJ|@2vo|8}EGx9s( z75UHLja}+J6mXCHm+&_Eeef>%ui<_22jH>r5&7?t&&dA>pOQZWFUcQ;FNC|h)_Zsy z`4;(~;Q{$y;63uE;gRqm`QMOF$rtbm`E&4s{CW7C+&R#^2Rgge_q!6jN&X_ZPu_rc z$X^N%$zK5jz23t*aF2XFc$<6!c$a)5c%S^u z@R;0(kA!FBTOdCr-wIxmx8V!n?jH3XwnM%}{#JNEz7xDhzAHQ;-vd4*-wU3S?*pF* zFUY&d&&dyfJDvJ|4~93%4~6^Whr>IehfS(KNdbCKOSC@p9pX4 zS??i&d*mO4x5+;Y?~)JTee%=bG5P<%N5V7mk0C!L{{*}w{}g;d{=aZ{uX+!kfw#!d zg$LxHgZIcUfJfvb_>lZ!cuIZ=d_tbW3-YhR=j305J8!G+_v`Q``M2Oc`M2R6^6$b! z@@wG(^6TLV`S;;t@*l!;@*F-R{|USzzYX5lyWYbcaF6__@HY9~@Gkj1@V@Yv{9fco zHqe{#tlW-h|J{ z-vF=3*M>Ltt@p4F+#_EP-X`Aw-X-4<-Y4G#9+PhdACYek&&ZdY{{=i2J|e#t`HcL2_>}xN@KX4K{6Xa1gX=w% z@D}->-~su=@E-Xb9+5u*ACf->Ps#rZp9n9=pGAI7{tviwNPWN0!JEQ;^5>E7kUIyP z_oz_#fP5w76Y>|q$K(xoPX03ZjC@siMgA&yqgU@?HMmE}!3ZIgn4ll`L_=5c7aQBFM4`;z! zRkl>Axv zg!~`yg8Vu7ocv#KC#>)HKkz2`N{5*D8J~P*c!&JO@R0na@B#TN;0d`4ACtcto|C^8 zJ|l0!EAltM8%NiBSR3w3UGh`l zee#dOW8ow6Gmy{7&xB9OKM60%hwugY*>LyW^&ZZFx5&?f2ju6&d*m0wBl3&jL-I@D zDR~N?2rtOLiu|1X3b^y0`hKl9$;Zh1vc$@q#c$fTcc%S?pcr1KGelPMF`Tg)I`ETGQ`GfEUc?oy> z^&YIZ$p3_VK>jeiM?Qx~yMe7v3TN zH}awI0r?Ah=KU%WJ|_e+}|6`ReeI z@Qi#7lP2zO7Y_pl847WumHKzNUQedHtIL-H2#Df!0miSUAaQ{?C5o5P*= z*7v&{-W2YWZ-abCcu2l2@&n-s`3}gBh3Dh}@-yKT`7X#ePOSG}-6P)}`L^&b`JTx4 zg~#N3BR?YF7oG{9lJAdvDSSbG5c2N(>OEL*k@t`f$Pb72gh%8@AwLwJk{^xyg!~wI zA$(4LEb`9#>-)9dBtIT`UwDW7MC3!^1M&#@MEIEeB;<49GxCohUy+{zZ$$MTtb61i zMZPV(OMV9OeeyHmvG5W3Cy~#{hwv%++3=G59QcC#Jh=OTdJpHrTfzhK3z6@UUj&cH zzXTtWUkXpjFN06WuYeciWB8o>n{elY_5EHAZ<2op?hEgbUyFQ5em#6Zegixq{{ehV z{v&u!{$u!z{1$jcejB`TQoV;e;2!y1@HY9~@Gf})@00%$9+Te(ACdnWo{>KQpOXI$ zUXuR-z94@H?tZA=!=vyP`Qz|Fcu#ml{v_rM$^QaR$)AQ#$o~c}$QSTA`9I;#hwJ-& z9^NE(4#oGMDm*8D6?{g%8oUzT_(;76oA=09$DFqC zF8LbB_sQ3U$K=c4Bl30O8ToqfDftHQl6)ihg8a>J_vCsHKD`F`*Y`GN3|{1Etn{4jVzek6QM z9>R0-cfn`m?}k_8eR$)PdJiYSJ@OObZSn}-B|iz?C;tdMCLh2@lZUcuIZ|d_w*uctL(Cd`^BD+&Qhj z-^<}m@+;v!`8VJl@^8UI@^8Zj<;WP4gB43do18P9eduYHt@|VHe zOCcGqH244twKV9!(UF2Kj>%#-`7Q9EkF+3vQ z6h0*19G(iFkS|BR5Iz^~{BM1~+h9(Ud|S9rz5~2N9>7ELUEl-q-QfxOp71gG-te4! zU-*oCe|SZH5WI1Ay@x~K9{FMLHu;h8F8Mp)ee!q0WAb;yN928YMt(eeN`4}|B#+<= z@{{21XX-tC1l}S)1s(|Rk$)8Vi2Mxrko-(|O8yD>g#1(Rg8YBsbMnu^ozK?yo4}jo zpNIS8Ux0VWzX%V>zXTtUUkXpiFN2TCuYl*|WB82xoA8SKYIx(EdJh@gBfkdTCch5e zCBFgQC%+LMlivg%k>3o@$dA~^eBMpTmmh)8LGnG|mGH*7^&V{A6W$iy72X#f3m*y3 zgipzPN17f=;S1qzQt!deX^~%v`2qPlN15aHgh#@M!c*ZB;f3(IaOb@Ge(n03!hPW# z;i2$>@I?4ncrJV$bHOD$?ZBba=Xr)+^%y* z?zeYdab6bWAJ`bZeW~7Ow2ASS@PK^$W|Qv;kAx3}r@|+~3*mF&&L#Ez+VwZdyVzHY zJcPH&Pv6w^&>=qu-XovEBjH2xd^0mY6+R(fZ3~kxggalZ_fWiOlNHxVgS@-4agRJ$ z#dtvOzrc7%-t8OjlZP)f9S6@Iv@pxN~{E2fKcs-1~{?r%itT4(7ach4;yyMLr?l`K@M7Nhur2v@;@LSk=y)`{1N0wfcMScuCB!3@#KyLFx z^3#w{$BA<LzDK_DPUbr7liPeu z?joO%+x(b(BjhLKHeZl$iF`?ZBYInq+x{EhtoL>c@*eqHFyAL%550BB?e)+j4=^Vp z-whs<9{?Yb9||9nf5kq>$V21{@)O{5@}Jt?$UlI*`>lF!AAx)1Hs2;c9r+IV5FV1B z3y;Wcen>t-enf8b8Tpry&&h3mMt(W+b8?$^uB!KApFb|S&9}&}!u&S5&3DPKMLs0A z`2qR8IKM-3n@`DqfcY7@%}>d1Lw-hX^A)+h-<_-Lz1e(|9qVtg*ritM_K}9{B;t`{Xv?AwLfJ z9{Gph5xIRH#^lf9e2s*U$(uWv_s^XCG#s}eKNCJDAHo;pHt&9?-rKpzd*n9XCjSER z9derw$?f@y$ZdW|Zu=jRe-+2g$j9)U{A&1&{08`(+(ZA)ckBK9_xVqLGv>6&e-3Yx z-v{rKKL8KO{|FzD+w}~|A4NVTuizQ^Kj2exXBYE4oRMFF_mhg;?$^1d-rI{Yr%C=Q zc#Hh?@POPtPrBr9M7~dM^8@nb$S36X^ExH}7w+E)x&1z8O8yqiFUf7bA`g&nTwCvL z4|tQ@=6!N|zXaqf<9zkV_s0A_`F`-2++J@9c@Oz9`BCr*c^_VozZ~l<$xlRnL4Fdv z@x6L)ABB75pMv}3pM`hGzX0!%Uks1PZ9g&jWyp`n$M7-vRq&kr8hAneL-?FLhcC$Q zguB<(d%Fkjk>3w*lm7wUA%7emlH1Rhi2NVO56SK4#fW_6UCnbTBVQGsldlDzk*^D% zliR#=eZ3$1zU`84i8(EDdp)$tw@1E9z6(4g@4yG-_I-Xxz7O&#`62L({0R7z+^&B{ z{x0Mz;m)Mq+i}P@$ydYu-XcF8`GDMh|Ij5rANfA{MeqUnrSOFOJMfhJdiaFg=BMO$ zB43i*_uGp69^@N0)O)l2H_0DC-Y2);4+P|YM!rY>G`vr~fXC!3?Pl(~gxu!G&#}$?fNRKyLFr^1ZSCKDo`u z5#7l56QQH zN95bUhvYUtBDd?w$XCMm7&*Dk&&c<~ap&YV@BFylPY-#Q{AhTK+Gd$nEdxL-JkmyiLj9hdCMf06rzR|K4Lp{%PbZa{Kw^++6SN9ORqi_I;*B{(0mB zay!3E{`t3>?@RmS$Kd)Okbe>L6Y>^6TLh`A^`DpVWJ^>uHkT zfxJ)t3wS{OYj}^`{yp9&zY4v@iOkiQY$ zxTW6PMsSbZ{vPC$Z-#t_d^x;Fz8yRwx7Tw_9w0v=x94|EzBBSUx&3~%ATN=hlZSWV z-x=Oo?1Ykd0V~zF5Dx(A9LEmyTbdzW8ov=neeIb zQuso+dwabHyWf`ZKzL7hBz!156+RJO2%iggrc3X)Dcl#{5grO32v5kj+Y9fX+vG>=ZO%(qcwcx- z{u9g@3D1O2g_pt?!ri;-J=pcMga^WV!Xx2B;i>S6@Iv@pxbxGc_uCZi3-1UIg%5-$ z!pFjM;WOct@W#)U?!gn@7TzU)(>~_D2+7ZY56HuH%=<<{?lyN?@m@3{xA~0RM}9(X z=j7ye9aHic>nX@n_>A1aaZ7SLXHK4APDS2$yXnolyMA7R4NX4*xqWZxkbfU@dgMQc z_sLh;*Bmz%J`$b@p9(L9FUXI@dfcDad$8UjzZLmFc#nMJuGw!Sd?-8>J`r9Bp9^=2 z`hM*?o5FqJ9pRzyf$)Sp+rV6hV{&H);~9Crk?{$63D3!$jZJ<^?!gQ406rrR;U)R! zaNZZfTldua?_!-D@(A~1UwB0R#D3;_8wyW_PlOl3=fa&|)c0lA(f3waO`GxR6 zcu#mFd?-8>J`r9BpOe4f0JAUWm-Qa3H--DcJHkWqVyjJ8e17%GqpgicHlC1Y@DX|X7L!lO%Uz6*$=yATXXM#l#wX-%D7LSU2eQh9%RM?^5i?lJLKK#jd#iOYmE2Eqwg6H$?bXX3y;Y2iJ3DXuYP1a zCii}5d`KSt*my!-e&6_rJi66*N^aLb7M=;82+xI2$)lsqdJ1yyL&j(1cAcg0x$sK( zf;|1OIj-}o`t|R9#CU^!VB96oPBGpj_r7S{BX@B4ZwVUxVd3PV< z8M$+S@dl9%^E%^A@(Avcm+%&O)HHK^a%T%a%(XTlTV zIeCfa>XbbHn0e1HgjeKt&Vt;|ac1@NV!c8BPprR9USXX9d4Y9yg!jq451V~O@JRSjcuH=MI}u(8p9^<>SKqIl-xTf(?+6ct4}>Se$HH^r zGxGQtb6zUpjo;UMuz62-TXjPKB4`cFsb$Th@E9`IhiNcu#mF zd?-96fBU=5dCbU!@=w7R>znm- z$fFC*-!&n5HZtBPPmqtuL->Gv`{T`V6Y>k;Dfy4!8M&P^C7&ZdBVXwR^iN)1Z1&|m zRPWjTj^7}+d5_%wdw>?Xo#T_wv5q!*_9e5PfV}#m@eaBD_W)h;68Ro^j`<#76_rQ^=3VcNm!YneZw3Ca0KuDSRQ^{d2ts zJEtW)5Z)6W2_Fhig-?VR!so)BCzsxDQ@Ag@BRmv75S|Dh3(tkmgjd2FPc7YpM}Gdt z%ys3H+v}twJQO|#oc9*_XW)VGp72QcP7zc6z~$g4}uaR=o2wZ=!} z@%N0UwVCH+| z!C>nZ`whsQ>rK8xzUAx9c?`*a3LlVf{RWdCl6T-Kd4cmj5nhmo51aElBe!!);d9}Y z@CA9&GsktFtM{M68|2QBChwBFM;ULDdvK53hquVP?=*9Ka_3m%ZF27f;{kbclJO3C z{!?>3gu(~p8O}>gZs!h#C&EX(IJK?mc4Ww8-sTUwB)1AiP5!ebpSdOCG~} ze%<;(W+?H@( zcw2ZtUgErT$h&Kp^>oSYdFhdR=szU);eGM~9+8)CGRGZ|yBisg$&;;(56Sbl7*EI} z+!tfvIl2EwGiOR}=N7_e!b{3bMjz&<5Thk_eCjuL7w8iaPYa&Sn*evh~%Z>NRqqiEj z*R}1_-WNm4TTjUye7=v#?c7ZGM0hTIN^b9$g4{*VGje-gN^*O@%*pNjQjxo!>1{z? z;k-D`@hh%O+h?+|$v4R3t&F?u+Zb<>d$?bG;T`f2=cP+-=k|n$!u!G_@&fnEfIP$J zdrV&1=Nq|$`ywIF;3M*UP19RSo^4=!OkQkiJR|qEFg_tKwl$uUpRlI+er6`T65e=0 z{W`Jl)gHN>-xl5_e+=sh$?g0Bxt*Vo+x(b(%eBmYC*(F?klXol;m%6+9!|r2m)y>8 z2@iz#gh%9m#BpPCd)yJZ-B%`jN^a+rjG@)3CkACQ;$J~<(evHpzQhfm1e+t35KkN52v zx%W$xugINW8DEe``2E6NrQTb1t~oDFatHH$^6XwSzfB(8ZoErg;rqZIxr6>Aau2`1 z49GLgPsqE-kH|grnUTlH7v$mRwp{UEG9!QW?mMsWIr)yb{uktX!y7NI_q;E>Nq!K# zMSeKEO@0i#Lw*9hNB#kLOrGKQwIR9vUNI%N-ye?2bNmjKlZTI+`*BL{<9;v6Gn^Nv zQSU7}&zu*J+`;(@$crDF>p5i4jmP93o=YitggH5R@Hg}PDaoCm7^ZNsIjn;{kc_9@9fe9%D{SUg5l?V{-S;=5r?}FW+rGcS>^m z?|htB)%W$^&pUGWI5Q_8kL>3f`z>ajeeyZZFcw{v>JBjH2gsql&LLik*``pObItn>o&F>-)9d6z&V}2oHr1geT-jZ*JB(CjTjXLT>Yg@VRhj^?DC>PE)uq zydyjmJ|K6uF#An}kI7F(J|}+&UXa`ToP514&2bmxHt)W!-p~7xZ;{^*56H*M&HOI; z_uwJ+I&51#P0@UHN_@L2drcqV)*ycE6=?!JEM9$LZ!;XUDz@S*Tj_(XUi+<8NNU-@PD z{)#+GjR)lAImScs=<~*7cDx^^M>GTtY* z?~_CF0{MjfHD>)|^6a(P7rBey`wH?3zqiiG?eCb44eI+XkZ+OO_iCT~SGXQJFg*zM8_iOV_;lA*W@KE?bcp`i(JQqF_UI}k(v~&-i@V4--@V@X^ z_=tR~jyb<$^5yUed9ka>Pswe5M!pN?%*l6yFUakj#>VyD_Cvl&9>QDXc21l8IOIFz zC&2sU5qv=2IP9Pm|2||Sd`xby|D4>;FUU{Bap&YW?P2&tx9o-I4EZDQ1^EGQGx^4w>pj@tRh#5?jxW3;JQO}4e|S%`o<#Uq_>A1XH!jFi zyeBj_t?$>n-Mr^}p~@S9Hh&e9zM-_wYT*kR5+VkIC)-4$qXl!1qpba{G5{W2^f5Q{-FZ z_VE8s z4=%ZTmzmQd&ye@Y!7iadJ8%wLdKcNllKsrTt2?~}*)_tjnU9Qla6Kt3UlaQ%BBC_?-OH@CEsW@J74d&)4Bi@*lxl)0&{`;La`8RQ1y2AUyWAYsjGUqoT zxAVusbKx`LmGH)P^&aeTJ>hNPUGk4%Um>}jKOjFJ`60Q@r@|+~3-av`Ha(Z*cK$-R zyZzGrw1fx3d*s0(W<7oKE6_tsemU|f`IYdT{3>`sZs$8Y)c56i=KgJvUyV6U@&fLY z`)@RJI^^CF#=GQQsyHRr{7YrUV{;V$`} zaF4tT_sI{12jn5VOMWbTKpwrxtUqQ)KO=H~eUqP%7w{Q*3}29!>zO&t9qavgSWlbW z{th0HpJw+<{z-U9K7>c)m%?N6Z^9FD+jB~uBcGAm{&VvCkuS(AcuD?}!_0Nn2@(vTc?O@5m-m=_PM-hP z_>{bW7vwqS&&Vs}OY#6dC->nMd5Zlm$TQ@fo$BW?g*V76%yG$s2h4t(0Zz_@(g) zxd+e5?R7XM&+j*L3i1LzBlj`CB(IR4lV@0eMV`VJ|5o0jzLID3-^o)v z`k?xLo6^4_Ur`^+7kE?N!dvo;b++XZ=V2n>a2|H#hx^-=ANEI2e%J?T!21Eu0zQy0 zdEPGqJ_&dk@MXX^0pH0-AGZHFB)(g}zXxvzyc_Vo{AcN(2Ye*|(9`{TCh`aPQeIx~ z_y1OYct4@>d+T#WKe(@N%gf*Nf$w`h>dC9`+t&}|I<%jR9 z&*jA{@|WkF8)JD!{Y)Mm&SClCd+As5_p<(Nz@y(^&+|~<40saoOkN$n=U-m34-5I> zd-6x}!}&7}_&ngNfNujH_3AksuGL*CUy{zzcc8TqF60xyAvX1biCs znLJ_rrF?(AsV=hZ-d*yp)CW3Him%KaS&d?qi*p_Cu`&I7&(_%h%t`Qn%Fb6Cr}xA(r0 zFUV~xPst&=SKlXX?qe+fjd)xBJ$Og{qj*pL6L??#^RoT^8OWRXQ2v+jk$lE^TgngL zleUr{z9+4cAO6lH{zLVAa(<3V&Ro?UrpsHuP^%Y>>uwRU%CD8dvd?Y{nsQu$^B0ucUQa+-78SqWOck;vEGc^BbJ%>a8B;dV( zX8|7ud>rsuz!w2u2fUL147s)bSbg5s;rj>V34bq_$q(mqVdwqHsl3JK-4^o0@Aa1Q z%a7gfhqb&p*n1W5#{K$S1@*0fcLJUUd=T&=;FExt0bd4u6Y%(t*XQl>dDuk0;rX#6 z|M-vF=h>5g3Z4agDF1Hi#{r)Od?CO3cW2Xz2YeRrMZnhquL9oqQ}3KZE8v}grvV=Xya@Ot;AOy<0pA3C7x4H) z-#LeNz`FtO2Rsk>DB#n8&jY>+_%`6thrRQ>&44HJ&wQ{y54-ZiKJN!S5BMnH(}2$d zz6$s@;L&Lyhkz#m?*%*y_)vaDo+EjMPvk#^&*X>tx%@5lOZlOGEkAsocPl^C@8rMW z&+PX@bVW*(~(DCx&Qm0zI^p%d(Y%2pRm6#xje&10iOnZE`JYwmh$)FYxxi1 zTlt}WC;u_(8}F*;bEt315Bs()Kh$^RKS}?d{7~PQH$HKn=Rkg_AIe+QkK~8?iTt-v zKa(Ho=kni8{Zf9YU&}v)`mOv>zmtDB^^L5a|GV&}{3G#>{G;%m{ICzRfRE&#M4yTL z@VUi#z?bsFbvFUu1w8)9dJcy^?SOX!-Vb;l@KM000iOqa74U7qqd)!5^ELyX1iTmU zEa1a{j{`mn_#)uzfL8%;eAGMV&5<|pm@cLJUUd=T&=;1l_~xo#QoWxzK9-vvDW=z0!^>$U^l4R}A`dB8^j zp9Xv$@KwOK0gpcBo#$-^JPCL&;FNoP=Kz$`Y z)JKDQp1+IwSbnH)$y4eR`Juim{|M?+`Jq0OKcK#le*!+1e3uz%J8 zuL9oqxO$$4KCOUv0-gqZ5bz@4lYo~2Uj}>=@Lj;;kALSJ+5ztdydUs9;G=*~13nM< zD&X6INAG^;d7A-G0^SRF7Vx3`a}JM-fY0QI{kaJETK*sCzm*^QL=OTv1iUN%<>&kJ zGnF4+zvlrj9|7GuOdCGbc zc{SeGr}72$efjtc_w_@0_9c5Siu$=cV}CB>hq=}PuL9o4-#MRFz&imS$Xj1d4)XZtbl&&* zi4f#$nQJRA zcwe;f$yz`4ZF!gap1h3n z#W_5a{{(#&0k7oaZ`=2e&+9oH?t4@IC;t3?{cZWD;a&Mp;HmsjKL~gc@QJ+jo%{8d z^7x_T29H0roT+#*H`kx<1YTQ^?9d1y{}K~KeP8#Ui{s?=kknmZ!BL?U&^OX_I>8^AN&jZ z{kE3>6MQFMRo6`TCjsP`?QH zS{_}o-{dWPE06#6zP^$l_Tf(6qCWbx`hH9BhCIb%`2ugs^X+~;EqO+LTb|>Ie2RDE zCEk^1Ke4}VPhQ}uJmdQ=`tkzLNi6xqBbT5BE2hANI#ke%J>^z()Ze2Ye!rF7`iH zlmTA`d=v0pz~jGA-#_o-y6u2>1KtmK9`I4XrvaY_d=>C*z@v+Ip0^qBB;dV(X8|7u zd>rsuz!w2u%iqI&tODNn^m-15`c}X@0Z#)ykpH$%-|y!l;FExt0bk3%n*Lk)*Wk_1 zsLxye3(hxr!TU2E`4sQVlV7rbou0{$KVv`dQ2u53IN&q+&;QJQpN0JM@pZtffHyv~ zp2ML}M_&BYKA*lk=JnT5p7T0oB9C~VYA#QC-)1c@zGZ*io&4~ARI{kBzs36l9eKq1 zyYf#h_IdULo(Fss@M*y30bd1tE06!;ew{n{ufgNLSkK`wS69CI)%*R~lgGc5eJf9S zA88<;QeVhd|7m}}rt&V2i-r8~e&bS}QNNKVyl&mfum0*jpXe{ub2xY+uMY2r*x7Hn zJjTcJRk@#cB5(b=eV%2&m-6xPzJ4V?^j!yh6Yy=oD|z((`|IxH3G0tPtDfh<+wv~! zPvnQboq%@(-V1mt-~68a`up-O>(2u|l2`Ay?=zMk`c48q4frhJrF`+n_t%}vQ`Wx< z_*On;{gwRCcNg&JVg3Fd>Kg%%<@vk!>u<^r>rdpxM}NTke&3PGr@U|3mml_9E-yc3 z-)Ah(4v$CqVLz1els+qYIom(3*Yd;Tx{_DS760XWo~y6l_i4(r-?+~$33yMQf9k$I zl^^={1D*wZ5b#`Heb)ZELwU*i#{r+o$LIS#rTox$9`HrLmjPeNH($TM?phul9xnlJ z{FVBBjL1KhANn=}-U@g-;E6na?|%IqJL^vaK9IM_KbIf+4g+2Ud=&7peDU-5kJD0K zeB=Icv65GKB`^8?Li|_j_oa1seAy3=uYmXD(_g{4ByaNH{eWiy9|Sy?C%<}s-J$*P z_zL(;Ufw2W`JwMT;ERAS1HO_ke#`#4Yk8OTR{?K~>i01s|5$$L+YERs;O&4X^6G>3 z>+i@@)}ID^U}ycg{Lpt8@FL)&fRE+lKe=E3L_YoXoVW7$WB2td`Qi78mHhDg#Q3x8 z_v`R`z(judJzz&3AM%tRey^9y55LzN%D-f^|2cmw|M&PT;ERB-16~EZ@j3Mze)O~V z>uJh=3Qq#w3wRdrVZg@$p9Opo@O8kefHyw3p2L@Y&OV1$z&rAv`?>r2G~k1P7XhCH zybSm<;G2N&0vC68Jo(Fss@TvUbi}(HK0bd0?`uzI5)sHc+y!(wO z?|WU-mLIO$l}BH~yaCSxJ_`6W;B)y$bKRx7a38nw_fo%;AL`>TeCK@H z0q@HH9sN`Jq5mM@MZhNkF9W^|_(uKlMwHvZZ>=gz|(*a0$#{}^Ox-(r(^ja#i#Pa<98nLl|237-|@cZ{jI$E zk-b;))#cuI^76;`KR-lYQqS%EzkI*`M80|d{rC2#@-hAU^3S5rNM8Kp{<<^y3SY{n z_)7ltAMDq;mA`Ab_vlOOa~(X9S3l=>?%yAl=XhWKee@s55BH^zm*g{+ugGU6e~mBX zYkV!g#4Gs*Z%pbrT;VPG7VpU4;HkXA2l8vYkZ;IsBHvM8%HQHkdGrqFXRvK zi9E+k`HuB3<>%CIS#JK9H~RLVk%) zRA@rgXcOZgeTln?NY`~kj`=XgA;=Wvd<Z<6#9Q)Lct^g%Q~7IrAYbE!{1TtYH+U((!k6+bzLCGdck&94zpAD_)Olx7xEK)E$`x${4U=3rg{!Nyd}SfcjPIa%J1U?c^@z2r}#vk;idcx zU&;sgM&9Ig-%kF3`uLmcIpla-evWtLL%c7)z;k(lkK_;WseFXb<&W@{e2j19kMZbR z>hn(Uru+$>$ftNu{uIyTGkhq2hL7bXK9fJk7xFp2mcPI&`2ug0^&DQ}E%_4f$Y0^9 ze1#9>ukk{@#wYSiyp(V7rThxt$hY`T{sxb~wVp$Tx8>J(SH8ph^0#;{kG`7sKjk;@ zsl0*D3TX^(s^?93kQ+^vyKf*J48z0J#@v%I?XYxDvLf*mG@)Nw0 zck#yGs^@SQZ^?UjM}7}a$-j=7# z+m+wP`|>`X%TMul#lSS z{1HBrkMV{4F}{{h@Jjv!Z+u5Rhbi8YKgB!p8J^0Y;RAVz7xL%$L_Wt$`3rn0U*H@0 zOME9^;_-LZb9jZfXkMRpi#O$O z@I+qWJ^3}B$#?ir{uUq0qv`(naVEckFXRn;Ex(CZ@)&RY?RpNk@Rq!ZcjUM6RNle| z@*}*ExABSm7%$}szLej=H}Vd?lb_)6chz&~;%)g|yeseFefd2+m#6qhejlI8`}kab zim&7uzLlTh(RbJ99pFv*13Z!Ecu#(gXYwIFlwaUud4bR55AlV3gs+^2$ru+?_$Sb@jzs5894j;}u<3wax#$dB<-p5ROQ9egA2;5+#V z9xv)Sbn&+QF5Z>*@V@*Wp375wB)^YO<$ZiEKgCz_4ByJn@aXT>=N;fp`2#$W=Xg(k zj%V^AK9pbJV|jtkq#QW4t3D(I=JPqJAK6;)VQ}eKnDH@KQeJx=ZUZ)M_3=Nb=Wv9#rb$xrddvYx|=J}r4heMf$Vr}De(+krgA3;CMsPUHjnm+}qu zOZfxpH}V|c$lc-^e@o zPJV*NKUmM9i?`)>@vgjw_vQEST%O`1`F(sU@8fg%DZY|t_*Q;~N2~h01H37JfG6@C z@5y_I{VzYKekf0=AIpc-&*T^QLSEo&`9r*tkMPF-UeDnX-ja{;j{Gs6$|v|h-e=xI z{)GC8e2SOyj6O^GIp@Ph{**pD`3#T$Nj-;Wcw1iLUHNmoFQ4PN`~^Oe514BzUr;}n zzr#_*(u3ujCcp zcwNuo8gI#Wct`#gPvz0m{qy5MUNCPVzd`*(-oQ)wh(1esaoGRzoAlYqV?2IuJ%?L( zTi(RG^4oY{-okVF5k8WSnQJOIJ=!fd_cJQYB1W)8$yeGelXYw9C zl;6Y0@)V!R@8b)3A79H)@k*ZIjel0p;S6ud2Y5&R08iyPK9HZ|g?xxlJUF97cFs{s`~N z$9P}<7|-Psd?bH@Pvuj5E`N%zv|3iye+?pcjYnOm*2v3 zc@rPWZ{t&W3!lr6@RhucZ{^2$w5`vZ;7$1*JdtWDc;hGQIh^7xd4_l7XLu?f z-~;&sypZSkM1GE!@*%#IU*H>gf$!uG@wlqzFv8pNM|f90#{2TecrKsdBl#12DxczW z`BQu)pW$2iGd%jK`n)CHlt0H4`5f=bU*MU1fe+;`@v(e~&*ZQ0g?xpt<*)HdzQ!9r zUC-eXZ^<`!M}CE;@-04)zrhQ6g-_(ycq!lEOZi)TBagnG^Iv`gkAJ3~Lj!NiZ{l5f zjQ8cY@Lb-+NAlbFRNlhp@*{jDZ{u6}F&O5Vn| z@?$*ukM(&IyeYqfC-M&7lb_(3yo(Rzck!{jhtK5q@P$0Z*Yf*#CGX>n|EHeADc+K2 zct?JQr}6Hl5g;i{0dLyTYMmYgBS7&pUAKAQoh5N^0)X#9(^O{zx)Os|Cf3W z4ZJPCiFf5O-k0CPb9oaV$#3IRc?+M*kMNbejc?`0coe<+eg9vh#{2#qMG4-N-@y}k z2k*&G@J!ythw{7lSl+{D@_YC~p5klyeY}$Q@y35u&*2nr$uqnoKf_b`03XO7;DtQL zC-QT=ln?Qx`~u&|3w$Skh{r#tp2G-l%V*!ee;jq?CEl0M@m#*ZNAgEMuU6+Jo>ryc^@%vQ$EHM`D45%pWvDN2|koh@v;0VK9kSzh5Q-5mX~-Xe~ve9 z)N`2QE%^()BVXXD{3Sk+FY!YD3ZKYVcqxC4FXd}|BfrFV@(mvUym}5-cw4^3yYe@9 zUtZz4{2Cw0clcEP7N5(bXZy#?N`3?1${Tp}^Xv28#GCRMPvp1op1g@?^4s`O-onT7 zBYY-r;|uvQzLqC=CBK6={_A=U9lRw!!8`IUp33jy19=ZG59L#QEPsm6p5KEZTS}O%HQC9d4=clYkVZ%;Zylrd@hf^iSu86 z1K-LUcyzNq?@hcZkMTr)3-8IBcqYG%59KX-i8c;mmV=g`4h z@)Nux@8YTaEHmT&N`{0i^Ow|FjpgOB7DK9yhNbNLQm$=~8zdGyWu=ZomSug`k}Z^|2ZBEO0E zM>@+tLe`BS`-&+x`Ct>^FzZ^=u% zBY%#k@;N?`zrYLm0-wlV;-!3vFXgZBjeLdg1mAs8N{>OR_$9PMg;2rrLJe7Cwf&2t7{!#DC2-^uUe@h`9E z(8t^IQ@ktB@V@*E&*cMrB!7TUqb2!FZ@&xb5@8GGt zgAe2lN6Zu`dl=twZ{2soMr}$2OACFu09Qt@$eu{VH8Qzzl;kkT(kK_;VsXWK$ z@^gG8AL3j21s?tC`n(0+lt081`3UdHAK{sNj1T3H@v(e@&*V?=g?x&yM1mv8Zr{0%;pSNL3hjj!Z8d@Fy8M@RK}qi^N>m*2n>c?0jsZ{nFe#)tA-_*mY= zXY$+lLf*pH@*}*GxADfWtLJcxx8w=lk>9~nc?TcJPw+zC#V7K+cq#AUOZh!~BTw<2 z{5~H4`g#t1ye&V)yYdY0%g^v!KEOxv2l!N;<8%2rzLF2|t^5LyenWlU0&mJ6;)#5O z_vDZ8Og_ek^2hjCKEY@5C-_1>#nU35d?$a6$NzIZhc(`oU*cW)2Jg$S@LaydNAfrLR9@k8`8B?h@9?es zEgt>G`n=J%asJD1;EB9}_vAP6OdjJy`7L}bZ{jogZG0hb;cNL3Udh{dIz9{n%%c?-NLe~2gY5#EzO!ZZ08AIcx&WBCN1$)Dg0`4nHv zpW>B#hBtmwJ%?v_OJ3p~`Exv#&+&o$=@0DBnL_@8`iXpjm-3hRQoh7D@>lpyzQW_* zT+iV(-j=WNuKW`3%Qtu~zrsiIEk2dM!RPV{U&*iWt$c?^Nqye8cvBwzt^NH<_htD!Q+|#o@*&=nU*MU% zz=!gO_*g!|XYxn*LO#aV^2c~3pWuz(QP1HC-jYx8j{GT}%4hgM{tPeVB|ecq$4mJf zU&>$L8~Fm?$zS5}2i9{~;%)gWyenVfefeuVm#^`W{1TtaH~3tBg|FmWd@Fy0MF3{1#rxn|R}Q)^oUxx8yCnBR|4Z zc^e?TloV#`d#&TbG#`(#}oMw@5wLlOkUta`9pjxAK^3kBYYtr<7@e2ypm7w zMz@~B6TBs#;vM-@JeAMzf&3X>$V+@8e~y>(Ilh#?z&G**zLUSi+*ZsRR^3-8E}@KoN$2l8XQkSF*=eg`k*9egQ2!8h_Q zzLVd@NZ;;F-L@hw_K`SU$pM@<;eWKE~Jb$9N^5;Emr`&*2H)l27rD{3)KwXZS$=3@_v* zK9N7iOZgmM%3t6c`2yd`U*hraujjDD+wxa@)YmO@8h|= zkB{W1_*9_T%Z{m#)spoJTZ^>JDM}CB-@-{w@ALE5Q!6))Ncq#AT zOZf@Dk$3T({4O4+^&EP5TYeAk%2T{AzmMngK0cD4;!}Bs&*f+MN3Eq-V@s9i{p2}zV zK>iFbzL?2x;0t*JU(0Xe zl|059f4rW*@V@*Wp375wB)^YO<$ZiEKgCz_4ByJn@aRw0=N;fp`2#$W=Xg(kj%V^AK9pbJ zV|jtk54v+Dce1do6Pw-Se#Ru}Icp;zR6Ztc|l$ZEY{v6-P z=lD+k0+0VxJ%pUW@tm3)J57xpW~T)h!5o#_*h=xGxD67xA#hdascp|Uxp8Oim`a|Z{n3a#v315&*2u{k~i^={5GD-TlheJgctHQK9L{er98ox@;mrO-obbB6FmOY z^&Gl*TYeYs%6oWUeh<&(DL#_l$EWf>K9`^3D|v=*9(_!G z-YwpgzrhoEh4yLR3wZ-y%WvY9JjNRzThHMZ-jX-*j{G*B z%3JtAeuNkDHa?Lbom-0LKM&7}9@)JBB)N|idj+^2$ru+?_$Sb@jzs5894j;S!K9C>bg}jYV*@V@*Wp375w zB)^YO<$ZiEKgCz_4ByJn@aR+P^A7N)`~jZGbG#=%$20j5AIdNAvAn=%@`w0BKEl`X zM|dS4h5+U*RM9YkVqS<8%2XzLIb7t^5j)hV^;3cvJocPvjNelV9VRe1{L^ zZ}G7_`a7Ke@*DU<-oV%Ln|LLU@y4gsbGU`Kp9%QTkAEsc?%!NkMKg?#wYS)yp$*SQho>D$UFE>euBqEJ%=vdmfyv@@*duo z-@|ixijU;?@u|Fz&*i81N}l0c`57Ml#rnJhyeWTxC-NNc$`3#@PpW&sv#Fz5t_(nd*ck&l_ z{8{xJ7I<6!67R~Fcwhbs&*dw8B!7)hq;am9` z9{tt&yaT)`e}E_Q9Pi1`@k~C%hw=-2EHChx{2{)OkMOnp5njp1cwH|1~eL|)-N`8A%&clc2L79Y!_@8kTJ-@q602ELZx z#4CA>H$JzX!!5ieZ{i*KZ9J8?@PYgYFXU}}B0t7Ud4ezHckqq8gYV=gc>JiILl6^z&+x7M439pqKJNf;${*l~JjZ+Tb3Bs|@uB2Yyp)&tQvMv@ z$mjS@{sND`pq|45Z_8ieUHKC4%U|KSe1(tXukopTjnCzm_)5OPxAH4I8rSFD;!XJ* zJdsy;PkxPO@*O^uzs1M$=`a|Z{n3a#v5N)&*2u{k~i^={5GD-TlheJ zgctHQK9L{er98ox@;mrO-obbB6FmNF^&Gl*TYeYs%6oWUeh<&(DL#_l$EWf>K9`^3 zD|v=*m0&mM-;$8U?@5^7| zxqO9>#!GpEFXeaejl6^J@_TqLPw|obK0cNA@wxmIU&%9kD?h`dFRRZxz?`5QcuS9ni;jc4*5K9s-3$MWd!bN7xpW}V`yO#U?oCka=kN^2e^#A=clOOsl0$$1EANn2d>l6RY`n(mM$P+x3r|W&6 zTps_ky^rPH-~NH`yKX68eZzjPl{~{MdGf>i{yTYo$y{GopKI}>dr#zXwZCp^|Cjsv zTpp3bP=50te(3w=D&$A_Nd7_iSpISNME+U$RQ|R2O#ZWYDZl@N`*kh@zL8I<-^r7~ z{yxUDdd}&)_uiBzAHVmOy!`Qf{%!fYR{M4KwEY0mHbfO_=b88XVf?4hx$bR zMbvlYhx)$!`=}qt5A}uo4fSLBp?((dMZnhquL9oq#(F-7>$U>k33wXtLBNZEPXb;B zd>Qafz;^+UpS^Pq?SOX!-Vb;l@KM000iOqa74U7qqi=fWd7A-G0^SRF7Vu%f#{r)O zd?C-*`*UC=KkVnN{3Z1}`Jq1k=6XKAf7?(zu2$8BR|xq@-L)5lOO7b z@*k&uBtO*8-o&T!+xT4G!dLPm zd@FC`(YMv-J;s~z1W)95@SePbXYvz#DDUE9`CWV_@8JviJ$x-s@k)LlZ~U!#4hi?G zCGS(;k)PtJJi`a_GrW)w@QM5ZUdnTPDetiUjr^SYoqUML&+9o{;B9$vl`7?YdFY&SbIX;um z@rC>azLqcWO8ydWd`CTpCEk+1!aMR6p2}b21Nj;+UH}SbV##i!N_*UM;qj`PalzrZm-=;p1 zxA30)2+!ngd?-K0$MOW9$?xC`c?Vz1Pw-0K#T$RSp2JMb|egmJ%8~9v)6JN<=d@H|&N8ekYw~069xA8>Y!h7-~Jd?Naq5K#h%M*Mizk@I2 z9egc6!7F(eZ~UEl4tMdEyoYz>_wZDn;sg18ypZ?tiTo5V zVZ4-w_)dNV4{o*h+r_)`qj+B);Y0Z`JdyYCsr)!Tm-q3d`~<$15Ad!0Bwov7yz{H= z9!}wre25R^r}2?|giqvW@Jv3&7xJ@sAy4p){2X4%C-`1I=6hfGYwaG+lkdq>JeFU; z$MPwj$}i$Gd4}imOZZAY!%O*Pd?%md!JFFqy@Ge;3%oDCiVx*Ep2)A^Q~45~%dg{0 zd4aFxH}I`|h1c?%cxTh@VU0)fTlhe}!AJ7j_(WdfnfwmEkZR>UgNR+0X~-R@l^g0pUH!l9^4ml`5}BI@8G5UFus$Ac<_JP`#pkp`52$c&*Hf}!B_HgcqyOY zJNbD$_`mJ_rg&F=0q@JF_)vZkPvjXsm0!Z=@)^FAU&hz+Ilh%&!E5;f@BC)FhpTub z&+&o$8a|RQ@rnF8p2-V*A-{na@)f?3-^45V8sE!r;o+OxJ#6rv{5BrTOMEQ9gQxN> zK9etbf93K5U&&W^DZk77oxH+>vc2DXcvrr|`||tvP+sGS`~g0d@A0|(A-3}485cp*QIZ{&TvlApl$@&O+H zcDsj@cuyYVvHTQ1mJjh%ej1<2M|dtjgRkUcyp*5Cck%=eey6?Pb9h%i!Ta*__)wnW ziTnaSl~3`x{35=TXZTuv3E#?RcrCw-ckZ-%nB$TB3OTowu}m2=PdM1Ruz| z_(*;fpU5LTlOMwu@*ZBukK-G8AFt#m@V$J1hud}!C-I&<#$)*@d@LX0sr)oPlaKIR zegyN5X*$*L+@{{C;@)%F#r|_wKh|lGx@uhr(ujOa(t-QnfYx$Ubr)u|b z7LVj1a|ZH+{78NdpUBU0-DdI$zL0nMxrKbf{Ea*!U&+st-^)`x{DXE67x13E$NX5{ z$H(#kp2}lp zjaTwp_+Gxj!+Y%>ZsR?9iO2Fg_*lNhQ~6zdCa>^Zeh**CcX%nkkMHC)9{f>zzYp-P ze2@3#5AmTqc-g`IB9W(DZ&UdcpUV$1XDRRCYkAgO|Muqkmmg+M=a1Vxgm@%Bf)C_f zd?Y`LPvjAv$&cX+c@Hn-$MKE4k5}>&_+CE1!#`>Fa1!syV?36h!pHItV5ck&G${CRu7xACsL#QX9)_)xyZ6M4b< zr}Dex=kgW#rMx1)mfyp-@*Q5w@8g~O?H+18l0U!)@;yG1Kg1{U;M&3cF_W*^??Qfv zd?D}P8~KJgm3+}$|MJ7k3IC$qLx}g}NAOtQ#mDlacq)(Znfw@@%S-mPlK04$^5ghU z-p7M?wfB1h@5%>wUw#rF%40l{pTei|AwHL%#+ULDzLuZCxAHMw%g^GScei^;@JN0R zAIK;8NPZrl$WuI%U%(ggDPG7g;v0E}SMn{_&t6{PVcqWG5_5X;86L|o<74?8Pvuwe znS6og@~iktp5vwb8orY+@!&7p`@N2L+C6OXNPZU|$SZs#zlTrcJ3N!$#~1P%FXRvKjeL(+@`w0d9{lvd{V04- zyN5$~Pu{^}`C)u45Ajrf1fR*fcrHJRujCP4%8%hYc@GaBwD)@)@5=jlUw#4~$_IEN zKZ#G}F+P`{!k6+PzLuZHxAGBQ%g^AQzi#(1#v}Pzd>~Kok^CG!kx%eUejZ=QQ@oI0 zz&G+KUdb=wdwGV3f79;a65f-~@K}BsAIs->D!+oy1|&*b; z-g#fUhcO<>&*B4lf{*0q@QHkaXY%v-LZ0G<`~tp_Pw`5A5#P%*Jbc*h;S%1H&+u4& z86V5%cq+ew&*Td{mtVzK@*FSa*YKTui3fk*-tTq1D=+ZA{02Uhukb{E6Q9c0_*{Mq zU&=T5T7Dbf%1gYK-@!Zo(C%T2NAkP)KwjY^`8|9h-{G13KE9CGcp-m)Z{&Ntl0U@v z^5Es1|L<@2a0u_oJ9sQVjF06Zp30BlGkF)!oe%tX z5FE$5@;=^|pTLLm0iMWD;!}By&*i7^rF@95<)`tje1zBXGkE92+C7Z%NPZR{$P;`d zKZj4`6Fifj#~1PxFXR{SjeLq%@{9Ohp5ft#w|lsR_vAA?mS4ul@;RQ$ui!KJ0?*}F z@s&KsOZhc?Ctu>hN3{2Q9q-Buyf43j59KR7k>A9p@-;q}-@=#j4ZfD&#<%hkujO~} z&Y^Y>TRf8A#Ru{VAIb0G6ZsC$5KrYt@R_`e=klZYN*>{*{20EI_we8!wfB1*@5=jlUw#4~$_IENKZ#G}F+P`{ z!k6+PzLuZHxAGBQ%g^AQN49$yOocuzjVWBFx#ET7}4{0cskFYsJ`6<^77yp&(Vck(43JgU9l>v&gQ;C=ZG zd?;VxiTox$m9O!+{1(2HZ}7GJHoldYcrCw!cOKpDVT(udyZAs};UoDyd?MfBnfyM! zkk@!2e}He~d%TiA#P{;xe{%jmrrpCKyeIGAvHUPTmWOyMKZ4KXT|Ac`#aHqOFXhMZ zoxFz!huix-j(6pKye~h259I?qk)On;@))1XPvJ}X5MRqr<6HR%ujOa(&PTR;7~_%r zEIyDY_(*;ZpU5Y8CO?laetGp31M_ zGx-9~e|0w2l;cp^WE zPvtQ_m!HCy@*%#KpT@WH5njvB;GM^}dl=)9{473@C-_Ky4xh*;cqTuOFXSm+$S>d< z`4q3@7xBG3!^0!(9xmZM`3#Tcm+`TDj;Hb~_)NaQbNN+#CC~9vehuHrmw50o?fqWI zyYd3>%WvRA`3g_uH}R=_jnCz`@TGi%ujRM#t-Qo*`5nCTvF#qVcqG4z59Ad-lHbE8 z@*SSZ@8b)3jTiC<_(s0REBQlwFArYH`TvA=4~Oucyo1N`!}wSp;;H-yK9hIxTz(W^ z$s@d!AH#R@9v*bt`#p|#<$b&_KY+C5ytd-53`%Xj=8 z=~!OlseF&mH}R2tjZfsa@JznJ7xLS9AusWb{0?5pxAG3lgZo8SehBZ&JNQt37*FIOK9wKA=khMTlpn>{@(AC`kKwhvhj%`$-NSJ_ zlK1g}`~*Id5AccnB%aA*d?7!D7xE##k)OsZ`3T?3&*0(lb`N8`CqIkF@&q5t&*7CwMMDkFVq@Udk`vJNXn3{%L!^7xAt6ZvI)Dxc$X z`4xOAU*K!`ReUSY@mhWj?|fdnhb11#uj2!Gfsf=j@QHkdXY!l)LcYce`7L}S-{6(} zHoljac=-A49`4{h`4*4mck!{j!c+M@d?w%Fx%@u9lGk`Ce}M1gdptPV-tR-aD-T}H z`7b|&59J*^ksrpV@(`cPkKjvr7hlVd;#+xy*Yaa{=L_0B^zcZ293RO0_(*;NpU4Mz zCO?TU&F0JjF}- z1$-x;;=vcT_j?iV$}_w#zl0CvGdz)B#;5W*K9^s?m+}R^mS4rU@*J<_*YHlb`N*(o_veP^1Jw0Ug4?y z9zK)r@LYZ$U&(8{ls~|C@;x4WQG34+@vc1hdCq_NA$%zB;EDV&K9z^~Tz&*!%Debl zeiYxzBfOR$!#mGt_t3*5`Eh(8@8cu+349_S;FLAmpULmxxqOGO{PK1Wr|_P9h{y8N_*g!|Q~4Qu zCLiOu{4BnbCwM78hwtPQJa}e%zvuC;JjMI+3;0kz#S{5Od@9fIx%?8ol+WV3cwc@2AIhhABEN`F*@l<{XpUJm)F29Sf z_j@1j%4@tYe}E6=dpwap#HaG$e{ufH58+FB2Vct%<6C)%*YYEH z=U=sZ=;D$5C_a!!_(*;XpU8W7CO?iZZ;(K|FhhNq1;S}DJ5Aj%j z8XwC?cq%`G&*Wn~m!HK~@&qsC=kT3;f(KvS-tT$5D^Kyh`~p6dPw_;45ueI4d@jF) zFXc0QEx(L!<#W82U%@-$b`J|Yl3&FK@*E$@ui+E<63^t<@rAs=3;7LvBVXZ_{3gDa zukr9-w|lsS_v9Nqmfyz5@)A$wckr2fi|6vY_)1>krTiYglkf20Yufw0k9XxY-j_eX zhw?q1$RFZUdGK1!fB7MNDevHG`C)u35Aj-l1n)e%-9s0T~?D?%@>PlMnG&ei|RkM|dhfgU{q+JeQxvSMmfe<>&C7 ze1ZpG+urYayem)fzWf3{luz+Qei5I_Gkh+;gfHbYd@a9>Z{>5mmS4d;U)Szofk*PI z_&}cHBl$IaB46T}{5rmn7kDARfp6q1yprF<_wqF!eto-#TX;{t!DIPtd@L{VRDK7a z$+vhezl*Qr6<*5k;XC;b50dtN@8ey0jrZjb@S%KE`7wMV@8OyJIKGhg@j`wA-^d4eB|nMp%IBEBA3h&8>cq~7SkL4pgm7l?9@-d#v&*Ce2 zf|v4h_)b2-gKur`_dMQ}r+8m}0Uyezcp|@uPvsdtmtVq{@)^FCU&gocIbO@J;GJ)4 z_prbt`Bi)%&+(D`8a|OP@l1XlU&sr*kl(;J@)cgmZ{mCT8V{e-?%@{RlW*`?ej6Xl zN85w*EtQY)nY?69F294X87xErn$dBV2c^|Lj zC-A*|fQR4F?%^cflgD^0KZTFwLp+tA#%J;op3BeREBP2NDJjXNn zHGCmo;)VP=zL6JrCBK31C7-ov}{9p0DU$A|J7Pvj5qseF&m zKaJ1iBRrR%!B_GzUdqqnJ9&Z!|GvH7b9h%i!Ta*__)wnWiTnaSl~3`x{35=TXZTuv z3E#?RcrCw-cm6}WhdCa}uiyju0w2k*;uCp}XYy{kl5g=+eiz@#D?FIC_j?cT%6E8QejgvoYdn!Z zz^C#(K9@hlm-68Cod5De_*UM*Yx!Zk^WE(pLOhZm!3Xj#K9V2BC-Ml-A2$1C{>d@mp1;rFzAIEnYN`<(KfSe1_NZ%XsHvyN5X*$*87xErn$dBV2c^|LjC-A*|fQMPThm&|u9^b@wxmW zzLaP9T7C)N%4c{jzl?YOW4nhr9?7rZ1Nj0U$*KaJ1iBRrR%!B_GzUdqqn zJ9&Z!FKF-g9Nv{r@V@*!K9r|;BENu7}>=zQI%ZZG0v#@mzifU&*(4DZh*Fp^2>PV zO1pBR&KEzY`X?!Lh;ko<_zLJmeQhpZS$rC*I@9q7b!@Kec-j|=p zhw>Cp$3i ze2vHQTliSM!BhEdd?qjPTz&^%$+vhZzl-nW6(0Old%ySau6&30<@fQSyv7sx1AHpq z<8%2#d?^oph4Wv22;a&(cr8DScV5=+A;cs35qu!;;v@M{d?JtVOnwYs$a{DpKaOwY zeY}#N!1wY29$stra1!syV?36h!pHI%P-+u`3$e+m+{Wew0oH2k^BlikT39&{30Uo}h-NQ+|Cy()1ehMGU zhj=PKjnCvGJeQxrSMo7l%Fp6Ed4dP8Z149R-jz@AzWh8sl&5$izkpBWQ+zJJh%e+K%qcqG4q59AAcB)^JJ%5-;S}@r}H|EBOt4FJIx| z&$fHGiTC7dJeJ?W$MOxH%5UQ{d5P!pJNQbz#Y_2Jd?&B);OE-=y@z+@JG?Kyj}PTF zp2#2IQ~4gB%OB!Pd2oyKUw#PR$~$;1Ka6)?)$Sq0Bl!`0An)QM`B8i#kMK->3}485 zcp*QIZ{&TvlApl$@&O(e?H*3zJ$a1B@>BR&KEzY`X?!Lh;ko<_zLJmeQhpZS$rC(y zb$h?(@UDD<_vPpDp*+PC`2~C`pW<`*MSLmG@U{FBzLn4LT7DVt{CvBIIUdQc-~;&r zAIY!c6M2qj@@x1)zQhapb$lZ)@JfCI-^*8c_?mVPH}Rf)jmPp^_*lNdQ~7OtCNJ?^ zeg|L4w|FVPi|^zW9^7c}_a5Gr@9@6-K0cJ!cp`s*Pvv`jE`NwG<-xCV{>u;HTX_es z<%jXk|7!OT;*tCaK9G0uk^Cq=kw$3ie2vHQTliSM!BhEdd?qjPTz&^%$+vhZzl-nW6(0Ozd%ySau6&30 z<@fQSyv7sx1AHpq<8%2#d?^opjq_iA2;a&(cr8DScV6G_A;cs35qu!;;v@M{d?JtV zOnwYs$a{DpKaOwYeY}#N!1wY29^P#Ca1!syV?36h!pHI^878I7ySSK*~-_S`}rU6 zy}Tgb{on2V2HS%<19^4hV9r<`{^Eg8?SFXk13x#DuYdbsUvv3?fBS*w@|WR-{B`(R z{sz31U!~7V{zURS`DOC8{K@3^@;Uk7m)m__!8`I#WKJl53f`4J6_4bfjQ8Zp_Mp$c z{8Pve@~4p>$;;0_c-<%R^yvql%12*t;8S_gTtD*f{QZM{74klFR`OpY zU&=r69S3u2c@GcP?bq>B@KFAlcqIQkyf1I^vHZ)(kK|vDPdHK`(REY55MQYC-RbfCNKWg!MT*nqxxXZ zQl9+bK@ThW7wzarKEbOG;rkEa;jgrNYv%Mmgvav!BcJ_&b9E#?@}~#uOyr+UK9#@p z(Fb!f`Oo2V`D^f8{!4fvZ}MyTo5+{)W<8bs4*6RCdwB51cApg<%Kr$DZT4 z$^Q(m<$sL_zuNBq!ww%@Z=w9LcqBiH_vOv{WBHTGkK~_-C-TQ~E~WBj{h9o8nKPF^ z6VK(}h!^tj!q@U2!Atqe@JjxRcrE`OJovSC|L?{_`JsACKizl~GjC?BpT0E0~Cq9?|AfC%#j2H52_*(u-yp*r-N`4Ek<-dgoZ)*4dc082-86L_1 z2Jg!cJ@(-Bisg^PNAgd=6Zxm&sr+epCVvJ#myhsVeikp}--@s0{~j;p&&MnI9Ixds z!Gle^|Nn`H^4H>#{8#Y4{I~E}{`>ey{%$;x{{x=NAN^4WuWu$lg3sko!gKivypT8N z;adJQK9801=6tK+SxBtS6K==T#*C=j8kH<~)q$Bl078bG{|=uOy$! zoAWJ`eikA^$dfEq@+f%IA0`|0%qdza9_%PrLuO;Gz7jcqG4v_vKAK zmcNVqNZza`k=Nu?`Frq8{t%zbn|v;RM0oH%D&!yRU;aq)rTl~a%O6F)mZyAQ3x1>B z|6|C9@+Ke2pGdwh{{%diei1|$yazHzk{dpCZEaQMSd=SFP_Ug zkK_86AHmo1Pr^(2XW*6m>3A)FCLa9XcK=_4hw}0x4%QjTzm|Mo{%`SEzGcox-po(r zKggU^-ptSB|C#(;{vte={}f)xoBUe-D)ObgxxZKPH<7R9>pwVn-V*#~yZ>J&AIf`t z4~pcs$@k^W{8;`r@+0}5;EDVJp30l`Wb)2OA6zGM`N!h9{Hb^$|4e)>e>z^uoAp=n zQ{-!Tv!3A1?f$=vd?;_$6Uo1Vd|&Yxx{6i$zYFC{=0x(>;C*?MkLCZH{7Al|=S2P$&HY#Y z2Ige)JNR7QJF`H_6ib(qNCOg@!2`Aq(H@^g94{9OJ{@`b#~ujPM9zLYoDLnZ%5AItq$ z-ob-yyZ_6%QN!9|7-XE9P*+3$H+(Wm*Rc-Pvf!t20oJi0-ngFH~HXg?f!p?d?^2E zJd(cw@5`HfEPosMk-Wka`MdB`-sCg+`^eAbAKpE%&m#n{*e=Bo>x3~NM9z2vceMa){Bj1-d`B?rVh2hbNRR6g}lkHM`MdB)9z5ybechKo9*^apjF03^K9PS4`BdJlCzF2~ z`MLZw_lsQq>EsJ}b3Ux)Pa|K-oB5SICSS{&`N1Ew`+sip`CtAe%!%ax67S2Kd@TPi z=8xoG%bY~MZ+`zJZ}OS^-!Nw`|KRW6<*_lz;H|@ACgZzLtOR_wRq$ z?*AhBQ2xF27RjH7_wCGy<WmtP{E$X`G{mA{aDCjVjbbNP>u&*eW#zL39&{Mt^w zlrP9v@*gK(%U?o1cxSu+pTa}=i{!;R>d`W&Je;N5i{z~$x{N>~``OlG` z%U?-8m%o~PA%7M5wfqM8QvMq9mHc(&YdiViUc3KaBp=FOPd<|W68XOTm&wQSHTjYJ zjpP$M`BeTU@|pbC$j{}!K|YuNI{8BWX7X$KZStl3cgR=rH=&CLhY* zMm~}^&$s*X-(^lLe+NF2H~B>V4t{Pbe;#u(`Jdu*d2@c|@^>=7kT>VyTK*^GOL=o1 zR`Ne5U(1{GF!J z9_I4DB45ax^KdQyYx1SMIS(uOo_sBD&conO+Wo(ed?;_u!$|%Qx0qvTV0a~@{$CzGGcBRrQs6))s{d@VnTm-46M zmAv`)Q?>ky$p?Sh?my)FT_}Gh`AB{i@5`I>JeGeQ`H{R?eNV<&*G81 z`TL5#ym|k|@^56$NZ!m(^4sM5@=SB=YByPvy<~HFl8^5*lyTHZXrD&@`hol5?l%&+Cm=Z)a6 z+Wmh&`B2_m50U(Na$@Sb-6&A;aj+w?F@lxKr zUX}c@w2~GdvN`48iX{F9shp&*fi1zL3A4`D^(jqJ#TaDR1(X{4wNfd2_!D-q-H`DEUy{^b^UylJ)oH z-^=|mmVb5AzkI}XlE}w+DsS?c{F7M!Tz(wS<tD+g zu7^@S!7KT5n*QZYKKT1~|Nn{gg!0RHB>&E)fBB2Z$MTopBYBfgms$MTmmew-n_n%yx`~d16BzYWjiuVemP{_Rcw^5^1(yveWSuV;QKZ`M=Eznl5B`~`UM;qCr^nfamo zzmbpRFTwlrCLhb+*z_;I#+*d{3OtoJ`Aq(%rhj?CoLv4|ypT8fwfr}l{^jfD`j>C; zTHfS?k7)P*=B9sn^ZY83{|@=S{3iQ~QBl5fZ-^0$#s<-boplfQ%fT>e+&bNT!6 zLf$;@TFW2%Nqqm3KLM}g5njtr;K8AG|6hiO@~^`q`8%8b6q%b&oUk^Cs0$e+Oc zRNmw>`Nxr;%RiC%x%`vyLf+)p@+ULDlz%#ND*0#OwY{?#sJP|MI7?o{_xCC-ToHpUS_Mb!PH&_*~xPbNO?~7xD}E zTK7@}I#|d6UoN zKTCct|J3I5r~DVl7xG*9TK>$Ye|eLyJf_|MS2X?0|CoFve-GZ5H~Cop zl}-Qhy!rc2`B#%qFD0MKzZ}ox&tW}td6UoO-$}lZH`nJ{ z{#^2<{GYR)N`3~fdGJ)ufB6TW|Hu!MFXYYhlePR~$d~fw zdamTh$k*~u$Ahrl|I_eL{?G78ej4w~zY34#-++(gDW1rG08iyVglF`Ky>emw&K-`L8p-kT=h7*Yejezm(r$P9=XkUdx+&@X_u5U&s7V{>RLT^GCYh52)N^Y=5k z{B7h5dGkDfE&nXmQ_2T;C4UF=Yk89ojIe>eF;-rSGY^7oK0dKjXLu}s!T-nJy~jyTl?mL>z#z@djyMCQatSyXX3N)$ij@;UCrd zWboV6bGV5w;Gfa>5^nNoZPuUv^|d}W+}v+>;2W9mABTTM-`9ixhq@0p@d12L%MaoA zXgLx5e)Sk`;uHAmP5$9#{FcEt*Z3U%u)c2r|CxFTH}Tfy{rP{BmT$wK)N&knTiu15 zcn`j{mhZ!#({cj%ta=DH@e%yZT7C?lvxA%;6Zj_TDcrM`8RHzn{z8lS>Ft!D<` z)#M+3gqBmlef1J<;;lFI=YJ0^--es*b?7GlaC1MwgCDQ;@!{`O58(T0`61lINALqR zK8ByBKXhZ^&D=>FW?7jeM-35zt$W3^M9De+we>EeI5Aw)m^xW_uxlp z`98d*?Ja=6L*qlZIUXbUu^J!4muWo{__%rsH}M(#L@hsu-)QbX!>`x!OZd&|)|>kC zf0CAO!%e&c_cd=W+~m`PpQh#e@K0!c0{9*3A>71A@H0&Q;if$&@N+aih2Nt2%;4u~ zd=4MhJQVOiy@Z>1Ym5H;e@VC3hJRh%f#0p}!tYV{;O{Z{hnx5S{$7m_;Ul_T5j<3n z;U+$Te^2X~!oRPc!7nxWhyOt13;55}OSp-*w(QUUF{_e_B0;oA?C&tj4GCKdWc(6xqkQHw`jZ%H_z_`@Q-VJ2sg)L1YcwF51-T2@hAK>>M7jBXYh?Q zK8J6jUcfh1FX1NM+PXjgW_<}8Zq}D@;AZ^<7jD)=@Ze_s1RrkV1Ni1z{}680yNlpv zeY_ZM;uH8AwEPtQCiM(%)=$XcX8nW${>u7q@NKnx%jwU*`My6JZsHyI4qA>2-%;Iz zyXrpN#0T)bH9mx!{6uiGojNZkvtCdNf4jbK20u(ahnx5U?rVGrKStf!ra%A3 ztJ`oB@4$yO-i5zY-GiU3?!!-258&qeO+vVdkKku$IWhb!^#pFdFC&GU_zb?WK9`!q z&HgRm@7DJ%;TNe}+xF-GmHr3*O8)~N)pA_;GIbAry}A!K@d4bdpA*8(dN>i>te+FZ zO?(2k=E`{?g`4$oGPqekCx@H(0&dpNDdA>49P7>f`8Vt5*l-i?z+dVA;U6*ihriPQ z!(ZwD;h)fQLbxeEf}8V241cBnhnw?73ODf?+^px5!_E3U1>CIXQ^HNWwV*%$U(oHf z;s2rT!0%Ic;U?aLuhw`UZa&{0z|H63L%4~L;O2Z9!_D!Yz|HwIg`4wf27f^7pTnos z3;1K|CH$A_)^`2*|DC!Ge@5MbKd0`(O?^E0tj7CrQ=b5C)*}t!ralq;MJ+#u&)HGO zpYT`K|Ad?P3~t67IoymN3b+|>lyDPoZQq}NGk&n)=KSKo&3a8P{FU{W;AXuhA8z6U z_<-guguh-rf^V%J!%chw-$vt8_*>L7_$%jMxXDiee`Wn8_$%u#?a-h9dFJ~E;g)`X zj04Y}l<&iG;bvWU58l-BeYjaiFMylxB@E$~u4fd%&G!t(a1)=v&G!bTaC2Rk!Oizf z<#03ZDd3l{FUMU8-&6Om)$Gsz$2H!D@435_ zl?dTayiMXGxcOd*82<9!5}&}$_e!Mj$M=!=4E_zxPY&OIe~B;P-!l1!Kl^rxw|4B$ z|94FO;d4ESci`rGC0zI;2T8mKH{UDa!*4r8;sdz(UWpL?Y)j%JxcOd*7(S}^ufSd2N3E_91An_60e6LLmk4*mI=6h{Y_;tfleg-$+Ym>vze5b@0aPz%3 zCH(P|CEnVpKmTUkejEPyDH89%%{t63e97q&@4?Nw&_4XmGbKKNn{`k_c%khxf}3@Q zWB3zVegb#2oD{zNEU8ZhH|wb9@NAC67jU!AdBsa?$5tjr`m=u(s&1Mu2Wq2 zO&agP&AQe;eE)Ma|8VoY3?cj`jgR1F-S`;3^A%El0ypdQrtmR6UNX3+`zwcEr{x#$ zmrVZy-{K>h|6Tg?Z`Osj;g8%Z@ebUq^Y6kRxlQ6dxLN1lhtIuT;sdx@CqIP0tnm@t ztdk$ZANit`pTI-Y{^9e!D)AZIj5BlibzhVC0&dpHFX4|oDDl=?`}1$s$+zM6{9NK4 zxLJ4Ig}?j@iTB`U9d950_-`aWfSYxpLwKz1GlHL`-xm|ZZ~DEIpTNz!>nZ$BjnCj_ z9qb%_$DgG90&do+F5ypUytQk8{>?h%Hhha`rF;jzk*-_o!XNpI#CvdG+nW#H_yvg% z;AUO%5Pq`8NAN()kKs!PPwuU-lfcb7u_^qHH%oj5H|xIU@Ow1AfSYwQO8A7fAIt5} zzgfrChCi<5J8)a?AG+{6wv+mM@bmTltq(6XZvnia<%e+VDY@>8;AUOZ7;bBP0ypcF zrf^5&Gq_oIG>5wyU%<^eq9y!}rsT)ktv~-}T~HgoTJ!0^U6X(Kyd5?FaI#*%rtnEEKZBcfEOYoGt$zVG>r$5R)U^NI`}1$srL^I` z*584fbtzqVpz$8utV`*`pVIvszij-Z_OY)$%jA`5b!= zf8wpu-U_(+TtNw+yS=vmJ^J%+)@iii&ujS(+^o~+!ZY1o4?d##^x+G3mHGs5vrb?L zpVsmtxLHRrhA-9f6S!FyF@@iz@fqB#bC|<(txo|Db$d(r6I#BtXMg_9x`H-*M$32L zW}QG6UYPvD&ANX+yshy8JTmPcKG&7~6~SYTkKqe;llTN~*4azpOEo@&n|1AScxmzv zH|x}u@H@18Yp?$Nn|0@G_!hfM{T=wEZm$d9e-DZG;AR~;AAYCC2kOftz)QT)6cbz5a!pb%cDlt>p*shSooX4`}%j+^q8x!)=XE;AS0? z6n>oMCxe@Hdvds=^)KLN9i9^IYP_{?fBwz7IyU?|t&amY>*~1hJ2c*dn{{%0cti6O zz|A@&A^Zs~KZ2WeZ(_Ko+nc}>J-?*z=S}|MW?h;b?r8lBxOon@gm1i`952>>{rNZR z%-C>W>+itLx-l+%ftK&V%{nkX{5Xvd;AWkc5PrVKM{u+5N({eA;}f`9S0sf8y1g0P ztfP{{n;?2fjj|Q*hy-*58Ahbx3@8r11g#u?5nP zh45J8Be+>tB!-`<^-thtosbmnYCbc#WBPyikjX#Xtou>ISDXAF(4T*^?uQLebbB4R zS@*+*ds-h4Zq^y_;Vq31;0w3Y{KHd|f4F&WG=}?HegZeoS*P$}jnCj_osAqGXnX-T z>rRyL5skOr-k*Q7E{6?&Lid*gH|uP;@J#dL!OglEK0Md>0B+X72;ocim;N(?n{_Q> zcxdtuH|tcS@KKY0c+<3hcx3VqH|sW(@ItrOIrcpHA5$v@mYx9-C4(0C7So&;PL2$A;%xz5_SUjk@qm%lF_TTD}jzNw+tEo98Y=cwzDn z|AEOrywvyvZk~%w;g6gA!_9M!Io$e#oWBZqs@HcVeA?uHQGfo;e6$UJR_o)y&3v>A zH}laR+{{P&@Cn^70o=?-hwym^>i7q4oBMBYGasG6&3tqUH}laM+{{PkaLe3(gPZy2 z5^ig}bx42y&3v>Ccg+1axS5Z3;jX#=1~>E3KKw3E@)^L*d~^sm^U)F9HTj1xU#R^L z+{{O(a5EpB!OeVh4o|fG6mT;iUBaKz`dEkd=ikgn+i+WtF9&Ysqg}X}kM`hZKH7(y z`RD*{=A%QnulqNGoB8M%zS>;>!p(ei3ODo78Qj(ItFJ_m_28fBwyU zv<-h*_m=}V^U*H+DcxQVZswzX_*{(-;ATELgx_?i_CIhlA05LTZ9fUz%txp2C$#(w zZswzN__S&Na5EoW!uLE(>Tk9B^Ka&(ZMd0_cHm|{+J!IG@;!K{?Z<~-r||*Y%twdt z8QtCpZswz7c%ktL+{{O(@V3Tha5EpB!_9nj0grWiOZZ(T|BL(cZ|0+I_{$paz|DNL z3pex89^A}F`|u?#?f>CsK01WYTdeILZswz7_@culK7pJ0=oJ2l#%FLdADzSJ9wFry za5EoW!f(@f>+t^koB3!P{>Tz3-+`O?XcxZpNQw90WrH}lapJT~JWxS5Z3;fWdl zz;o08z#rH81aLDS9m41CAoY*nW@a5EpB!f$$ql%K)Pd~^;s^U(#|%tx2- z88iN0(w~1bA8o_Ue6#~M^U*FmH~EK~`Dh=$z?^^KWTMP`REdE=A*46`}1$+qiy(|M@#t*+|u)u3qMo0*Mkpeybpgu z%MajYK01V3dVe*7oB8M%ZfSc<;ATELh1*(w25)HnbNJ53X#U}5KDvb4ru`q)pMNtS zZNnF7`3~I7N4xObG~R=o`Dh=0m&ONhGanto&3tqOH}lak{1Gibft&g06yDJMWN(Iwn7_y6C~pMNtSZNtrcv;#Nu(JtK4`g?FQAML}1p^AAr={^4dmx`g{$AM2R@{G0h`8$N9E4>$ACE<7;#hnx9mAO5^) z|8O%O9l|$0PWvCYnU9X)nQ8xUGasG8bB)j7W3l&3KU(XP z!)=W(;ATF$ggY8<9oL_KGaqfk@6voaa5Eq6!eiZE9^A}F`*2t56Tr=UbO<-|(GlFt zN5}A|wEhX)%txni&-6cVGasG9J(GXAKkj(x zA3V63kM`l`YkUAV^U)#v5si=FWnqh0vRCjW3VAML{v)BfRRK01WoVa7jjGantpSDzs5A%UCu z=oG%>M2XMfW6bG&3tqTH}lcfiT(L+>Hf0eWGasG7&3tqYFHHX7WG%`A#e1Ya1^l%eOMD5x^J0m&{;fa%zt{3@_;HcMJMbg4d>6j|)e`T)FV%P-e&>Y5 z2k_5mdUeE4<0mhuDm+cZ9eFZ!LtNAN>5K86>j z|AB9%@hSW!EkA?bs_{Ae@u#Fd1^lAdY5w6S|3Tudllt?YuPgC3{E=rQ-hux?%Xi_A z|54&S_-31G{^2{n=9J$03;}#MjSu0=UnlVqd{pCO_@dWKd;-5#<5T!jjnCk#G(Ly> zI$kZ{zt{K@-ZtaUll$|3qsH6t)mk41-q!u)!dLGk+v~w6wR|6bvZwin-}!pkUm?8I z`bY5J&6D^T{<4;zz~{}E_!Pe9La9#%Kg0At@SRVP_yT^kmS4iJc&Ef$r}XDP{jGeC z%Z6`!lEgdkgEy1YP=7B zR^tPBq46Pn!MmmW2)<53+dup|jZffa-O&_2tH)OcKUd4o;df~H1^j4@FX0O=(EOj) zpZ{auAoaK5dtNB<4*Uja^a!o(}Qnh)?b20CjW4=PHzaeP5$9#o$VO@ z@~<@iaMM0hxM`mm+^mzI!y8(k0&d!83E#Ms`dFv;=ijXBZo{8=LE;_wE9)P^=e;QL z9^9;p?!)iW_yBG`9}>dnz9i*GaC5xGaC5vQaI@}r3co_j&){a=?;O5b;|sW1hrERE z`LgE!jQ;$ab-!)+nHulF%{tyL{0fct;O2Pr;pTV@;AY+I5bl`v4>#*($MEI
  • 04 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
    <$P_l_cA-*EQ@jmp|U4dZY=jeB?ga; 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%0A}H! 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