From ba2fa37093175413f1ffdccfbc5552273c9c5b46 Mon Sep 17 00:00:00 2001 From: Stephen Power Date: Sat, 8 Jul 2023 12:14:35 +0300 Subject: [PATCH] multi-file, more btns, mobile ui (v0.2.0) --- .gitignore | 25 +- Cargo.toml | 15 +- README.md | 0 build.sh | 0 frontend/Cargo.toml | 40 +- frontend/Trunk.toml | 101 +++++ frontend/css/fonts.css | 8 +- frontend/css/input.css | 0 frontend/css/scrollbar.css | 0 frontend/css/textarea.css | 0 frontend/fonts/comfortaa.woff2 | Bin frontend/fonts/fira.woff2 | Bin 0 -> 62616 bytes frontend/fonts/inconsolata.woff2 | Bin 38012 -> 0 bytes frontend/img/404.json | 0 frontend/img/btc.svg | 7 + frontend/img/xmr.svg | 7 + .../{index_web.html => index.android.html} | 9 +- frontend/index.desktop.html | 17 + .../{index_desktop.html => index.web.html} | 8 +- frontend/package.json | 5 + frontend/src/components/btn.rs | 117 ++++++ frontend/src/components/container.rs | 24 +- frontend/src/components/divider.rs | 13 +- frontend/src/components/drawer.rs | 108 +++++ frontend/src/components/dual_view.rs | 15 +- frontend/src/components/footer.rs | 64 +++ .../src/components/header/add_dropdown.rs | 223 +++++++++++ .../components/{header.rs => header/mod.rs} | 186 ++++----- frontend/src/components/header/save_btn.rs | 119 ++++++ frontend/src/components/link_btn.rs | 0 frontend/src/components/markdown_input.rs | 372 ++++++++++++++++-- frontend/src/components/markdown_preview.rs | 47 ++- frontend/src/components/mod.rs | 6 +- frontend/src/components/modal.rs | 67 ---- frontend/src/components/modals.rs | 86 ++++ frontend/src/components/single_view.rs | 0 frontend/src/components/theme_card.rs | 5 +- frontend/src/components/toasts.rs | 58 +++ frontend/src/components/tooltip.rs | 20 +- frontend/src/components/welcome_hero.rs | 12 +- frontend/src/contexts/config.rs | 20 +- frontend/src/contexts/markdown.rs | 226 ++++------- frontend/src/contexts/mod.rs | 1 - frontend/src/contexts/modals.rs | 123 ------ frontend/src/errors/mod.rs | 0 frontend/src/icons/mod.rs | 305 ++++++++++---- frontend/src/main.rs | 17 +- frontend/src/pages/about.rs | 228 +++++++++-- frontend/src/pages/background.rs | 57 ++- frontend/src/pages/home.rs | 35 +- frontend/src/pages/mod.rs | 0 frontend/src/pages/settings.rs | 168 ++++++-- frontend/src/pages/welcome.rs | 10 +- frontend/src/strings/strings.ron | 41 -- frontend/src/tauri/mod.rs | 39 ++ frontend/tailwind.config.js | 6 +- package-lock.json | 6 - rust-toolchain | 3 + rust-toolchain.toml | 3 - screenshots/ubi.png | Bin screenshots/ubi_about.png | Bin screenshots/ubi_settings.png | Bin src-tauri/Cargo.toml | 16 +- src-tauri/build.rs | 0 src-tauri/icons/128x128.png | Bin src-tauri/icons/128x128@2x.png | Bin src-tauri/icons/32x32.png | Bin src-tauri/icons/Square107x107Logo.png | Bin src-tauri/icons/Square142x142Logo.png | Bin src-tauri/icons/Square150x150Logo.png | Bin src-tauri/icons/Square284x284Logo.png | Bin src-tauri/icons/Square30x30Logo.png | Bin src-tauri/icons/Square310x310Logo.png | Bin src-tauri/icons/Square44x44Logo.png | Bin src-tauri/icons/Square71x71Logo.png | Bin src-tauri/icons/Square89x89Logo.png | Bin src-tauri/icons/StoreLogo.png | Bin src-tauri/icons/icon.icns | Bin src-tauri/icons/icon.ico | Bin src-tauri/icons/icon.png | Bin src-tauri/icons/icon.svg | 0 src-tauri/src/commands.rs | 0 src-tauri/src/main.rs | 62 ++- src-tauri/tauri.conf.json | 53 +-- ubi-crates/config/Cargo.toml | 3 - ubi-crates/config/src/error.rs | 3 - ubi-crates/config/src/lib.rs | 13 + ubi-crates/error/Cargo.toml | 9 +- ubi-crates/error/src/lib.rs | 33 +- ubi-crates/md/Cargo.toml | 11 + ubi-crates/md/src/lib.rs | 90 +++++ 91 files changed, 2464 insertions(+), 901 deletions(-) mode change 100755 => 100644 .gitignore mode change 100755 => 100644 Cargo.toml mode change 100755 => 100644 README.md mode change 100755 => 100644 build.sh mode change 100755 => 100644 frontend/Cargo.toml create mode 100644 frontend/Trunk.toml mode change 100755 => 100644 frontend/css/fonts.css mode change 100755 => 100644 frontend/css/input.css mode change 100755 => 100644 frontend/css/scrollbar.css mode change 100755 => 100644 frontend/css/textarea.css mode change 100755 => 100644 frontend/fonts/comfortaa.woff2 create mode 100644 frontend/fonts/fira.woff2 delete mode 100755 frontend/fonts/inconsolata.woff2 mode change 100755 => 100644 frontend/img/404.json create mode 100644 frontend/img/btc.svg create mode 100644 frontend/img/xmr.svg rename frontend/{index_web.html => index.android.html} (55%) mode change 100755 => 100644 create mode 100644 frontend/index.desktop.html rename frontend/{index_desktop.html => index.web.html} (65%) mode change 100755 => 100644 mode change 100755 => 100644 frontend/package.json create mode 100644 frontend/src/components/btn.rs mode change 100755 => 100644 frontend/src/components/container.rs mode change 100755 => 100644 frontend/src/components/divider.rs create mode 100644 frontend/src/components/drawer.rs mode change 100755 => 100644 frontend/src/components/dual_view.rs create mode 100644 frontend/src/components/footer.rs create mode 100644 frontend/src/components/header/add_dropdown.rs rename frontend/src/components/{header.rs => header/mod.rs} (50%) mode change 100755 => 100644 create mode 100644 frontend/src/components/header/save_btn.rs mode change 100755 => 100644 frontend/src/components/link_btn.rs mode change 100755 => 100644 frontend/src/components/markdown_input.rs mode change 100755 => 100644 frontend/src/components/markdown_preview.rs mode change 100755 => 100644 frontend/src/components/mod.rs delete mode 100755 frontend/src/components/modal.rs create mode 100644 frontend/src/components/modals.rs mode change 100755 => 100644 frontend/src/components/single_view.rs mode change 100755 => 100644 frontend/src/components/theme_card.rs create mode 100644 frontend/src/components/toasts.rs mode change 100755 => 100644 frontend/src/components/tooltip.rs mode change 100755 => 100644 frontend/src/components/welcome_hero.rs mode change 100755 => 100644 frontend/src/contexts/config.rs mode change 100755 => 100644 frontend/src/contexts/markdown.rs mode change 100755 => 100644 frontend/src/contexts/mod.rs delete mode 100755 frontend/src/contexts/modals.rs mode change 100755 => 100644 frontend/src/errors/mod.rs mode change 100755 => 100644 frontend/src/icons/mod.rs mode change 100755 => 100644 frontend/src/main.rs mode change 100755 => 100644 frontend/src/pages/about.rs mode change 100755 => 100644 frontend/src/pages/background.rs mode change 100755 => 100644 frontend/src/pages/home.rs mode change 100755 => 100644 frontend/src/pages/mod.rs mode change 100755 => 100644 frontend/src/pages/settings.rs mode change 100755 => 100644 frontend/src/pages/welcome.rs delete mode 100755 frontend/src/strings/strings.ron create mode 100644 frontend/src/tauri/mod.rs mode change 100755 => 100644 frontend/tailwind.config.js delete mode 100755 package-lock.json create mode 100644 rust-toolchain delete mode 100755 rust-toolchain.toml mode change 100755 => 100644 screenshots/ubi.png mode change 100755 => 100644 screenshots/ubi_about.png mode change 100755 => 100644 screenshots/ubi_settings.png mode change 100755 => 100644 src-tauri/Cargo.toml mode change 100755 => 100644 src-tauri/build.rs mode change 100755 => 100644 src-tauri/icons/128x128.png mode change 100755 => 100644 src-tauri/icons/128x128@2x.png mode change 100755 => 100644 src-tauri/icons/32x32.png mode change 100755 => 100644 src-tauri/icons/Square107x107Logo.png mode change 100755 => 100644 src-tauri/icons/Square142x142Logo.png mode change 100755 => 100644 src-tauri/icons/Square150x150Logo.png mode change 100755 => 100644 src-tauri/icons/Square284x284Logo.png mode change 100755 => 100644 src-tauri/icons/Square30x30Logo.png mode change 100755 => 100644 src-tauri/icons/Square310x310Logo.png mode change 100755 => 100644 src-tauri/icons/Square44x44Logo.png mode change 100755 => 100644 src-tauri/icons/Square71x71Logo.png mode change 100755 => 100644 src-tauri/icons/Square89x89Logo.png mode change 100755 => 100644 src-tauri/icons/StoreLogo.png mode change 100755 => 100644 src-tauri/icons/icon.icns mode change 100755 => 100644 src-tauri/icons/icon.ico mode change 100755 => 100644 src-tauri/icons/icon.png mode change 100755 => 100644 src-tauri/icons/icon.svg delete mode 100755 src-tauri/src/commands.rs mode change 100755 => 100644 src-tauri/src/main.rs mode change 100755 => 100644 src-tauri/tauri.conf.json mode change 100755 => 100644 ubi-crates/config/Cargo.toml mode change 100755 => 100644 ubi-crates/config/src/error.rs mode change 100755 => 100644 ubi-crates/config/src/lib.rs mode change 100755 => 100644 ubi-crates/error/Cargo.toml mode change 100755 => 100644 ubi-crates/error/src/lib.rs create mode 100644 ubi-crates/md/Cargo.toml create mode 100644 ubi-crates/md/src/lib.rs diff --git a/.gitignore b/.gitignore old mode 100755 new mode 100644 index 53bf3e9..344684b --- a/.gitignore +++ b/.gitignore @@ -1,18 +1,13 @@ -/tailwind -/target/ +target/ *.iml Cargo.lock -/.idea/ -/.vscode/ -/frontend/.idea/ -/frontend/target/ -/frontend/node_modules/ -/frontend/dist/ -/frontend/img/lottie.js -/frontend/css/output.css -/frontend/package-lock.json -/frontend/Cargo.lock -src-tauri/target/ -src-tauri/Cargo.lock -src-tauri/.idea/ +.vscode/ +target/ +node_modules/ +dist/ +lottie.js +output.css +package-lock.json +target/ +.idea/ src-tauri/icons diff --git a/Cargo.toml b/Cargo.toml old mode 100755 new mode 100644 index 48b5992..382931e --- a/Cargo.toml +++ b/Cargo.toml @@ -2,37 +2,28 @@ members = ["src-tauri", "frontend", "ubi-crates/*"] [workspace.package] -version = "0.0.1" +version = "0.2.0" authors = ["Stephen Power"] description = "A cross-platform markdown editor." license = "GPL" edition = "2021" -rust-version = "1.60" [profile.release] panic = "abort" codegen-units = 1 lto = true opt-level = "z" -# strip = true [workspace.dependencies] ron = "0.8" - serde = { version = "1.0.154", features = ["derive"] } log = { version = "0.4", features = ["release_max_level_info"] } walkdir = "2.3.2" thiserror = "1.0.38" dirs = "5.0.0" -toml = "0.7.2" -figment = { version = "0.10.8", features = ["toml"] } -yew = { version = "0.20.0", features = ["csr"] } -gloo = "0.8" -web-sys = { version = "0.3.35", features=["Navigator", "HtmlButtonElement", "HtmlDivElement", "Event", "EventTarget", "MouseEvent", "InputEvent"]} -wasm-bindgen = "0.2.84" getrandom = { version = "0.2.8", features = ["js"] } markdown = "1.0.0-alpha.7" urlencoding = "2.1.2" -rfd = "0.11.3" config = { path = "./ubi-crates/config" } -error = { path = "./ubi-crates/error" } \ No newline at end of file +error = { path = "./ubi-crates/error" } +md = { path = "./ubi-crates/md" } \ No newline at end of file diff --git a/README.md b/README.md old mode 100755 new mode 100644 diff --git a/build.sh b/build.sh old mode 100755 new mode 100644 diff --git a/frontend/Cargo.toml b/frontend/Cargo.toml old mode 100755 new mode 100644 index 02d3c1c..ee3e0d9 --- a/frontend/Cargo.toml +++ b/frontend/Cargo.toml @@ -3,21 +3,15 @@ name = "frontend" version = "0.0.1" edition = "2021" -[profile.release] -panic = "abort" -codegen-units = 1 -lto = true -opt-level = "z" -# strip = true - [features] +web = [] desktop = [] +mobile = [] [dev-dependencies] -wasm-bindgen-test = "0.2" +wasm-bindgen-test = "0.3.36" [dependencies] -time = { version = "0.3.15", features = ["wasm-bindgen"] } serde_json = "1.0.96" serde = { workspace = true } @@ -25,28 +19,36 @@ log = { workspace = true } walkdir = { workspace = true } thiserror = { workspace = true } dirs = { workspace = true } -toml = { workspace = true } -figment = { workspace = true } -web-sys = { workspace = true } config = { workspace = true } error = { workspace = true } +md = { workspace = true } + + +web-sys = { version = "0.3.63", features=["DataTransfer", "Element", "Navigator", "HtmlAnchorElement", "HtmlButtonElement", "HtmlDialogElement", "Navigator", "Clipboard", +"HtmlDivElement", "HtmlDocument", "HtmlInputElement", "HtmlLabelElement", "HtmlTextAreaElement", "Event", "EventTarget", "MouseEvent", "InputEvent", "KeyEvent", "KeyboardEvent", "KeyboardEventInit", +"TouchEvent", "TouchList", "Touch", "DomTokenList"]} +wasm-bindgen = "=0.2.86" +wasm-bindgen-cli = "=0.2.86" +wasm-bindgen-futures = "=0.4.36" +js-sys = "0.3.63" +serde-wasm-bindgen = "0.5.0" + +yew = { version = "0.20.0", features = ["csr"] } +gloo = "0.8" +gloo-timers = "0.2.6" -yew = { workspace = true } -gloo = { workspace = true } -wasm-bindgen = { workspace = true } -wasm-bindgen-futures = "0.4.34" getrandom = { workspace = true } markdown = { workspace = true } urlencoding = { workspace = true } -rfd="0.10" - tauri-sys = { git = "https://github.com/bicarlsen/tauri-sys.git", branch = "fs", features = [ "all", ] } undo = "0.49.0" +regex = "1.8.4" +lazy_static = "1.4.0" wasm-logger = "0.2.0" -yew-router = "0.17.0" \ No newline at end of file +yew-router = "0.17.0" diff --git a/frontend/Trunk.toml b/frontend/Trunk.toml new file mode 100644 index 0000000..a31d0f8 --- /dev/null +++ b/frontend/Trunk.toml @@ -0,0 +1,101 @@ +# An example Trunk.toml with all possible fields along with their defaults. + +[build] +# The index HTML file to drive the bundling process. +# target = "index.desktop.html" +# Build in release mode. +release = true +# The output dir for all final assets. +dist = "dist" +# The public URL from which assets are to be served. +public_url = "/" +# Whether to include hash values in the output file names. +filehash = true + +[watch] +# Paths to watch. The `build.target`'s parent folder is watched by default. +watch = [] +# Paths to ignore. +ignore = [] + +[serve] +# The address to serve on. +address = "127.0.0.1" +# The port to serve on. +port = 8080 +# Open a browser tab once the initial build is complete. +open = false +# Disable auto-reload of the web app. +no_autoreload = false + +[clean] +# The output dir for all final assets. +dist = "dist" +# Optionally perform a cargo clean. +cargo = false + +[tools] +# Default dart-sass version to download. +sass = "1.54.9" +# Default wasm-bindgen version to download. +wasm_bindgen = "0.2.86" +# Default wasm-opt version to download. +wasm_opt = "version_110" + +## proxy +# Proxies are optional, and default to `None`. +# Proxies are only run as part of the `trunk serve` command. + +[[proxy]] +# This WebSocket proxy example has a backend and ws field. This example will listen for +# WebSocket connections at `/api/ws` and proxy them to `ws://localhost:9000/api/ws`. +backend = "ws://localhost:9000/api/ws" +ws = true + +[[proxy]] +# This proxy example has a backend and a rewrite field. Requests received on `rewrite` will be +# proxied to the backend after rewriting the `rewrite` prefix to the `backend`'s URI prefix. +# E.G., `/api/v1/resource/x/y/z` -> `/resource/x/y/z` +rewrite = "/api/v1/" +backend = "http://localhost:9000/" + +[[proxy]] +# This proxy specifies only the backend, which is the only required field. In this example, +# request URIs are not modified when proxied. +backend = "http://localhost:9000/api/v2/" + +[[proxy]] +# This proxy example has an insecure field. In this example, +# connections to https://localhost:9000/api/v3/ will not have certificate validation performed. +# This is useful for development with a server using self-signed certificates. +backend = "https://localhost:9000/api/v3/" +insecure = true + +## hooks +# Hooks are optional, and default to `None`. +# Hooks are executed as part of Trunk's main build pipeline, no matter how it is run. + +# [[hooks]] +# # This hook example shows all the current available fields. It will execute the equivalent of +# # typing "echo Hello Trunk!" right at the start of the build process (even before the HTML file +# # is read). By default, the command is spawned directly and no shell is used. +# stage = "pre_build" +# command = "echo" +# command_arguments = ["Hello", "Trunk!"] + +# [[hooks]] +# # This hook example shows running a command inside a shell. As a result, features such as variable +# # interpolation are available. This shows the TRUNK_STAGING_DIR environment variable, one of a set +# # of default variables that Trunk inserts into your hook's environment. Additionally, this hook +# # uses the build stage, meaning it executes in parallel with all of the existing asset pipelines. +# # stage = "build" +# # command = "sh" +# # command_arguments = ["-c", "echo Staging directory: $TRUNK_STAGING_DIR"] + +# [[hooks]] +# # This hook example shows how command_arguments defaults to an empty list when absent. It also uses +# # the post_build stage, meaning it executes after the rest of the build is complete, just before +# # the staging directory is copied over the dist directory. This means that it has access to all +# # built assets, including the HTML file generated by trunk. +# stage = "post_build" +# command = "ls" \ No newline at end of file diff --git a/frontend/css/fonts.css b/frontend/css/fonts.css old mode 100755 new mode 100644 index 4a4b3c2..e9f3c3f --- a/frontend/css/fonts.css +++ b/frontend/css/fonts.css @@ -1,10 +1,14 @@ @font-face { font-family: "Comfortaa"; src: local(Comfortaa), url("../fonts/comfortaa.woff2"); +} +@font-face { + font-family: "Fira Mono"; + src: local(Fira Mono), url("../fonts/fira.woff2"); } @font-face { - font-family: "Inconsolata"; - src: local(Inconsolata), url("../fonts/inconsolata.woff2"); + font-family: "Inter"; + src: local(Inter) } \ No newline at end of file diff --git a/frontend/css/input.css b/frontend/css/input.css old mode 100755 new mode 100644 diff --git a/frontend/css/scrollbar.css b/frontend/css/scrollbar.css old mode 100755 new mode 100644 diff --git a/frontend/css/textarea.css b/frontend/css/textarea.css old mode 100755 new mode 100644 diff --git a/frontend/fonts/comfortaa.woff2 b/frontend/fonts/comfortaa.woff2 old mode 100755 new mode 100644 diff --git a/frontend/fonts/fira.woff2 b/frontend/fonts/fira.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..04e3fad7f64194812ae4e61d7185fc41b4b65d16 GIT binary patch literal 62616 zcmV)FK)=6tPew8T0RR910Q8su5dZ)H0-OW@0Q5Bg0RR9100000000000000000000 z0000QfdCt;5*(sV24Dd57zlw936~cU2nvUwB!-e83zr%I0X7081FkRxAO(k92kLGN zfgoEvNU{jNSLEL9_J7gZ3X{Yn79@mjA_Ai`YOGeveyStU9J@!MT9(eS5bi}Uvuf>G z!ZrqWxt`l}L~1Xg(*OVe|NsC0|NsAclZog|lAV)mXOK}KVeA5>gBCjf2};I8l;I)y z&I<{kk}6U*svB#mi)8dLrb(FgO-aQ#rK)G4jKw4k1hR5A54xynNe?T&sM&gOsvLrd zjkiU+00m}ChKbU2n{3yyA{zF=C=bevB?Hrv0*#q5P%lO22(gCPLChfp98ATXX}}}v zsDZH6pvQ+uk0sDz9#=TC zkc;Z?`DK+)*{jJzk-6tLyuETGt&|77s`4w9;a%89o6(1_tq^D{ynOW3C)(WZ*||9N z+)gZiQ!nQI^L2{7M%o^6T+)ex!yp#2`k%_D?0v~f-;ge<^M=oYdy?S_I!S5U>Ub!> z@Z*2({7jWp$S<0?jcoE)_Tt#6W(lbYo0`Qa&Kw{DA|U4urTi-mlk=^lmM4E}4;P2_ z`Q~(Szlq--o427Hl>Pb3Wq8!~vMbp+bN_IDWT26K%@$Ki6vay?KgcF-;O{;;5cpi4 zXQm1B7v+X~*l=)g$gKvdsE!?9x#;Ko%;v(fmrh4<1pbdFA9qh@I>4!+gF!Naq|!i; zZVVn0{qR<41TlvcApkiV8%^e^TOsf<^+32|KnkUA^Wj0SdM;x(p2&JJVHZV38GT0aSNSJ=w

