From fa37a82b2cb5eb965c498e632bccfc850c1aa27e Mon Sep 17 00:00:00 2001 From: hailin Date: Tue, 17 Jun 2025 03:09:11 +0800 Subject: [PATCH] . --- Windows-client/PlugAILauncher.py | 138 ++++++++++++++++++++++--------- Windows-client/build.bat | 41 +++++---- Windows-client/logo.ico | Bin 0 -> 28875 bytes Windows-client/logo.png | Bin 0 -> 28900 bytes Windows-client/png2ico.py | 6 ++ 5 files changed, 129 insertions(+), 56 deletions(-) create mode 100644 Windows-client/logo.ico create mode 100644 Windows-client/logo.png create mode 100644 Windows-client/png2ico.py diff --git a/Windows-client/PlugAILauncher.py b/Windows-client/PlugAILauncher.py index 0171abc..591d7de 100644 --- a/Windows-client/PlugAILauncher.py +++ b/Windows-client/PlugAILauncher.py @@ -1,13 +1,20 @@ -import socket -import json -import threading -import webbrowser -import tkinter as tk -from tkinter import messagebox +import socket, json, threading, webbrowser, sys, os, tkinter as tk +import pystray # pip install pystray pillow +from pystray import MenuItem as item +from PIL import Image, ImageDraw, ImageTk -UDP_PORT = 9876 -popup_shown = False # 确保只弹一次 +UDP_PORT = 9876 +opened_once = False +WIN_W, WIN_H = 400, 200 +ICON_FILE = "logo.ico" # ← 你的图标文件名(ico/png 都行) +# ───── 通用资源路径(兼容 PyInstaller) ─────────────────────────── +def resource_path(rel_path: str): + """Return absolute path to resource, works for dev & PyInstaller""" + base = getattr(sys, "_MEIPASS", os.path.abspath(".")) + return os.path.join(base, rel_path) + +# ───── 收到广播就跳浏览器 ─────────────────────────────────────────── def open_browser(url): try: webbrowser.open(url) @@ -15,52 +22,101 @@ def open_browser(url): print(f"Failed to open browser: {e}") def listen_udp(): - global popup_shown - + global opened_once sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind(("", UDP_PORT)) - print(f"Listening for UDP broadcasts on port {UDP_PORT}...") while True: try: - data, addr = sock.recvfrom(1024) - print(f"Received raw data from {addr}: {data}") + data, _ = sock.recvfrom(1024) msg = json.loads(data.decode("utf-8")) + if msg.get("type") != "ai_server_announce": + continue - if msg.get("type") == "ai_server_announce": - ip = msg.get("ip") - port = msg.get("port") - name = msg.get("name", "Unknown") + ip, port, name = msg.get("ip"), msg.get("port"), msg.get("name", "Unknown") + url = f"http://{ip}:80" + print(f"Discovered {name} at {url}") - url = f"http://{ip}:80" - print(f"Discovered {name} at {url}") - - if not popup_shown: - popup_shown = True - - def show_popup(): - if messagebox.askyesno("发现AI服务器", f"名称: {name}\n地址: {url}\n\n是否打开浏览器访问?"): - open_browser(url) - - root.after(0, show_popup) - - except json.JSONDecodeError: - print("Failed to decode JSON") + if not opened_once: + opened_once = True + open_browser(url) except Exception as e: - print(f"Error while receiving UDP: {e}") + print(f"UDP error: {e}") -# 初始化 Tkinter 主窗口(显示) +# ───── 托盘辅助 ─────────────────────────────────────────────────── +def load_icon_img(): + """Load ICO/PNG; fall back to blue square if文件缺失/损坏""" + try: + return Image.open(resource_path(ICON_FILE)) + except Exception as e: + print(f"[warn] load icon failed: {e}, fallback to default") + return create_fallback_icon() + +def create_fallback_icon(size=(64, 64), bg="#004080", fg="#ffffff"): + img = Image.new("RGB", size, bg) + ImageDraw.Draw(img).rectangle([16,16,48,48], fill=fg) + return img + +def show_window(icon=None, _=None): + root.deiconify(); root.focus_force() + if icon: icon.visible = False + +def hide_to_tray(): + root.withdraw(); tray_icon.visible = True + +def on_exit(icon=None, _=None): + if icon: icon.stop() + root.quit(); sys.exit() + +tray_icon = pystray.Icon( + "ai_discovery", + icon = load_icon_img(), # ⭐ 自定义托盘图标 + title = "PlugAI Launcher", + menu = pystray.Menu( + item("显示窗口", show_window), + item("退出程序", on_exit) + ) +) + +# ───── 主窗口 ───────────────────────────────────────────────────── root = tk.Tk() -root.title("AI 服务器发现工具") -root.geometry("400x200") -label = tk.Label(root, text="正在监听 AI 服务器广播...\n端口: 9876", font=("Arial", 12)) -label.pack(pady=60) +root.title("PlugAI Launcher") -# 启动监听线程 -listener_thread = threading.Thread(target=listen_udp, daemon=True) -listener_thread.start() +# ⭐ 窗口标题栏图标(ICO 必须;PNG 需转 PhotoImage) +ico_path = resource_path(ICON_FILE) +if ico_path.lower().endswith(".ico"): + try: + root.iconbitmap(ico_path) + except Exception as e: + print(f"[warn] set window icon failed: {e}") +else: # PNG fallback + try: + img = ImageTk.PhotoImage(file=ico_path) + root.iconphoto(False, img) + except Exception as e: + print(f"[warn] set window icon failed: {e}") + +def center_window(): + sw, sh = root.winfo_screenwidth(), root.winfo_screenheight() + x, y = (sw - WIN_W) // 2, (sh - WIN_H) // 2 + root.geometry(f"{WIN_W}x{WIN_H}+{x}+{y}") + +center_window() +tk.Label(root, text="正在等待 PlugAI 准备好中...\n端口: 9876", + font=("Arial", 12)).pack(pady=60) + +root.protocol("WM_DELETE_WINDOW", on_exit) + +def on_minimize(event): + if root.state() == "iconic": + hide_to_tray() + +root.bind("", on_minimize) + +# ───── 启动后台线程 ─────────────────────────────────────────────── +threading.Thread(target=listen_udp, daemon=True).start() +threading.Thread(target=tray_icon.run, daemon=True).start() -# 启动 UI 主循环 root.mainloop() diff --git a/Windows-client/build.bat b/Windows-client/build.bat index 16d68f5..ae2f566 100644 --- a/Windows-client/build.bat +++ b/Windows-client/build.bat @@ -1,26 +1,37 @@ @echo off -setlocal +setlocal enabledelayedexpansion + +rem ───── 配置 ────────────────────────────────────────────── +set SCRIPT=PlugAILauncher.py +set EXE_NAME=PlugAILauncher +set ICON=logo.ico +rem ─────────────────────────────────────────────────────── echo === Activating virtual environment === -call venv310\Scripts\activate.bat -if errorlevel 1 ( +call venv310\Scripts\activate.bat || ( echo [ERROR] Failed to activate virtual environment! - pause - exit /b 1 + pause & exit /b 1 ) -echo === Installing PyInstaller (if not present) === -pip show pyinstaller >nul 2>&1 -if errorlevel 1 ( +echo === Installing PyInstaller (if needed) === +pip show pyinstaller >nul 2>&1 || ( echo Installing PyInstaller... - pip install pyinstaller -) else ( - echo PyInstaller already installed. + pip install -q pyinstaller ) -echo === Building PlugAILauncher.exe === -pyinstaller --noconsole --onefile PlugAILauncher.py +echo === Building %EXE_NAME%.exe (no-upx) === +pyinstaller ^ + --noconsole ^ + --onefile ^ + --noupx ^ + --name "%EXE_NAME%" ^ + --icon "%ICON%" ^ + --add-data "%ICON%;." ^ + "%SCRIPT%" || ( + echo [ERROR] PyInstaller build failed! + pause & exit /b 1 +) -echo. -echo === Build complete! Check the dist\ directory. === +echo/ +echo === Build complete! Output: dist\%EXE_NAME%.exe === pause diff --git a/Windows-client/logo.ico b/Windows-client/logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..d998ec91da1a29f513628e139e0b03ee84c3e189 GIT binary patch literal 28875 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 g=x$U4GCkYzi~SL)ZTYK67iY6z zk^Gr&$;r>5d7KLmuyQq(+R%5to-=WG4jxY)A@w0IW!TNJlcN-SGVho6b28KEWh~zr zF*+UNJ_G*>1@&csT-^`HRbYiTjW)-%$>&l^+o0BXm)a-(Vp)8!@J`q8SW5D31cH;fNW zSONT)SF}=b78LF$viqS+gstM}SuC;;(zE~V-C;XsyWy0!m=_)G|B-YueO_pQX{|PF z-Pw5Jvld4Op;@F~z?8j96sGvFJvBK`9?vb(q9n;)q^&9K++fS6eb}0JW6|riL7Mf1+gFp6FX?BQ+A@e?BkO0%d3J%iD=804K~Dfh8(ZCP6gTV2BFPQ^wpwCnk)LB#Siy`~p00_^>rtT|t> z4c7rvEj-_V!4m!ma`$IE`}3vftxEP3{#zj~6`t-3$_vjR%|wuQP6|f3B4DZlm75=V36)ck58J13};yid{Llz{b2ae)xwfnQR ztWuP@_9SqMNS+M0*4JT&dW2A53ckjH z>H<|LVvVwzJzr9()+j)ak1KdCFBx1vfn*U=Dr}q;oVpYLyyxE!BEIAFwKS*W|6kr+{nJ?_H@@Vat=e=}-a2b*$mxbGhPK=S8R{CdwaEQCTF8druS7r%j`MSrgTXi-k*gNCAKMzImeoyih z#9;_l)z>PK81*FQf`%(5oS%_yoShR8)5qewG!1FZI|~;91;2BF>4@gfKyz3UX#9OF zTg7}ef_yFzHCT+4$ee)f9<9_Qzl*i988TW^Fc85SQ>W8@`h8NvWE5@{(m<8_eSP-# z+SgbLN;pvz#=GRy;IJ3Tvcg&UBo8R{k0t!LNR5RY`@wTV*|t zORk~pu~18229{87aiEnIflmcM@IppuCFt?snPJH?dMTd#FLROfx=zy)IF>r9^SlhA zF!47`Qz%vB>n?5%x9v|u?IS;*7ivPSZvT3;RNg%N)N3%C#qA;RD)X6cxS)OP;5`$y zV8Aa2T<_i&$e2=(N4N5U;Nzlg#uC!;^Jt*F;Iz>T+v(4_mJ>$N1Gx=A4Q>t&HXGXj z1&J*w5vKWCFB-g$KFDUKl)`1nE=(TeQ@>eD<_no@30Ms@ysc0L>N_;n*IfiqZVnWK z;Dpm!BBDm<(%&aEHNz`kK!6#RYiwlhorkm7a^=U)K68_biAd?Tx^s1HOx}8PI+tZ8hVy*UJf@=wDE%NoK*<>@WoCzsp?Ay%V&h zAAhn*`fi^hSifQ`-MKup!t!w*T^DWsq!ZA>Ymjn)|YvbLSSRnHiz79mTCYp zv<9nR=HDll{Jy4)oydyRJ}FHXlZjN`v*+ffl;y>Q-Lj~@Seh{Xg4dSA5_KXx z?#~vI$v2r-Bx}#sl1u}ML$Fn9{vr7EdA$k}Wm+qRD(9R9b%Y*K|C%}u3?}FyI3?pC zGJO}@=i*|Vs=sviIz?znMDy2yqxr?J#Nq_g-W#~6(WM0LO|a-=En^GTRXmO!jk=dQ z@^Y`Dkq=vhhM6`hn5{|^e@4cpo?TR^H`E*tY6&@n-wE)EnS?kysp{-+@E^;iLRlK-Z97%>e zg`bPhnZpU2)%H01Jy$xdtYbritsU&!6q{SEX*N%&z|k0rNkR1PUXnUZ!y0-tgH2su;O1{Jp?{f~|W z(g0yLD;MXz^hbPvhsOpFa1@S&18$@xd+w37;kjaWwhJhj0Ko;|Wv45gF0NR5*87b* zm8?T!^QTg)sbp)FCzRt4Ziz3 zowV2A2)q03(!ylIt$B+cDZ5M+pPMA;k1{3#%j}0&I|}s@h4! z2ph}&uHGVY%4n!-JARI>%B@$^R{6P+*@-xjTwzF0+GcTAaHHMwhfWnW!F{}G`hP!8 ze{Qtj;srUwU*wv6*MU2<^;=qpxWir>p8u^}41P0+Shev{=Su2)P6OqqW=x;Txg*2( zAoyJggx);8e%;Oo*gI1A!kanD9r9Yd5>T@m@MrW+(7z!$pgWN@Xa9Bj)HB&;xBGXZ zB8Tqct&I*1+IK^=_71qNr4C2NQg0NBbF*3WeEG4e3TKDwVYFgwg`*{Bgx(^FD!|{< zG#=ieu826piFYPrgoql3c2`73pbxMJsos>JH~u2dm6FI8U z;a^|)ZI5L7=LQr!^@qOZ@@Ro2dRzg0Q*Ogg9N4Fhr4SU@gW|P?M-2NcEzH1fjBg_& zh=q){2^rP7q9c($_qRBgs#g{-R@TMy=%G;;NEy++xkJjO=e2#k^HA{ZOXAdHpKG^8 ziFA<$3!&1qEz;CVBHn z$@^A=7YTGkME&bxHU(&oyU&6ixe9mv4Xd%`aj7Clvw@?4q5^zEo5V9I(1fX%)wz!P zgB@ZeTq$<@VJc~2NBfs5qfbi7nJcsE9M)4_cDfi()bi~gS#iGKVr?P_eB8$RPYq00 zChu9+{#C!=bNXdk=BqefuqqElw0Af0Ql;prI-Ue-G(~dmbAlP(Rj0ZCD_tP*-`8E| z?#GBS+Hlr#mY*yAXBejawqBEOAP&Sxtz6{%=j+CSAT&mhaWUmol$ajI7lZHNXxRHU zNvcEWwhRH)#Wcc7I?qm<TJN5tVcyflB z4nZAwV+Zi;hJycAVU^7E@E(u{w=p;1gg(Xk2xvlCe1(VK6TQR z3nFz*ssSSOrZMP)hJ9^&nHyrsJgC{T)`QYkjt0o55Z4|c9|rCV0g*`KnElB&6G(yn z%eowpWhJ~R*8i;-{Tb`DlNgLIEo;c25tJe$d~?$vq0OnfTpy5jk#k4dM7;p0FPKTZhcr0tU zzwn_P;i?Q__rzlro*laAeYNalyioGn=n|O%Mn8@M-Iz6gYyBI4e8WFIYxxXZ+;C5N zNYXA}hV4^;%>_ttuVYiJB6KMLkuje{Zf)Mg=RgT>nv;@PIm7adAixvHuwJc|oQ<v12`y{;E%rxddoAVMv8~F^7^%Vlqx0&26eKC{%c6RKuY+ z(Ktb>fAoX1D<~ExK{IK4n@sHD_W&2@_aSvPm1g^`Q1YLra--vxPpjVWDWRBvKhsW2 zXDm^%t2gz-(KukbS5L8M&hW}@tR#!wHl|p40l0ctlvLdRocMW{GcjFxK-C;9{*gMk zyAr>EqjNW%U^JK)xgbBVF#e;7dOM;`Zxi2&eTqZ`93{Po|TWp*&BN^zyJ%&5;qXiL*V~-A7Liw-ji{ z`hAg*y*u}gV6#<1d6FBriCS5rOLN5z;5e=9J+!981MOBAturjTU(!Wyz!-%I<1*K` zGIM#4<&&f#QD#ihX2JLynsL6^@5vb;#z^z`;?x_a+<-S%+r%lprw?_EO39Ovgz2lh z_itLunCR4PhFRw-tW=-9oqapjULknLI@}`_+HLy|Hs&(vV)}R6WtJ}h0Yc0t$1Iil zAjS989;nxQ3CiEYJf1`xS{wEzE+AVYAY)O~!4A0caNm7X*xJzBDO2H}D{E}apE#)P zCkeanjpw@1}8oA&B13&^|Z3&)p}9j|h42>kjdupcQSTAJHC zZ3p5z31ox0rvK&Am)1~^dXLP9g*T->eiVB7f?C%)TQCh5>bc%T*sp(NT=RTDpA=bV z+{zQcRQ%@kqeJ10%*ccBnP;k^fRsW zWsdiP8D9Qlg^^{USEhdROGZdjC&dg|W**qly&Uh){4;HdW)|ss_scOCo6f;HXhQ3M zkFgn@p2*{~oKl}5Xly1s4=!>s7nqVV-;g*p-vM){Et2alwpDI`8 zc7FEUAb0=%DiRY)^5q48nv8pT=JL>YG^iVy^Vatm&h%!-wIUqHqLx3Tpk2Ilba~3v ziKwjoN+?-BI)egu-?TP=6mY3?dv@n{j4P5(hHa5v?Og2Veyr4^84Z6zWk?h@|HRPV z0F`9fIs=r~heda)$SQpLwG)=GC!VxvD&BaNzB@2xVs?!Z6H2Jjp84P~asx|QpVf82 zF`*cD!-C%sEPThSwPW$FYOD_Tea3uLmVWg^nJC0a&++M!y^Ut8wF60o%3?=fE;UqN zllJiQOCu`Wa#i4=vG~qI(+xUzDjcR81fqt|YMa)q;nomA)v`1H!lwGP`Zvrj_B+LQ z%-xK?$2+YHj$a~)aQMnV&GkA}?Z@f1UqvgxeuI)gidb5WLy5HU3|{NP5G1~?gA$LC z1vA)~;RfEs71jB_nqERugT5S!!29SMXqZEl58dK9vTebAxP;s1_?;jxRreLJVR)~( z*U716X5_Fc#x2tmUl7^hb9t-iE3P$m;k$Nu|KuN2)!(^R?cbI7yh=46AwoCLp45ok z-BuGgqVY_#-@HAhrGd)3>y?`th^-f zi)pa(FO1+W(tZ2}zKmwJlkIphhJ@XIVe#k#`to&$X`|$82$KH1=X^=5Cx?YcLNtH* zzLt4ywCfQrH5>!FgsPK-Vqdh}j+`S>osIFpxjl{I_=AEZuy3WD!>JZIl<_ryVpR3=bH&=<$mUd2ew zTA~Dl1panp>BZ2zk-Cv!36I^T^91F5+*nrjEMSdK^!p?Y|SF@n}8H{5y<@3rCxF-pJv$^I}@W1CAB@Kx~1{Rj_G?fFsD zQ9CL-aLhH!o;<_g**en;D}=xg#z)miF9alvbMK)ly2ZB#Eg>V` z1Y2i2pZ8xdidWiD_wAvAwqiZkAY=?bt;e`P3{g|i z?pxz^FBJY@(e~BLeTH2&?7!@vpCfw zD`n^>)7V3&msG zD&jJ|=Cde5`86H~rTBb>c{4FEQ20<5>qMj4s?BXfFL`3IU7dcZ7!n(V(;Vd9kjwgm z#8AdAeQ$@Bn(+I5OOLGimBz&MNtMf zpSP_p>7}Kaqhc*K$hCI4C{a{C8@2OAnOJ@M!&l=%{(|{vTJT|rDi$w-Mk>2? zUXC1XTO03L3km6F!6?=e*J9^M558|k$Jh~%>|#T4i1wdj*~Ef>V(t?5#9?GPVK?8x z#|@VSSfhEznxE^RWx9~eu$3dP>pzmmmdXu;_6oh9)|1lKgUAt6c#}b*$@5Y_8UyLn?m2*o-X#h4caJ;=y zq%Z(urH3bPS|8olo7Q4XF!mz6Bhfp@Z!Fy1kBFyg!g2&v!#}4Wery(9s;s17#u0Ye zf)XVUbWUCQf8-1JIKC2z6MWa>n5*hoJ^d^=2aBwH0Ot{Job4@G6oI@|@EPe8T4==B zH=@>kXM9N$Eb+Nd~x5*D^^ezIQYS?RP}Y z5f}?%1{)wTkkt1F4A{hphbc;bhRWo=CjLZJy-8CP?n|r)i=YMnr`8S|jN*TvLV%+v zhP2GZ0i=}qEejX8DMhyau+6C0Q*sr+i2=WefbJ|Iw(r|UmNz5sbifkNN1*nV`|Ua& zi*s^9CdI6C?8kj9O8QMt^Zh8yfj@?Him|vkbtOhtG@HKc+y-M)EMXdw4?(JIE8o{#zHwY=|5Immkg@R<(L z$5ule(lxb;V>kDx_cD!dX?Kg*FbC9^(s-rp@{cA{Hj3n2gR}UfZkN}6U3;S+#f$ai zUG9;`n(sr_*_ZCVxNyrBSMA&l#|73i1LYkQ%lIQ?ThCf+AFBQ=4n&XkDScu1$W(I` zp*vcYf|r-_t$By>I^v|lf+rBx2{%~9VM^4A_R~eh%Zau_ z-Xk<2wp$qs$g>x{aU+`-a;S9D1te@|VID&Cu~S4|e8_vXlqKr|qF%vJW<%vvtRRnv zNvO1ha$v~i9Jl)^q3qSF@#7~6?T)`-sST=1o#E}FFF zSkPLza0p@=yMhc2V~QfJWi(GQ;^Ly*NcuEiv*I0*y#Am$q|g3OO(D11Az*2ZRxRzG z)AwlUvg>CjJsJi6jc1{0qZCeKT2=&L`*7`#6>7uKmFA`aH!?^9_0gE!S~aiP(J_pv z@v0_x-4k6Rjax>K6z$L(-0cX)K*URKjCbf`;|0gwZ2D!>2lw$ayp$bqw-;{i;@gL; z=ptnUSHo0jRezrlk^5LEBkFDeRtRtRU9*+A<}U_mauL3-+G`fQZYc$kJOxLsDp6MV zAS$B-|9&!rgE(j=JR7e9e%9E%jZz|N86xNCif*aDVz#4R@@fctK+UFXu1q1UL$nly zc>vAq=}a*49S@{2i2?6Ur~L2iJ@MUB0Touw4vU&AvcutcOzhH&@&D$Ktu8n4H;$0M z+qb^hSCp<$5Jezd`GE639;n{@NpZ*!Yn>^lU94o@ER9~~`SB%k_0;aU+-mR0h5L~O zjo)o_xIWP;wr&j#9EZXo%{Zz0$HVzMRKofnS{!l`bzlESR(wr;x$Y};if}8d`K)8Uljl7SUpd_Ay*?i&Z;G#e?HUj$4cuS7 znz_ztZ}j%~6|hqq45#N|M4>}$T@$IZXaS}27KGO0)1cpUsV-VC8n6n{*gt=J`IwEp z_*EmydZna_*QPaD(laRI)suPisOb@9Fj}s_Y~tMfiRl7NlJu*ynhXzsR7&|n!^7#p z)fn3H7*oFmPN{A&GzZ^a16(?=K&VjM1~9wTpq zmaF0D09!tMBy7KbX(aR3-oJ5HL?$CwtfG@zhwEbBqrmPFz2W3Q6T`l)&iI|EE{b#! z)=TjUV+g{>lRB`Hedb86zy7#K)0_a2S75jyY~r}uU^{gFH)x8-B51VZ$Btrg>@qN4 z*?{&Ex&EF)IKx-$U@1)hm|+dMGT^hWqt7q-X(tlkcaYzOL+mEEL83K}?pir|ObS+2 z-aBOnn96HO;dkSQGNF(&${#Ri?6pcdqB%QgaxjwxaFC}pEY@1COSDM$I7io=gU zcrUER2ZWVII)Ljl5I?Vjc<%Sr?;9dj%wWksose}1aOA13O;i2OV+R!oi9CL{ z&y60X186Y2I(He?O?+F%$$@skVg>_CDvgi7@~R?m+eqayK;ATeJxONUYv)8{PCJ9> znu7$~GIh9K-K+CDvvaN;;V&Z1ngk2D-v2(2FbR_jh)`y!4+~rhV-~Oc>j-yOj{!aM zuiqf4cW-@Ir_h)hT-&?_Cm$6IyNvJ3$}^#QFOj!A&Np$b4p&!N=TT!WD@IX?h1S2L zISn*8d{1k#i6y~Np;$kQh|gbye{I^tIriaPmdG@jAU5ZoOPTVz!G;}$HXgL^L})yi zhWU)`8gA|$S)y30r3y|XUxcw|ksY+Zd9>TC+H+#Op}T3AbMS!s8rukHtB4TgAQbDQ>9n2vxZ9V1 zhDUyzc|s;QJGRw-F&y1NiyDLHG9dgCDMnIheRtUh8KF}&7MLuc_ap^A z5yH116Jy(ucz^hmkAwVHoUHn~*X1{ybi|k*Vx&IKx(HK{mJ)vQ#C*qBxntL^>d5Uq zbX|~+$KB3sVa5ZqqW>Xu_8aTBx1XfKM13k-uLlU&0fXH%!K%E~hG8u9*GYIj$FODD z1tbH1o5b08ow?qL@xdLDo@AR_Ru4(-Pq>tc+Xk~W6vP`YUm7NCA?CHl_0^Liz6oo; zupC`rqclc(OQAmDAy9Wk#=~kQh?Ea*xa?WsTU)|gY?I>$2y^94+F*viu(O-39O%0T z#A;9lyoYB#bR+m$k*aamU32#&`V3171ueEezQIpPD0Q{+U5nxQ=-G5d{+L>uiy~-$ zTE&gHoR&v)h5G|Di7U>XCA((+Cz%+F6JH$}&j}W5^UlexZ4cSDYHEx{UGqIvZ6UYn zVYGkEmEoUuHB5pi-$-2J0xPY}uKpu&LP;7z#Wg!Gu^Xw3lIK5V{TjvHB3{35MY&3A z317w{uL#nvC+!Jq^Tr@`SJhPewe8DYm2*n&L3w1rZeWTuY^~wWLFRJw;2_AsC;Ua~ z6{yE)9K(+IatH^N^4om_^PEbn5=^=Lf`HyE{!DcCP+cOYWwZDGi~SM4+r(tFA&R~y zWkoyhCZn~sM|H<7g1k>FJR^ge0uQpPz$ZrBs>RR1O?JyaA9M(J$l^gH@9O9_iMK;R z0iEI3@ALL17MIqK_8tVv!b{L680!k>|F^EZFQp**(Jr0@;~CW+W^9+j#I6AK++#sc zY+fclXs4Zk*S152h_~;mjU--y;Y^yx1C7ftw8z?+g77$tgz!Y|Rq7L8DN%;F)BSc_ z$?KR2OY0+nP15wE;rq`%H-rSi%M|eR$fqOV!7nZra^r;ZoYZy=0!*b}uWv4nsK0c) zTol*ro(fPWGQwX$Nt}up(UQTU6AEFGhMS#7(xAuf7J85r)g7W`fO=FLsu9FjJ9e&sxxZESyjW z#Z#ON{Ky;2-w-8i7t%T}{%)-_gKBg1BgD~=;q1NHL;tM~vQK(J+87qNe lKRG_|ckU2k4vzICkxcbj3-kkahLJf#(XY3f|96+_{{a-+COiND literal 0 HcmV?d00001 diff --git a/Windows-client/logo.png b/Windows-client/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1e305f80b1b0507a263ce9f714435b750db501ab GIT binary patch literal 28900 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