From 5f7dccff7108b55fb55b7b0da0dec75cf9614506 Mon Sep 17 00:00:00 2001 From: Esdras Renan Date: Sun, 19 Oct 2025 00:01:27 -0300 Subject: [PATCH] Refine desktop onboarding and NSIS branding --- apps/desktop/scripts/png_to_bmp.py | 28 +++--- apps/desktop/scripts/pngs_to_ico.py | 80 ++++++++++++++++++ apps/desktop/src-tauri/icons/icon.ico | Bin 74818 -> 70320 bytes apps/desktop/src-tauri/icons/nsis-header.bmp | Bin 25818 -> 25818 bytes apps/desktop/src-tauri/icons/nsis-sidebar.bmp | Bin 154542 -> 154542 bytes apps/desktop/src/main.tsx | 12 +-- 6 files changed, 100 insertions(+), 20 deletions(-) create mode 100644 apps/desktop/scripts/pngs_to_ico.py diff --git a/apps/desktop/scripts/png_to_bmp.py b/apps/desktop/scripts/png_to_bmp.py index b8bf2f0..cc5c11e 100644 --- a/apps/desktop/scripts/png_to_bmp.py +++ b/apps/desktop/scripts/png_to_bmp.py @@ -123,15 +123,16 @@ def parse_png(path: Path): return width, height, image -def resize_with_letterbox(image, width, height, target_w, target_h, background): - if width == target_w and height == target_h: +def resize_with_letterbox(image, width, height, target_w, target_h, background, scale_factor=1.0): + if width == target_w and height == target_h and abs(scale_factor - 1.0) < 1e-6: return image, width, height bg_r, bg_g, bg_b = background - scale = min(target_w / width, target_h / height) - scale = max(scale, 1 / max(width, height)) # avoid zero - scaled_w = max(1, int(round(width * scale))) - scaled_h = max(1, int(round(height * scale))) + base_scale = min(target_w / width, target_h / height) + base_scale *= scale_factor + base_scale = max(base_scale, 1 / max(width, height)) # avoid zero / collapse + scaled_w = max(1, int(round(width * base_scale))) + scaled_h = max(1, int(round(height * base_scale))) output = bytearray(target_w * target_h * 4) # Fill background @@ -142,9 +143,9 @@ def resize_with_letterbox(image, width, height, target_w, target_h, background): offset_y = (target_h - scaled_h) // 2 for y in range(scaled_h): - src_y = min(height - 1, int(round(y / scale))) + src_y = min(height - 1, int(round(y / base_scale))) for x in range(scaled_w): - src_x = min(width - 1, int(round(x / scale))) + src_x = min(width - 1, int(round(x / base_scale))) src_idx = (src_y * width + src_x) * 4 dst_idx = ((y + offset_y) * target_w + (x + offset_x)) * 4 output[dst_idx : dst_idx + 4] = image[src_idx : src_idx + 4] @@ -206,6 +207,12 @@ def main(): parser.add_argument("output", type=Path) parser.add_argument("--width", type=int, help="Target width (px)") parser.add_argument("--height", type=int, help="Target height (px)") + parser.add_argument( + "--scale", + type=float, + default=1.0, + help="Optional multiplier applied to the fitted image size (e.g. 0.7 adds padding).", + ) parser.add_argument( "--background", type=str, @@ -218,7 +225,9 @@ def main(): width, height, image = parse_png(args.input) if args.width and args.height: bg = tuple(int(args.background[i : i + 2], 16) for i in (0, 2, 4)) - image, width, height = resize_with_letterbox(image, width, height, args.width, args.height, bg) + image, width, height = resize_with_letterbox( + image, width, height, args.width, args.height, bg, max(args.scale, 0.05) + ) rgb = blend_to_rgb(image) write_bmp(args.output, width, height, rgb) except Exception as exc: # noqa: BLE001 @@ -228,4 +237,3 @@ def main(): if __name__ == "__main__": main() - diff --git a/apps/desktop/scripts/pngs_to_ico.py b/apps/desktop/scripts/pngs_to_ico.py new file mode 100644 index 0000000..6eb649e --- /dev/null +++ b/apps/desktop/scripts/pngs_to_ico.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 +""" +Utility to build an .ico file from a list of PNGs of different sizes. + +Uses only Python's standard library so it can run in restricted environments. +""" + +from __future__ import annotations + +import argparse +import struct +from pathlib import Path + + +PNG_SIGNATURE = b"\x89PNG\r\n\x1a\n" + + +def read_png_dimensions(data: bytes) -> tuple[int, int]: + if not data.startswith(PNG_SIGNATURE): + raise ValueError("All inputs must be PNG files.") + width, height = struct.unpack(">II", data[16:24]) + return width, height + + +def build_icon(png_paths: list[Path], output: Path) -> None: + png_data = [p.read_bytes() for p in png_paths] + entries = [] + offset = 6 + 16 * len(png_data) # icon header + entries + + for data in png_data: + width, height = read_png_dimensions(data) + entry = { + "width": width if width < 256 else 0, + "height": height if height < 256 else 0, + "colors": 0, + "reserved": 0, + "planes": 1, + "bit_count": 32, + "size": len(data), + "offset": offset, + "data": data, + } + entries.append(entry) + offset += entry["size"] + + header = struct.pack(" None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("output", type=Path) + parser.add_argument("inputs", nargs="+", type=Path) + args = parser.parse_args() + + if not args.inputs: + raise SystemExit("Provide at least one PNG input.") + + build_icon(args.inputs, args.output) + + +if __name__ == "__main__": + main() diff --git a/apps/desktop/src-tauri/icons/icon.ico b/apps/desktop/src-tauri/icons/icon.ico index b56f21db571737d4e25d2965225ff63180f9a412..454f644fba450618a5cae1b293965adb2307d583 100644 GIT binary patch delta 91 zcmX?ff@Q-}7B>b4Mg|rJ1qBeT!0?@&fdMGQ;NSq^pA%(Zu;pN2XlQ`&HS8D|xaEKf ffB>Yvb{hkOaSQ{)=2B)Zj^;;_+aF0XCU5}&hjI@L delta 4584 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 literal 25818 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 H=ZF6fJsOkI diff --git a/apps/desktop/src-tauri/icons/nsis-sidebar.bmp b/apps/desktop/src-tauri/icons/nsis-sidebar.bmp index 5763d7392df01a89a67a92eaa30739f79b8057ce..061adc8d28722771ff196a1df2c5a65dfa287cda 100644 GIT binary patch literal 154542 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 F{{e9)DZc;! literal 154542 zcmeFa1$b zi}ih>*2~C1Rrcfm32FZkZ$^^Pk{`5xFpJ$vK?^?7yrGEK^?4S1$ zfA~AY8E)O|_`h_CfdRTYx>|brXgUT4`uYZdt7~YaZ)j+MzLAlkiHWhPu_4h+49rc9 z0N2voRJcV4pe?K{O|8w%X9ro%^jDFWB$FuwXkjB;87j>1ri6P+1iC8z;kNqe4L^F% zqO(P{^}&>`wrM}@{0nxrZVU19@^Eu=b#ZcXcXdVA%hO#_LV`jeV{`wz|3&mM)YsKD z&^0p9L&wC(zz~Ag(={;$Wg{rp*wDb#7#*Tnn3-5vnA=*KTbY?yo158No7-AjqOD(< zIX}q2-bDQc&?IRJbzZT3J5ocVB<>tL&1-!s+rN2-58zM`+>@9*pFf!0;?djp`?djv?L9q64_i}R~Q-r>dOagQYl`JJiK6cpSPdXM;Gi_rNeIrACFf}sJ zhl_@C(MLlpCVn+DwlFiYwzjmeFtxC-@bU3ky?WKI9ov!<6CCVp4bgs-GenJF zBxilH zK3)WF;uP@ml%P^TS!6xJl0+Y3C&!@e)Z4Dn(=OZF`DeL~7eDuR_q*C-y}Ud$+Bv;-CNb{r;|*9J;e$*p)S4L+>^p?9}V+P<`@^ z%76dPfA%|shB*89dWjV6>*eW3aQ6awUmxuBfGMBz6`EDJfs}s!0q#FmYK#0c zKJE{HPp}4DPj^IWH+1}b@T(BFx3`S66r3T9`S0x~?ou*;u#=oU)7;YB9HO?iFm|$i zc@X^g!)ZS{b8={i&L3`*m%L$j%orndlWHAf7%{Qu-nV~Px(+XaOdG6itj+DME&neY z{`i$h5)yy#nfB68?CDuB%8cUC16hOa`~f%Cpc9{A&+0c}_v#IHXngm%-b?@LuelRJ z5R`#fByeuiG;YgMO7mAeW4>P#6jRnR~Hdba1)>iJ$rY|+u zo?WiQw;_H=?JWyl`kFs(XDokc-Y9#jfDz84`}1jDoFP}e1`(RO{`G z{o_9Fe^Kl`el!G88;Ie|F$BZN%f}0z+#CK}S$T@klM`N(DnT?1W09PT`bdxA>38mM z`R|W+^LlrCTN^tYD{Cur2RoaWz9H&t)E|deYASzjO>(F^Zj3%xz??2%P3M3$&5uX- z9i@42hnyLM*0f%u;Vzwr-x<90d;Z0D`uaI}xVeg&r#n$s5vtqE-`59PhJ{6ZB_yF_ z^hscit&}uHLW(RYP5tkW&e;*1E$wWq?QN|aYC~T7hB7h)X?!0^$v@1Qy!3-OjJXrM zxufiv0{S!oYbu8k%BBUdhJ4syJxH)-_UaFI>HNiOWiLH6(M}*1IdFjX5f)eg+S}XP z-_IAUg>Z>2hGUYF6e&rvlr%|NmLeldmYqZi3;VBfBzG5cAch0CwzUNFmww4FKABE< zZen~*j*BsV>1+P`o%Eq4BkTnuoVjD1*<+lUW6Y@>dN`XN!e@l?=zd(9CwI_=(Qn1* z(;w(k`|m&Q|J6Hmx5xT;d%3&12t`el(U74F(>5;!Ik}(wwxkqA8kD8UGO{FT8PX&< zvVx+7yrR_a9)I<8#M)R{*jSsP+1i*rxI6Eq7N8RDo2Z{iNc;hA~e*7Wm+LhUF&*(Az_~Vxk6aM|3|C)P_9u9DJ zaq@6=_Hc7T1o!v$5;Y9HC8Z=#z<`{kr75y9RDhO~rzpr%H5`V6n z{yttZvJx^fWC&Sy61GA`i*PGYCQp%4R*`@2o#@~C#pchqw6V3Yu{5=@F}JaLdG7t} z@q8&MB!z^cwY4Vw){pq**Z1}&a5>4N%w;3&><1y#)AZ;e3J)J!q z#TpJ_4Fz!NUXV7c*XiN+Ccpf)ugbq_X{)QLDCp{{TbmnuxH$QExcLzp_f(XhB(Fe~ zlO-$2QI!-W6cwn7^5{?}D@mxT$f&7IQvU7IMndLbYi@06YHwqfzVzjhT2c}<9U@X= z_U(_g;ZT3t7$aqryKIb|I>Aev;3bdqk_4&Xb3gPeNl>}%RipFeOz@VBu;K-*h0yf~YrcRrkBg{HBXrH7MRI82aO2E=k9*&k{l|~^3%46iiK6n}9AcMR~H)WO)@8Y2a2-meEj`Q&o`#WpGCa(pFKGGc{HIHAm{; z;E4C1tR%0er*2~M@~I*vMQPEeWBcg-%k%SJ^I0#vX2}FUZFD4cf}b%eq&&e}HpWfk zF_K4FDI<)e5jLc~h|i4U(id}Zaqp2Ye&}u^5YASMC8j7lF za++F`UwZPq_|E4~F^R6Zk_$4DAwBNb2J(c=i*j0Hr7#+bvWBRz{`^aq3W zP%l`&+y(vh_lJggf;Glg#N?*CTTp;^Xi&hK9AEIl0?rquEhJ7%bWT>32UB%5ISqAr zNLx)+mJqly;lnjFm9SGsSL2rt+{4Su-Oa<()5DJ_)DS0-h55fae`MW1o?`^=_x|zw zgLPMD0-w2bg0*s-w{ncTa+I@jjJ0Bdn=!^oA7N(+80n*o^f6|d0J>%-37B}X(33M` z_$*{-bGVFIoWV%?KoGs(^YMMZUp}ZKWy<6i zZ4R^J$Jj_uT|+@jQ$a&b9*EI2)fLr*9aZenP}sb|>Hj)voK{%m<}Up4@NoC^^aN{= zee&Svr3FaIa1OlixkSkR@ZH~xyT3Pu#Z2LGm-5(|qwJM@&I&#|YlNN6XRR3JpsnOG z;LKO>7|Z#rGyyvmft$}v6cAB+5sw+eWgu$LWih66Xi<#8K*oU2|8-EW%Kp!8%n88E zHD*2BT!h3u0(`u&C(z%^&&Six7i*Jzf&%}O<0jeom5k83Y<0?DF4_9^s4Fv zYYokphu}RsJzZS@+RfF~RYY9aaho(rR$5x}CyR*&)GxBe=K}t|J-=c7Snpsqm$8z? zSw6lG(h$u#3K>g2@iR4h&h-^GO?B%t!pN<8c{_bQZBV7Qd>|8!4o6lLvV`cN0 zE5Vuz#GD*1V+Dtv$)=}snVIPG*ub66VW#uh%lNDm9wSk}Uc_a@a_KRw;n_UqYz{4A zobLbPN4(PgKz|=U4+K&dZ%-ExCz=m*?G@nX3(9cwAwhw`fdPU3{vZySqhXJpwwi&i zs*bi2pzCNUX{k?vv_)dq)t-Fk)<3Oeu(C0=v$e6ew{voKaB^~Vadi@j+5?}9C9EFq zIIrB?)CsIVuk`*I^pC_z64YNPi7%x0XL49MTzW2_v6{~U+$;{A*z#B_c}yre2i&>L zl^jMEo1VpCtY8xzaL-`Tm$Mnm_{?QoW)h^0gdAgSJ_~h~Ib2#8eegH9l)w0yfMm?q z1M7&LQ7D5yN3D#A+JyJ^3l0QX@Fh9{e&~R>AE4vcK)-+hVIMOWy4uP*T9bwTTtQP^ z0mKdUeooTfduN)So{ou$v4y3Xot>?Ng9C^|;4UuCaOt9{b8jyXRaI$uEFL7H#ZQ#~ zwS#$(mm0IPHGxmd7^Y`2XsdYaJRT#5$5_p!=dfs*Ja}&|5U)T3Uw{^}&cv@m(3t?u zq(Rzgd}b;aZXD8PEgoSnkA@xI6oJ zyFt+}fW`pL7rzGj`vNy~Ez)>sa8Pg{R3C`b0NU5kn5?OWAg-XJJ>}}9=S%O@@w<}J zWaTN!swx^Nz%HyT9y_jPL8(1 zHDW7AAr?D{pg%`X zmHa1NKYF;7)3;`bwuaWfn#B}>ULzt-AI@bA=Ylwso(tS;IvSjLHU~L5I~yGqEd!LX z6}faaV>yQb+)MfFr6a5q0Sn`=SQdTSz5B0^0|$=pzk5F9nKVh}xtb`5jARWpRjlK6 zcCdGMbMp1@5GHS;)o28LA!{Otixdq}3q3qQ2Z{EGGCFTxA8A<`DWuxcQj*frQZmw$ z##{J!5Dsa~Rt^`p{~|@EYduTH3&BqEB1Rq_3e3<u4_^0S- z--z(Qu+RWEH+`Xwo*P!kohWUos7$f6Fm<-K^Kf_b@j#Z2%ndo4pU|rVF@YOi9UZ7! z2p#grqHhOHid{Wu;_f7yDXOWdYHMp57#J8EYN)A` zbu=k@+7kM@68d`5`a06OTC!T2GTK@S(h@}MrbrP!{Nc9=T`enmJJ${OtfTd#t)&mF zXAEutaUt||^uaa4&f4LD9N?x6X43~(vS_PV^c)T?hcUd8F`N!XGw92assTEa2HZ&G zGPuCaT*{*-afjo%v{>5UYZa+Qr$Izma7dtUXdn@DBf`T10s>yhhY3-k!iB5}S5aXq z#Lm{-(}kG)60Kbk=IYO}B8cN1M4?hp=R5diIx>^#tS`;{QEe#T&8|Xvl_&iLmLRMKD2hACug{S)o}l6 zG{T<`u3^&FFa~q!1B5?kB4MLt(+0EX!${q;Aai7EJa#r418tPiSjqh11kTVaIn(iL zPQTJoXraa`^nR|8wVU*6G@)7g^S(~%2l4|J~rU$lX~)kA%&2;V-iZm1WI9nO5! zP=C&k($1w1A!@H+qtQ@rA%@$0b~=xhiHgc7M%na*uUS_1FX&sJ#6Z`g21Q2*1wKs( zn!p_y9vvAm4cqWAoCDLMqozeiTie=*#4d{Ih{7myDk;d}@_DRjadUQbC)OcD@5D8s zNa})!DO4Z8g}{jtjlXXY9KN@ww}*?DyQ7PfrJcQ*v$G{?CQ(5W6$fQ@Zjsutg|dA! zdFNKj&TZs9+bMgtllJc>AKFVfvY%XVMDk37*@JJBS{`O~KFjTD%js&%?(1IF)wyb* zYYidlUc~XWI0v9^{0hkfIuf?wfn4TLE@LR0HI&U6&IWEI?8>_9&?0=f^6j*6TZ3>wri?FVvZf$9XK{VDRd&9|lc?P2zmCH)|j}!4fS?rbWI6GUoxx4uJcm(--i()szH{3h6 z@ZRB}Awu^KX@^EZ>=6;sk$_HchkFkX4GjqihC_zHi66LjTmmma#tERRrea}kjCH~u zF3wn|im@9eS-ddC>EhsMk0s*z7N+{P<{C$jIn)+eR+U)RmsmDd*{n#XtX@G`y9&g~ zo7YpeY@lr4MBcH9ylX2oPCl@ca(FNK_(5{fG0N#CgL}7=+MZ^2wXW`N&jDpLq-_Y| z1HE}eLYEHQNYaM-v!QF`=R^Z&gl|SR8&f1)6jWDmSj4o*D^2h>eR&xf%w>@+%?wb$ z4EFOuP8Asv6e;xTBGwQ)I)Dq@fF2nhjzlgDti!`VI}|@5AxOD#DJXJmxObo@oIDlK zDZ1JkSQCz`>2dXz1FEG~hUVs4Mn>vRwo-K^cJ;+J^(9uojcrr8&B-dutW@f%7391e z>W0;nP3s7aZ(dKRTjq{-s8q004Jym6solaS~oSd6Q zTAxeau$sJaEqR*|_pWW!eLE-zcEO*MjvbUZ@dma0gv6&GgtkA)>~3Az)0REhL+Dz# zg&T+8Mv9K1cOG*XL-N%ah0%vrap-wO*_@S&JRGc9tejVr-S7C?xB?$@PnciE+=MXW z!iK0>O_Gy!_i)ApsAxh2!=OBOwg&M~mr1Zhy9uh>9%7w!#Vzh+} z&B)jgm*By*6N5J@HPBnBzRIeh+^(+Fy1LlBw#dAu&=jI>D6?v+ux_rjZLY9BQ*W7( zO3BWku3AZ1lS5ih_;d2sO+?$VmAq>QdG}88!M&6>4p2_KK`A^=`S`uS_Q#n$t*iPv z)(jFu?=^!x7;B?;x}H8rjK7E>*Z_#!dvkw>(O%I%DJ_b? z=olkqQCSS!!HD{N)`=KlO;%FETo|YkS#*FOWGhVF1He}#ZA5L6oIx5LVZ9XB`4Vd( zd^}xT9WAZQapyV}Q$xA>TCd7t+pVrHC9;EmYCF+nKhSM zpQ>;=U1PN(m6WlRoRdjfl}lQmM@H=4x{0)X6KTg5@}8a4{b;)>2lkSV93&MTr+j$b ztNmeSf2+uouL5o);lK^nw1GSZZ3Bn4p3PX#XRT+`@(5|uSF?w*xx-nnD7D}HwS$BG z{Be`1=htH6wmB$*`CvGVsSpHQk<5{C;kHFcv2aR&HP$5pI^ZILV~f71T7q&4R=I$( zH++SYjkSe=xrwr|?v#ZK^y|yuw;d`9&1wqGOOF{>95*h@H^R2M(6phLWu=ia(@2QjoAM~@){r)>BW>OwRQEQ@?wzE4yD0m1lMd}8A3aDa zEu>t(;@kmsx8?M8a|?vMm}>RmqD<`d^cKOSJLk`+N=AA zSayg42rj?}N`Qto1N~6d!~}<5V1PHq&ctd@L|$Rug)9q;9E5dmV&RHtgf6Ow<01kd zEHrb(HP*QOq^g0QvXv>Nu{yM-%%iHrv7*4b{J2TUQKOQhhNVXg%JPjX^G(3Ix&Z1n zt1C6FEirAZv}h=|I9*|NvdZpMon1}_bwxUPRTde^IkL5_8>m}0lDBUo@7RW+H+kPK z^1(f1;68SUTzZ^x^^$Gd_se@aR`s^6!Vqkz?|HQxJ{%z%(4lVD@M^em4u)McWbd!) zs^I_TOslSl5SF!xf;Mmq{V)-2g@P42Z7f#^^mlV}7N*#MPLhs!p6$kwIyK{1@5IMY>JK<79Q0tKBilARHyWW z9$I;!LD>oY$|9qhQq#I}E7Vn*s%@KV>`vC&pKEZgF0;&7DuIDm&I)qwO0qCjBX8SG z5vAq(ke2VGys@8p_#nC9FcrApyXxNlBx|5Mx1Xq&B1t0#+C(8`D3>+73QL%tJX-v! z!}>43|DIil&%~{A;FB?P@qD!Pe8C}BlVVDm*gl`MLhU2~3A~%LGv-FjkitRfrbeE4T#5$!xqF6fA^EWD# z{lY1M(hBArg(2HFz~4JKz}wHyi^{XP+GY;NAT~)>|)MTzB?N&Y9-)rn;oM%DCF{In`w|t4gMo7lc=y2&pXa zFU@x>K4Dr`U{HEO7wF4Q7*rG*R~19r7EM)lQ1_{7`*Zcq7n+=|owiF(lt@n|5vf`> z1%vKQsId?uZqlAzU`=^rALY<~%8`TABL~SPM=7->vX34lceZ5pbZ7T>uf*&&q>X7W zM&F9IXNkXHfxpi`^>oAq1Q0i;_4V-x@bw7r_X_g&!WI!cAixXgaV>$bx08p5qm8w$ zxtWrMk%EPx;^xis9^S3Kd#C*Nt-{YgJ__6){$tNO*S1}{u=d=U+%wIY4Ry&4wej_p zG38~mt4e27mrk!Kjjk#TuPF%y@rpvX;(Y7Ue1lR%@B*W%BD3le(}oJ$=1QwGwRWcw zwQKDzH8{R~!8s{GCSxff?X|h2&Fd&zx1f=BZ^!tHm<~I*pMxN>>@nN!(knlhRjQ|qf2 zH&n$!+EpbpYRaZpmqb^UM%ENZR2BtQL*s>hm4#kq`SztJOhFtaHMsGH3Y*i_4kwYM z)!Cn|x4+nEpS6^fl0wc(Bd^J!AZl;gNDQ}kZKHrS8lpDZ;r&#MxQ`wtm!BZN`?gz8 zM;5`l4;54-=js3P@c(WvfXBvy0;}~&o+DOcWZQDZHvy-xS2l)U>D|;yzZXbp--%l<+OexQ& zc05k#@63W5AL`5O>G)gc-Y-3k?|w7S&&M6(X|w=8Hyb`d#+#I_U0ub6~B09<=LjxQ^>}v$kI#uV_T;p`M z+U>2gR%Q8ZWyMJqGK%JQ`Sp3}WuXL@_iba$QY z?mE-fO6dB*{VK%k+g}&m{QTG_A07JWgMHBTwX2)nyu9|}ne6k;%TG2XH`m2C)GVy6 znqOT;u&yeLhOVoMBkM}T>q<~;39c;x=%BjNkovM!H0KB z9NkYXIxMw!n|vBrXHar;NO^gpSuoP}t-|5DoJp8}g z%g&yRA_BCnp{3PiOVcTiHnKx~X9fq(4fmfP>_6YvbGEbNWP965B3?hPd-S0C&bKAs z+$#F&X8tE1z46fp```V?u4`8|UA(aB!r2vPn$zIJo9p9iYUVdoEvPM@SyMW-u6%lJ z8QgeeRZ&QFad1s}2q@Q;2BU#;V`b>cs<4yQp`U#;9qjgQCm-G|dHjHM>2aC5YN^B| ziS%VCoRac#$(uGHY6~YlHV_%V`ib!_Us6=uW@MT0&Vajeefb!_jaFYZ)@ymYkc;!?&%|f_1*7Ek%xozXP+JX z_{04lyuat#TbnMP%RPT8*MQcV;XDb)>Y1EsGMGhkX<&lvNW=?IHbBX zw7D!4l$)!zLNB}8sTs9ddvjbSZVVa zr7T)CgVsbJJ`2$Fq4NX%=X$zNb+$Jl4@bOy^04;d_f>cAl-~Zj;H$6lk%xbLWA6v= z?Ywq%^>wk0)e9PGW;LQ!&1|TgSyvueQyE!X7S>!9(O89T z*s0pE^9_MlFSza6MBTlWN~|>7O+CC{;@BbC(&O@#g-W$WQ?6ezUA$0YSt?~k1}P6k zasQ4$|s+h8nthdIqoLeWCxCr&&*Df`Gl9$Ij<4YZ&wf z+R&My{&RzUr+d0j60PeLq}}?gvE?!H@T&Xw%D?-jma8?EOpaebPFO-(o=!rMeB&C*b}U5P zNZPrXvU@Xm-*)oRy<`mkwR8=&^^LXk^>hu44;*?O?u_v#(I4zgo8aV5@V4<8M+B@Y zHnR@WrVX7M=p#V)_MC#W;lo>>*0nsYeeiuHK%?FK0%g)eAKlpf-n-l0xxV?W%WK}c zwCd9N%=4#GPc|f+s$bYt57x6At7bG*0dz!D_0&@}QD^F+PuE6VyAX7EFLl=@NrYW2 zEkk+ajeXSo!;=b+$du+QmgP?_JE2%ztXf;DeyURI=o>1Diz&-eNI6;L^|_R->xgB> zySGqxZYCYsLb0)u)zUS_bN;mT4RrJkbPWwn&0c=X#6QV;uh82v2Q$amOUGDQqn!04 z?1KV!F_&4*qSev{8)<`0y}ivnJx!e*jh*cT>nD$@AAVnP?@sZzw+p_ydGxbS58U{0 z*Zc2nfA5_w*RHI)`sV73=ayeOz3g;T;;Dv(O*Ju1b#of3rZ-kcH&snNT@&3@6M5yd zUqh+Z9(ZgZ7Oni zf&?n$YqLq4S5vmHBkkNEacrNIvGHU*LqmYp)i*FOBA(_5A8uq~_EdPEmRE?v|KO{# zX|V$OoDpX1I4fF@^i0Fz(+yxf`%L}p zleN>%)Xcch6#8bf#lamCJFrZ2JC=!3j~tK$|#4&qA_`^}W;aL;x#0d^=8?}|kIK*KTa2QpL;kv=WhQWcx zo}NbFZfmVWdiLaT<--T%_wN>eb1NULKmBC?r=RS5|NZUnzO(V_Te)w&m2>5M=EXB< z=T1S_iD#SR&Na_J-!$iZQ`Cd6V+s!|AKW?V=nm=py)wu4OC3KblYdyY;D}=B3AM6( zjnZQpOW91Est&AJH?7)f33*_vH=aK_|1uSc^v4%SKr1 z1k4?L=3yqigifpKAE@o?tL^Eo?d@*t>S}0xR@?HZ;^F<$dv}YzxqbZB*GIqn{J_T_ z?)>20?eDy^@tx~=SFh$?zL@dmh4k}h5-*&Izj$)tl{53+c{8}CSpVpr$%l7OKDK{y z;Q_@H2PYLARy^^B0uYxRQ!mTc!K#&t0=@Dgoyrn@EK#hH{gW73LSu zm?y+YVY%s+Rg$3*vI>(`v~<)pwDGuQkT!&(4Gc~74GA}nW^8I^Y+}*+^p(H&`yX;H z4R^)RyS;|GJ%)R{*aIPa8g7^mH;${@aIdhfT-JUrqkukC+TT~z+gsD!Ro&Cm&_zhQ zy7ftwkagjA-yHw;*3p|^9Q^d7Js*9r(^Gjb!GXL%c&R7CcSlf;e+p2 zq{UL2tM&5_s-8HYetf@5{=vxwZ>Sa=Rw+87T6R>u+0&^NxXyuHx^RH zmgvBfL*wab_J4@2Ug-A<2N6`AGf%PaOWt^SE<7^sX?%>i6 zFb4AndrNzItNQzD`+6Yl`e&_`PoGviepvS4UNKmIee;daKimJ=$9ryku>HgLH^2MN zns=|~T)(pH`sMhGr)JF#lPE9HDt<%b*b&5H-TXu9#m97tj%s7o8I~j!9?`~5EI+F# zFf2Q6RDQykxL%;t63dKha48URHIO;6{; zM@Lgzn-H~$2_CHt#6p1sv?)M?zUBY@^tV?U->?7jLv8T`?P2|`&I6tH1DynGdVeTu zV3vTnaE!ThjGN7;ujMkfa+teW!v}}@iw6d(`g^OoI;+~-$~)SspFJ&m`lR&1y`sB! zj@|m|&{sG2fAQI#Pe0o6@rPU9zrN=EYZ>WDiu0o+Qew#s#RgT!wV~GHWBR2>^`PI9 z<9a2>4T_KH;nDz6t1L9FC@{qqix%q2tg3NwU!euIxKyN})TW`-y1BxxuF~>yjrG1A zJ}FCK)C^5!T z@S=QU2o_68t4^3=#Zfu2a@e@!m|?{UGqlPA^YVPt$^x_MB8#eG%Zfr=4`NMFF1Kqa zw{0r7Yb?WcK=yB6^k1G7nw$`yn2U*6kY+1pjs-BHo{tgQ8E@uLU%5APnm_uZk}U+(|* z^Q{F3+?T{sW9Cs4<0uzTTGW@?z#&%`TZjZJQf|cwlZq3jfLnsgKu(yIp2qm4LA7|FxR49%4KfnGm)ef(gsU=y35hJI!im+%G#b5wLU!Y_}<~WcXnMr z7mH%`!Ud8^apdL-vokgJxL&Uw>r6_B>-B&e+nN$fxag`PtR}S(H6X4iu&OGwt2kj( zRcupR>QGZ`S6gNe&_o0161!8?u34#mN%65MOH$Gkla?(_$w*x~fBrnIVg+nzX=&&h zqb&dxdU9h#ZGB?oMNkHA?9?|l)HgAIZE60ZM;dC+ZhsQl_RO}e#jv~8sJq>|ufvhn z>(3d+owV_En?-y&?xLSM%FZ5Puj4Z|@mX8>jGbJ@e%5f|@IV=Tu%f%OVxX(E{b^xO z%Yoh7jN=xO7sXK)Ev9B9k*=S1JYD5{vdR@}ONdrxEAqzh&xpUcCbzQ48i=ck?5c`v zaRpFip><_}ZDo;7O$qkcK-bvT7TYzHI5(Ht9X%A37#E+gc=6K2CCieN(3YpBWGqX~ zShke#;dmyalmv7Q)>?Y{NW~2Z2mT{s;Sda|I1$8+jsAwLd)n6Yv?p~u^=o@(_Ux%n zce`;ne0YyLb0C;I91R~%JS72l_G2v_=VXs_*N$>G3OHK?>}@>O9xm-DZJ-3WhkHwU z+mD}V4oY7}Nl2tFUQCHyNO|*=)8z)ov$Za#s$EXkxHeTfpfyww>&NQLY=odKtBb6G zxVqS`y2t@Su7v9@1YBEyt|_q>vbL)&ai}Y`uP=8@UlO@w@xsLT#VH91sYy%HQouSf zD}C9Du zN~ih?hq`h!tQ)jP-UXn~K^GFZYlO9z841L#*9&fEYsH2h%t19cTWHwWtwADd{u z*XpLDzvi@TZ^>+Xmeu|wtgXfT>0`b2Hp7k#L-T4r4(+Wo;fQC!3tToOJVJzqc=VT{-7->7>_% zlU}Fm-Oe_6o~m;@RpZiB;aped*jV8T+>MovkZNrSnp0(gU1hODb&)+HH9%JuLC8+E zWws6FE*BdDQW7E-$IV-^a8Yss;kuz{;WjZdjd0y7GnS)eXJ&*11rV$yB-FIDG$bX z$Y5Pl>{wZBk1Y@r(k^yvEOV(Yb*w%SoxE`F!bP(Z7A*j4C^}_HJU~OyATILWpq#rR z6K!>FHbOR4N)oI!bTId!uc@c2X9U-6=?(^oYu!Po;&KU6L(n9bMIzD~IC@W@^y%^7+9O36ojBfhmhT84Vq`&@D z`u0uvuRhoM;v?VugOv7`Szp}n`QRO|>z6&QU-Y?p0lN0S(Byfp$@5aP&)Ej=Q?(w= z)ou_qh@Y%+YbbN9FLeS?xbeC&f_QzIb6u%(ZLtejzjZ1gG1fOGc0pXsg2k~hiHjE{ zAxsmX6NFjWPYygaD?JVIIwvb5FE^V?rOL|5t7>YhX=!Wd=^7jA1i9OTZ-|$Du&1!& z?GWT?AL`@qItljI97{*%j`l~%Esy*jey`W^Si7S|yYrc0Z-;e%ryXm+oz~|?JPDc+ zC1B1RBc6|tG&Z{J)>K1mYs=x!ovY!iOC9RVo#3tkx~|OS zWVzFs`iR(hbLPd(h>x3_urO{>Tx=2|b;4qlO@KQsB^mJ=#M751BLjyg2kVs?>3O+1 z5)_L3N*ir}6j>9)2oZmN~GV$I7GiWpzAVaObP=&p-0J@s7_sm%Xl>_jv2P&*jrzm(Ti~ zYw{pMcC7~??OM;e3fKBdHwYOXo8VjO+)(Zc*0p6$7aH7B7kMv?nX@Q%-ogd*X`O*|oZid7RprPyB6i53WdGx@x_xY0t!~{T)AgPwYrW8Es&Z~b;4T+6cy+gi5|_GShoc7r7A=^& zX#PB8VhM|4mMmJBxOkz+bqhP9+$;fz)0d`TWDQYca4i(|@|-LpWb0`vdD@%$I9mn^ zSp#=~JNR0GH9ElU((*vL^Ql^Qo8C~D z3A@*xIp{eyn)%^-O1C~&ymM3eyRX%r+|hn`SMTYg=MOU)99}&#x@~-9+X!dFC}$my zfg8~*?RXM%@9U_Wp9FsNuHQed`n`S0_v!`j%jbL$wa+%XpQ?9ju5~9^SA(@vLnY+w za;Ds^whZ*$65{+8%#Dd(7#F{ALHxq`U>z@X-4HdjoE%SN;378;*9|w03>@kf<>A7R zoxUZs(3p#K+?g#gM@88jU@SWU~ z`wA_OlzN|O4s{wadM(CAHobja;fs%DZ+)Tg%`N%wzEyd0SL@EV&zE!bcgOR2JIBX% zjgRac6KosfZ5roq6tHl&nH7B<2~Y3OzI`+7vk!ybf5-owEBtLnh>tOEZYAtGDjRu+HS9ou4CrcN5)4R9l{SIlox_|QE z?)pa$XWYN*_~4G>_uox=a(`0GL;1dEYU3j*XU-|T{}0NiAIN-lQ~LflijTfizW+$O zvu(EMV0(LWCdPJ+^7o95?3x(aG0NWx)?@sQW1RJT#wvP$dh6o_cW=+Q`El4M?+5?m zs_*s7es7)ky?n;&;wkqtjjm@J+)mX2H=5hY8t?N}-Wf|hW8>x_I>*PxCdS7l#>XNV zOG=1KS{yI(-a^Dgu!gRMDH#eWM7a!}T$Gg&MKjb=R%96KsW@Bddpel;xqvl1Hgs)^ z7%c>C1=sEAWZ~}cw=07`eX{Do{h<5b8a=uz`{1s0%XcyZUDjutWG`H%UcWB&(MRO3 zK9#zESFYue%9F>wKb_Kok%QwS`$tFjjS2RQ3U-e2wn5iF2)2%+@z#y7^H@V!eVvI< zAI|^gX7uMb!rs3gc>S{PwM+gOe<4o;?(Q?agngW?h>j~nO;CoS5vk$cU2OG#I-I{lr>8US@%IT2?>ayDR^{Pc>1PjQ`g#Ma zs$|ccp}cjK^x+N47oU^w+?Kxo@aI{-{@!IHBZnr&4vmlR9~;{{GO}lcORyf{Y?&C@ zHqPHX%2_+YUc;s3(EFEnw#47PHT%m?B0qUI_=9Wy?_Tl4aQoVMuQyM5ym`|7>`AxF zrySR0d&eLRiwM?`e?NP_f3oe-{m}1k>pl8T zdUP~&?*VdAi9}N~_41n%AK##Ub&GoUJDJv&=Q$Yud`wXE!}#$ZCf*nyJ1`>HJBG&J zGs@pR&fShO=_nubAnQjs8+oj?Jmy;VFrLS;yyd~7yI;@x`qQY7t_QyVmhbgTUf0h0 zym{XB+Bw@B@63o_JQtbv;<&ksV&|eD29KS*WMNVQ(NYqKa<^!BC1NcK&_di$G;l-F zsDXnrG39~k=!*0-Icch;iLR@SF=)b3dpKBlyIOi96BGJvY@u;4J9Af?zgJcUc26EA zKe%K6=z;3{@7iqLO)e-PpK6r6dX@CSr{tTrsdvA{+{g3v!*trtiSa`}j2;{RVbA#Z z!SS*EBZ55>qx;53_l@v&33%JE+EBpV%ww+?a5r*U>p9G|Si3UZk0dSi>Guo2xjFsw z4}(6q>IdBaxa9rbWuHws0ZWqREKQD^H6v`vVr1R(plBjG3qhwQC13(eSTG^Bq7s>? zBl6)tRZajJ-W%0Xq6{A3tE)A|&ceXO7Oc%Yoh;G3oUB0H-2uN^xZ0UQ*Y0*EPS$@f z){h@8ZF@Ac{juh*UDVal?^du982zLB9E=OjpO;pFp!%dnP6hPfQ#_`(c9c z-lHS?Mg@Dv$H9FM!J5B)M6jLD*+?|*#!>DjE)xsVAnhDlUuMUX`1@Z^|MHX2Pp$`i z@TTXDcfvDLXQZdZCa1(MO0;cd0l2{$qE2422rVUX(Q_3qiN`dSFab+WU7Ea< zn7$O1$cVBD?A2m6D^(cb1U>8{PIXn2=ZDV|RazfyI_GUJH1McF>9bQB4%k1w= zd3R)?K9cV4 z`1vXGLxUT~f7m%TwtHe?|HQ;TP#zl-ZTF6k?1cj#8`(K3*e&4h6mWJ3c#!tC5k6RN z;j_1}nHz`&X}IhDVCHaNO2^~bk8V$m2r~>0b`J^mh>GxCo(e@TT#=C^YB?*GW@n}* zE{cVtUY0~mNhc>_5kev&wFtCO+RqoCWG*9y(yLZxp+p8b&zn7c!MxeBl2lV8En6!? zh}zlC43ym*EU~q>HFdBvwYN2~w>EONGO#pIGtp6ajV1i=ht}Rc_rO7^yfvf)2g!By zSt@RcId|ra zd9!B3&Yin3CPqtB!NOG6&f3_?-W&~Dc6PLMurmW_G#e`;D|02$dbC+cQ>2Xy3n8sQ;F`hR*zJ7dS>%_#4@$nsFqdNqG9VnX+ zm6M76Bm7-Z^!Ui0F~RN;{&pfa<89}1Hshw;#C^Hh8%K!Su&?0{v5a?AUp87tWtENmjzlRL|bV1Xw}Y&c?*n+6Y>9v^N*^jr28i zRAscMP|?y-tX^lb|919n+eSIKpITN*K6~n)92%3cd}3tj*huQcSoZk%nz8ZqKm4#| z0_qlQMfNo|x^omIve8`v!7e_3Cq`Q%yqzQb9Vn-WSo2uO%5VdAB;k3Sp{$Smdl3(`L_{9y5RL!Ugl<cztc5b_wPj>IzTQvE^*`ie>%fif(4_z*fBx;_(<{?KYe^;#rVjY z@zJ%I$DA0$?8c6X(VgR?koHc*>(Nn+talN0GeYA#k(-Thk(F)XFz|$hb?r}=zeris zzjJF|WLO|*Muz)EhWi73bY#HPsKDt{LjZclw9x5OgJ(?-pE)fOtg)Rved^2^Q)f(# zo;iIQIUMtH@Fmr6vCTi@nBsN-DKVj!QiGKI+9|8-@z?nm9pS3J`@tt4nPoEYR z8R-wF9Th=Po)#TEV_L|}>7i)o0QYmsGot6roH~0>6vT@h8*qUep?U7?nP@`Lb7JPt zi;Ig%SQ2kys0IB#Prz&unhg=1%}sQ)G-Op2DT;DbMH#Z3G+9=PBqv4I){uSi`@Hu3 zBPUe4+J4TrF$c|OMhVz~BdiDkYleU`U%*{F%1IvOrH}Bk1l*jlk+l$%-9>c`u@Y?QCc3wL`MY!F(f=S3R))k3Pl|~5YwpbH!p>~??YNlvXbWQ(#4lPXEk(7nHpkNk9PG>?XB!JM zOH(~94Y|pR6nQz4f(%tgk}O3$y`6YC9F z7K_douosT7lQ^st0r50C%xC3|k8T(n*)k@?J<8vX3~h8|=ZIhj;`R90b{=;-Tz7lR zvVVE!m;O3$HZrTw=;#38o-s9?5cRZ(xwEDcik==hd*;-+GpEj(89jS?w2<$td9!BD zoi!8cj+rx?NXFo|<6;)Z#w?7BwYIi0H_>ynv%}|}gEe!Q_RFveYit?06l4P6) zcr1x<`7rU=DKxAYf9Y5Ho9v_y1@ecyc|$%NdLWM;%4baDGUsv`F#=8^pO-emTQS1R z7VuV&jjR*!HUjs==r-tD)J8|P6OF%>&D#E(%r!kaEIK+A+o@B-X3mHLWhiDBIhZ;o-cHwwbZ+Bsnsk z$&LoTR0{FfZd{owqKyCHM@mMvxgq#Bebv|I#mu1ycAqnM*qt-%$sP{GVo@G_8iz3p z>%cjT_)%^eo1F#Fqr6q)y!8{KTYebdhMatSblZdg{(LKcWG9ccqqX(PJFsHNV(|OE!Z2H0xUMi21 zIl{}~bFe&k%{Z3*gYww6QNb2IZ}SLm3y-<2ujhB(YaM*2Mu!75670FNXU&;46KNP4 z_5(Bmv~cV^M+EvOX~)f#mST9CSy^lDt_=v(8s0O%J@ZH4cFr9>u4M3=@=Utn3|g4L2>35Ce{{a zww5NI?uI+Jd0)E{)%s+?D}FM}0HJ<9&-_w z_5Zhb=09;=R~&DQ@q)3ztj1vWVTaiP8#}QvX0cg@* zQWd3Aeyh}7s#K||nyOZvG!7Uu>@e(j@Atk(Vnnq01wc7g|O{lUTKlt$By-rlwXkOj7TSrIVXq${b|6Y}qbs3Fihzr@#n97A+XJ;YC zMuEhdTm>Y?QKwNMVS)monNjO7>r;m5!lolTm7;`oHQ;>E((`PBIVME^pvQM56}MPPuXK%@6t_I z=cbZj(Qx1^GjjX13|g-(Tv}U9$K;OHCFaA|?D?B3BJ`SpuzdG7*nu!oXqFTm{Xv#tE-7>TAw{t1xodP+2LFNsEfEmSEsn zMd@MZ!;sj?`3R0jU5-InNX!Wht(n}eP}a)}+jv52IP&9eu3p}lBCsViFE_Nttgqkz z-{2s>kl<4gIwZt5GTa}j7-VU13>Tc@lQWPz1_^d9^(qmD$;6TI(rEOiLHeXK5}91= z?d{>{=nxX@@$!}0+q-gdT)8$aS%t(?(xsUMERkWKeSc*x1(UYc?N>11f6cC1w`(_+ zi#AvF_tp%L9@O5ySNm|Y8BMUs>22Fd_KVN+kPzd9W=XKz95kO5Flv@6VO4f6wC0Rj z$seKh)qE|YGVIx`R;$=--14%@@^a+HP1Oe2DLgZ*7;-~mSTQ6%?(XL4?G1O0d0p`J z5E`F&d3(U3p*75zGivPb=@*3gUV(nWL8k=4TO};iFC@q(T;K=drU{qv)Fg7?Q zGAKII{|u&sB`2Nm_COHGZSek{?+NcXVT@21!8Rrf3x0d@z0z-<9=)(K5x;5^FV8To z?bE2QlU8O@mS!$8t(UV_?YZkqd1!e(SgUxvfvH=jhif%!E2eGVu#ETKTd5KytF;lB z@meDugSfD3MBUIDvwLtXF33+hgGBm8xbdJsWmwV*roA+C0d|f0dflG6Vb9uFQQuoFxW7{Lctd}0!!Wr}_BL+m?|;*i4MwABV9|U{jp_1;&5%VYEiQ&pquWbgSy_cahI+lpfT0V< zYLoGps|yr&clX56+s6k>rXW5)=5o~2%YCbAKII#5irF$kvY>zfK}c{|Xh>8_bJrFC;ifB#J>13*%%GalA|-lZeE4DT={nk|`}WES+xNOK zwpVnuDh>MbwKghn*5G31%p$aW734;13wF(>`4sE&4;?(H$jK?ju*0Gv-ht!D$z5SG z=pj1%xgIXPvZ_{ZfI)lvoIp(t@9pa9?CIs<FxnR4kOsg%WYJL=q#F#>PwIP-Nm*u=g#ZZGrOZhv)V$tGEzlq^h$F$Z&D^7O*g*_F8umKU&i!o`)@3#*96?V0P# zS?kM6`(ojg?R!gBzRZ8|s@EVeJ0y1Tor7HhY)yQjO?Z0^D~TWB0p zUlfDC1YD3P7xRkmwjQ*_(Zq%ExcR$r3y|A}Ihcv|nRE8(q(vw`1H~_F*v~(h%UYRD z`({GjAuG2Deh7V`W>H^&XM@OwzQ&Pet=7eT}8Slm+ zHxs&?SvS_uz`&Ji1DoMxtf<7-Z~Xk@p`jZC{rv;%2gm-tzCP|8@8OjFSgqFH-X5#f zVzHPlP~B>U+-CE2)W~uXGu{N51m{p6(u;&qFk}?=z9cR|3b}XV+}@=z$m8)$ju4OjGB`hc3lP2uF)H+t1u~mjb_2Is=NrJk(Jq(2ZshmMn-Pj z7#SWO9vK<#=YIP7dbgzS@9pb@XV><)g^3uuO$fQ|Gtz}AELA7Q$>OwRc~P=5E1$AmetS3YL%;dg zzsiLh=d)*AV8$9>tk;qY%<{FG*yt#oPFGUITsOo;-V8N0@3#?{L1_5xY9su%5t9OH zs|@<`ilj5~o*u5)Z(Wg{l9rq_JUleeKg5YW1gY_&ufGQ;F!bJDXx$5~`+K`#+c@_1 zSbMA%6nJ*Xjm|Z>gjqE9ZHLg1n{)5NM7b#Yvgn5%YG>cSeKUUkPQ;=u+KwRHCbmyX zmZ#*)GqOeGRp#UE^Ji`2JGSmFTsLcCD{`POYj&Z(L#@;z6xV8;osZ<@k14h|077#
    sgGvm_PJK>9Wg|O=-n+SO``;^!|C7GQ_oSMLNEpE#E4h4{({We#jVEJ&gw$T2< zuoK7)gKE2WEj{%T0`Ic2G8i?KuXz82i*|BiQJvSD!FcCLD5eKI|HDm8R zor@txXmhC`H-v^8M?w1-jVw57R!4KKX;?9D$ovTcZx((dDl?#otxr!&b$2@&8sZ-& z2nr7i#tHJ<&dyH71=;a33?cRp6`X=y-xx+64xxKs%l*CV*n=qC(q*-n&DO5#9Unno z*tn&u69qz>J3DY>EA~b_R)(C(w;r2G4A+f!VAm*hMq^`54U!~Y z9loWM#dE`$BOBSUcHy-@kv+Sv?oQLdXi z&6evHYZr>Os|(RMv~F*0_~kE*w{Gr@T{v%jC7m3PoWB!2IVPAHi<+~EY@@qwuA)xE zx;W9k# zM@I+8#D>I138JF}`yGCkoD}7H^dLquAX|cR;Nbp&L1x$R-mq)lzq=SbXg95z51^yACLEfJ33F25MN7l{#Y&qcY-lw0G zkMCtopQp#avo;>LIxawEJ$*;?<(D7)&}BRRzDmV1rERT^`D!(c6c!CxVaJ>~>(QZ! z6IN5}nbv%P+zoZLO%3(UjSVf0jg9qnSXmlbGW@kT;va{Dc*%w%VKGAohnT4F@*;If z-sKYA)*2Bz{>a;V1GX{s^licHHzBs$SdwukVUR0>mD$)vaGfK2qiZofp znk%JwS(QakC!)U0E$yLe{(CcN?91@6(Y>+dL0yfIYcI1f3?3WGqPoTj=e?QSn5|h; z&7y7y4T*Wz4Wn*usK3_K*wK2ev%T$lds|7NMwgSCr$|F7RHkc`8HK8htE!BOf}B01 z-K*Z}KmQT&`4_vZ7v@JFp}nmPmdk}Q8F)SbDoy`+_WNH_Sd&|yJ!1RI4`*1kAFS?f=_qzM~J+u zO;yIKax|_Hj-$&Gv#|MQ7m_FSaNyOZYYh!8^$@zb{aQYP-a^74nRDepMUJ@NSe`B#B~jWyy^-&OG5 z{KCSpYpiLe$V!2x5H~yReKmKkRitQgQu4Adsxp(|##M?mwPLS2w>=@yw%=rXdtoK( z(qh?fbZNn^QCVx?pL5fcSt+XQOUmpNoeC>0WaO)ohlkSd+|J)kgM!}rz>jSQzT>~J zr5WpQV3}EyHs?xlp|ZFr>*L|9n_ukG5!ySBi*A4j5CI}U1c(3;AOb{y2oM1xKm>>Y z5g-CYfCvx)BCv-D%uO}#p}VD9eG>wYAFaK~*Xg@^h`^I4PxjE=(yhJ;0n++S=u~drwLBn!^%!q50#x@VxKrGd?Rc$^8@lGk9L;@7{UzXlZV`^(Xx7@4}>Y5g-CYfCvx)B0vO) z01+SpM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx)B0vO) z01+SpM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx)B0vO) z01+SpM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx)B0vO) l01+SpM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOiO{{||x2G0^}3 diff --git a/apps/desktop/src/main.tsx b/apps/desktop/src/main.tsx index ddbcda8..1f02a2f 100644 --- a/apps/desktop/src/main.tsx +++ b/apps/desktop/src/main.tsx @@ -757,7 +757,7 @@ function App() { alt="Logotipo Raven" width={160} height={160} - className="h-16 w-auto md:h-20" + className="h-14 w-auto md:h-16" onError={() => { if (logoFallbackRef.current) return logoFallbackRef.current = true @@ -766,15 +766,7 @@ function App() { />
    Portal do Cliente -
    - - - - Raven -
    -
    -
    -

    Agente Desktop

    + Agente Desktop