=Z6X33;ARc*x#$v7t5F->a%(4V^_mT#rQa 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 B{KEhM literal 0 HcmV?d00001 diff --git a/frontend/fonts/inconsolata.woff2 b/frontend/fonts/inconsolata.woff2 deleted file mode 100755 index 3a228c09dc0e404006682f6c70a0a37116e1a051..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38012 zcmZsAV~`-r()QTaj%^z|wr$(CZQHhO+qP|M$NKi1``#a4#I2}^uFgX0$*S&3S6LB8 z06>7hCCLi_>F)zD|MPDf{y(&T=>LD=6%kRA#>Vt##PToD!p>j@(*ua&f$&F%%s@kg zfC_w&3#|8mjuHR>WCbDyPO|{P2aQGpZ_t79C(2t>DwoD&f_Bjg4i0Su!J&!xq^7K>(Z;J zU^dK2P~tof+N08pI8@&B<~W|uX+Br~ac1AOa&I^tVAj0}v31`Y&#CN&fN-WLUJ5pd zVi*~7L<2-DyZV4Pw;QZmr&m^1#w~yd<1=10*nRQdeKgyRUfW7hfQo(IN_W}zUUkNi zedZ1;PWp$!{hg%Is!^>XrL3GBN)ALQx1N~Rk>z+YpA%@l*eLVYz@U!p?VLOs>RHx81$Ne@vR~X74 z(_0y>47)ej-O`IBwqkvj{9Pkx{_zK~+g=nI=mi^FVEVVhL$;fs1<%~LrC=H>vvzK= z(-B!wQ(PY$wi6{k9OIFz&x}4}CKj=|(O~c=ajf)e(K0QsUt)-ctQvcb%?&oVBe;rL ze!t{8F?zodkv8H{H%(}YufVIHoZeNGpTz|UAb|TR2p^c#uKr#he`kFutoFj)0|hPy zA5ee6=#$z;N2HY#l}Q-i)1=DX5w#4FJrz*h48Ieh-lU+Pds>KRe9`2PNqi{o+bGe( zwXe&Ig1CSfVLmgK1@+ShKW9Lo z({!I+nIb=5ogCr8SR9(XTs=LKr^vK&d)d3PuT3vZD(#`;&&L+u!Pnt=;?&{B@=YpL zXOdDnCBe?%;?M0%hp7#piFZB}f#C%JUxE-7B}^R4lk)9r-ptR7Sc;J&OwyV-_M{60 zT^*jD%_O|mp8k;j^=3)RD(^ICcy;~Iu+Vjht-}vTwU7Ayl})l!;~}6B8^G6(WXpm* zl549+;h?#ChlH(-eF#0sAS_5ic2s7=%?sBY5CF)Z+Le%zho{6jS$fTZ7Cu(VbfMyM zsb039P0r(*_;g>#AH_EbVRPw1PynOKI+|X~#tj** zJ$iI@eZf8P1~cpSIOJ#~@#ATG-gI>-WMId{Q+8D0rr}f|5R~h80NZc!hyrpAjfr0| zKHssCcVy2L5ginNNtn?hg`$P?h0f6;@+iXc{7V23a41d=Q@b*yihtixgx&k5YZW9Y zikkpO`YA*$)6b1y3t+93q;1E$lLB!+8WIOun!R1k;7n!9Oo3OCk{;njw__yNP zJ=P}uohzPqyNirR#W0YEPRu8x5^$YJjucEN?&MIlODpg6SBSsW6sJw}FSo*ZvpY7o zYl!E!AJTNA1aZ>zBVsZZziuAiH9*c#d9xT1lJo(5;TUaRd-tc#ZeHEgo9)EEqy8D% z=E@-O1b{k+5atmeEmACh?(~~G0Fx-FNZ2*1=xPp!$5&`5EDRA*yIBk} zBGUG~i#C*;;|Rf+%QEp-IwpP_a%91g{1V)?90bdh)J$wi`}{fJY@y5~a-6(N7>?No zJR2@4PBmLuV-ikZWN^xK!x%yUutIo=Os@+%r>yMw`Ggd)9_TL~;ZAcdn+ah($JKl| zP*4W?-;8CowU6ZA`|jUqz0In*p1Rcm0*ZDg(fvd*yAZsehFb#K;=<{58S<=F5OaZo z4c;#h8+lGjOB5E)%VYYDpI2o z11dlRB~b%uVS)CdM{Z!6QnB7NP7x< zdnZ;}epJSs?%yhZfhW))^#zb%bzeGft5)!VHu{3e3zyyfw6hIgMl9fKZnAxqQWX>G z-A;*9F-LKAmsU%t$^|jz;v)bE%Jr_AleYd*lp>xme4;y#&4Ci@AY7x37YhRM(C=N| z-s}NrRtQWBDnb${GWF^;mgs(wrLD$C_LwMY5I3i$qxW+c#cHQ0R$5WhV|8}UoVdYQ z|H&v(+U>lp*~GzMDc*-!g#np z@@Q1q)5V~rJqIvHhflH)+K!xOe_^Ds= zxi+A4)oiJ-Cf65(z-5VgQ@MKCq+EFSxa=J@p_@V=TdbdV#hYguAxB-5yDFkKj7Xi5+GT?C(^saAH{%C zq(Cx+qR3aVBrtVLQl`4>=eZ3){#EB6g~$NJj6DFzs6`0CHBe821O+f(={V^|}=J{EEF`3kV!7vbrgU3V!o- zolGbRB(%(kgEmzq9J;2xdP0$f=e3GIGxt-3E_f}hwp_)p*}vYR?jr(#FVTdXi@K9P zUnVv4^b0t6ti>8)c@q-Wy|*tNcK`g1c+2URZDiBayCgTSnj2eJSV06uOHjgZkPwAq zbAWDs8p2d$lbdQ?uxpll%*H?EZnW0?GkQ`hC(h~*3{8vY1{EQM`s^8j(AWS z4wn#pQ!P`&pYKW@olBk>+4-6$V!NVs%@~3cVSB=K3DbslFJjC{@NlCv3DW@jh(zW| z!w^5eK0SmuxjA|<>Y{~_-|%8pO^BCV`1NHRO914Qqy!W+RAjOHVfYjo`W(1?L6E{s z)Zq97L5$S;^T`_?rmC*8w&mW++h#2r**3MhZ^M!c z0)mz7`9k9g#gj?eO-{oX&RDHhyUndW5=oT`mHdsY*-pwHJwBr|+MO>~+pWI91?c<> z)T4&%gkljUYBAu%XvNXaenSN#P}F<|VCn~U?p{HV2?ZD_hlnVHfcydxCICWdawG8! z0FdG1Wb@? zpCE4^L4JE^Gv_I8$ z-F3Y6e$l;~nq~6_W2^*oKI z;xj;H2`*6(mBrH!C^8E{apBzexY^ca=`Fm)$ zS7a`@c!yD>Zg`Z5uP;vzE^e;Q>MkbhYqT7C^u$SEO}c2wiv6{z7E`0pG>-H1;nQ0( ztJGiWtg4dquMi5FO+*EA!)(=2F%>11#kr-0m3RrP5@XJqQ|R(0W6qH$FM?#&6?ZBK zKaijyBNU~kKMdH2#DB3d3LHkC|5wO={1HNuMPhMtaB}DL{`y8`otARlmQ!1nK?|d( z(L(eO*lK$+i(+PMaC3Baco>cgsxC^d-w_mRE=roT@eC%4TXaCh)%oPqqy!{XdP=AU zo2*9v<@?V%e|5NQBc8x!jB%LMxVV|r3rUK7IV%hH=q z;u**JrS!kb(JF5@Y5(JxCS?<06}EMi(#^|Kt)zdbxkc)@5sWI%$p5IG6TRMJ|JZ`V z>3Y4xw8}Gc>9cc-=XibTGxPCfSmS;3p*pvNgPpz2)#deN`|hev1(z@!g0IV-)=%^{GYU>j{2IAjX2KW-I<|0YXX*ae>a0mgSeTiczdJlW zEISzg1@>R=hU+nxkmXJFF_t?B_zeF*1JE4;`Cr%)k%s^W1ffg={Dp56(RS9K{XYl3RAXf}>($UShw{Jp{YUwdYAqJe z-iDSnt(&Xs|0z71(}GCj@{N<{SDM3rk*DgcxKRVoaIBzNoB!-%=jP>N@9gROzfAuT zA~c;%+d4{hp}0X$vuV$*E6<{hUeaVG`cFvfT%TOy@%nz;Kd#>LI$j@k-TVv4o}1II zUEY68=c|AfG=Lz+j20T&PXK}xJfdgs#%CbEp$0BSZBf-XFv3SY&_6sFs`r0=@{U3c z9()|z-53UX2KtA42m65tQG5k+=+toV6U&L+;KxpM<*dmgdJXMdJkc@?Y1FKtlZT=z zvwwMwU93C4oUCPOZE25Gevo_Oe^>o?uyV_q{-db!MVk~UPnXh=? z!(zW8J9P!Nq;Va%6IOeN{R1E9XWBJR#0OitYyC3aOtTJ&sMG#P8t-T8$Z57%m&(%! zS{P>Q2mi`fcRb&4Z2#5pN8cmsF9C<&=X`ag_Gu;~N3Tljs)hpGF|Ao?@cqN_vATMV zY!Iy;>#)=db7TUG0g#A=J9N6qXZ~l?;+|~;AA7{ApZoxrXAfBK84|}|ehA#l3^LuD zQN`zG^CWubm&Vpp)u_fTMTeXU%5a0*Oj&iQtHI60$elRN3_)_>rGmAC>_0ZLP};BF<)Sh~vWTOhK@(YeX=Q-PEaC zxIE>b)hkPL4Wi{CP+i_fh-9V+MQ3*r0u7d00#5%o5U<~oFH6A<25!cCqy4oStpxGo zt9m(|+aK6FE!@yQr_nPICERAR&i4eXKkOso@hLv$0sEy>4+F;cJsa=%3&zPGGzBUQ z0_(rb@$3QKMQTtNl0!fnRSyDWe_cSyKg0=kXt4U5?*t#!+(o%J3;+Wqulv7WotRH= zr#e-^5AjPL5-M+#MZta}p&5Bd`y)1^`j##LGkR`K54Hx@Cg*26sS(pG9I zhvsFz6)Pml_UETUR5Tc}s^8<{sY@fETN$y16AA+D_~DJ#oaSL%6dE&}CI4WC-U1@w zwXE~dfD`Zp7Cq&I@CpmlaTeps+AxWa!FzeUD5~;0)7oJcyZa(-K>?OWD0TTnKifCs zk!ybXajSXT`9{E|rkdr7z7=CGo=Cb#PO$%3Q=9v`(1&BWM}w!`SXQ*T*pl{Z(Lssm z2fv2*J4CYH5c@Mh%%pkcF-AFCx2>r*L6%w_X>)bQ{=rVR*XIO`x3;x5Mb>uR(}9z6 zHsGtbQt}9VD?%eD;UNMb1oGXeeB01q$*o7=4@<#KMnl(lBzJL9;`vy$keoA4%f z_a16CjjWT)t9~m>%x-&^VNdhax&EE{EX#tD;PQR?0+FR2`Y!j~SP3sToK_22Oxc$Q zjeP1|0p+$Yv}_+Z{^~>M6TRLy?px$N$b-YfxUW>Z>%>Y5@MGZ2mH*QDfr;~NdU+B5 zV2`wv3}vi&1o{=VT(Y&C?)lu}tDG8_XYgq%Fpaas?moW?a>16>Qgda~+wh%L)w{eq zF@A$>;X6m22wd)&0}gkePC@K7%Uyt>yukk4^bi?P)%Zn`UCIfoTTS&+*7)9zQERqp z_)&cN5*W|y(=Ka+iFOhn;WyRHT|We>1%mO3q40Y@v==BIL_y_KX##q{S$e4c4f;JG zITgYoUh+gQ@B`?@ZdUaS4?;`bX&53WR~A72+(;P@z?*?Cjl1r}A&E@&Rru2T zaY1YG3eB@M)`dsa9^hUY`iI*ycA)BETwi*^_D2oU7QkLd*nWqq64P}Z~t>q8Y=!Y;2!I{7#VQ<+q= zT+6x&`}i=0DNVkzNwPz#xVEBsn{sIiQ*#E!bD6b;)|Sf!;9BBx|mEy#8NsEudDaZP~hp=KQWT{>LVO zkF(Ts`veJ;&=`&WGs@1i<&GbghlHhylNk3Ee5!{Oj@&p8RHp8JaDKxhCRh9AJgsb>-@BQY3Sl8;|?Q>nWcQ`k~VFZ`KLQ&Ps)jK+xQpY z-^<)@u_@8lt%FhZA@>DTOrbKu2-<(R@)?3B$=PP6rmlY)Xl+ny^0i?d9ioGH@7hF| zXNZ4Q1Frs5Ld)XX|42MV6LEaG;Y}f$%CW~Xq{L0Xy&If`8Xwwmqm#~vGUbg{=5K<) zwTlQ;Izysq&VW}Ar^ByErh%z|B*}s4NqK7(J@X$qWO>bILM62yg>>S2+(c{WvYgL- z)gWJW;{_vUon&zf_Ax{JlO9-*k;&Z_!F6qT%b3JPlhI>$p0O)@Z z0)PjI|23aK`fYvg2z3A+9|AmT%XXBgzyMMt`0Ny;jmC&semuiJ6OqmRckZd)=^DFe z^>1@RWEh9M-8LYO)pg)HnpCwQ3MZvreItlK4gC|Aeuj%FK~y&ifz^R6539|CjXm$kNX1HG1WY>UhxifTADj)iDWPRZ7mbM0DVU5prV`fY z(hf}y6X+w29M=U}lG+(>lc`ep`}HU&=sH2d;`j&#?cF1^>;}DMyYIylbI*ptqCqs+ zg~SDgY>@}XBrF-rkrtlai;DTXE*m{N_4~Q!qp3C{Hzt9THEoz!Fq_Wq6m8EO@EX}> zmd2S4TR&tzbj}@@d}vX6w-97=8oAPp@}Ihb(hhr74*Ra?%RAmb7G1o8UG-j>Nz?AW zac~(1dY_hM(;xPc;21~)5M##i10aRdf@A>b8e}2z5z%(GeZ4DcX1&iXci(ls)S{o( zqG(Y` zr<<2FG_RePI7|$A&8w6D8Xua=WHwywE>+N1$mc;L*JloC> zQRB>2q-+14lcA||iqqDxKiBKo7+WCtY~rNFkti9Yz!bUpkN|hvlvTxBT$WZk%O|t= z;_#QH9a?Lo1B*f_UnrW~JBxYd@x;QO7uvf!g$3(_LZ4!s)Sp|Ej>hwfhp3`Ye8H`J zM)A`rMJqrMnOeOBuNE+Y`I0j_U5we;cpwX%|MA{3VrPV+#QgoAe{)MLHQS|L`;nhPxp=v z`U_2KcfJ5X1ot6Oz(n!o&0x?%$q>Yippr#Q>D8^ioxzxM($v+~*ErZIlr}ovLq?m!5`XLS7rQA!L+O$^~q^nC(^(oIr?Ro0DG<3fyg$B3iN zwU9HGl1fhInoO80IXI5DKG9m*ifLrmu|#_Xr(K~C8TQi;5d5&kgN9)7^q?2^WoWyb z{n!2b^s(8XSiQyi5DC%^jS-RFLC_=oz*&Ymj|)Tg1==C$|G<^qyc)M(>e>kq1Dnlx zh#YM2qx%AGuh)1zN~Uye>(vPX^v-A0Eo*cQ9k*0yUGg6XJ46|kEB};=`dO4Q@pvt{ z5DaxUFJGEj_xHK?*@-Z{4YP5lr~ZL7DyStiED8bg=NUoEg=&0Nw%H|grQNRG?3-GC zEBH{;-F{l~%y|>;JcWi10X~-n{sQIS+aDql6!Q7RdskNFeaA2ejD@N4kBpHwE0jM4 z^FZ$)K=Cx9_NBpd*4hKt1q??Wo zK#Q1uCO{;mVw_?j*=5xn-D0x7M*8xT(p)~*FmbNI=DFp|q(uI%>W{D7A;n=dPA9@3 z9%0hh$;G1+Y{7EQqTZmC9`i96hd}?JWR~Y9B9-1)ly2jZ9+ROpV;3VZQML!QDohS4 zUw>eX&t^WKCV)~Ao>AmZVoukdszmO* zxGfCa-@Bqe*e3xv(rdwK$uvAX@idR-IS$UcRzNF`oOa{D*0I|O*wD(C=q@;lJ2UY3 z1}xl7UKwKE-hBmyVmW8b1?p1a;gB6ZfGZXe4z<480^==e*vC~LArDi4Tx}*qA%F;>DfSski<8my*vIX< zfQ1NMZCRbm+v&4K(-0!x|iI6MsXU&k?Z-X#Zcn`Iok~YHJ=?zWIEPgme&7vvSm#V61!osqudBy|FswsTQq-N{$ zP*=0<5rB`!tB=6jssq^}+hGI4y{a#F3G@M#QlUVtobi~p%x>N|Rm*i6maQ|myX$RD z9zMYQs-(?ePMCTOYI_mOZ%-yQ|d05LvFZ~)*O-Dt6}BU*Jl z$G$3l&Xar{BujZX1u4zGo)Y}du^J2}v&6bntIuIZW7>>*hD*CfcA!>o>w=70Q{~cs zQe>WNTb8{$c>!vOY?rF;1AgX_cKDKPc9F!?R^R{6c%sH!Q63)Fu2Ou$h zTLcJogs?EwRNt*s3J+{!+M29q#1#$dV&d#h1j{+q>tG>Iu`;lZFN{tvg~MnM`=L~s zsD#wUy*AmMHWHfH?g1DK8g18}J(vToyMr^z zMO3qdf|3ye6z|Qs+C#Fm8(i^|*NQ9R@XOQx3fnH1gqK3zvZIRu86`kDhyx3X>vD(c>BJYTaX$uR99i0v<9!Io;jMnPXsxh0 z`@*jhQQNyN4luDQARreI6U!sA%p)ioi0lok@EsQFadXX4%}vNRxh#oIsxoW00t*fw%ZFPc!9d#{jo8&GMqV5RZF-;Fx4pck^9Hx$!f$+W4mHg2pKcpXw)yNLYuKh7?+jtA)5i#I1LhYM7?-EJUu&9 zn%eXw5)~9*k}<+kq|9E(0*PwPnr|SO0rEl5-^OPC)C!SMas;9?01VnFb4sDm{Iqk} zk6^AJ`7*)ey61bQXr(9`KspTjwDa^Zz3ePzMAkc6q^f-`Vc)gjt`(Xy*~+&OdGh$l zd|6z}+}d|;K$P?T?kU%?2X}J>kDv@u>GNLuoyf5OH+sb#`Bb>*X>mFyt?+(RAJny{ zS2wBad3>aY+WoM+&AO~P^t@x6o^fSM>~2CxN>WsSryRu`)^#jn=+CP0ipPnDwJ`iQ zDnki1BY?H+%g$Iv{n1%n1)f_Y<|-)I)wOszXH`)JqSFX`wril7{VZ73;Y_le&qnIs zOX&P5{7?$Ix<`hc?u@HXXnVRc28jkC^JlGh+vEHWZm(Kw@?U)s(F?4ofNRuCn+q@n z)hs5P5ddQOqRUElfDqT1sQ`A^PZ8RGN)zI!mI=5o0xrl=6)E$TB%UTR%##tQB5zV7CeDrA}SZ&-kJV&|M7>RJUerb*gl>*`cw z2^nxHbm$sKa7ao)NY--ZxbZn>*lXBt*mFo5+4_5eYI`ZP z3ok=0PK}>%-g{qczCJEp?~GxAzSnyL9ll6@>3&Ck}lI}fXne1s1o z=yENiW^$1E@%rVZpYYp}+(tSj#wo8RRFjgAF>S)^^pk0j=13y$DK(0UVF`wT?g)Cs6 zVAvuNS@Zy137Lg>6nl?MSy+r;M^1|#Bb?Qpu%de6L7cs5F#C0~Q2(=VH1LE&>IL8cAJzsmm~ulOdorx!Dz2n7OK!V>8~XgtOKBil zj?%U=$e)XVWXv{;FM8t9#5Axdpy>M$>?N|rPQTeNICMT#0~!m$qxAF_n0yTACf^fP zyEMdji68C**KZ1$mnxyrI`DH2%%(U-jIXT5-j=!p5$Qkc{SfN&}u+TdKa_JBK3>X$bt`4;k)DoRMFr}XT!SIr0&5#$lw zl0y6XqUCON3P|9m8J)kCeZj4a0}5Y=z}q1#PY^%8f)&@w2<*%zcZO)Jd-aczNA`+w zadNS%M_{rZZ+dReKl*(3RYXM3X;}5ayX){dq^ggrBA^=T4dQFYmQ-AB#oOImcmPc! zajW)f=yK2PZ!MR(o`t^Vt1N)BBO8d)XcBVAI5Hn;x4~I4{3j*PC90EIBZXdcsZ9_$ z2x(KSD@|lwmnKeTPL5iW!|f;xZC(1?EMO}WN@lh7YNvKIF$nz=KE-6Z1>~us+anPf zexnQe9j39&aRS)bLo-`C#U?}zM&kT3*p;>CXVSldX|?8{rJ~a55S!)hak4Jvl zFL*quz{Yii`4xyBVjok8FMul2zQx8ZAYEy+7&!K4I+JqsPlE+t&qYXve||ZjvcD=) zxu<=vE(bG#0uB(t2#ASK6u`@sGmIfqK|JT+9oMY=GYW)**T#0*z+G4Yu-#ZAq3eEj zuF+ZOWcWl|o*1kqwp$0U6mG9%G)`&|D5ZMU%8$kYuH? z_8jk$XAK9=yiQ%^rzM}kN0EwSvt+gglVbDmF4AQWp9BDZKM+V13+m{6-SZ#ROri?f zHNs#EzUrsd&o}O^UOb5$(jG$mG6!DY(oE8jV;PC0czC8}hSkz8p<9&jfgaet`;IK@ z-PgeJdN3)S15gl^O1=bE3$>KlXd@0Ez^EJzwaZPW*1Pv@VH?R$37*y4#70()y?A~g zVfb_!=}_y5(OkQL?l-3jQP2M7V3OIzDQFdM@lJiGq%7gd$i_kfVHK59shY|4XF%R# zQ>16?w9Xp%Guy4#aUjhpuULw*k*l7tGvuq^RFj)?Oy5xbn@vx!h9iXf**{9C3WcbR zdUfhpKEyTQcUO^?EEE=~Vo9T%cu9@0N!Lux!KypTqdGkuAA087cp$FNSX4HUqjY9E9NS#Q0$#Q2(a!bpu1nC+LZ z2Ez=_(FZoe2i&@{n(k4ov9KiM`=A-8s9h#gbw}0{rbsl|h23C_!8@^q#5yn)5}+GK zHYS3RB;V~Zhw_lR>WR|pRiytRf%vj6_g|$&bGs3YK!i}p9!baf6ET5VcNC{dIDCX6 zFBz~`K1)X(X8$W*<8P4aE5FJ8a*n z=NZ35-t^g}@8oYMY`;7!69O=#!xlygL}2-wwGd-W)x1tP-g^KxJVyVH8H&L=vB?@Q zB(Tu5!M4`-Dmd4J`V9irJL_iq*B>uWfV$MAXl`EMX?kIK5kLPfb-ws^H$QPSlKtP% z&GB~PUJnEIO=pR<$U5ub*iRxddx9JCNDtyu10usKDd0uiljjR;%xxPWdiW%|iYQxv zd#qL5<#r=n444WCzswS{p34RoeMoX)y&YP*!=;x7-?C-{K8v!*0t@%%r#e#UAA9IK z0*)b8x=@8emFa=*Cn-L<5{UgD6yt`TbhXO!8TQ-o;`YxhbO>>%<>N1us33VH|@)79&%6fV>KY8FXXfm)S0&VMg9)=NC}UiCc0 zcyHv2EK{;AhyWB8Jqz*aC5*4e%QZ^iHST+h4ylq!w)ANIFcjf?bboAke9E^FdT+bd zSAY#*1p0)6@y3VK0`t&S+>M`~npH(9@3KZ39I1|MxjJq0+zgmT&a;{Pto9_oSl5cx zy(tF$ZbJw3U+SRW%P?ZMnp`qlQ+WcVCbH?dW`SAEmT$Ci?0vAm0cI5C@XGL^491^# zsV^tQ4@N#@O2hH}yT5ja?(>Xx>V+QUk~~3xRRo-+EjN9Ro-9nNy!>3WKI@uhu*D3L z+`>XzY>`K_9+o#dL)SXKL~8%^^`mpe;!D*U zdTi`O;O19FP*2E$AP%`hh@125?N=>*fS$Jpe>_0 z{1B2X{aOq@&ioDf(+$U`cMLxV@)L!#+vKZT+~2`dtHcg#wdHhOPj=H%9vv^d?8j9= zU7#ilgm-Fa@%VN)TL9h+JinpX;|6P)LJ}af>n{{FWt0-7f2RD<4l4RvR+!f2yj zdwVg1&$z+8t)LiG-mK!a%arzySmb4! z-_TIjUjIsWCzZk%jzdM}Y`xYdrS6F!Q&(%QZbFAgEnau}jIpf}IEu;h(F@!#_KMRZ z=K99FXA$R^8B8h79kBBd#y%q`*4z>@>#DQf>cd{SR?$me2&Bd@pU9q47zi$M^ZOH6(u4z`SfXB^8g%d@WJ z6uA!UrBnpJ4I##coPS&ZEf`W7@8Kc?@n;`2vKv!fmBn06Ntdx4u2Cdrp zQMm$eUA%raAckf#F@f_Po)GN7P+!^rGqF<;Cv#7bBH&4E3`Q1Jl!#ZTK}H20IQb;G z;bL~k_X6M24*w3tlp+Y1CbPe3nIn?1kl-DG^ELsV2l$mA0Vo*@(}v)k+`A;`*)CKv zvhUB25ExpH(K4~FuU}9SQR3Nb+!9OA6&;n8dz6XjNNGFP56UkEqD3uAbGZ~JxA_57 z)14`R=fKgHPS|7d$%or&OB}94fE^{j%_$082qogPN>Nf6_%koY1<@Yf0Y6f`(tqY5 zyK|h|9G6ydi5ar@K-CHd1z4k|xS8c-$<311gqi7^?&R5B;4HVn2S9`+&(_~Wbkd3V z-&O!o1Iwyft`kS-Ka25mFA>+~T6N}RwsjhDYQ{x6m{hnc7DWb$*rQP8U=GLA8?WHW z@bAWz@yI`>VC~GP^ejKW>9&H6^3k~!_~%tEx>eD9$>R%!)n7Hx(v;j0Vm%;0kco_q zph#^MwjrD{5yV~aHY5)N;Og44LBwa+ln)p>x!9gx6YI_Lx>DH4bCnh{mCEVyoL2=% zS#(`vM9Cd^``|tcY#g=4>Egon>~G_1KBy<`yAEQRXBs!I#DuIwL1!3~jBqEw zJO$=aKzk*%<-TFTWv_zRgWJ7+>j1PyzREjIW07b)=wPI}x{q*O+2x=gADVu;lsyDr zS4DD##|&b8FolsXmGt%G#WJ8;)v{53$j0dt-gj5eUsr#AbW7e1Z9hG~W_P0vfA@s` zE^Q5f=5{;r3;4m6g^LA=VE?tgqdn|UR9^tsjat6jPR@JKr8 z3%wq1yRI`Fhvo46O<~#}uVb3WoKvdl391_k(Bu|_brcJecSo2(FUSrGI98g+DzQJ~RNz|X+#zr&KH9{2NT}iB@se-}DN#_I-u|>Tmh6t( z>je%>VLpXRcYDZxOo#opo8qqMLX0x{{8i_nqsPLmSzk9$8;s2xztV&oi1t{g1}Wpv zc(mb&5xxYzu1HF6&kjumo&ZCj1UAC>l7*l^SnwGjiDeiiC=%;qT0;BTQE$!`PapxO zyDEQ)?#q2aUK5qKi_L795Q|}W^mW`@p}O;uY*PUYXMjGRax^$0hT^f2(0>xbMN<^5 z;$^;;GNH1N!c5r(A%f^-nkO>~pD-Q!!QuDzrq>XdH3DXt2ZqWN4la+>Y@-Fr;b`7P zkV$KaDeg_(C-ACSMFH0-ABPdg*+~cG#Aj}uoPY&btq$DIZBzQ$`gdn~b!l5(KN8Nm zjE~i~69VduO(29)GXOOzXykGdjyY2>rhvE)C`3-{gh@jZA6z!?Z=BfvZcnOa#OUHb zkawfPDRfS(0YS<{8H-*So#eMO{-$m2O1kw?Y9zy}J<3Y%8q{u5tfe&Z%#quH^Qo%b z)+XqNir5m&yWyOsRgMYF>C^Hg;;&|_A;Cyeh9StTJu4!#^gnZB?k#*JtRtcTUEQW#%Yn6^EYMn*TR8Wky^BRlsWwq8imzB5jE10&vZe0bC~AR zN9qpC7{5jc7A(d-R}y-&Spj6&vGYP)9$hy%DRJoSNL_dNTcCZAxa`ZF$I)@NPAVnD z`h=4&?f|2W3=*?HklaSj5AbYVtL&_GJ7PK!B<+f*3ib8_NN_L0?K_Sf5K>osa%+5p zQH{Iu__0b??o(@>wMzK;G{uAXNaIhJHdO|-xpA0t+~XbBB=4Up(U4{8 z50pHJS=Bthb)WpoA{)|Sagx-C7@Zc$6pfj@f&!T$u#rR09PC+KJN7M~lp(KKK@F(MB^P^7ftq2A90WOk&=$PgHg5^Dt^G;oisKJ3GcZnFv zwu;SjJs26OicLlpM$%*oiHt0c6(gDtUdzl zNmY+*(@h(5`|=m)9`;8&aWUB~b+%CHru(tbDsa19L-CM*F}T$3BG%pr$XWo}KG>OY z+XR%pm7<4I|6l`GS+U=#DgLeIldjBBEKo#6)wp9VJHN4}W`UZa#LOg-+1VSs{(z*;1KRDd3CgDe{@n)|~O zXTwH0rj!^RsxTRawQCFnC;(fLBIc&)GP1lj(#76kKLyq`Q0Eysx?F$D_54A(0gWKRSQH-yC_wRZbs?7 zt(7<{*1%05Z&R}G9?@_rP4#hhj^H06zLbOo?NXI4x_oHgxWL%a&<2GiT}%&iRb|p% z#!M+6u9<;#?37|Bc_mM)8{uSeE3{48tJ_&)*(Yp}47u5BZE?e;PGH2Rp+OmxO_rIt z(MyBepjA`@c>TLqx3%20AQU8hN0GhBtdw53aVDj06mqw5qsyT)&(~i2t7K{Z;?OhM z)3wa?O74bzW{dr+3>LBRU?9-)o?>sQi9^U#+pqw#uy)?ic6eakj2+C|QGSksyD57? zdY8|u8g&zm2HF}5Oj&Qe;7b=h(xlwf$s*LI&v)doIR0YXyI}+CKKCTI|`tPnKQ9D(y>jm#3e1=I3hIVcCbm}&K>6S6x#^4 z$%^*JBgbJns_ky1Y^jyD^^=AXsa7&j~qMzx9m)=k` zGG@*tKPlsK0|@^+*c)Z*RyT^np(V9$7k%n1jY{PkKd&rQ(gTlEAVOb4a8}hbHO{1- zy?6ue%B?UZiiMrjI{JK7y>gwj;va!ztDL}DN(J(D{@6HGrFI7owWfltVpp4O=mrl1 zdk@N9xT6cB0y)8MMUap)D7%FFlm(kTBMZhw2#pp3rj+m}YGMpu=~{^>XUf7qVGa8= zQ?~{W=+s!ERq!&q#C8pTdbm_&WMWcC9CGh1BZstFh+-kbNbQ|K8sY}S@#nq2lx~3G zHm!d4JElgC%$AT4TUlgBZ=A5rxl{mY*E-NZG}L04)W`%T$ZScW9oVn5Ap0mDAl#)c zm)^%j)U&n9n#_$gh+3}?Q1S^XaBlDr@8;04!3GEO+|i?;Ld4;Ris$HVM;@9(wYWBf zpIds{GVwB?pFv~=(zGW~CyuE?oo4_&=f^KyJKQG)X^+N{bFjfh8`X%oT1cH~si3Y9 z#WS2Do*t7J-3HhZv8@+ZcBP6piy?zlw#FiY>K zqjb31JiyEz;$9zk^Zch1E39(IA5H+14-}e6-%;}p*fT4W+Z1h+Y+sw8|HS%8+q(n; zr)k4LX*0L#P{ykOR}$p?5r)x}-#oepW#Uq^R+t$;Grnw9gel;q(wER-H;sw~^?hY{ zzGi>7+PGz=njyOV>eQxHpbPX3F>1o(hp;kCGHzTGRuF`SsOcSsN-OD#pmh)7avF(7 zzVLnWlVZ;#o=23-a3IMVy^RkNH!r^(`M$&rn_80a{XI&LibK&vI?i|_kyED5#(13D z^exM_)>TLFzF^$BaVU|n)3t1PI@DsV(NgBEshtf^tbxuw}n;lh`<#2fe;g-7$41bmt43{j4J%%PrWxWcoN-i8B(d~t<#a3u0 z4G4rGZ7=G7Dt|G1))w{K7PfPua4hL{~1P_cNG?oP2#AkQ^J z3fGm0!!RV}eWR7S0aofxMAGpRHAX!gfVy8M|o=(R>w z`T6sPd48+fB^Pjya+<}6#g1yjMh@f7Hl?8_h&|KWJw9hqz>`N-kE-*5eMQVFeO%|{ zwKcG{eH}(Z$JjJe5oPArV@;YP^w)1*e3lTc&i5Flh&e~+69?^Pg%v&ev5U%N4RJsB zSD>>UV>DsWQg#raiqQds;QGHC7VjT=_EWJaS!xTX4&vrFFWgN&LBh||Yha;)y38qQ ztEgE%Q#B>N^vyy_MXDvAP+isHnsv0rdeWjNKElu)^9q9nV=b$ewa?D zPiHV*YFzp*Hl1(TIfzTg+eikThKzq|S?Zd}GxWzcH;=Bh7KTtJgkhANb)BlAk1Bavz#~{uB*7({N*a=#FPS2vkk0B@e__+GKNekT$FrCkM2XG- zcu+}jLn>RZlA1CS-*U5fx?%HKlV_WU$5vX3$|q>ZdrmJN`Cdb*ymVVF z_z>m%JbWN3WzZzcs#Rq8HkcbF-95HxBjfOrI- zfzlv%aD$>erAL*ECk}yJONmrQV_HhL1zFGBV_eDF7HyLi5NM`627z9QA?>#v zyI`B$C_jucAT4HIYDC0tq4yUpIAT03)eljJc&I?c>i#2PE{nW6n8CC~7$QUJJ#3^D z!MQF4n|B>j13AGuurZuR%1s-L@ah*D1X7~t&SHX|z!k5S3JeSN5#GVvv^-K6Y^)3B z0O~`#z-H-n4nm4#?@>pFA`DDhFvBj=#WXb*?to#0e@91tWMbI;iu>^7lk)q^U?c^^ z$46rXzrd4mn3RjDlXDMXb8MJfS-QYq3Gn9lT47?lG1=Rlqm$H@tFI-t@Dkb=8)@zf zAm68_m<8^H)jb^FB$ktZpJ?aC*RS`#Sk;t{vMna^dmSKb$`Y}2+)S>m{E%e{jmFag z$vqQ*_ESuo%pHe5fA8)XI4NxbAcU`9`5%&LBH8q(yAJaNr>F5dXYsi+$MMJA<@3*0 z@v9mH{8iQ8xdU`YfWr6#$|#01%eV^Tpx<>3q3NSo)SAmg{I_ z6OBgEYsh$!k++;L0?%Rojlr#EGs6^2=f)E*ErD3P4WysJY~Pg#=cQ3q|6Jy}`1Go_=;PdFdX#EGA#t5>M2hZP#M*s1Ykk3*+FNX52ElfcfwxgPFx zvjnoA1zDCB$=3PjH+){?wx;iz@VIgMOlpDDFbAZmrI4!x zyi%ipnb|#iTZ!rTW4P-7n1FX-H3U5YIuyG*?Taqat~wbhup44DJ|i{Zbg*!}Nsx7) z8>ORA$TzMn0oi78f760JJdT@V=_nZLAC+yiZ%vac6Ph>)+-LOMVKjgr$s4V-LaQNfxp$pEiY*d`aE=?acWRr=tXq z-O`R50k{XhjFfQ^ff+-FHB&v2-(g?DlQL3SKVF)rVeTa+4~Z8*QYdB-FCxLRiY)i< zkD|i%I|BZ_wQtIcVEHTbaUJ1TJTXKfc}ch@gvWK3^Sh_R;oS&iH$15uNgLVd`M^s& z*_5u@acQ1r-m7h@m)j9V7i}zWo9GZc&SSDGqx;r?mVow``2i=B zC*wh9j_=&EDCpdv$L81udx4UQq0YX7$;IYNwX)ie;=Z{9llsOV@1M{==|k^?{t5pM zO&*vGIS@%0@L0PQY*LbWKijYHtg(S-(+M~Qi^Nr&k~Gbg$pYS0;31g)@a${G>#ofR zNOiKX6Aq4uOb$#aFD{LAMmh?ErBhd%F5YW`Ht;T~#*a!L#yq6lW~3XwP-J$q0}BwT z_XGm9kt0=B__i6gbQSk|gn3+^o6Vq^bwk=xwTPLQ!el=5}9UD2cD`u(P5Nr>(6q#a2~%MgcW>1*`gZ9bZWJemZ5 z_GXf#F%lVWtEtW;YYM4lW5I zS&98FOCw+E9#a$dE@Wp=EFX}63Vo3y;MbQwTZWPXa6sjdNuk>^7}~Vt56`}&OC$o< z^t0-KLunwX%P*ufPj=eaFRV|qPm?M0()cb-9N6aN_V@wlAqM3B+4D>8^ca(f*64Dv zYpr}5F>n*%fGijTvWxW=8JZG(0*hF$hsD_Wy=(4!u~~?Uq>CYLrQO3SqX`80PQRdv z+x7bx73ez-+zLbpm35EKAYA{7Q$KPZfz9!k> z;d+^>;*Nmjjn3sn4MiP!F@nzT4nLWhQ1QOdcZqR!9vE^vD*2CeU2ZPy22OpiTt-|Te{!S=06DO>)sQYt*7 zXlP@y&t-d-+5W)xbGgxuqE^QtXfedMdhM#*^)60S#w*pfOT(JsS6fssGymX@?Jljz z^z)da&e^@p*O!(ugGXrX^ce$s^=gV)9jsiC5bLF$#CW%gUU9l zozH%Rlb7p(+0lq2NUGT5E9Muo=bj!U*_@(9CNp?XYl$>wW8a6&Pt-f)CbI+l7;Qi7 zG1|0omK1hS448jNd?_XcPcdTCA9SahzthJ-Y%b&>r63n(<3B5YE!P#Nu^fe7<{lZH z3`|Zlr*#2cqkGkRXei;quLM^B)sU{$XAIJ{99RX`Cz$COSkxyK^vCcbx3GFlu!TNE z8H~8ngb?1}k5)am4eN={!~`r@110rFa*@9)VmRxEG*~*(5T!-YyMca4;h2!C%wRZ> zrG>^!orR&UiO!4m^aA72Ecog1Emz6l^>{e8*qqw}X$eG*$helD$eLRJFI>B9rUCgZ z(i*`9M+HPeX^gRV&MX{=^m-=deU>fz^^t%oGb&yezg~?9?x{`l^01*@i5cJ5s?WdN z;%Q{m?H#_W^RD`3!Le*gMO$f0UZAkOajCf?7E62@t>k6HMp!Rb_O_j7Al(t1lAl9x3dQ#;{D^fs-Jx?aJRLE|wWy=T`V; z?oZ=!EV;i-ke{JPG!@rdD{3iyhp8}y{w`Uod=vai{Xx(H+7yE34C?x3$#3m1FAsVm z^AIvENiLgI(kFA7oZXL(d_HRnDWxH`mhWAmlR)ZOtmGc+N>l3dgEZM}spWPoS zD|Ik!nQJ;g;24kJn~!k2JmvpL502oy7J*9=qwx1vd<)R>mG!G!Aon>MSAyeTCs(eo z`RPwBU(Fx^Lc1Ddh6rmbpP7l?b{h;vV4j?U+d#64f472v8!Ap8!!OOf9RZ3l*XA$y zI>HS{Ey zj>)e)_Ep@7@ruWs{1qLE!64D`%+D;=2Npfz`wuMEXJ$MaiNQpox!ko#8?x=EC=7eYB2q(-B%vl)cyX6^+SuoF>f{Ce^@+N;i1pBr1fi-JWoW`zD zZN_WF#-j)9bQ2C=)rW&RN#$!gX=0U5>^HXkH zHu3m1M%2VK{3|>Yy(cC5LPtWo!;O~YHJrMIpS537l)FJ0i$IGD$3s`2g@4c22uHf9 zri?YCb>LyLQ?#P*7CA=$=@38I>8Bn}ckrFC8Qwo7Um{Ueu6b+C`9UF}oJugdmRC+{ zPX>?xkawctD&#vhrgFa-(s=b~{ha`Ljx#ZYe{Y5?2R9K_0!Nj!S@eB{cbBH;$ zwd^gyh5#_3Lda{WF*g$0SE#-1J*hvrS+SXDKf#-RAxIC+*?;|q=msq{g(ap+z1~z=Qe>{yiD@=1y>4i$ltN6US`Ar(!SyP9FzvsB z?}g_+@IR=<>cELP6Bhf_|7i_UrOhU%>4@rUAPEYMpH0LOvApBqgl}(%*F@*-Ay+Q0 zR9K(xYRTUQgIs2{NaW_S+>onDhx@JaU(gjIp6ap?O{`Jv-yb8}KmzXHQAAR0CO#Pw zKVc_+(n!DO)DrRI%)GPA1v=?>pR_WT)=VDwkV3n|Vrs;clrL+z$Sl1~n)O>Y8gUej z*^WXUd5GEle`-cf_VH_J7&tCpF{tt9*O;4Cz~Udk_@9#r0mW4&TVWK5HCB#pejGV9 zGb0&?|1||AIyrTIWE;}^I0~1vL^rWiR?FVTkU#-%jM;fMs6_520!aA~t60j1EpK_1 ziWRFkx6DV zJmCOeF&$Ms3=GdV%?Hd0Z>r|KPEsRyGm;t+3WP);p(&S8b7@9s{Pv@+@#buJZ)ugu z66PE8^=LWJWHVZFHFN9ywX}l_*je9mZw6(M&4}8Er)orqScp{8#An}!1RRNDXAFuV z-m%G$9 z-cy*TSG@jyeva>5AaX<=9kImB6>$HMfuE|8k6#PE<^Fn&5gpH?kERJC3S_p)2+I(g z#-{o|1=`O#gUV=r)BBM++Q7dPqT?CX|5C5|ul&UAFS{VlQRGJ|0c`=SX44>O*R+{_ z?HDe=t_+BKy7Jewlp`Y!TwSPEjxYBarp*7l&(zUc;E;A;dEeT3Iu)QPj1R8@%~{&M zByTJq;4aM5c#ng@P~`X#^4(h7%)Q|M7ffovZEX_OEthz+GcGulj(&Z1oCf@qOjAv( zNwP*MqsNVkr|VWgj=gA|-PU78yVI3UNI&q+2qIE{Osf<^x_GJlUfPgdtZY#DTWUi3 z3MGP@jyFM9&2P8wIP)fQhJQqO|=cYb2B=>*~n4i`;4 z@V%aPc$so5_U=33cjs9n~8j(jGr4}GM#C0+0_ZQ(RUPKa@v9i&i1gFTMyG#62#|P~T#~Tmm+s@?I*79XW1D2$4aDTfh z^($?IvjjRUJ)76{1zKm;Tj$h*KkQ6?cZ@#V2DuCQwrzO*v3JQkKfr3|d;>{bkUiW+ z7Z5&P@`s(^Iki^E-2(kLwR2!RMe?zC>)VDQz^mN=_I4H3esmgm(UOl5da&(JF(u^4 zt7E&9ckYGN7JdApB!j(RcOdvD{3HdryX?!OJ7xC{7VZljpLZAmiO=%54>KMR!8kSa?gS`@$RQjA^*V5?9^8e{PJ&;wvk44mf!+~zO_|7JmS60XrG+V~K ze^&f+|JWd_`1vk5&7OWwtC%_euXjI>zErTX84MfKDvJC0(QPHm#$?)9v81It>sb5Q zyK0XY4ddqHpx>^n_C>qvsrArx->;+YuJ7rnHb|?gq=voJbr4Z_dbB+fZT{`|pNk;p zR>*6vRF2d&$v1m`$oawNfG|^(E0oxZWeDWNVI*Yw)PFwveGGD8<9!DGUwT^VPwDjc zEXWl|9X=o#D2_OtBYUw8^6rztDzdVje5YPyut=mvi;%Q%dgo%2NNR7ngjed|tVCYyQ#!$ho@Br@5PVnhORBRv1l95h%V+w<$->eACU1&H9Xn zep_BFk(2;{S7t@&B{e8Xx@~8%94x8XWjmWCpq)A3xrFU*qqa5CnwqK2-LbdLmJ^oI zDF;_W8=wapptdnpWO5~0=n*PL79bDgz`O!@qXax*^26lhpIq062o0S(4X9JNbWPH+}99888be09*{nMT&= z{TZu>={eEUNpGO{HUuWel=fLBj;=t3Z_vRrlX+3F2mmfG6$?8Xqn8(Lhm=b!U0RmO z-?U{aRDE`qGoc`9#`4q|vylGrq3X|yZ!U-&Zkvw}-MJ|2O27;d3q;{=YGh(@w2PB+Bq!0;J2+9b786nQFNdxRl`)iL@pz zPAwP53e8Fm=9tY49~< z%}#%{c$&R6*Jdl0^lE(0-e6AkJYO}fBV$by1=X5S=JW-e7H1sB2!HMSA;^uT%-TUg zIoO^W`=nY(O#Y*5Au>38$Jav6WM{3$;f8S{@<|qn$UH^Hr|CeGub{F9CFCwy*RXMz zBBPM~)_kS0hnvm7T$Cz|&jX8zjw5=hyJRirEWR6?n{oy!s6@Pj{kH#_6t#0%t0GXbjGw7 z+JIU%JtDuzE#w(NgAGSc{Bkt|_Y1|%+EXfd4OtmGJy)XQs zGv<58jX#|yUF%FSQ#YWc*@#5Y4EsGoa(xpOxPA2asbibiA$%A81)6SZ2sUq`>c=K~5ACw({`cFuxr z3W{;5AHrEsyTo5@3<*v8YeMhOnHBxl)+6Y+Ini^i=PYtjaJU|3Uzc6;Onw;|L}$DkAZ(MQq}j zaC~x!8TBOdSZoYeu-JC8U^_uS7hq!Fyu#M#Qz}Y^U)jWdDePgU{vNlqL%&bU$Lm6n zxc9*?7~O#V-&F5MK3XWtPI%DZ{$}<=I+q|+9%J++rcigpM8Afx!Dzi80aOvK+CxNP z<^ne0ePgxY9I>izn50m1aTk8&`F(gn|6ITYT)+h$5a0j@Jka8mRSn|}r0Q4`o*Jjw z9jDt8XZvg7i0!bN3W29irl~IkFpzzGTXf*-?>Zpxf9|OG-(jcabb~+MI|TP~FZXh< z4+!u85BNZf1*_0z!904qNY70UQHHWS7=4C8JzZbR6z~*F?wZAK$IYujl{hW47|{3P ztc0G{GI1=yE|p~EM}<`DOWy-A$qIdwwh;t5){EY+%w+lJNm24ce|TD7P3wTajWH@X zP20cL=3D9eiVht9>$GSNFiiH42J%+;IYXf=T63A z$Q9leLar<#lZ>Qaxv&!e0 z3E;2Kc0hE(wv=RGGzq$djbx=FEN{{V0Y5-wa3T_PYp}KS1S~f6nKB%Tq zz*`bf?W~n57Sy2Q88Or8d?g1t2yU7jo_y_d>Q07HPiyM-@lq@w6UI0@z#$uIJ+ohL zPr$S@css_Lq5Wz%j@6*>ADKwC#d8I{JMmmiyc^G}s(8@77z6s0Wv#XfKWctP6RQwc zI?e{R>>Z}=dw;}g#fnq3F1PYm$WeCAttOL3IeDo&Yc2=5|7%dH7mrAJ5OOi)RoQzr z2J}_RGKpOEZ@yKtd%VYQnjE$wAn%J(-)F^zthyN*GW4A7KDKNRsl|Oeiyp`{rQS#i zgZC$1I5LDM`BW`o0`LFcEETg&3yX{B&-hITgcS|p!Y&ma#F18-p&BN zVm+BX!|;+!%irsw#3yYWCJj|OpPVsD&nijub&L!k+s(9eGI6`uI&p0KT!N}gMmheW z@1i*l5P3dfqk3z~?A=JzI$rsB zK$J6HkZ`XTc#C_(g0MF%2z$eVus19Sd&7dD_dlJE`yuC5oAWV37JwQJP8xMTOn-pChxlL z8>aa?$|-dnB4}-SSpvpD5(}iH0R@dt>F;I=@`df;g2|cO*2Zx0*#ciJI1K!Offxid z=>OY*ceWcS0iTWdXOxrf#9$?VFek@>1f-Qb!;-In!4swVb zDu+osnjlQ}7XipS|3#3n6OLkB45`1P@XunmF1w7vS!eqq6TKqy8EQY@#Iyu_hn zodCh17RxOw1x2MOQQ&~nvOU39PGuW<(FLEfbdIvU@W=d#6Q6In5qW#k6EC=){A}{~ z{W`4TX^V}c9|uw8kA7{^zc!?<8f*xcPff{$;fCgx z;RB(cjTqKFgOHEqLnH1Pgl8z+aI$8vwf^MgnSY9ZcA z*VBSRwj~FSNt4?cHXr^4hgsGGG_*Cqq=-bI=r-Y-&`35K;)|9EC>Es$+ z%9>KWgrRn&PbE*qj}=A;;}W8#Ol|GC0%m5kMYev5kFGO--Z^tw3DApYmG?RelPgnJ*NuLo;(&EuR_ffxHEG^jXD z)k=*Ewe>5-DYdny3bZ|R$r@}O$4A=o==#T2LM~;2`Td$UtcL^`&2JAN?WheqK%a5BX0ZUP8 z?%Z}5ATwYCWOyA&8Nh5a10MWvWkyEa42ITbM(nndt!o7f7wZmWD6GWGD&q!<<0gCf zL9}2{T(-xBmh_A!wQgIzYNBgn2`r-Tg)q_KbzgZ7KIO_Vh|ieluwm>=TwR&zFwH>K z3{#l|66xHC^A)ND)Yxct6&EoZX-XsoVMD=m#O^Z!eEdoVJ~q}J`Gfcp6CHMqeJxjK zXL{fFM-#rBVI^b+lDn=RMOdEu*pjQDRPu68I%#RKA}zuvzOo?qnXWQ*v~_T~&WgZv zXfOFfvP}q+FCqn<+zvB4dJrWw=O1d*&nk z)<0NK#OXn!d&rPjlJlu6X z%-+JEz8%r#ufgzp?6<&W==@CIb`QOtVO!9%@W zDKqOz8^oOgo?TQQ&4`Y6-R^M!M;b;)4(x)vPp$yQqdWr{vOygEw_yFKdJP=?ic2of z+fI~8%!4kbF?bh3&G~cw@2i8L&>6^C0TAIiYkh!-&=%7FK+c%mt$itBPcwM|7thm` zg{a9C9FS0|RDOj!Itq}V9jeMY+mFm_ssVs-yxmPeYH+U!AlcDe&B~AWu06GHH%Y_2 zKpsxcOFujFdg;2&rYs2wj=<(-^Kd$p>vB~aQjk36!KJ%o2psI*=`DGIRbX)oD`AH5k>P2h;o+BZ}oL3^s~8< zLK?vaKzJTqo-PzflUdxn4k_sqASQLd0E)@tHCx#AMIKJKbzghpt|r2FzYlGm+9+#a z5KRNzqeH}`fYfIWSz%q9p{|PC+R(v}wBN)C7kZR6xKGUltPyI|moi2pHPhdf9^>I# zp3RoTl5Rm%a^S17vT6V-NROJ<0)K8VAtA44-?bp!UM^wqFsB5$qDsWmRo4LZ$sAW5 z$dT2?jx`sTbAZI-ls0v$X5gWoC~;UCJhVtJByvNJY=d1mYtsNUd%F__=p$VYp-%Z! zlJraSswpz55cEbTiAvmR<~h>AI+b+R#XQde=BsX%H+iipJr`EiOy^Gl785uG-8zow zkY>&6#{e_QRcVGE*AR6^M(NnuDd5oTC#|^gJ4uiJ>+k8mua1JMg(iD`EVKX;GP8Ct zA?RafI-(11HOEh#!z=)nJ*S{Jck(2Y>JB0H3CuQtLAE6vm|b!+?>O#DGo@4;wKnmp z8EQ{9+KUvXp6nr&$7H!p@(u%b-DDT*{dmHjX(%j^e{u4w6^_asqf8`tvV2shs8U%Bj-1>?Psftxy>ekEkL)Mggf7DYj>TtSPI(SjH+0%=oH8=@BB2SS@ip?=7?nB51ib6sDGV_NNHSx8$ZxBbo>R%Qjrj_zL07WHJ#7Q-Q?%2txtBd2MPP=C2HF z+PEbsV-I)N;jJ31>XOW^^)+iT)Ld>^ks3cssF}6-EaQbU zsh5jtRA%Q$8Udtrq(uP|#Itr3NAax+d2BD?5M7sv@G4!bYOkG+i%0j!C=@MYY_qP! zq=II(vom#&_FWTemW?sUnInpt?q#810%?UV`g{`mg@Rb@*Zwf5$$8fb>`l6A{BrJV z=07+f8S}NYEj?mUq3H0yKJyPR0Uh<0u| zb&>#49K0rbTa(UP(_9(XO)`I((~>vYzuF1}XX?^*8C1r80RWh=231OjQln*dpE2_2`FJesJ9*_Fy=-CB+X7%!?Y3O zA7~cx0CGhp$X6D|L=vKFHlOUViB@o|eYq;iBoVmb8H87=_Ua2c%xxR;CjXj3=+V{L zN8wc_rH#Lhaf9nta)&VE4D>L*bJ+jZs}x+Dfw?$@gK!DpOHq8GySu?pg*-dhXaj)`hGd<3{2;54c{)AYDrPBM)M!fUXG&9uM0b3(?>Kmcf`u#x9s z5`-^vDb2LZyQL0M$R~5v7qqyqb3`miLM3Et4 z66$_9tSA*ToSG)EYZoK%xa+l(!aKeMT`~XnC<)0NNN0JHxmKf`;b~G8K{XU&ZcF$K zOfmuV(GRSpEd=!}b3W(}sb@0Y7K|8>A|6zvPF`Hg1jW44l}-Hh_wwIY;3MM4D0~qV z!oni(%!pChEst~(2Mulj9{7+CAO&1Mz?~Rvb;MYw`aWhpSrr-7p#R2Wa79Y>zG_%@ zsQQAmGTJ=^pm)tc)6KEG=ZK?J*mQ{Xf7q4!+Ak{l3t6Q+Bt9y)F!!W^bC$QS*-gF$ z0rFRl1H|zw%q9_I&*yfGAZyxe8H~hI)kd303KV0(u7g;y?3T%8}M@`q$57l z9;D~W$CZG%06L_ivwnUq3)W+XI=AScIK*n$OW0)2ly{8;0yO}bv%yUOKoM{;>I#>& z%94h?)AkdtDcBu@vW#-=w#tY2D8SD6_xX0&^+$}((E*LSvlZ`K1c2Gwwxja8A{GXb>vG2}P zQnF4rQSdXRgKEN?$P8rRZGgvd|IGMs_qfWkWZk*lyvN7==CnOotz;!u zJEnHeXawK7W7ctMk%Wzh{tsj@2`Py~_`8ylaW@KGs){{Q%B@b$Q;)Rr2d>RI9Ysk? z`KQi>tzWxfJIA}Ujx>$gFDo`~4JsI)v>G34CE#0?`Qi`AhzBh~GP(xoJ16#`M*ZFs z=M|;zeh=ECSS&f&m9PBh22%nN{xvkV} zOs7dhX_oY67K|@xVP#}QX|8AiD3zbNWk~;nu>q3LsIVY1BeOlDg&h=M(N>i>+MrB} z0uZEo|vhlNX3Int{!Ho)k&6qGAkg7XZPwpCm6wC-`Rtb)CKfk5>8uabd3ZGr8`B0Ay-tQ z5q{KMK+9cT%2>>e&Jv1~YURIk{@>&&?9*-yK6F7e@KY+k%_xspQflBZxefL7a<&*5 zF(8*ZADNVjsV=EU&UI^3=lZAZ7U1r7`?!64xWAlF$Ndg0FqfKXy8tNw(TAe&2|5M@ zSiR+dDJFu)hCOR+kL(vfQ9HSq}(ih*1cu zPBzw|vQ`GV?@<^ah+;xY=$e;UNTMsFJOb4Tn4m5uf;SI-`fH3JP^>RWHTBNZ+AY-d zfDalZ-c#C;Q%R%gwY+4V)FoIAKMEUwfy-Tw?VQ+b>KZ_Gu4%uk*Y$eYf(ErzSSv|` zW|$lwmGlt`1{^Q%?#f)P+|@Eyi?`S`R_@Guo$AI@BLq~(_XHbW0TXX$%(Di2L+$|( z;-oj**SK$!jzwprhYnqLzK#BLa1PhEV%%A*mTum=~ZNQ$EpY zS@{vyD1X%ZT@qoLL{J`c?m#Pp{su>>ybNNX1~gU$Z4kv5EHeP|4CDbF0T+B9=bl!{ zwo3@X`4(r(YmoCa<~Z>006fEOks9kvv%`zZ$L^qsRz^~#W?1i-*7@WcXNf6fL~ch5 zku%HPH9qT_fD*(dGLU}3VSstO*^^n5BmlExbJ(nsIC3`3|+G8E3Vq&kwmXr3E-7yJZB zkbueAD$El;E5J*cQRWqT5vWUC4?Uw)HZs$S+lleqk}RE0DXZ`!02CN+l~81={p9sw z*^s7wd+9I@Ylgn5^I;Ze2R%76?n?c5zqQJ=F9KD}m`_gWRSQzbH~Fua!=I%<+1%xt z69x6UoUWhC4J{o^ahunmkK)-ipy*ymcZdMUZDQY3e%==;lqHjOY26JiSlfx;hZo?5 z36TcQxlTQXkpN?wZvCR5(&S?--C(UvL?PIyyG=Red-EAj;Z|N%fvmRXSs39eFx;f1 zd#olKrkfBUIFUz0+8m}{4^6zfk!0?n^cJNaH5Luk3l@+-a=?W@lRdrjL@8ed4%D8- z6bR@bN07WxwvQ)MIa2t7Ni|m<;eB^X6;YEck_%1XZy6 zlt@rvo=~XQ7*j~AG0ix>O9q&#yY;QZtwt&Sgs}yzT3>Yd9(^|Jt5Ui@Rpswhd)#VO ziz|@n+`2hklyHEgLhG_hoFgEyygHl4rJ6A{r3u=@nb={l| z?bt*P8%9c&p|oGv$NIXEu=HbFRh}>8W9IZB4N|Hd;fU$pzkOS;;%F4fzQCP{j*7Vw zS1WbZ_Nw{SR&q1daO=t5%zowfu(1@FH;JYkWxd$s7BtO;1(|Eo_xR@oY~K8eHmVzn z{1j}PXf((9!}IXPnBN2sEowXTWEg})hSp(Vtk?~ab0;HEl(J&Gpa}^m=Z)Kzs?8?b!`ZUHd!Vl6cVS9@K_`Sq{+lb z2?8%{f9}&Un=8Yi<$~Sd{Nn2y81^<&JB^$VJn~V$1Y{e+SvJnzIS4?a^oUi6m`RHq zvnWeCTQb_=P}3*Ap^W@CNi{L`2vG$aYt%GO2($lS%F}_8?g^PN<~c+>3%JG9DH{5; zg-I2xY?xMF&vk_)3Hd`PpwLc*N4jHOZbr><_rCpxlu2W~p34+(F|x+<45$e%#b2~V z$n2Baz(v-0WI0Y1h)l+*b^=4L_=W4iCX&vf#>Dspga=(dscW+elBj%yLltq3FEh^# zQXb`2)iSjKmZF;JwKE5%pp=Qr4Ho$Dy7xm`dKrx=v1AadYCnEs4WbY)hJV6ihYJ_Q zuG@!ZO5InQ2mL9&KT1UD3`#i&lP^LuR&&ipkr8N$!WJX1B~&&dy)H5P4%)L+-h}3J-4w_O~(uwVomo_8=g#}@h^tIwSjr4(6vK5RCyj3zAk?f zTRrKx;W>JD2~3%^t$WYWN1uG>pEzbEX^u(as7a(7Z%34KE4&e1*wIx&KLG)PpjN|G zgSEZ$bnD7y2H4Uuh0;s<+*A8nd$}2Hz3D zX@Zd3blo!6Q>%1T=_^llrw$sSLgiFlf+btuBqLIwgG0ug~? zKjq2BvP`#opn9&anNHTem<8df?T_0M!Ke5Xggi#}92+5r7N)=m#VdD(i^^!|z7k@W zBAf`Gmi89~1dgNBGbKR$GNb9>1g9?&;d5~h<6Co_=*a&JUC^5v82MAw6w=RN*Y{kz zI|9|f2s>t*0WzTAu&T9eGh4By(oxH%lsvD97eur7-)<87hZn^i#j7{1Eb{EN~{uK4lwl=n6)M7r!_7 zMhp86W-R43Be=_I9Sw>)#_1IPBn%X7-)c{T1fxF zbU^Q8+&gk?mwVb?#(RhY9{%zR_ob37E-wI=_qN8ThvR;=>>8s)K`{($7dy9`c52f$ zrLMSkq&ber=XE`nWwAwRB^JC6I6dInk>xlmrRpjxhoT2b7F_^f3{eU~s8T0X`iy2d zm^ImR=-w`*uV_kC@FY#GgMl^2DK`?dG>LRI`zF(<4Z?Sp{dBCYI=%1OF~c#>@zhb_ z_{TBZ(d3v|ZsTLer?v)5JF6*I5!#Y9g=$N+QZ$K^W1pxuKG#K^r)!S_7?9XpMa8(Y zfQO*s=^oq;=bRuM&hfm;ITR(i@qmZpGLZTdWIV?A0ep$&_7d|=0_8Q@P3|vgu0+1A zQ(kX8T>6^MUKA1TH5mC7imakeNA1qqbUi5IY$Ikha-9!HlBp(Dun-l|yQ7@~M1~bF zV-cINdp%54XW_6ShR4&=V76ruLwek;7`66crrB&MkV?3>+xDpg!9A)bg&(mO@S1WZ zJ)76CP%UIT$um#7D;4Sav4ON?+aTK!hcXT^^F*%HxkKBYPEC_#c{^%*c7Oi*^XcjI z_Vl1Yk`q?4a|?%p?0oZ^2ECF|NA+HPvp!9nOqQ}mXN$M^R)0eYnhZo*GQ0>nBcwUo zB+O_szt)#C$zj`!Q@BaOrQw;}@~7ala@mWgdW#4m>sj8g8+*Ixttn(eIZd>Dak97L zQ?=l}TnV9}=q67CeR_t-J)*51^+KHQK)gWLl(hR25Xt1iYcQGIwkn257AJ^%zde_W zrsu08C4rE$qLE1yT6ND-DFMojTsJmPL4vr}deU>bT7tFWgHzL`Ph+2{nPI&_P@;cg zbl20&Vc)y{a)tdG_3_qae?92}e1`>13hU`Q)SaSI0h~)s^dDnBtjqHaYcKr*6#?!N z5$z9N#!hAJ0(MON#|hVfXDNcX*@!RHI$j9 zukOB7o)$#CmOJoP&h`PT@uh_quj}D!?iw%i=3Y)yl|=?pB+@dNKRv@DPkXY@f4-bI zZKGt5qm(Z;YjMm2hgGknIE$duXQ$WO_V=0CLGGs>^V4v7LXdZH1njo6!gMBbjLDj&l)tDtWrdC8EOFkKEYQGwInXUn-F=DnDxeN@PWJAwAHir4UI~ohl zi7NawBva4q4uv0yFE79R;~w~$uYyrX(&cPmTVv0LW$nT4Q{uJldoVyV40co**UF=k z$5KN5lc^^C7Ne1X4wh=F{>xU)7-xRG?OxXO&Gu>`*=&~|(B1K%*<`)f!UQh)o%ctjkLb9+yNs&ryt!`B1i1Dt=E4`Hw1&VRS9|R=0 zTn~ikWKw5UV7_)|N%L{0v#CVZ6$gAH%gmf()b*%!7>%ZtNdM^EgH)=hZQKBaDZB69k_aQF$i`ktzjzS)$( zZ#ERoDK4IT02w+I{;g;PpMnVQAUw?D%V;6H-^^(Hx^(p>YHaWKC@$1-jBpMyMHC=afyP1TWvZ{`5 z){Jg|e){dqHu|_-(>R>^CG3;ZclNQ)LKKQTL3e&rk!Y?V#(ca^IiJC<01(hIev|r( z;klv2{MPSvFysP;WA@x!$^9I{p)H8Xd7;kv|LLDUfB)4zA9r__-Ymbs$AEny*m{LN z4X4jz*XcOiY17zD`UZ;O*I=l5Aql1D*S@A%-@oiux(GZTw*EHEkQb3r#XQ;Ah8-H0 z=8rwSej}PEr>3@$LnUcau*25qtw5E@5zp+b6_y{p)xCl&P}}k%0WphG2(Z~^#je~W zwz?IGjn$^i=ZY@Swr_|wx^wAz9YyPdjqZ2b4aU{&TMD=q+J}}+6Eid-O-=ToE_=I8 z%_S7GQ?+uz@x8>(EP9x%23JDm0Y{q{{3`7P6h_(bAzv_p00ER5Ev2y-Az~DQ({W%1 z7pGC;h9!`4(0nD!9bKI=C5b8VPLwdPW)pj)D#!pdr$P-ub)D^u{> z?uDJ252G=j>lHFnunJv68)68zl5AEun`G4!J;GNWO|dW$xNzAgyLJR)mLMO0=50N( zl5`aviDzoPz>t6v|LIdqD|p9?Oa-0Q49k(G#surmPS1Gs&n|YrCtk>hl9})2CVWv# zO&g=?cNCu*KA;9ZvY>J~c@7ReEGJ`mVmcT;(Q;kFV?ETPJjkFyS+2M;~E zfS)vEkP;>{FC}o2{;P@6T!ILe<57@?l~Nu4{ax zlanmN6MIXVyH-J^&R`!gm#(Ri9K{8;h=;bUlvoNZ7Wt|?gk{MMe{ApoK-?-;@!++% z-YDT7S6~b>#lOb_gS15yF(9P#I+YVH3&@;jqQqa98XQb|C;1+JlqRW7AEC{%O1n_E zZ^TSWU5OGCo13QI1DiQ@&7Rdh9Z5Ucw;IOV*6YA|l<{#9NTej~hcjl{=YW$==`+Qs z-W(|zQRzan=?5Xx-vI#q=IOa6Ev6dpwmzHeHA8#qL$hySxaL%i6Aoqrj}j*TuU3lgd%S>l583+5SPJ_fTsN@a()+HL`If*`CARyoaf9-r{kHx8YuMJZ zc>Ks9ec5E7c_8KvGO^DNbvALyq3rPNFs6<4Wah!Ht6jL`&ClS46-&AH?EXV*(V$Qy zL>y^@`yoDrIsz&95YV_u`ZdTBG z`jid@B$+Z1dAM+qf^&`bj4EEVu@c1q@c~_n>RYU{!66Y#1qyWsIDS4StT{Z`kEX+A z=1B>F{%+ITHzWu8Gmh#@&85qZ_l9Tp46I(ws;u+3<7p13FINH>uH9!Z>i^vFx$|?& z=dRB+&)kW~-^;+~QHOym2AE+)W&%jeDhLPwi_DswEEtFOp#dXKOZ-aR%5{QG7&?V8 z%XJ!DBP6{-xnzPajg{{h-H5S0s&VqmUgx6R3z*|!u|LzoOLkZQ;0i!Tn3}C)c$Dgd z8P4ex_OaJ#Sj0op1BWCNRB5byDcuNZ=MV=Eb*^@^_WO8D*=Kxbl~(v+2$`INT{=Ie z0lOV+_6K2jhr;L++HQ$<7)>^MldgRNEa^^ovpk^jBRu^P*38zK#O>&)1T$RRIzk9lJKjkhQJRdmy+hEB=C_XV`a}yki~vglP>x}>o@F2))A^es z#{}jVBzlZ%KbY@sJ2mVq%x&F|&JMZU|CH1rPMh=4S-}2bSvxZ!P8|niD&55h-(DdN zBFu;<|6`tD79a|NFD!-;WzaObfD!xkGv zx(iPH)O>aqW}X>pBG97|5{&2t_Z;XO9!iC?(1s69J7n2i$%g8Zn|gdEaB*rGexhn6 zcpkC=4J6}nm3!5pZwg)c_V1N0F=fG@TGA^2Db zoFe(*ny<^yB!S}X{g`udL%{(b#7Yef(cy3ykmQa}VZw1*J#^EHMxkmC6!G9m$;%_& zsyy_}V^2KQ%*QLwy-;kcE>gTvaQ~1PKu= zRJbsgs6~npC0d&fSDwVMjAc7+|Cc22AUFe#D8}<~kys*?$rVaM)o*?zMKi2gqt#hj zS=-p!*{5^DcXV=gaqq#SC(mBIdh2UPY7PJdfgw;B9DzikE9qU9VR3i@kwm6Y>lgWV zmQQCeS!@oM#}^1iVu@5HS148Lu2ReJ%53PWr968~W{cHkcQ{?$+&w(KM2itCPP_z( zlI(ZDL0S(=lM_87(Q}g9J??~))YP-^yyTBe=V;|CP^d_;5~a$VckOCs-WKCnT3Oq4 zplGmT6WZB3I6BD{N|lzjj;@}*fuWJHiK&^ng{76Xjjf%%14T0|AaQhZc5!uc_we-c z_VM+jGng#mC76r(SV)VxU5ddROH9}*V_`-Z7c<7-7y?6KXezBr=8iFYt3?WwQSj{<%E9 zKqwMRq(=uSl=MIRk5!||Y_Zzx4yUV|yN72nEzrW!O}V+d7#E3Zk2XLZ9PJ82pfETB zi9%zrI6Q$!B2%ce{$>m&i_PKk_yVCwERo7$nk$qlwMMJc8;mBVX66=_RvBH}*k&>P z8reIPk~nfah1#Q&T%lBHY3u0f>36wbLnC7oQ!{f5ODk&|TRVFPimuWv@*DC}*Fb1^ z2r`L%NaOPORDWbfVu_S$L9PQ6&`hV|#7mGU49u+dSXhWqVG;_b!ofqd1K8gcA(co` zqQ!`nS{iUrHYFtXN}R(4##cTG4A~nOU~vcyAYepEof-zgT-qvBrj}6*$YJz+hMja<4he#xqxYGy--U&pz zp#x#;8a@|o^lZ8JtKgCn?HzJKbrz9yBImt>NM0`5AToE$*aFcmOdcB$u3aF1v(Z46 ztAas+;sd4*R2nL)h%k$X^@Qd_rgv-(b04>IpWqjgdbg=dv(dyPHwBXd!zawlMpFf5 z7p_m+&0t;k4N-};`H-%pdj;v(n$obcCN{_F40*E(ZqhZmwsddeeT25-lKbq&h| zr?O|%%xltIu`3hws(ncsahAf#cSHOA&A-pNLAx440*E>Dgu}{^-Ipk)YZ}gCW`-%19i8REl)vkoUGASB7CL)$ z_FkRV`~mam^pbBk%3zee@`qgi`bMwzS4mTbeaqE zDvuXuzC6ma$;&&}PWk_Q;a@(?rSt48pEN4Pb@OQu!z^}AfCw9eGA>N1EIT?AAi@Tr zj0;mL%Z|3dl$3JH+ zr!}m#)}5~KUT+x}X5=-(6)E%E_iz4vzJ4hO{^*l~g7YSx8bk)6j0+i^4iI63P{x0S zoa^ELmZo0VqqmNlpFj#j*T0y0^kCH%7x5}iIM0Hms%f807Ry9LgsD2Ki^!o#W3DF= z>uamj7+qqBK8}+sU#vm>36kcPid^(2uFy#@tD9VMRnat*F&>dy85b9G1)=pT3+`Gq z9&52tZ_d_H?gQ%pRrZR&_IAxQu8ZSZ;i*0jF;TDAUNbsN63Qa^UhRWH+?CQxJ1TFB z%|7v@9Or}{d_@EM{f1D>i}lbJltX|B`#7YVy~L=(*KlLV%pk1e-2|awQ^6ZN@4mmH zHO-iMB|ZIeic>6y*3Blpia&)f=5)EGjE~iMb##Bd^cuY+fXE{1U(pKA=DAXfH5A)% z!dJ;{SK|(`lsUtSZ%pMoi8$;VWTP{bP((i>l?VZOg#ZBooDx811P~y=X9P$}009AX zrf9jD^COdf_2RXi0!_dCxzee>OIjB3$Lz^et>{9B`ClG6Lk zmd#4C(281BE0rhT+P$2*>d>~%H@{p>;&ozex=OBa4KVmNM>nKOI+Y|cxCR*PyANi` zEqry#M>fG*BW6`=-P4YFOK2GmhSU;ULd&==eij&IUuzTE44KbE`@)jHsCx2RN|55_ zdkE?k6~B~%arO7U6O0EWSDSv|R_qT12ZVWgWv?L<_N?}%XJ7rJPUT_cP9+3Z01O_tcG_17yrd@SiWUXh=|jKI-FQ2Dy~D| diff --git a/frontend/img/404.json b/frontend/img/404.json old mode 100755 new mode 100644 diff --git a/frontend/img/btc.svg b/frontend/img/btc.svg new file mode 100644 index 0000000..6dc9d58 --- /dev/null +++ b/frontend/img/btc.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/frontend/img/xmr.svg b/frontend/img/xmr.svg new file mode 100644 index 0000000..ae15da0 --- /dev/null +++ b/frontend/img/xmr.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/frontend/index_web.html b/frontend/index.android.html old mode 100755 new mode 100644 similarity index 55% rename from frontend/index_web.html rename to frontend/index.android.html index ca25068..5af27c2 --- a/frontend/index_web.html +++ b/frontend/index.android.html @@ -3,12 +3,7 @@ - + Ubiquity @@ -16,7 +11,7 @@ - + \ No newline at end of file diff --git a/frontend/index.desktop.html b/frontend/index.desktop.html new file mode 100644 index 0000000..57348e3 --- /dev/null +++ b/frontend/index.desktop.html @@ -0,0 +1,17 @@ + + + + + + + Ubiquity + + + + + + + + + + \ No newline at end of file diff --git a/frontend/index_desktop.html b/frontend/index.web.html old mode 100755 new mode 100644 similarity index 65% rename from frontend/index_desktop.html rename to frontend/index.web.html index 5383e51..baff859 --- a/frontend/index_desktop.html +++ b/frontend/index.web.html @@ -5,10 +5,8 @@ + content="default-src blob: data: filesystem: ws: wss: http: https: tauri: 'wasm-unsafe-eval' 'self'; script-src blob: data: filesystem: ws: wss: http: https: tauri: 'wasm-unsafe-eval' 'self'" /> + Ubiquity @@ -16,7 +14,7 @@ - + \ No newline at end of file diff --git a/frontend/package.json b/frontend/package.json old mode 100755 new mode 100644 index d621836..4fbb494 --- a/frontend/package.json +++ b/frontend/package.json @@ -6,6 +6,11 @@ "devDependencies": { "@tailwindcss/typography": "^0.5.9", "daisyui": "^2.50.0", + "internal-ip": "^7.0.0", "tailwindcss": "^3.2.4" + }, + "dependencies": { + "@tauri-apps/api": "^2.0.0-alpha.4", + "@tauri-apps/cli": "^2.0.0-alpha.9" } } \ No newline at end of file diff --git a/frontend/src/components/btn.rs b/frontend/src/components/btn.rs new file mode 100644 index 0000000..66dc81d --- /dev/null +++ b/frontend/src/components/btn.rs @@ -0,0 +1,117 @@ +use yew::prelude::*; + +#[derive(Debug, PartialEq, Properties)] +pub struct BtnProps { + pub onclick: Callback, + pub size: BtnSize, + pub style: BtnStyle, + pub outline: bool, + pub children: Children +} + +#[derive(Debug, PartialEq)] +pub enum BtnSize { + VerySmall, + Small, + Normal, + Large +} + +#[derive(Debug, PartialEq)] +pub enum BtnShape { + Normal, + Wide, + Block, + Circle +} + +#[derive(Debug, PartialEq)] +pub enum BtnWidth { + Normal, + Wide, + Full +} + +#[derive(Debug, PartialEq)] +pub enum BtnStyle { + Ghost, + Normal, + Neutral, + Primary, + Secondary, + Accent, + Info, + Success, + Error, +} + + + +#[derive(Debug, PartialEq)] +pub enum Color { + Base100, + Base200, + Base300, + Ghost, + Normal, + Neutral, + NeutralFocus, + NeutralContent, + Primary, + PrimaryFocus, + PrimaryContent, + Secondary, + SecondaryFocus, + SecondaryContent, + Accent, + AccentFocus, + AccentContent, + Info, + InfoFocus, + InfoContent, + Success, + SuccessFocus, + SuccessContent, + Error, + ErrorFocus, + ErrorContent, +} + +#[function_component(Btn)] +pub fn btn(props: &BtnProps) -> Html { + // let btn_size = match props.size { + // BtnSize::VerySmall => "btn-xs", + // BtnSize::Small => "btn-sm", + // BtnSize::Normal => "", + // BtnSize::Large => "btn-lg", + // }; + + let btn_style = match props.style { + BtnStyle::Normal => "", + BtnStyle::Neutral => "btn-neutral", + BtnStyle::Primary => "btn-primary-content", + BtnStyle::Secondary => "btn-secondary", + BtnStyle::Accent => "btn-accent", + BtnStyle::Info => "btn-info", + BtnStyle::Success => "btn-success", + BtnStyle::Error => "btn-error", + BtnStyle::Ghost => "btn-ghost", + }; + + let mut container_classes = classes!( + btn_style, + "xs:btn-xs", + "sm:btn-sm", + "lg:btn-lg", + ); + + if props.outline { + container_classes.push("btn-outline") + } + + html! { + + } +} \ No newline at end of file diff --git a/frontend/src/components/container.rs b/frontend/src/components/container.rs old mode 100755 new mode 100644 index e97838b..debdf78 --- a/frontend/src/components/container.rs +++ b/frontend/src/components/container.rs @@ -1,5 +1,7 @@ use yew::prelude::*; +use crate::contexts::config::use_config; + #[derive(Debug, PartialEq, Properties)] pub struct ContainerProps { pub children: Children, @@ -7,8 +9,28 @@ pub struct ContainerProps { #[function_component(Container)] pub fn container(props: &ContainerProps) -> Html { + + let mut container_classes = classes!( + "my-auto", + "border-2", + "border-base-content", + "rounded-xl", + "p-4", + "pb-8", + "2xl:w-[65%]", + "xl:w-[72.5%]", + "lg:w-[80%]", + "md:w-[87.5%]", + "sm-[95%]", + "w-[98%]" + ); + + match use_config().is_mobile_ui() { + true => container_classes.push("h-[calc(100dvh-6.5rem)]"), + false => container_classes.push("h-[calc(100dvh-7.25rem)]"), + } html! { -

