From 36e398b5e7d93bc133ed5671ede06909c1464c3f Mon Sep 17 00:00:00 2001 From: 0-don <70039285+0-don@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:23:37 +0100 Subject: [PATCH] add icon to docs --- .env.example | 4 +- .github/replace-config.js | 12 +++ .github/workflows/docker.yml | 4 +- .github/workflows/release.yml | 10 ++- README.md | 79 +++++++++++++++--- docs/src/assets/app-icon.png | Bin 0 -> 123469 bytes docs/src/content/docs/index.mdx | 4 +- public/apple.png | Bin 0 -> 260 bytes public/linux.png | Bin 0 -> 551 bytes public/windows.png | Bin 0 -> 205 bytes src-tauri/src/main.rs | 3 +- src-tauri/src/utils/providers/google_drive.rs | 34 +++++++- src-tauri/tauri.conf.json | 8 ++ 13 files changed, 134 insertions(+), 24 deletions(-) create mode 100644 .github/replace-config.js create mode 100644 docs/src/assets/app-icon.png create mode 100644 public/apple.png create mode 100644 public/linux.png create mode 100644 public/windows.png diff --git a/.env.example b/.env.example index 49bebb75..be2f36cd 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,3 @@ DATABASE_URL=sqlite://clippy.sqlite?mode=rwc -GOOGLE_CLIENT_ID= -GOOGLE_CLIENT_SECRET= \ No newline at end of file +TAURI_GOOGLE_CLIENT_ID= +TAURI_GOOGLE_CLIENT_SECRET= \ No newline at end of file diff --git a/.github/replace-config.js b/.github/replace-config.js new file mode 100644 index 00000000..ec40494b --- /dev/null +++ b/.github/replace-config.js @@ -0,0 +1,12 @@ +import { readFileSync, writeFileSync } from "fs"; +import { join, resolve } from "path"; + +const configPath = join(resolve(), "src-tauri/tauri.conf.json"); +const config = JSON.parse(readFileSync(configPath, "utf8")); + +// Replace the secret +config.plugins.oauth.google.clientId = process.env.TAURI_GOOGLE_CLIENT_ID; +config.plugins.oauth.google.clientSecret = process.env.TAURI_GOOGLE_CLIENT_SECRET; + +// Write back to file +writeFileSync(configPath, JSON.stringify(config, null, 2)); diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 26f55988..60ce0073 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -20,8 +20,8 @@ jobs: - name: Create env file run: | touch .env - echo GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }} > .env - echo GOOGLE_CLIENT_SECRET=${{ secrets.GOOGLE_CLIENT_SECRET }} >> .env + echo TAURI_GOOGLE_CLIENT_ID=${{ secrets.TAURI_GOOGLE_CLIENT_ID }} > .env + echo TAURI_GOOGLE_CLIENT_SECRET=${{ secrets.TAURI_GOOGLE_CLIENT_SECRET }} >> .env cat .env diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 86ba3648..6c66d589 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ name: "publish" on: workflow_dispatch: push: - branches: [mastera] + branches: [master] concurrency: group: ${{ github.ref }} cancel-in-progress: true @@ -63,6 +63,12 @@ jobs: with: node-version: lts/* + - name: Replace environment variables in config + env: + TAURI_GOOGLE_CLIENT_ID: ${{ secrets.TAURI_GOOGLE_CLIENT_ID }} + TAURI_GOOGLE_CLIENT_SECRET: ${{ secrets.TAURI_GOOGLE_CLIENT_SECRET }} + run: node ./.github/replace-config.js + - name: install rust stable uses: dtolnay/rust-toolchain@stable with: @@ -84,8 +90,6 @@ jobs: - uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }} - GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }} with: tagName: ${{ needs.setup.outputs.tag_name }} releaseName: ${{ needs.setup.outputs.tag_name }} diff --git a/README.md b/README.md index cbc266dd..ed3368b4 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@
- Clipboard Manager made with Tauri, Solid & Sea-Orm
+ clipboard manager with sync & encryption
Try it out
·
@@ -18,20 +18,75 @@
bGWrTab66<&-nJai&t(Yblwm12Ibz51idTZ`vu*tmdUB)5@3=0Ei zK(b%5xGRmW0ekQdKM*#rQu+iBu{gg{CKV;_J+5Q@3&MV@APEP`e?Z-sM6-?*}(+=s?1Hu@l9$3 z|6bokH!B-04lBxkIC|U!x$N$ImM(VLyUL5Wn4)6d3c=& FAN1i& z;7{&jQ66_lQ`Hgst5ah5KtslAqV_+6@%}sdv&|qudgv7cN*Y9>Kv&PTxGZtnN?yER z#r?ky9RB40PY#@~Sh|`zEtAF&)MgHC{MV${U7o~8tWhd)v(_(t6KQa@Plr}~ i+)JRnt7BVW;2NB&oCP>YDBX075==dPXp1o*U5p2k< b z9$^t<5MvZu?u*qxq6k@KG8f+9F+P1#WHDp_|7@H3+2*f@oiiAoCwXp6vltz!9VYiL zQ{}bcuQu(NT@9oXLEKSx3j;enHN7FdVJft7%`o*}P2f{Jtd7i--jr 75h&8s9 8E+yF! zB$e pu4 zE=h;*rezaVMy(-F?~hJi9!DC|KPE}FizbQ$kc~ kkL?c$U+Ezx*44P^Zqs$y zG2$ZL!d9Zw-UcPwIz$b;xYOB)h}1y# fBgnSYOv=6#WL0U;c&5}~<1oR7Ex zR;(&XrysuNg~vu5w9~`rj?AYT;;rb6=b14%D6P!StB1YrwwSXexr`=^G=>|jxa2tN zZ1q?|{CBpty^?nR?iQjg_37zhJp;sm> tMth%GG(J~b~NJZ|cE$mb;-|JWio#g6U1i?34G6|`I} zp@Yay{re;Rr#64vauleZV^>ugyt?`s-rkq-TSQyh6;mnR($ItVXPU^o>2lm1MFz zj+Y7U9#z2C)K){4gyu9%j7Q}KAba^q{;aq#?#>O4Hz;1SJ6ItOl|jtC9r{?b0&R}E z{51S-fDlYYq&mECkiFY^(aTq9 ?;OWWKwm0gL6n9_o=_^Q@qRYgDFk`fv+4u Y}B{f z@K%U8H3;yy>vl1oV7@} Zwf~6NWugJ9=<;4V3XFo)`9T@C@Ct5?d)-&%(sXdt!I*8f_`U@j5zQ~6W_ D%XN32iD;F+~|gdg(-`T2HZA_sKuh{C>NKmnUMa58r<)Xi#H#>?@SlvQ>}X0 zDb+9j?Q%)B6v=EE;az5)a=WiK`h1Xn*T{E =z%OK0R4$F zfCEK~>P{9$;Lj;R39d%DI<>$BK={*BIdME2!r&!bdei2anzO0Ue1X6u{U6YIi{%Ff zFAdVP?B03_lDZj<``Ybv;7dosZL w^%J<@m;g;>4axINB zy{Gp#_WAnzPCVln@DUeb`fV+>dzr2}0l?z~Q%T3_v3t!ri3sGI^A=?j>-e;unnhp? z*PO_4SG~#3`m6M(R3{ZCI_Z6TCU)NBwpnQVuCL>di)cEOCJZF_s=K3OLilR(%J;=2 z3hnv|ZEqT@xAEAdUoB0G2FP2mjedZkG_U^m%(J$I5}=TAzHL%9Nd7?U4{_zQF(o#| zxRg*n>|68WUj2={z6!R!Uez>I=~M?Nmhz#ffxH!P^3dhlMe_+6`qa+uIRTR7-S0 z4FfG9S8OCbEK}cnjg#9-gt8ArAKkBP^{F6P2NqoESN>7ZP2!dt`BjjQ#_1ASQzuKF zOX&UKvM;0QD^uJD_`NXJ01y>o`B~?6?vi2p`YW~V-5=Z)?^Et*Knf?(&dpgEZ!)5< z&o2uj>zr$U^7Z-DHj%3=Q_GTLbF~m%cPElS&Dlo%@#DV_rQ3SsxFHC0`0VvjYD5XR zRJ zDOU zpZ3KDV{|Zwop@p3siE+zmRe8M|5)N uP3vqD(_0>p1#JYX9aJ0ZS6W z5RS2_VYGQ{9=V7$0Jb^lGym=PPIshyQ-h~P4_zAP?W*I(lLx%1_VS|7TozwH?!Rvt zd;8tx#JetrPL>POe?3So#Ydj|oNS8rkGm7IsNRu0n!j>6DHb_Db6Ik$XI!rRerePA zB$93xSys!FL7?-vS{VArxjBR7d#^y>s7GfM*F=0itEyr6I~^l~SAljg{yDudwyctj z^=b9c1Ef^?V~gWkNw{!Krm*=d31lvV1VVOaGtIB-Bgt1^NVK0H84px4pa$Sy!}Z#? zrmqi?deg46w-dgu%ZFk*UN*w{^=W>~nxD#%z->fu; %Ph3GrP+sHC-2~?T*a_qQBtO$U{4PV<|6w zG24-K;f*-bZQH@7mEbd!+@2lK8R4Q1X_yp?5w-fsk%p@?7hHj0&jXM>z9m*lU>4;@ z7w@Q&^LfY$K~AhsAt;Ysa>fILbjnxE1NUS8@dSeVFof3J{{|vSRNT74w~Xx0i}W3= z`nuk_I2o1+wtMPH2i&*sobSRD+$*Mc8`>*I=qB>LOgO gh-M(9fe29KLcn`1o z=j=3fwJ8)bLsk&!)c5NRvlFB@FZ7S~vMq1rq~*Y-nSdBgAbk#ZVsCdaKQ~&+koio( zxJV%rw2TaC1Z(StXwbPyPDsX^p}sRQv-wW-|9Ugc?RWUz@4^wFS$&agxNP&*w)JO^ z70kCcvlW`Yog2clI1a6Dr;v2w DVKC2JcpmFxP2zB~5FFECy_wnDGG+7HcP4QDk+ znIV9>v1(tdZ{pJHORp{^QFyN|jX2?Ff79bJYbLc~gSr+?+H-nXeH@ywY5>aAzAq9| z8ceMiY *lYxDOIIXftx0!OpiKUki@2s|=ARKhK= ze~_%DbFv z&sbf>&Ce(apzz -0jt+#Nc7gS6`3bY%h42$QD0Gbg34 z(gVDjDIOf#ah;x)pv|pmqcdd0-<5~-XRVJ78iEbr_f`X}n>88c@S-&p1@EujZx~+2 zOXNJWdZpVot{ST8?CxH8!L7QoP}W^`(E!Tu2cyWk3beJh^~v|8!sx@cBz^$x+bAPX zI@KIj=%b)RTxg_$;BT&ZT`NR$S0?m^(EUjY;<7^at8|4QpP$xBa=?@Ewzqzbc*nOn z0qA;+F}R&QZKBy0DanPBs2)}9t~89_-yes}G%w2f{o5wv-ZA1h0}H|w!B^l!!jmii z*Gp_3pJfuUK-ngHwHw@m>9T%GO&_8IV{p!_NFxIS2%5*HKTI_tI+vEK^;oJc*sLC> zvp>tJJvR;8f9Re9lkxk{XLFa62S1q3I}0DBm@Tv8?DmD)D^t@cbqAgGDhrbmQ?e4E zIHC%m59yEYeqVU}2;nzuI_EipPVY_~L~?gZKD!?Tyitejia|EnVs?sY`cquL$1uWZ=GBE Zc`!o2dC1@>UTK`65^2{Usk+lnRDdUDYI$XEwU!mFZJ9}rk%LJO? z+B0auO8pVx?U{J20*C~%e7SZR#aHXqr+$kmw+%_WYs*(%H|Ao+H(pX2oTM5X4CwNi zD!Shc*+CxUr$#Qj3m-tUk7K^Qo~ax~2X|ytt=xQ9@LBupC+NdWDM%emk5csV{T@lS zpPP+Aca9x~aV=wUPUn1j$gEXuJTo#CkWhph`yH7&c9R`)rz#hDaMbGlMcBZw24?b` zYhAYTe1FN?x3{1DW%9V3neGDVV0Dow>2rUmq+I0p$%DJYE+FgUEE%g#G0#})y+&t_ zYYtx@*13Re@_&;fKsl4YwIr?n1{+BEGcV-RU`A_AzPbaQ>h^8UJ>43L4Yu*680H3t zG2T5~=Ra<0-acydG&8RT@D?bxiufrYx5Hj9&n1+oW}6@HS*K+*_WPnr7~=WEU6P$F zoatPYW{sJS>No}qtDcGeXGN^4i_i1X#F58E$ZHnlx~-;oY8^dfx-IZO%g 2MEnaB|o;Ik@U#4T~@{d-Pux5S0{^NOM z=k^xPXUkE;-|`C{sm^Y@Mxphtc{uW1K*sCPnp)UTy$-H9^4w7rr37YQhJ&rb?n_LD z_6%aOCPyFLzGk)Of4aB)m%Z+EWCUkIKK@{NJ=;F$3U0j|GFp9|c;{ww;d~YWN49kT z^_~jgao{RjP?*S6@(pi~S>qkfPq75s_3I;2%)-@I>dqR?&MSg0MUZVR?>?fQN{CRS zy3Kb4v{r8iP{&$4&K`#!nw!Fj;S`>Ez8gxXlW$QjlGo=Q6l3-!$xEp$aR#BDn>b9> zJwMu}AqI2m*FQh`qB9mEg3M}iJe*eOSJFU*E4iYXXOU*>OT1&9Z92mzcXavcU7K** z(_!ozrT$HE5Xm}(-(R2a`HcQ>aA1Z$ZJ2ypGXS5wr<2|3_|e1WN<({zbBzqeO5$=# zIyrG$B41Z(j)W5so@<*W>ISap;*t8cdpV_cEtXOX=_ZD_3`!H{#1;EpW}2O=TM-W- z0;5xD9=5wpkf6V8!-1(P^COU!ytXuht8GN1z=3+HrX?YZYLxn(h*$vf9(yd{A0}I> zQ~H2^Q@M!v9?M(+L!aoh`?%@f8|ymHfl*7bO#32)k=b d=I-dDK&umEF(6{0rsQi0v`NIMr0CqOC!%3P_NkLux~zfD zi+Bh{jc}=vKoM<32hQLAm81FrubbY#w{jFC&*uE~Ry$E=Po&e45B8|_%<_*9uU}qK z5NbH#)bRYHb>5smle*oQ^{HGL80_p2o(heeNB0upVqs6N!^l>N{R?l)S?;qHp>|-| zg?`4_VgC Ijl{Y(P`s*Uyqs0}yPi_45t!O`N!Tj- zdFY{OY-O=THOKrespt+a* x9pvh(y&2XM*xKh8DE^8wZG&C zYZnx+uTfv1?jMaf$HPbsPY?S0Tqy+ !aLUHG^Fl{x z)jd?bsM)MW;CvdI?HFq-v%M{Zd9uXHi}GgId%|5s5pKhaz}ZlV9Gsa*KEb2|q_faU z9LeqGWB}*n+2DnTp0r_2aH21tpSa+w02ce?I?N_9fw}3WAEer|cBum!rVOX-mL~HN z7-K&m<&wqpNG#jyhswz~ojVXS(n`6zSQpu2yD!lya!Zd~$Dy f5{9 JhzMD{k^^JaTWk z^MChCFO3iRf) @yt+Qpo_)?3lG1*O0Lez?Ta&Yz~3i56k zRTTTj`ud*r_x;wpx}n0GM}frx+3aEOEUHO=)i<~Bim35;vrR0ob0WjYg&0O^7HT;M zNWs6JUBc4=k*K_7#3zvz7QYYp|0s;6#{YKLl)c)$5UN-?*}uPclF2mW K YnhFg=@1cIvgGTj;%{{pPvstWX$`ANRO-LR2ki%r1GtbJf zkdw3Q`N^7b1zKDCikj-q8yTVx`w28WOI0)CCgUxk=^xJ*{JalE1qHNmc_FVFKHmRX z60Cl=jN+|@yxa+yRy|E0MrP gr&BGan@^eLR~fu?EK)V}F6 zd|X9Bk6>f6*Y MC6TF1PQ2Ix)lBnf)G;OP8*~i*qPZBA^aLENZYn zl@*D7OBeFrxAj+0|DrqNg{`51#xdDA%4VHExJP(Py&-hBy{%>#gJ?2gi069Du2WpY z0ei!4_mXc9ywkko-8P}_SG-`oSMJ{odMTgnveXQfXgRt+-ne!J@tZi+{oaYgOyk`> z%-GE5M8)#?_-{U(+=H%ThUdbUf7~dx(bhI|lzbtWQLjef<=;#GHzn|j6-b`w!BOy$ zaSV=fDGQhl(bd(A%@=ZR96^Xtlf_VHUkOQ0)BHrhh1s)5DL-BHI0kW|M&ENPi4ZnR zoq(p2XoRZGvHsciW}Qx~%+?XF6Z<$OaH816e^pphjtofpPpwHnXIp&h^LcvfnR%Su zVq}}fHohShq8jGyD^%rkr(fGAXxE_r4G+5P*sFFNzuG>y2rY#^wAPSa8q-4&5-xuw z?*n^y{|2J>12_+MCFPLmg}b1sUo=8l=2+;$f)|_2%lLvCegocphSw)oxaT*VhYmJv zD9wUrv3%!}?${IU=EKg9KY3te&w2}OzGK!bE8GQZ$FO|(f+A+B`HQK|dlJOssm7^3 zW<1Gw!oYy{b7}D}6Q8Tk9)0YK$+vX+vZ7F<)eVUtGM--M1>DZcfxrNK!{6rU9|0PU z^fp26`$`_Yg9i!^m2R^Yj{=3oo%v`Ss2jfW^CK==ls!P4Ms<6_=G*ksF-;x0Jc&0x zw?<~&skNN&pEF|JKg!ZxBd*k EVBc6U8K8N_r4d><;>SLi64Qaag_o6WUDbVNhFM{=~>I9@WXKN zndVLu0oVG-ED>Ub7)t2`U}4(KhAA^O2U)(-Fg3pQy ~_zW1R- i-EBy56lPPa8t<;)ccB&^ @-bInSr2}@Xue@S7Og5mFoOK9fK{~4s`ynZ7i%cn9n5MBlF}#WpMik0NH=D zQuT$w^i^Dngf14 Mu|IHNZ%L; zTn_iPzmZKc(yH|oP)vww_^a3Mczbo>zI*eVm#u|s&wUreW-EiGGC0{HP@oTzanjFY zHko+UFXC!6(iFVB8tfxXnRGH3prJg{W@-|Txc2lMJsF-g47Eh|FcQ#Gq@bQC6_X{f z27~O!!S;zJQ*nG^-ub7SPs4huZ=uGaG2a;95-dCfQRE9o@^9_Gr;~X&m)A}SnDP@3 zIHgP%U@|rtunWz&ve`;2y-}p}`l_7vdT?5LjZ*#T9p%hHgamAM0wo_WecT;>nUnGg z5Cx8qsHk~-+vq@=7)$m$CpHqq%)svTUb$R$|8FogRurv$JzBPkq={Nj*3K!OKc2*L zhbh83W>!0 zwz^5~uTeRz`{yG<_%%Uo>eR%p5k9EIn|vYg4Xva$gy7;) z*oz);b6i=V`#roA|8CUouQWgC)1{P(a$4>yP-i-sB2RENaBA#C9<0>w&*YniTBp>? zUcC~ymE;fvZc&y5iiy!AnmF&t8FrLEQR2fLxUvIZXpOmjPCE(C#QhW?CBpUN`<76o zYed$kYr`HFu|VX@M|e?z%8c!bL1mIpm?8jelcz9PNDojFQyM%jVi$>%pA%+>+vG22 zq?Q0f00!K0D$pG8N~r*~Rk*jp@%oM~D@_F}(?aj&MxM|3UTqcYRY2gSA2ZpyjWD#Z z4)`or6IwFZ_HudUzrjC^|0oj$VO!BLmKKnz2-Z21Qr|)Q2q2UFDy+PMc8jSXrbLPI z_77?#HPpF9t8R9AcCMp4LbRcVOQN3j+ E5JZ(Q7lT z)>LjwPqvV7p!QE-0BIL(@TP{CT1U!nval` -cPb=Kaq=giFKGoJzPGJ~(31dB<} @0blnwf4Bx1|LCkgpCz h0*P>%Op7d_3LZGAlS7U8e+k z_Et6e@!r_HSN>_w_aZk&XWOV5<~8hpC#=tQ=ye~dcI-sEPiuU64Y+ ^OCP_KvV3yY=y)qEp)b<$cP)qtZ~*+U+Zet+?N3=w zlR|Ht@}qYc0w`nqs?L3L SV6p9fv(mRJ_{xrU+M#H|o^65bUfKi)k1I?xdGcj!aJX!G)K5} @b?+IY3pAs4H)nIV$ zc&94yE8%KWS9uOW34XXR%e#qGVQ@PY9}sctZ}GJ>5;Qg T@vX>k7BGv-w^- v~(#@i_n4( zD|Y%Qqq%{h6-q3x9a7i4Cf~Cp^H<5`h~~8@yBsJijHNONs0V(z6=ApR1`l6CDmNuL znbPtkBNLk{&76daFCAP6lPA1fG#Y)?B35ZYUjQHZxzuXwR8Ng0s%{j;2u{o^FP3cq z(W|o0Cc|?dLuHVxGcRHP^YxMU^QYxIacrZnqOUB71cs>beYci_%(7l0@}-<|9xQ3? z1%{Q;cHu4p$v())NPfmNg4SJLp_9hLH|Y&HRzj=A!Rl9>|JQPu`~|X7DZv)r^p~q~ z( }GI(y0ZPdf2H1A`_*W#gWpQL3Y_N;WcXQMr`o<( zPWP;P+!**6bjSp%b@QOKrSW 5N(E_0fDf5a~bWHSkp4<| KiodE z-hg=}|Gd9^-qd!?cgAalG|7Z>uba_t|IhM&(hi}J=dpcBf)xH1kynX98OyWh2g_aV z@Jbsv`4@h!-H~Lf^y^9&F{~A_a(a+XZfdDdoN^a|ROp(r1gV2BW~Qf}lJ_Yt5W?{m z66KC+CtVz^4?zfpr(AWFM`HJ+N7rv+QVd9z6?2H{IrsBaU#P{0H#Sq%ZxK&Np=4?0 za|rq39I0?Zor&I*b|qO!&JKimN$%&!LXus$j-5yU12tTqqg&@a-CeVhJ36b}TtmpN zX+i3)q QS%E*T2e%LFU0c+Nf-;zSexq1oGu-O1A zkY L*z?u2iKHuhB^Pf-R*KJ(8KU|@_@L3^y{SmYp zG0SxoEU|GUikX`)iLnt}H>{8W5*amRu5&_x(Xs>E+5c-V{U6`#L#66gAxkJYcWJEo z(IP>>a@)CC;iSSpa%gk!BM`CSs0TerKW%SG$K#+Eh?&Er;OKxnyia?#RNJ=;N;DbA zX-Ph=eT(S&k*F_B^4ps4;#zawx&uWd6YhdWt @ zt#QXa^IRCh(iX$<=Xs{)p5~jr IgTd$~oByN{^b(`T5D&}Hp@F7=(JJZ_>9K(=6>0xyuIc4b zuagU#Ertdq5QYD@(eOg$gT)rhJ&U&0fZ(NBx|>~?lkNmX=p b(v7#)Uj2r;>g!xyHq&;e0!`hF_r&CV zG0Go#Re5V9aGtlm>96xa**lkWdq}5n!^dahIl1fZklXK%2&z)6gL$?&o!i!;@`1xg zh|^7<%dpNLF7x6FEd-SBpZy%wtY{>AS7i)KyYoXUinPmwJ+Fl=$#CxUe9SGR4T(9* zj{J>fPSG7i?Icz+WFxx+y_2stTKl5b c znUrF LR(}jP#V6I$! zwo6ksojV#d5;Qx2df$&_CT8n?gQUpHZS~EUS0X-DmSlbKadqIzNL7bR!KcWJA!QXK zJ4d+{;JmlH|NF$MvMqf6z;nb89-f)_ek$w2?ruz%p9YLZVJ`ExftJEkAW0!N>kHO% zdCbl+etSLjDRaKVAk=yl>gNIe(E%ka>HN)n>Vf1Z>2wgP_D~JJt$KB67+fEp6LW`z zn%yX;%x<)(*H6sqI8);1Z+{}61y<2|mcxxV-I mpWjsw+J7iM%d!Wu^ktE_?ZNMlsRzj* z<661yP#)x=&}V@ged9@45%zGaAGI|F{;bx7ZI_s%*8Fd5V|}96kq+n86lJg=?8nf= zY>_psOa2G89yiPb9;M3KpImvSeF$)ar3%M9$d~Mvn6cM#iutPWe%P}ZHBN%#UfG#| zea}nCMb=IDS62)l8j5ZOtB9YQAhvXmFYX6}W*qhe|4_#8_4h!1o{1TFQ!qjf;of6F zPM?JhQoVr*S&4!Kze{}k8 OW3EiK4m5~uWA71*5_-^1QZ%Jt=72@lR;N*OqQ&@=1A$IaitpOuaf)yCNB z3iAr2PLpE#4&*AE0cahpqOA5*H3K`3A{R*Rdea;>cYh5q&|Ko}+j49nYm*b1ESHG} zq!qKlXWJQGVj^4C&nS+T;1!HqNRGl@$Yd?NVHqpdB(UISW!OUWT;jLp9mdywi~&dA zZrBeJ^w?-xIhRxN3sp$to01-r;)4ZB`tB(c#YugXB3zAr(2{9}04a(1)V!(k4ZeJE zyROjozlM00y?@_bl#-%auVKFJ<<)2LO;sZ97$RN;if?wlqJUKPN!QQ45-|(!vcUqr zhiHR_oR~*Y%)@(9=9u5S;=alg0q<3g&lHD3et@?qi@{M1HR4? m5solAjG=}PgLHjALdEEIpU=fR@(v3`X)^3xCS z@}@-#Ur A2-MWl3dX-wzx4yE?Q_DWmLq;DA@4DLjp+ zSCNa`#l4Ps>n~5C$qy$8q2d1((a{-@-}}O1%+9eDTN=t9$W{<7z^Ha9`I>U1#^q!U#-E{~;oj_>=ZIk?{QlyI z@ZGAGPzVA)qWi3WiAaQgaCBh3pR~XxS;(q2v`H5mr+%f}E-^ptrk*TCjTAJrseN`5 zFs3TUl^ul*6E2`CGrbdkq+rdq9QJ{I8_p3Pyb)I9Lq{z`(2qjlmp7~-BzmJa!3;|Q zL9B|i-4P8tP6xiccOt=9<;x(1;n?YjxzUT@ISE(+dW`AfT)vag6NcVVr=@HCp=}?` zRzQAs*7oSZQY`kPN_*{du%Be%(K)o?i&%I@c3NTD?|;o(#$tWLQX_wB4{^JxFidhZ zphrj1=+YDL9yzx79d?KA0O;dmqXVT?GiJTQJJ+4bw=9gg%{o_ zDHzGA?d%M6qG$DQVh2WRwD@gkm~U~XQZ86_j&Ak)F)EsoIzR~I9a_4!uR=2qxs|G} z-437D_CDZT>yV0NL4 rX_%uRhEfkIk_VCMOxU=FXr2g aD7FPCLt#627(zW|PooN<^%F3?ETG9BN_erk2zWI^gR?ihb|XIb z%HklO6Q^e22iV6PZ$6m~Hja-MVZr2fhv6`*{-3VHVT^0RW*wdf+N_N#&!Z3^{T|W> zZq{72AbOponJcUb(NuOB<3Y+9QHX03k$8rOh2*+iQ#0~E jv}Wl3VebJ8#aBb81=#~b^Wqvgiac!-(4oLNy1t)dTk=Dn(0`+T%lIC1P7Y{y z&iZCX1MEAdz>1!$B4@2#w?)NU)L7$rb1oxP$60sF+AoRB=b=}|1bsSe$>!iqU@{Bi zsYMwf>@UN+!8YGyRKX~NSvRmXu_g&DxEt4c<;_T7=x)Q9zWLOe#uIwhZk;ur< $dj 7k)|3)c?m8tlHcm zZ&(ii=2XN|9y$RCmwC}&6gun+j{#iEDthlJqRN@adv3AcK823ea-Psu7L*mET2w}L zNPjNLKGmj#M6895inwq?*(B3us &*(qnzx(T-TTmAa*p2fBwtIV+y%df%$fL(BBEeKlCj+{GCh9aSRke zdh$(XhQOVJB$w8Gw+@P7nm2(ISsm1gbY&$t#hHN~-~045(~jA*ARtXxs! Q5A<9e= iC#uM5uTx0_s;r1_)9*68N|Bb?zkAWL6RbfGscgAMDL)Q+!*soN z%n%w^{}ik _`z-xE NSE_WpGKFkDEoN5;sw{-@RY1V-*yjQfWWEj;+PU`WzwM?(25K(o% z@m<;X2|j`nPnVdecuX|XhCjLyK4j-Sb+wwpx6A9(J98v{ObHD8-R0*(X|vQVAj2Zh z5Y6)kA|&{WPS|TZErt81(70gzUbW_5;gYda9{ER&8fQ_GPuPTjZ*&A631X 8t{QDMnY3fxh0d$M}G?6_Zbma@7fb2zDZW0MvcI0IQ z=K(tVLTFab_{|<}UZ#Ysg>;j&7jRGyxSzwqUOD{TF4QIHV9C$xf>t#*=7_R~O(`Wn zuI^G?(RdBA;Q7;d_;8)s7^Nj#&N2>E{xh{!) HA9M+LtzC_n_P0 zL bHuLq0{%RGkOK11 zEctQNcl)wBK=u)FL7D`KTZM2J!*7u<1GNC0p|E+a1VhoIbQk91BfvKpSNBz5;e$Y- z%O@KC^=s5CIDH%VS}Pez=TVyz-9Gtzre?sCZ+YbQB`79d?U>FF*KDuXk+Xzq~{5 zJ~gWRh+3~NN^W%Yw9VYojF2BJe%dx6bg{HtDld9k(pEW6`d6Xw9(6AVPu~VpVW(Ut z+i-Wml#(+e`1BYcYc%V)EI=m@>p@n^a)9Pz3k|;5xL!z+<*lRK_R6edCi{LtMgvFI zNJ3?Y-yil9X~Glm#H|qf>UG7c4WWI6EFahAfnb-`Y0i tnA{RYmEp8cox&fOUu(spZck>_ zdLW)hB=CM&CY-<}x@ac>wAMvyv&%P+fqgapwVR{tREsWDzuDWQ7Q)?22yf5uZiizy z63>qjlxZ9{_g=`Cgl}G^At;318BCX{>@wud=hT`*B~b;-eu8*-Ffv(R3sOxQyh^44 z>1uvczvUHr)Kdmz?VmC7%s&*Klm)E@-DZ{8P&F2s8%fxSTSkB+J>0ta`ukuiUvc4) zN?siys)Ls zVq%Q9xJ1FYMT5!*Zu0)iyK?;0cs1i@Pjt1w9acUWMfqRxfTIPy_0V`0ZC^b#p^Gqf z$O_F7>xl*-`Wn@i_1~z^yRnrR-y{ElZSnOX)e6Fm+>i)+xfOMK{DpV7I#V@ls6O6X zeb(Tw`mgH#^NA)KiFp#q6R`;+)w%uZS#mj}M0xV8w{N#+d|s^?qjWmr3_2a3zK4W* zXZ>}A3Y5+XmiC8{F4U<*5u*9@F!D7r@t_D&x)9L8{<$(hp(Mk0*NxjEIXxS=&$@|M zN=iR7oJ8mLH>-7c-NWK&D!KcOYfNj6H ~JMJ?1{dp2*Ek7 zKn}A0haMifU_r^3YE>3pVK8$D15rwc?`!^tH9oVZ-TWq7q{TaT&zeNdcL(o|@x4zj zt_Q#;tlfu|!RqZX@7A0yBbAaDU*J`tKfQ(}@NHk(6x^mkxCZvqyIjT$NDjyws%8M~ zofY|f<2JFg1!dN5Aw*8}zR@ZVRB{Y)b<0cR=PglmV}4Yg P)oSTFjToCL~d1ZQ(NJKdf&YQvM0hTUgA`>EzYUe3M07H zGb9^zjW~GRK6?m?JDM#=8}2O3{+0=LVlbQ1j})rxIhq}ZvuLtL?irnEcs-C(EL)~| z@-rIvSebQ9spy#LiA^t>7{_|!LDbtbd97rCwbYZ+pc3uDaKMk~mVb59c*X6!pPOuj z5bS3H%8?ol(Q5(pP$t%n35p=cAibux#cX_)O#_xn+!Y@uI`mkj*cktHzX5pzhc(gJ z>+JXXi!#xva{lCteamVDwoQ^UwG0FN$Iz@{VIe^Z>$eP!3Cd?8+l&`jDB?8&LtV-; zu0xAQB6~R3G_04Hy1{h4^h|t6;Cb@CVM-84KW|I4UR`@b*E8SF)u&o`x;D5RmUdl~ z(!_u9!K(EP_+3Idwmu+TRVCfg;#N)oTh)FXN4=0i65u~-@L#w}Lj(Zd@qb>UX}9PM zds$KJ?U(r(3l{!<*CG+%Y$~WTpF|GDaWEc1huXoV6uHloKo)Y#W4DZRn9VI=IRT6X z2gU9)$#vNa_vgNI z+s^~j>6-uO*>^!)q}s=Fs5*mG?7ywB^psxbrwQ|Pq-?EMY(^nUb96^-3w%FT5jk&- z)nvTKIOCa0LX&o$GcJ2U*KZ538ep1{EqoL&QNZ&AQ2FGIm~m5s4W6$?kbvppfq-6} z4UIU)C;*{eqtgZkcp4HQ(Ee Z9p8x{+7_ZicqL{q$3nj;v zrIpx2A`!iBgn-_TIxpBfD#sbV0R#->jRg^r=U%6sQOu^#NoF@Vd!owi93zTO?v4VI z`Pm=**{Z3(qdkJFmpKTzM+o6;AR)4uA#XnXzFhD=mE*w2Ds-kSxv47Q7bxFTqdh}W zKd -7q@nvaFIG9@jYkk+|A`UDfzL1b^@-&I z?y9igTGc2<7 deoibf>o(anQBVa0%>a3#U3a()@wmbKhy+XtM~ zRNKQqqZ^Q|3_FkrSjwnWFF9O*QT@Z`qp;$GlE-}hV!qX50P@h|JR>jRe-bY|@*h7? zVlUaGO=Lc0wqXBtEHIR(eW9ee#N4rTkCt$<#MqYzeYhi^$X`eA!qXiABfeDUVm!1c zn|}T|FljNnwpyE^2@ fVdO>2qiXUGcyTe3<<1=DO$%2p9Tj2!C?<=^y%gacVq |Hog5vD>lJ8GU!n^y(QcAuTp_YH(<&3#TOqx zh3-6k#VV>^fTn5lI_l9*0VJdVrcZ 01C-P=v(u`Ko- z6?6GM(#xBOdvz~*o!f{10=Dsb_oFGr&o*Eq8sd_5>>-8k258q8okIRvCO{{lNxbW! z)|KO$S$DpYFxg=Fze1O)t12>RLW0~PSDl#2a@yQa3|=d>68^oca=wZ1p)16IqIPB< z83f1iT=zt{|9OijnceF!PD3Uv!|vbdvg6aUGG|=Y#C6y#Yp|ba$ITc`>fOxEdKm|3 zCVR=oXl=>r>9WSotr$@_CJ~ Gcx zM`-*%L&qipjE}?F{;WlXHNw0 $^o<-)n_VljHl9ce;*WMceEqisnvpgEA6)YvpB zq)_@DZ#DrD5OZX|6exL#t#3=ly?)DCZ#1`w(I%vceOqlJW2b|pdacP Pr7bHR15ZGl*M+)2x@?1Kx_$+5(*8PJV0IwmLSu z0y@upOVNXI#ykW;x@~u=`}LUq#3wY9k}6Gv#Bb50Zh^OP6w~!H! xXlj=sN=q zpvpj~@@N=W-d1ObR{NR3PY1;r$FNCS=l8DNzM~f1uQMrj>16D{H`~fi$k$D;gUnF! zkjMV}?9@Mf-?2Yxd^XYU?A*DLWHjF>bSqe^*v)#9?axc+&F}oNVzM1Jdi1Pg0h<1- z6i{KG#xYNmibN#xO^KG ulS8BuJ(wGO|g%WzkEA+S8b_X6@j?*7w|eFPG2sb z7i#|xGn<>o_FDRdp+DqLiFRX>Xopw!CjAw&==RNz`+lq3wr|Z<1vQ6hOjh_(31Po~ zjgjKvMI(&V(q!c_%}MnwVA)FNfPw%4Z^c3laNhm%`)>8e5o~P|3UcQlJ{zWu&*`H3 zMhGj l>QvgE8Yn%kt^ae z3QWirJ6S)2MAMf6LHKnU*P1QDQ!sH))f=n8n^%dW$48r>6whCi #~VA51JmF8#OWaOUWc)|DfTpteV+IN^UHAEU9_^)yuDRH5VJVTl5_O`wq`8%l=7 zv(ERu9(Rwtv{y^@68Y=+rVH~}HArI%T72 ?n@=F#s_J+pk2{9dz3dN{nf$n)bqQw6!cpwB8K$ruKl#CkMz+==1|v+|lL; zHRN#gQ~DDSBH-0A5x{4kKSzi7Tqeku1^A6#W14`KZ15{mi-9ZZfi)S05OBJK!xBS* zbeA7)_(Qg?&Kb^yNlh^S$`#iz1=E>(zchNIiBoTCG!O{~`xYufB17J|nAZ}BNXQ~8 z-7%t3B}CexbBs?Eo3$XX6To=n?)2JCUJ3ZsRioHT$T^<$Us{q|c-zuBYH7IWU}^q- zZ4k$bOgkOW(ui&BqPxBAb?0ZB=YHurRJ!8>u0u*R{_=@U9QS3Dri?ekqh>{f@a }u~ u4?6xU9@=Y!ePjg562kXhU<gI8#m$q>(DUEOJJd%T}ab`R|{_R+c z?!61U+pM`D2sZ X z=i)i*!c`vB=F^wxqXEYi45vB>idRiiC()HNf1js#StER{ W=f>I{HcX-CY}V_5O98$uIXD zwa#xiXfD!``;2e9QFE52S$Ic~E2qq~wbbhR1%My8!2iKu$z${I Y}V%d!6z~ z2r@7S^K*Rn(ZfD0J47~h1f{*pWo%PELsR_2VALR~f(K&H7pu+c!SdvLsigZZl*vkE zqx0PB$AHh;Mw-TIsCDUt@{0UPha*piSGSXJCM;u^{!DsRmFwgRBV1=R$_UZ=%>4nI z-g!G^iIu# }6jiKAIg^yT_tNb{F7q{3~+_P_@ z`%`StC#KPVnGxVYT&UIFIM9RVuY3tfRb+^e-1Bw9Vl68_m!7-$jHV$CSlE;({pva~ zXBx8ZAQ;nN4UKCTTn7r5%Dbn@0}L^;XO?#goH4}*JC$6&)r!^!zk!58w52Yc`$b@2 zV7A?Ib*{7dYh+Tfpy{%3DyK>IB8>PgikLZztYa>7|W*XxIe&du}RjvTP{M8}b)v zolQTga7R{Q!c!xcdn}$q83bNkzuP}&GK!o2nTVE-xSaz}=7n4wideS#)BkvG4Pe;@ z)12f53GVWQ2s?_Pu0WOn+q=b?1>aGo7UueGvKB`7oWC$rM{t0G4^B1vXFl-2PB+I< z=v218E}YLC&eDvlMZHwK2P(8?C B%Y3juj)b^`3;rBzN5#alQXMWvwN tFMm?Up(D z%8elQqU&oK#wbpd57T)t;@$lQ(@{g`dI}3Fseqr|G5R~;HXRN<;TyBu0iIY>Op+z9 zqGy%8MKrjArP~5@?n0UVwOl^nsMB1g6@SoXY~BoxwZPFL3udwakiXL6aYu7cY)wGc z3CwliTWT2@%p=2E3#u_iFy16p3KIz`*wI%+?NVz8#JI)cGHm0BixtKqKE5>(BS;tG zH|}3~QrZCwFgcYh5=fslKkyVaqw=d1APT;M8;Wsnm*_M*HcUms{PM39-U;lALxeE0 zCN%4{DQIkj_Z{(F9i<0KaN&-%8itk{LmDC=erd#!Fpy+++++L$@BOMP+iGf!Pg(sH zS#(42*9mHX^Csvn;nsdz$G{Jj?Q?fCkzZQ1se6I3vjd5CzBLaKM*Nj|IZ;0yF@!^y zop=I~@`{>%3Xwu(C=sy`F#_aACrD+7@u;1-_3R>M*uD9B=n?=5{CDL^w*B`w+Ud`& z(Sg!v$z_{`H^aCxrqc(1ZOnUgM>{Yui72k^i|zo;&aeTAFOull&zn2`&8*kuz4#%I zq=JE?vDMeNwdQvIh?qHnYq}bmn`YAhy=p5vSwgsCW^=>s4TC{2&wn;QxG1I=s}D*- zE*i-g&9iC>)r;I59+1)^A#WVIC!P7FpFu GeD}#9NRR+Jy+4#H_$gRK(l}c%z{q61*G;z ziWXpjoDxTH<7{i%I&k`uNdo4_&U|R&=CxQx(a=vt21^S2gL8E|?7e>kwYmZuDbyiK zb7N2$($s=*n@AYt1q=DxA>oG-&GybwEB&rJH{^}C`w#|}EP3`>7Kx#O3L32N=zU>p z X>~yXmjK9`Nu&hld85) z%;t?$H7!Z|M|s}~^(aNMv1ZTMa)f6;$hJ8zw8=|BtDI<2z*@>mcK&YT_3X^VMz_eK zn_Pcb^4RY@C0}>^(ZM+p;(U?Ej=lYdRD#}qH8I&{Vh}Vl_V{2EZe4wej79Y>J!B&P zDXpxq$aopQt}6r-zP w U*S2i>#v3U@N74lHKO?)}>t4x6Mlp0OB(tg&%CH7A5-h7fSU$ z^4$~%vQ069b79Wk5XnzX)v+bg+NeC|&M7wu|9@rAZ%~vh@$9>)!;UC#F3yopcZpIP z!X=*|@p39g4=vP99!i7WoB~!_WRK6C6G2egH0@GD+2P!eb1hB}-TI@I4cnvJDL|f! z8x)&v2>7G5bC!c!=Ejv+XWD1K{=zmIRXuWMa`+%`FbJzKcdC}WnY*fI=%~9fQl8AL zm?U_uDiX8t!isA|FJHjwS4@J|!g-!pfM8Q8{(g76k(Yw!Z?F43Ncy034U8dJQ*hcl z2o{LBcKvl{2>t