From 2b8dd02b5f245ede1bba58a340d7c854ab792298 Mon Sep 17 00:00:00 2001 From: Qiu Yuzhou Date: Sat, 25 Mar 2017 15:05:17 +0800 Subject: [PATCH] Use diferent icon resperent the proxy mode. --- ShadowsocksX-NG.xcodeproj/project.pbxproj | 24 ++++++++++++++++++++ ShadowsocksX-NG/AppDelegate.swift | 26 +++++++++++++++++++++- ShadowsocksX-NG/menu_g_icon.png | Bin 0 -> 654 bytes ShadowsocksX-NG/menu_g_icon@2x.png | Bin 0 -> 2192 bytes ShadowsocksX-NG/menu_m_icon.png | Bin 0 -> 642 bytes ShadowsocksX-NG/menu_m_icon@2x.png | Bin 0 -> 2114 bytes ShadowsocksX-NG/menu_p_icon.png | Bin 0 -> 640 bytes ShadowsocksX-NG/menu_p_icon@2x.png | Bin 0 -> 2038 bytes 8 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 ShadowsocksX-NG/menu_g_icon.png create mode 100644 ShadowsocksX-NG/menu_g_icon@2x.png create mode 100644 ShadowsocksX-NG/menu_m_icon.png create mode 100644 ShadowsocksX-NG/menu_m_icon@2x.png create mode 100644 ShadowsocksX-NG/menu_p_icon.png create mode 100644 ShadowsocksX-NG/menu_p_icon@2x.png diff --git a/ShadowsocksX-NG.xcodeproj/project.pbxproj b/ShadowsocksX-NG.xcodeproj/project.pbxproj index 7637df7..cd8ee0e 100755 --- a/ShadowsocksX-NG.xcodeproj/project.pbxproj +++ b/ShadowsocksX-NG.xcodeproj/project.pbxproj @@ -53,6 +53,12 @@ 9B6BF9521E27B23F0061B9A7 /* LaunchHelper.app in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B6BF9501E27B1F20061B9A7 /* LaunchHelper.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 9B6BF9541E27B2570061B9A7 /* ServiceManagement.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B6BF9531E27B2570061B9A7 /* ServiceManagement.framework */; }; 9B86459D1E7C2CAD00A84029 /* ProxyInterfacesViewCtrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B86459C1E7C2CAD00A84029 /* ProxyInterfacesViewCtrl.swift */; }; + 9B938D991E864B38005F5636 /* menu_g_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 9B938D931E864B38005F5636 /* menu_g_icon.png */; }; + 9B938D9A1E864B38005F5636 /* menu_g_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9B938D941E864B38005F5636 /* menu_g_icon@2x.png */; }; + 9B938D9B1E864B38005F5636 /* menu_m_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 9B938D951E864B38005F5636 /* menu_m_icon.png */; }; + 9B938D9C1E864B38005F5636 /* menu_m_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9B938D961E864B38005F5636 /* menu_m_icon@2x.png */; }; + 9B938D9D1E864B38005F5636 /* menu_p_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 9B938D971E864B38005F5636 /* menu_p_icon.png */; }; + 9B938D9E1E864B38005F5636 /* menu_p_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9B938D981E864B38005F5636 /* menu_p_icon@2x.png */; }; 9B9CBCA61E25E1DB00FC61AA /* KcptunProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B9CBCA51E25E1DB00FC61AA /* KcptunProfile.swift */; }; 9B9CBCA81E26312E00FC61AA /* install_kcptun.sh in Resources */ = {isa = PBXBuildFile; fileRef = 9B9CBCA71E26310E00FC61AA /* install_kcptun.sh */; }; 9B9CBCAA1E2633CB00FC61AA /* kcptun_client in Resources */ = {isa = PBXBuildFile; fileRef = 9B9CBCA91E2633CB00FC61AA /* kcptun_client */; }; @@ -195,6 +201,12 @@ 9B6BF94B1E27B1F10061B9A7 /* LaunchHelper.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = LaunchHelper.xcodeproj; path = LaunchHelper/LaunchHelper.xcodeproj; sourceTree = ""; }; 9B6BF9531E27B2570061B9A7 /* ServiceManagement.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ServiceManagement.framework; path = System/Library/Frameworks/ServiceManagement.framework; sourceTree = SDKROOT; }; 9B86459C1E7C2CAD00A84029 /* ProxyInterfacesViewCtrl.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProxyInterfacesViewCtrl.swift; sourceTree = ""; }; + 9B938D931E864B38005F5636 /* menu_g_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_g_icon.png; sourceTree = ""; }; + 9B938D941E864B38005F5636 /* menu_g_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_g_icon@2x.png"; sourceTree = ""; }; + 9B938D951E864B38005F5636 /* menu_m_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_m_icon.png; sourceTree = ""; }; + 9B938D961E864B38005F5636 /* menu_m_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_m_icon@2x.png"; sourceTree = ""; }; + 9B938D971E864B38005F5636 /* menu_p_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_p_icon.png; sourceTree = ""; }; + 9B938D981E864B38005F5636 /* menu_p_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_p_icon@2x.png"; sourceTree = ""; }; 9B9CBCA51E25E1DB00FC61AA /* KcptunProfile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KcptunProfile.swift; sourceTree = ""; }; 9B9CBCA71E26310E00FC61AA /* install_kcptun.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = install_kcptun.sh; sourceTree = ""; }; 9B9CBCA91E2633CB00FC61AA /* kcptun_client */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = kcptun_client; sourceTree = ""; }; @@ -282,6 +294,12 @@ 9B07EFB01D048E900052D9DF /* Support Files */ = { isa = PBXGroup; children = ( + 9B938D931E864B38005F5636 /* menu_g_icon.png */, + 9B938D941E864B38005F5636 /* menu_g_icon@2x.png */, + 9B938D951E864B38005F5636 /* menu_m_icon.png */, + 9B938D961E864B38005F5636 /* menu_m_icon@2x.png */, + 9B938D971E864B38005F5636 /* menu_p_icon.png */, + 9B938D981E864B38005F5636 /* menu_p_icon@2x.png */, 9B3F7BF71E82BF2D00C68B75 /* libev.4.dylib */, 9B3F7BF81E82BF2D00C68B75 /* libmbedcrypto.2.4.2.dylib */, 9B3F7BF91E82BF2E00C68B75 /* libsodium.18.dylib */, @@ -573,6 +591,8 @@ 9B3F7C021E82BF5B00C68B75 /* libudns.0.dylib in Resources */, 9B9CBCB41E26453C00FC61AA /* start_kcptun.sh in Resources */, 9B9CBCB51E26453C00FC61AA /* stop_kcptun.sh in Resources */, + 9B938D9A1E864B38005F5636 /* menu_g_icon@2x.png in Resources */, + 9B938D9E1E864B38005F5636 /* menu_p_icon@2x.png in Resources */, 9B9CBCAF1E263B1600FC61AA /* libpcre.1.dylib in Resources */, 9B9CBCA81E26312E00FC61AA /* install_kcptun.sh in Resources */, 9B5832031E741F8D009D5B7D /* command-512.png in Resources */, @@ -586,6 +606,7 @@ C8E42A6E1D4F2CAF0074C7EA /* UserRulesController.xib in Resources */, 9BEEF06A1D04D4D500FC52B3 /* start_ss_local.sh in Resources */, 9B5832111E742632009D5B7D /* kcptun_1.png in Resources */, + 9B938D9C1E864B38005F5636 /* menu_m_icon@2x.png in Resources */, 9B3546731E802B1200B510B4 /* ToastWindowController.xib in Resources */, C6D429941DA75988002A5711 /* privoxy in Resources */, C6D429991DA76FBC002A5711 /* privoxy.config.example in Resources */, @@ -596,6 +617,8 @@ 9BAFE2E21E83ED7F00F71CCE /* PreferencesWinController.xib in Resources */, 9B0BFFEB1D0460A70040E62B /* Assets.xcassets in Resources */, 08FCA0FF1E24BE1A0070984F /* example-gui-config.json in Resources */, + 9B938D9D1E864B38005F5636 /* menu_p_icon.png in Resources */, + 9B938D9B1E864B38005F5636 /* menu_m_icon.png in Resources */, 9B3FFF271D0898EB0019A709 /* gfwlist.txt in Resources */, C6D429931DA75988002A5711 /* install_privoxy.sh in Resources */, 9B58320B1E7422DB009D5B7D /* http.png in Resources */, @@ -607,6 +630,7 @@ 9B07EFA71D048BBB0052D9DF /* ss-local in Resources */, 9B07EFAF1D048E880052D9DF /* menu_icon_disabled@2x.png in Resources */, 9B07EFAE1D048E880052D9DF /* menu_icon_disabled.png in Resources */, + 9B938D991E864B38005F5636 /* menu_g_icon.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/ShadowsocksX-NG/AppDelegate.swift b/ShadowsocksX-NG/AppDelegate.swift index 0ba021f..cb88491 100755 --- a/ShadowsocksX-NG/AppDelegate.swift +++ b/ShadowsocksX-NG/AppDelegate.swift @@ -80,7 +80,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele "Kcptun.LocalHost": "127.0.0.1", "Kcptun.LocalPort": NSNumber(value: 8388), "Kcptun.Conn": NSNumber(value: 1), - "ShowRunningModeOnStatusBar": true, + "ShowRunningModeOnStatusBar": false, ]) statusItem = NSStatusBar.system().statusItem(withLength: AppDelegate.StatusItemIconWidth) @@ -412,6 +412,28 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele } let isShown = defaults.bool(forKey: "ShowRunningModeOnStatusBar") updateStatusItemUI(isShownnRunningMode: isShown) + updateStatusMenuImage() + } + + func updateStatusMenuImage() { + let defaults = UserDefaults.standard + let mode = defaults.string(forKey: "ShadowsocksRunningMode") + let isOn = defaults.bool(forKey: "ShadowsocksOn") + if isOn { + if let m = mode { + switch m { + case "auto": + statusItem.image = NSImage(named: "menu_p_icon") + case "global": + statusItem.image = NSImage(named: "menu_g_icon") + case "manual": + statusItem.image = NSImage(named: "menu_m_icon") + default: break + } + } + } else { + statusItem.image = NSImage(named: "menu_icon_disabled") + } } func updateStatusItemUI(isShownnRunningMode: Bool) { @@ -430,6 +452,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele statusItem.length = titleWidth + imageWidth + 2 } else { statusItem.length = AppDelegate.StatusItemIconWidth + } } @@ -447,6 +470,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele let image = NSImage(named: "menu_icon_disabled") statusItem.image = image } + updateStatusMenuImage() } func updateCopyHttpProxyExportMenu() { diff --git a/ShadowsocksX-NG/menu_g_icon.png b/ShadowsocksX-NG/menu_g_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6e0ce492973f243b0cf5b111d985c27250983cd9 GIT binary patch literal 654 zcmV;90&)F`P)Px%NJ&INR5%gMlh11tK@`V#cAMI!HsZ;PNI(jLkS1wrE{XvUQax#riXtd@tUXxJ zL$RkG1i^zKco6&(3Z6xx2Qf-^Ngzc$NJLO6#!w-UUo-3HtsRM?7(F@gcHYdq_u21z zJL@?A!^mVZ$FO=c*b?zonaWZ`$|0@8Z3xf(fH_h;2Da?NUlPlvS=)tF7OHrU7`yh=K*r z^WqXn(iXrc0FKC72L7{e-cQXIfCAtGZ~+)&q7rz#*IM6Y?;^>&r7X_6?E8ZtMGp>z zN-c6QPw=<^#7Gj*E6Q1-v=wY>VEw{uPN8PZXpsUFVX$}au5W!Wi2C8 zAWkZk+6!bXkx1N0Oit$fa`_SvO@sH)=#N&V%zOl{k9sM2c0{0bI(>q#bBnhgZ#J6` z8jZ$23E<7+ly)EYFtF3K;2u_|thb#`r)D8C%P%73od>d3sZ=(y*=*jHLDB(w^O(-8 z2EM;W+|k1|%Oc%$NbB7>k44ofy`glX(f`a29w(7Bet# z3xhBt!>lsd^Q;1whpd3^o;3KxS@gNuokUZcbjY zRfVk*ScMgk4HDK@QUEI{$+lIB@C{IK&M!(;Fx4~BGf=YQQczH^DN0GR3UYCSY6tRc zl`=|73as??%gf94%8m8%i_-NCEiEne4UF`SjC6r2bc-wVN)jt{^NN)rhQQ2mNi9w; z$}A|!%+FH*nVXoDUs__Tqy(}E4j}F<$xK7olvfP(7SMzGAQ^o_Jp+Ag+EObracBd{ z;MA6q4EI$*X;BW?PbtazsX3{+sd**EKz)W-tpkQFTqBAjD-sJJmVpBi;x`+R%dLV^ zi}Q0zK|v6jmsw(GWCQjPx-cR{AiA9Ma|?=6i;IEU>`b9rkj2o|M26ltP%*WsE;IUqmNa! z4KO8G`R1o&rd7HmmZaJl85o*d85mm`nJO5XfEeaLx1*^+asf!jxhOTUB)=#mKR?F~ z?2B9wSHV~h7*Oc)P^~ulpj?EMs~}kxEDFrCc3eQ6u>5bwW#W7w9#~qid%8G=L~y>zuUoP z@!3h$8b9}FaJVurRcXpN(BX8lXTSLq-Oabprd`%&k)5%}{C)Dh{QK3$yA6B(Kh{6* zU?VrbQ+;wb&u0;1bzjbo#97=O(uOTFp8rti)0pYAY{?YwO9qR04sBXv^jXdLxG$$i z@F`XnpPk8~+^o{aH>P(qa%cvZh42a*O}#qp*ha=zEG>>RmhC)eb5WUHM1-SxLyY97 zQ%bkXTqQZod`cg$_|E@R*2r*HH9>9Ut*2i^MKzv;MtfYGjmU=y)Y=^R-1)b?@@DI|sjPH95OxUz*(YhGKyU z5lS1|f;T_=-r}dfHA+{6Yh!@M6s8%f{Ck~S{zaB^L~-vC7AMDNpoR^3Z}a zSL*V|D_>eXeu~I#cDnb`rRkK3bIk(9r#ki>xA*BP+}-fC^!Nj#MK|X>Rp!1sSHXA9 zd-nf{brP|DH3|-ITxt(Fcw9TB^wrmVvD4d&=M)*aEpoYPZFr5|l9XZf#lsUp^A8dodl_PBU$hZ7y0Jbzmrae5U; zn}2w0>Trr@w(rBQ6F+`_xg^-!be08AKy5{r|C@$7iN-ft>m9dGT)6$#t+Q!-+-+td z4Hx8l_wKcw5`&dfa^KCQ@i?fN;OXk; Jvd$@?2>_d#L&yLC literal 0 HcmV?d00001 diff --git a/ShadowsocksX-NG/menu_m_icon.png b/ShadowsocksX-NG/menu_m_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d6b909b12ccc419cee600736641004cb14c6f5ea GIT binary patch literal 642 zcmV-|0)737P)Px%JV``BR5%gMlh11tK@@;@W_Md_4bp>%HxH?J(HN6@QW_8uPeMzr-W0qDwV)L} zh<|_=Zxs*z4?TF5iWJ0S-pqU7zV~L< z^ZtjC&*x7f(~?W@HwhJs#k}>r>sqPv&f57u2K50~t#dP4>s`*duZdF6e;ZUN6plL2 zO97*RJRl+)E{@lK36czqwR1pb$zaqP{qvg6g@cRl$zsU z8s`xKh!7;8SClhPX}6K_ZToM+Fnp1Mbg5MGaULgPKbu+(1VE6$9s@Z8{4z2rkn|k? zdbwQw+}n_tRAJReCMFK6Bss0LK8M{H9vWKccDpyRZ>13NmyehvS*X=&_r#W=v)Sx0 zuX7K&U8_{qIJ}$0@!4t=T>@fg@Ln4IKFv~AE`jHxDm_Af(wR)=5T!k#Py1vqm&;w_ zrtXU#1i=nUdx&}**c5&bkPXV(>~uO!@kxi~Hl%Pa%bucN0clU-+^fB7?Lm68g2RPs zwYn6ou3ia)AZL`CX*QdmQi!bbuZ09IvmR)*T2rLFj`(t@jPdEu2NTCjV$0|^xVB{t zW)jc=fgh2#$PF@k1b9STSb56!PQ70Lu8cwWKnn|k1|%Oc%$NbB7>k44ofy`glX(f`a29w(7Bet# z3xhBt!>lsd^Q;1whpd3^o;3KxS@gNuokUZcbjY zRfVk*ScMgk4HDK@QUEI{$+lIB@C{IK&M!(;Fx4~BGf=YQQczH^DN0GR3UYCSY6tRc zl`=|73as??%gf94%8m8%i_-NCEiEne4UF`SjC6r2bc-wVN)jt{^NN)rhQQ2mNi9w; z$}A|!%+FH*nVXoDUs__Tqy(}E4j}F<$xK7olvfP(7SMzGAQ^o_Jp+Ag+EObracBd{ z;MA6q4EI$*X;BW?PbtazsX3{+sd**EKz)W-tpkQFTqBAjD-sJJmVpBi;x`+R%dLV^ zi}Q0zK|v6jmsw(GWCQjPx-cR{AiA9Ma|?=6i;IEU>`b9rkj2o|M26ltP%*WsE;IUqmNa! z4KO8G`R1o&rd7HmmZaJl85o*d85mm`nJO5XfEcF0NI+AA*#lcI55{!Q~Ud1dCaXNmF4&e&uAzSj8j+1cj$ovE=~|JyLN zIxURS5PR+OSxS4lZfA$;5vy-!ql4Cc{5RciMTE|@sX@}GHp!?Z-Y#n|J$TC1Tj^4G zmaO!&#noG*bNl@zE)dx8yW=S}|KE%PRd`P85fPKwm8S8~>TxPV$b_T?V zNLo)yQHt1LbIQfIKI5Lfdq=0rQxAuA?3SW0qFg?=%RE<`GO?qzqjW=I+-8F*8UH3^ zr#MA+{`jr6we8V%rdkE7C*oc&e?5NuapKGi9xgho+fQ6sBCz_#;fH4zZMy&7e9^Xr zEp94KugjO_>fa1nw@lR{Ry9iBcww=?$Iq5v9664}EEg3VCuLZIl>g_nQ zxZ2Ojv>(|`O zG28IMWKtp9!+R}zz0WDGW&cyN`|dqOnRQw6O8&n#wC%d$d8i?$rZ{$cQ)l;wunW%1 zmkBF9@wP~to+chMecej0s%6VUdijNpstXx49$as&_WWes{$u`P`=&=ux)HO!k++Jsq~y)lR5H=bN&b{ z*zIwqdWGuzMZypM^F(w0v;I)u`KxlywDO*Vt9{PMA9`Ws!mRm}yF)g(zAm23Sr#z(Qoj(GZV)cd};wQv61xweT9 z?%cUkI-#;<-_dO>maNsL?HNaZcCyU-`RsaFw%xh>TPBJ*UGJ?ovL^XYpFX{q#md&U zmgl4NH{0T%rgyC2(;l2lyVk;CXK46QZuWf(OUuYL*Iz%WZu=*8{hE5c*XzJsuaD_v ztsJtlvVR?0>=xL6w|UQa;_j?Db85_UOl?AAHQE!~e>%5t^z7eSlKXw(KF9wYlk88< zyL7B5bk9EqMV0%CN}qWfZoBj~ZVWp0ZpXT=>-<+0&6J$hFANtG6ZbP0l+XkK>Yyak literal 0 HcmV?d00001 diff --git a/ShadowsocksX-NG/menu_p_icon.png b/ShadowsocksX-NG/menu_p_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..05755b38b1f7fe14a268a2def5881d906e614b15 GIT binary patch literal 640 zcmV-`0)PF9P)Px%I!Q!9R5%gMlh11tK@`X5M|Pz)RSJTah+YbUfhHz+D+Yu@y_TiwNkI=n?V$xl z#ES=yJxF_${t5jDJZK9|Q@gt)5D^6}2+|m_RFG{pJ2QUYrUR)c{s5r^Z)fKH_`El7 zW*IvSqgX6nf=p5^nSUv$TrL+iW3z(uD@N;?zXt6C?r38?Aw<>~vzKtb{>PwFsdU~j zW&wi$F+fPROt<^yw;-xOX*~_d6e<|hN*Ty5GOVB6)QfsPUN=kW@ z91*k&;0pl8Xio#{wchH7W)pw|AOH{mXsy#D;PX)_wFupH1P{}(V2hy-`av8$xL`P+ zhG7!U0|X#J5P@FfI5Rlf1IS39{)6K9QghXKolB$5{=%rRnm-0!1LiRdx+jw(&W1CX=HhdC0*;SD2m>; zTCMF|E;o$KTd+MrlIN&&2lEN|?Q}Yw$L)4IqIeoj3Z>4PDA+v+t|bYMRYRiKna|*6a1=fvBHsQV;+Us;c6-`~5z67aM*Mtn};t a`}#Z3Eiz#+x?Oz$0000|k1|%Oc%$NbB7>k44ofy`glX(f`a29w(7Bet# z3xhBt!>lsd^Q;1whpd3^o;3KxS@gNuokUZcbjY zRfVk*ScMgk4HDK@QUEI{$+lIB@C{IK&M!(;Fx4~BGf=YQQczH^DN0GR3UYCSY6tRc zl`=|73as??%gf94%8m8%i_-NCEiEne4UF`SjC6r2bc-wVN)jt{^NN)rhQQ2mNi9w; z$}A|!%+FH*nVXoDUs__Tqy(}E4j}F<$xK7olvfP(7SMzGAQ^o_Jp+Ag+EObracBd{ z;MA6q4EI$*X;BW?PbtazsX3{+sd**EKz)W-tpkQFTqBAjD-sJJmVpBi;x`+R%dLV^ zi}Q0zK|v6jmsw(GWCQjPx-cR{AiA9Ma|?=6i;IEU>`b9rkj2o|M26ltP%*WsE;IUqmNa! z4KO8G`R1o&rd7HmmZaJl85o*d85mm`nJO5XfEbnrHu`94kX!(gaV|P042j@; z8@4x3*im4gZM4z5OBbvkv7WPA-uIbF?d6J&&kP!#-jf~Nr*?>YOlcFktgy>MDCFPn zF0pV2$3h{G6AJG?ojqB6YxkSA?`6~%o$xw$1_n)G(jQ?NBBGv1*{9=xr@fjoI za$n94;P1efnF@x8i2bwkbjCrwVP@9`4FJuqWZ!HciHvnx!q=(Jyzq9Zu|d zd`!>br^@DjN+r%taN0MQ&~rNL47fp;Z*H zUf!zwF^A!VHBvL1xgD=RtMR$?)wyda<5QML3Q3H5>yB!esKweZ(c;n2pYS4XDWBn= zvV-y6d@oyrKK|)^^HJS=fs=!bx=YHpB?7;99DaQIQi<8@ua`EpHgGX1{uh3^%X;0E z-`kj$ha|P`WYlF;StY)w>U3z=KmXE8(_dDry7=EW?l+te!?NVv@98gQdEe%qynNB! zp9L0crh6?FJ1|G$3#Z_#=UR$0@*hpn6`puwp@6rSY7-Apieaqy*8*T%kr`A&9< zPn$#!)n%JV&7CY8RLU8oTzBzM4A-U{hHHCj?%zLl@c4zi$I~lJ_X;T9KWMC8vg_gR zDa-gi?wl4>{b$0KS~Z2c1^-HqKiE}dcKh+P)^`g2g0KG-)XkM&e7f^IYX^VeTmykg zXBT^v2B-M0u-U{Hll@!AdD82I4Ea*7L;Tykf6rN+zS-MlMcjJ(!{6U!zda!TVgARn zzlAL0B{-w+9<|f`>TDL-uLdm+7%#4l7o+Cra40w{tP5UP}FN%hhW)TczSe!_*G~3y$t@t~>mmA>rQk+i$tM zpHE1e>^eVss^~)V4Y5iFbdx`@nB@%jTtR-X&8~HsVhh4g{0=W;HaIiug;&tg zzRf|$s;s9LZCVxb(KS*qY46muzs+0Zc7@+FVEWHsAUl1^!JhDspvu_O)z4*}Q$iB} DPX+zt literal 0 HcmV?d00001