+
{ props.children.clone() }
} diff --git a/frontend/src/components/divider.rs b/frontend/src/components/divider.rs old mode 100755 new mode 100644 index 5aa9a5f..9e41233 --- a/frontend/src/components/divider.rs +++ b/frontend/src/components/divider.rs @@ -1,8 +1,15 @@ use yew::prelude::*; -#[function_component(Divider)] -pub fn divider() -> Html { +#[function_component(DividerYAxis)] +pub fn divider_y_axis() -> Html { html! { -
+
} } + +#[function_component(DividerXAxis)] +pub fn divider_x_axis() -> Html { + html! { +
+ } +} \ No newline at end of file diff --git a/frontend/src/components/drawer.rs b/frontend/src/components/drawer.rs new file mode 100644 index 0000000..6b20b89 --- /dev/null +++ b/frontend/src/components/drawer.rs @@ -0,0 +1,108 @@ +use yew::prelude::*; +use yew_router::prelude::use_navigator; + +use crate::{contexts::config::use_config, pages::Page}; + +#[derive(Debug, PartialEq, Properties)] +pub struct DrawerProps { + pub children: Children, +} + + +#[function_component(Drawer)] +pub fn drawer(props: &DrawerProps) -> Html { + let theme = use_config().state().theme; + + let drawer_classes = classes!( + "flex", + "flex-col", + "h-full", + "bg-base-300", + "py-2", + "3xl:w-[10%]", + "2xl:w-[15%]", + "xl:w-[20%]", + "lg:w-[30%]", + "md:w-[40%]", + "sm:w-[50%]", + "xs:w-[60%]", + "w-[60%]", + ); + + html! { +
+ +
+ { props.children.clone() } +
+
+ +
+

{"Ubiquity"}

+
+ +
+
+
+
+ } +} + +#[function_component(Home)] +pub fn home() -> Html { + let nav = use_navigator().unwrap(); + let home = Callback::from(move |_| {nav.replace(&Page::Home)}); + + html! { +
  • +
    + + + + {"Home"} +
    +
  • + } +} + +#[function_component(Settings)] +pub fn home() -> Html { + let nav = use_navigator().unwrap(); + let settings = Callback::from(move |_| {nav.push(&Page::Settings)}); + + html! { +
  • +
    + + + + {"Settings"} +
    +
  • + } +} + +#[function_component(About)] +pub fn about() -> Html { + let nav = use_navigator().unwrap(); + let about = Callback::from(move |_| {nav.push(&Page::About)}); + + html! { +
  • +
    + + + + + + {"About"} +
    +
  • + } +} \ No newline at end of file diff --git a/frontend/src/components/dual_view.rs b/frontend/src/components/dual_view.rs old mode 100755 new mode 100644 index bf68249..48734a0 --- a/frontend/src/components/dual_view.rs +++ b/frontend/src/components/dual_view.rs @@ -5,10 +5,21 @@ use crate::components::markdown_preview::MarkdownPreview; #[function_component(DualView)] pub fn dual_view() -> Html { + let dual_view_classes = classes!( + "w-[calc(100vw-2.5rem)]", + "flex", + "flex-1", + "flex-row", + "justify-center", + "space-x-8", + "items-center", + "h-[calc(100vh-8.5rem)]" + ); + html! { -
    +
    - + diff --git a/frontend/src/components/footer.rs b/frontend/src/components/footer.rs new file mode 100644 index 0000000..54548a9 --- /dev/null +++ b/frontend/src/components/footer.rs @@ -0,0 +1,64 @@ +use config::View; +use yew::prelude::*; + +use crate::{icons::{PreviewDisabledIcon, PreviewEnabledIcon}, contexts::config::use_config}; + +#[function_component(Footer)] +pub fn footer() -> Html { + let config = use_config(); + let config_clone = config.clone(); + + let swap_to_preview = Callback::from(move |_| { + config.set_view(View::Preview); + }); + + let swap_to_editor = Callback::from(move |_| { + config_clone.set_view(View::Input); + }); + + let footer_classes = classes!( + "flex", + "flex-row", + "min-w-screen", + "py-2", + "bg-base-300", + ); + + let footer_section_classes = classes!( + "flex", + "flex-col", + "w-[50vw]", + "items-center", + "self-center" + ); + + let footer_item_classes = classes!( + "focus:neutral-focus", + "flex", + "flex-col", + "items-center" + ); + + let footer_item_text_classes = classes!( + "font-sans", + "text-xs", + "text-center" + ); + + html! { +
    +
    +
    + +

    {"Editor"}

    +
    +
    +
    +
    + +

    {"Preview"}

    +
    +
    +
    + } +} \ No newline at end of file diff --git a/frontend/src/components/header/add_dropdown.rs b/frontend/src/components/header/add_dropdown.rs new file mode 100644 index 0000000..21034bc --- /dev/null +++ b/frontend/src/components/header/add_dropdown.rs @@ -0,0 +1,223 @@ +use std::path::PathBuf; + +use error::UbiquityError; +use gloo::console::debug; +use yew::prelude::*; +use crate::contexts::config::use_config; +use crate::contexts::markdown::{use_markdown}; +use crate::components::{header::Markdown, tooltip::Tooltip}; +use crate::icons::AddFileIcon; +use crate::tauri::read_markdown_from_fs; +use crate::components::toasts::{display_toast, display_toast_error}; +use web_sys::{HtmlInputElement, HtmlDivElement, HtmlLabelElement}; +use gloo::{utils::document, file::{Blob, futures::read_as_text}}; +use wasm_bindgen_futures::spawn_local; +use wasm_bindgen::JsCast; +use urlencoding::encode; +use serde::{Deserialize, Serialize}; +use md::*; + + +#[function_component(AddFileDropdown)] +pub fn add_file_dropdown() -> Html { + let markdown_ctx = use_markdown(); + + let mut recent_files_html: Vec = Vec::new(); + let recent_files = Markdown::read_all_markdown_keys(); + recent_files.iter().for_each(|recent_file| { + let file_name = recent_file.clone(); + let markdown_ctx = markdown_ctx.clone(); + + + let read_file = Callback::from(move |_| { + if cfg!(feature = "web") { + let md = Markdown::load_from_storage(file_name.clone()); + markdown_ctx.set_markdown(md); + } else { + let markdown_ctx = markdown_ctx.clone(); + + let file_name = file_name.clone(); + spawn_local(async move { + let key = file_name.clone(); + let path = file_name.clone().to_string(); + let read_file: Result = read_markdown_from_fs(key.clone()).await; + + match read_file { + Ok(file) => { + let text = AttrValue::from(file); + let key = Some(key); + let md = Markdown::from(text, key); + markdown_ctx.add_markdown(md.clone()); + markdown_ctx.set_markdown(md); + }, + Err(error) => { + display_toast_error(error); + } + } + }); + } + }); + + let file_name = recent_file.clone(); + let html = html! { +
  • + +
    + {file_name} +
    +
    +
  • + }; + recent_files_html.push(html); + }); + + let is_mobile_ui = use_config().is_mobile_ui(); + + let mut dropdown_classes = classes!("dropdown"); + + match is_mobile_ui { + true => dropdown_classes.push("dropdown-end"), + false => dropdown_classes.push("dropdown-hover"), + } + + let icon_size = match is_mobile_ui { + true => AttrValue::from("24"), + false => AttrValue::from("32"), + }; + + html! { +
    + + +
    + } +} + +#[cfg(feature = "web")] +#[function_component(CreateFileBtn)] +pub fn create_file_btn() -> Html { + let markdown_ctx = use_markdown(); + + let open_modal = Callback::from(move |_| { + let input: HtmlInputElement = document().get_element_by_id("create-file").unwrap().dyn_into().unwrap(); + input.set_checked(true); + }); + + html! { +
  • +
    + {"Create File"} +
    +
  • + } +} + +#[cfg(not(feature = "web"))] +#[function_component(CreateFileBtn)] +pub fn create_file_btn() -> Html { + use crate::tauri::{self, save_markdown_to_fs, create_new_markdown_file}; + + let markdown_ctx = use_markdown(); + + let create = Callback::from(move |_| { + let markdown = markdown_ctx.state(); + let markdown_ctx_clone = markdown_ctx.clone(); + spawn_local(async move { + let save: Result = create_new_markdown_file().await; + match save { + Ok(key) => { + let md = Markdown::from(AttrValue::from(""), Some(AttrValue::from(key))); + markdown_ctx_clone.add_markdown(md.clone()); + markdown_ctx_clone.set_markdown(md.clone()); + }, + Err(error) => { display_toast_error(error) } + } + }); + }); + + html! { +
  • +
    + {"Create File"} +
    +
  • + } +} + +#[cfg(feature = "web")] +#[function_component(AddFileBtn)] +pub fn add_file_btn() -> Html { + let markdown_ctx = use_markdown(); + + let onfileupload = Callback::from(move |e: Event| { + let markdown_ctx = markdown_ctx.clone(); + let input: HtmlInputElement = e.target_unchecked_into(); + let filelist = input.files().unwrap(); + let file = filelist.get(0).unwrap(); + let key = Some(AttrValue::from(file.name())); + let blob: Blob = file.into(); + + spawn_local(async move { + let file_str = read_as_text(&blob).await.unwrap(); + let text = AttrValue::from(file_str); + let markdown = Markdown { key, text }; + markdown_ctx.add_markdown(markdown); + }); + }); + + html! { +
  • + + +
  • + } +} + +#[cfg(not(feature = "web"))] +#[function_component(AddFileBtn)] +pub fn add_file_btn() -> Html { + use crate::tauri::{create_new_markdown_file, import_markdown_file}; + + let markdown = use_markdown().state(); + let encoded_md = encode(&markdown.text).to_string(); + + let mut text_dl = String::from("data:attachment/text,"); + text_dl.push_str(&encoded_md); + + let ctx = use_markdown(); + let read_from_fs = Callback::from(move |_| { + let ctx = ctx.clone(); + spawn_local(async move { + let create_file: Result = import_markdown_file().await; + match create_file { + Ok(markdown) => { + ctx.add_markdown(markdown); + }, + Err(error) => {}// display_toast_error(error) + } + }); + }); + + html! { +
  • +
    + {"Import File"} +
    +
  • + } +} \ No newline at end of file diff --git a/frontend/src/components/header.rs b/frontend/src/components/header/mod.rs old mode 100755 new mode 100644 similarity index 50% rename from frontend/src/components/header.rs rename to frontend/src/components/header/mod.rs index 6f8e2d4..5331e07 --- a/frontend/src/components/header.rs +++ b/frontend/src/components/header/mod.rs @@ -1,32 +1,57 @@ -use web_sys::HtmlInputElement; +pub mod save_btn; +pub mod add_dropdown; + +use wasm_bindgen::JsCast; +use web_sys::{HtmlInputElement, HtmlLabelElement, HtmlDivElement, KeyboardEventInit, HtmlDocument}; use yew::prelude::*; use yew_router::prelude::use_navigator; -use gloo::file::{Blob, futures::read_as_text}; +use gloo::{file::{Blob, futures::read_as_text}, utils::{document, window}}; use urlencoding::encode; use crate::{ - components::{divider::Divider, theme_card::ThemeDropdownItem, tooltip::Tooltip}, - icons::{AddFileIcon, RedoIcon, UndoIcon, SaveIcon}, - Page, contexts::{markdown::{use_markdown, Markdown}}, + components::{divider::DividerYAxis, theme_card::ThemeDropdownItem, tooltip::Tooltip, header::{save_btn::SaveBtn, add_dropdown::AddFileDropdown}}, + icons::{AddFileIcon, RedoIcon, UndoIcon, SaveIcon, HamburgerIcon, WrenchIcon}, + Page, contexts::{markdown::{use_markdown, Markdown}, config::use_config}, }; use wasm_bindgen_futures::spawn_local; #[function_component(Header)] pub fn header() -> Html { - let nav_0 = use_navigator().unwrap(); - let nav_1 = nav_0.clone(); - let nav_2 = nav_1.clone(); + let mobile_ui = use_config().is_mobile_ui(); + + html! { + if mobile_ui { + + } else { + + } + } +} - let home_cb= Callback::from(move |_| nav_0.push(&Page::Home)); - let settings_cb = Callback::from(move |_| nav_1.push(&Page::Settings)); - let about_cb = Callback::from(move |_| nav_2.push(&Page::About)); +#[function_component(DesktopHeader)] +pub fn desktop_header() -> Html { + let nav = use_navigator().unwrap(); + let home_cb= Callback::from(move |_| nav.replace(&Page::Home)); + + let nav = use_navigator().unwrap(); + let settings_cb = Callback::from(move |_| nav.push(&Page::Settings)); + + let nav = use_navigator().unwrap(); + let about_cb = Callback::from(move |_| nav.push(&Page::About)); + + let markdown = use_markdown().state(); + let encoded_md = encode(&markdown.text).to_string(); + + let mut text_dl = String::from("data:attachment/text,"); + text_dl.push_str(&encoded_md); + + let download_name = use_markdown().state().key; html! {