From 6c15845178915751c7a6b45e58ffe97179f595ad Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Sun, 16 Jan 2022 22:48:18 +0800 Subject: [PATCH] Isaac: Use customized beep sound & fart sound - Initially written by Shiki, rewritten by Isaac to address the issue with duplicated NSSound instances. Co-Authored-By: ix4n33 <16833681+isaacxen@users.noreply.github.com> --- Source/Base.lproj/preferences.xib | 35 ++++++--- Source/Beep.aif | Bin 0 -> 232754 bytes Source/Engine/SFX/clsSFX.swift | 74 +++++++++++++++++++ Source/Engine/vChewing/clsOOBEDefaults.swift | 6 ++ Source/Fart.aif | Bin 0 -> 63414 bytes Source/InputMethodController.mm | 4 +- Source/PreferencesModule.swift | 10 +++ Source/PreferencesWindowController.swift | 7 +- Source/en.lproj/preferences.strings | 3 + Source/zh-Hans.lproj/preferences.strings | 3 + Source/zh-Hant.lproj/preferences.strings | 3 + vChewing.xcodeproj/project.pbxproj | 22 +++++- 12 files changed, 152 insertions(+), 15 deletions(-) create mode 100644 Source/Beep.aif create mode 100644 Source/Engine/SFX/clsSFX.swift create mode 100644 Source/Fart.aif diff --git a/Source/Base.lproj/preferences.xib b/Source/Base.lproj/preferences.xib index e62722b8..5d28fd0c 100644 --- a/Source/Base.lproj/preferences.xib +++ b/Source/Base.lproj/preferences.xib @@ -1,7 +1,6 @@ - @@ -218,17 +217,17 @@ + - - - - - - + + + + + + + + + diff --git a/Source/Beep.aif b/Source/Beep.aif new file mode 100644 index 0000000000000000000000000000000000000000..ba0f98952465879463384a516a7c0ec6e05d2027 GIT binary patch literal 232754 zcmX7Q1$Y!o({*>x?9BRZHVVOlySux)yZgo6T`wLWxCeJGaFO6naEFVB_$FB&?e4GN z|4%)`l5E)B>8?8GRCN_CJ9X^_*7qRczSGR5* zo3r2I|NnOY&{UcV%78NT4SfTOgW@#E?0-LN4w}=wbT4=d-f~m8DdumI!=>obyV_)PFxfDtWC7`8fsq3}twN{eZY3;PJDzjq7Vm7zUO_@p0q-W|3 zbp{*?hq|bXMlXq861FRBmvC3O%Z=s6qSa`%R8^`PNDZW_i_}FRgIN@a(#PmyxEb6G zp@dL^Kf#~iUT`nK1#p3EBin-2g4J?M#lXzKjN3&~o z`G@>N+RZFdiVS83GedVncY|+&Z+zo@Z6RC9RxlEbq}^$E?i2UPX0n+ghDHpHDHc;Ks%2D5S7T=Rn6XDk zSw~sx8tWQ!t~pms5EHm4E(*rMIBo*7k=#hEV_iv566AhzKa4Ok{9yLe@Dp}{U4(hU zJo{byU01p*J>uVpf5YB{y|Ep#9kN!iR^H5P#lt0JJ!mJEm#xUM6-dx^X-Z959 z$Nts+)#|po9W5L!oV%U79rGM>on@V69iJVa%~#D=VMEwZ4XQ!h8n*_gz$thX9>v%2 zHUD@2H_v>}eE&-SN^iP1J!fXl%&e1HC$kG@7xql@ObT5NT~?keFSIJmlC&h%qk1$! z6L3r1k_1Qq@5lRfmZAPKv`f@C|ShoW%8TJvma23=Rzr4NMD6^F{h1Jx4r8 ze7k(Rg8PH}rD@W%;M(9?Zzpdj4`SBQ(=o4hUTyC+?={ISxmCaF*LUf=z#H&J>?U@z z{IL8m#hK#x!hB(_8P`l4DUP&0XV%2pM2Hn)>2|uE#FALJ2rfcqWG1W0YSpS*Lsdgn zgJptcLdl_IwWeAV%UA}zKrd7P72qXaGBq+awg#<1%TLQs(aCI%IL8j{(DldlC!$wG zFPF#VaSn10a;$f(xA(XAw~Vk1Hy$+}6{-kT&>eJ#=tRft3;Y3p&@prj-i3F$v)ox> zgRsFc$uJ4{fKP9&w<+ubQOi-w{>c8w*~r<*mFdc4%OposkEm`7w}qSD zn%-KTSe`gKJ35D53A^Gr?Ko`?H-~dQxE`c0>5C8J!=N6hhq|J!&;(8Y^Jg>{%{5&x zU9gU|jy2^sMqVf{_}^XziUf-I-}v7I;sf!%y}rHKFS1{x9ZNfwUMjs*mXIZ6!)%xt zlNpmXC~Z(ipNu}9y`H^tMY*EJX`E_S%~G|{a7i2DUpL3tfU6Z@UThLq3zs$cZFgY+e7!`~P zybHVw?hWph%gN>R_4<0$7&ZQ%Pr$iwF3qL6@H70(cj7y9Nn8@`OZ#fowQB6Dj@RO~ zWH1^0KcCWGYp=;{G8-%d%ZQ!WAhIvSoDt=>8F01n20@Y=vV*M5TyI(dDDdN9>B&6;>pyh~ok?-oe{f*;iRF zTQ8eblPW9}7V=4al5v)CmVLKFM^||^;XU5hP_JMtX6FA9!vS0hH{r(@7<@U<$m05rp%0yWsn2lrBCaXvK1_Kf6C={?1Iv9F{pOr%X;6ZzXRP&t=cWyrOx<1N#Dd^^5vNFc=I0 z55QgBuS-&Gsk-kU-z86~C(RFiIB+p=HJA~+CfAaBDT}1#aUNo6CBW)+IGO z?Pj_$E7@Jid(ayp`2%M|&jNuE44zSMEA#Z_c$Z#@KG3pBarL$ONLeXYkXK8u^(Q(H z6X8^xiH4{H$ZxHmZdJ=`8CsN9P_=~)`UZN-d&YXy!1G|Nwnx1SI)T#qPSQnHzf?c<+4hyeWsSS6UH_+WNKlrYcA{9Xo_^SF%_~`uyOYIuyM|&;genU z!k#)OSj(AO8@6%F`GTl6{|SsBsd`^&uzX$GCp+|C+BEPU3`Z5X1z9*3;o3?G@@H zH$t03Z($&m0YKo6Ue;SYI5B5LZn^9>+4D2cXAjP7ujHqO*81~GX=uC5s3*Qk_F6vSAqv&9iG1?TlI%0izitAPQAy-sH zva@YiPs<-mRiU3{tuQFeZ95xXEh2wR6NV9S5eSvwEb-ww&)o5vD?kTo6Efj8A zCRtlK?}s0bt{dZtT^xO)z_joWvBkrl#w0i^ggZwO4fRu|9W{Grw}2FxPRF zwtf!Rorhg#9gnRGjOF<+pXhN@A&v=HvooC2>`G6=evOU2=Q7G2N(L}LwK;VJ%w{+`s9nuMkYGJQ!>-9UyM z2rZCi`ez58`gZs#``-IaK7XiN=vFW&&-5mQw!6>zcVza>o0*=HGdO)+?#j&Oe$_o) z9h&FVH~Jpq#L!RjM2ga%23CfWJsG+8b1r2b^0acd3eEDJlJEJqvsdXZzx19}?)am% z8~!KSY;TFs>?}3U_ouR3{_({d^*c>onsq_n;pwc+@_v<%dVVU4y$AKmffd?{;C;#L zo9jL7j?F!jk>ly$elMj+Q|Wy$A5H`6P;b_xhL3SQ7Z44i5 zY#a8Msk^I_B{j0XZFZE+`a68DX{BSCIMqJOYzn*R>=rd4@@GCnRKcjzVLzO1dz@vn zeVS>W;}t`Z{HE>VN1?SLmLDe`6Orw{y-0Yas9NDn#oH%4UE(EEf+1)fCsuNq#d$8H z(9@|Ho`fwmRdY>u?2cX^KBoY24Ug^Sh>qNAE$oQl8$nHNDW0Q^q$9BgyMhcu6v{ImF)XnaF};gCW${P1 zH^n+);d2qFKe(gHY1AG!L%o5@KLN%0+jth7NxRV&+)fxKOyS-czQDg|PqmrU(qjxp zX3vy{dMYUqzNzvLZ&YY{&c$GvtiR-_oIY9;?_2dRf4e~QyuI%4nLD#er$5NjGG67R zyQ#N}x0Uy*r@n7s?)~6XPgUu;w?gQFr%50zNAb8by`CQFb^RB!fV?~RuD;&$58j?< z(I#ilRR(6JE4?z`%JtI=`RD!ml=JG_pX^276LZJ>DeX_o-YH%82ISVk4WYrooRBy4 zQ+c6wmIf+gy`DgoyhAEFp9nuC@vu^B?;m?^wK)j z_$;!aePw}tVfKPAo!?^jI10oB>@m@+?DwMF_F54qEFWAgO+Ug8Sl+tSu zMmBO4c6PJvG<%H)#ku?+v5Qzrm}F`UckrL-BQ8H*%u>}1qlVkWScBL8SZ5CXv2}%&fKDy>(m?(r3uc#+Sah*kc+6owRV}nHggc2G>$Z!w>09bTb}YG z%qM9(!?I8veM)G()E8p! zEWadY{R-Ag|B?GGE8FXIFZY+r8x%aCQm`oYvEa#GsDVBho;(yR2ITH~~M)s;FRc=LCnvM=L5yf1H? zG}HZGuy$^max@r&|ENBGIzpy$T!iqJE~ouNk1+N=vXsJST`Bwt#{_WJF`gc=mDd~E zG~6k&E$56p3*JTaBm1M0(afkrTzXi3I@GdMe{7x$X4rNcr@87m_d63^oVlOFXlQL& zX;@+{V0F1Nt@k31S$0Hrc0P}t?s!?Cip7*~y}5n94(3TQUaK{xjAfQ9%e2Kh-e@ph zLPNO;(1?!mTMhGBsuvEX;auf?C=eXzk5W>VBP56hY12@X;9+d^FHmac{gIaB$U2vI z8Flv#;@kR+e0BE~h%&oTdqx-SuasCnPLB_E&6}wV$(yBC&5_lZ>=J>iIsN@}{hdM& zLyIJnOr(CnVg4qbzw*}S<$4_MkvVI!A9!yCuHZUyIPL8(pz}cl5`)FLr=B(7npDV; zj~+KKA~(!MrA@~7!Lp|J*cX;Svs{JgUdK9dR`^;tLA{`>uSk9CZlVO@`F9lARn&8{E>9CxgaA%!y=3?QA zjuOuO=I7>Ce4M!k*U*+Nv~}J!o^bUw_m2Kh*@Bm8&Mlx30tK< zwPuIj!?3K``m{esVeiaR;(@#${QlevM0RiD2L~Kb@cx#h%mc{if68@N5`zu=5rMM7 zbWbba@w9GPyE0#UPx%HaAA-4BN6+`*+bk_7#@*dLG^=#hCinR47jhqIv(i?X8!-CJ z!GpQJ!07D9o`RVvzDGGHlq`QSd12t4`$mpEy*3`oJ@^rl66FSeoKq@y#>}9rF+?LP06}x9Y^xL4UfuKI%=7-Pk4Frqp{iq>TcOAq z{8W2;w8-&*PmPWfe-`Lq-B)<7y+~mqtcdMFR!1arFv@Q~QFwURjzZKb#`G3?xGs~m zrngESQv=&f{oqPVc|6Q;OF`g3=qxSoJAkL;1+h_z;RowWjF*DZXqs;rG6csMY`H18 zynCox!e0R1^mYa{Gi!wkrM~u-Ol#(q(?9s0Wrcie^5*-_dzN}8=XJ~Z%NL*XC*aS1 z=Ifri(Qi+kB$v!SB=2!Q_ep7;a>IXa$*J?vG`8Sz4!C1w|UAd zNzbaPH_S^#)s?!uLXttA+D88zXh<#uzj8y>HiAVxVO*|`7MIEO=mt+Q-JX3KE%eMc ztqz^G#cP`!m&sN8T)n>awmjBxS;diWQF6=(@j;|V7~qQI#@SDyleTf(VOt`1-uw(K zGh$HF#%e$IrsleQ3YZI4Xf2I8f5qi+ObJg3>*%U#+wWLys%_y6Hd7fc!?sRb=$Ik? zF+1TJZno+nGlMH|9p53eQ|e->O&gi7B8PDqJ!1&d#{j7A)Z;WWT@RLv)l5}{{pP25 zB;P-%5z(Jd9TM!O_f(gl+R_1F$+;YSkx9La+|Pnta~H~kbKlCpJwH_;&`Wy~{H*T{ zNP2|ds;u;E3XS&ukn@67$Og|0EhX))KP{!2Z|0vD(yg?GxLamXpt+Bse{-YJ(A;0# zWWUw8Rc>oz$l+K+rn?T%I^omQQ+A8g&iF?@VXUld68kGeu#t)4YgkKE6d(2azblRL zMKH;lV{?SP3R~x>??|&JIc|qd4O<%)3{xFroWE^d9Zjt7Y+kF|Hrm2jlEtH@n&L-O zlx2`*ukEcZ+F`bSvgcT8TSo|zb)&)T!ls;FGFK=ZQP5}&mn^%YjP|IQ@z&B&LxdE^9eB$0 zAO0g0B9#muPz!Tq{<4i#c&&}~v&Pv{G5)C3m7j_~nM)b+T&mF*Q-D7aevC{o{ZjYy z*=myDCPU57=|l71S|6@^AYQHQxfeX|6N29YAEhHwqS9N>(zc>%I07xv>Jgv3Q6DZh z!w*#>BKU=H4({V>g40?nB{A^bH`>3<+c0!Ea6<9QnYvXksQ1)9D>sxqvQY^r1SeBF z*OhN2mf^M=>f%2nTAeEg^~u^wl#V8fqYRDFCt65O@%Qs)WOefG$?BjU@^|GPkSoT5 z1}GNfH*+UoWz-4S41haoykwkb5zT!q-OP)PN#+Xt-{MkGl3PwH!FMp7Gm16%{^CSb z7nap}DEs_7l!o4l)E6o$rsIS5nXpG#IGEt5qU|+L2oyAI@RTx~^3^kD1TGlQ`R?*Wi$*u&itg_%iV@&``YQVz15XLxhn$m+(CbWd#rNDa~c*^bfGPrVn~N?0mNOj zo@%lxYV);K_#nOs*Q+{A4h+Z9c{Q|NIRKZ=-32T8yBMD-I~{Y$CFgf6*h+*>8Gi?^ zo2JM^?M}QTqBmF^qvEpBm4eTl@t$MmPT1 z>hFkS=vu+9V#~OkEd{E8NqTk6FE3G|6vQTPQm+MWn?!fF}b+r|MTLTNWw%l8(h1!^EE zxCqoBUpT2EbU9x87(=gF0=1LXa-u#nH%-T%dS z+}leS<7sAG5U^NE>!Ljgjt)NwzeGHwEuD!vZ<(SNGA>Ye8Zjj_b5%pp@Hk< zw0DPk)K?5A%6VLWXfRv2;f^NYv|}*dYfaGd%n$WP<}Gl8`GHW>w20qgNFr-#f@)JE zr8`RV&`~v6?ypW&lH^Bn&Cq-~CNM;;8R)O~2=$=LmDT)yyw&s^e6ZNyQ)7L2z;FWf zEZM3sCMy<)>dwb}P7bzS3iXNu5CqY;lzT-~AK72FM#88y<6FMTc;frgy?O6k5~y;N1~6+CJ<7T{o{_ZcbR zSwK2@+o6j7zQ((uv$pn{+qMcMSe^iC`j=?pYg}2hC|?aU_!6f3mf)D2(|VhXB%GKT zrhm;XtMBkmpl5ua;ndJBx=mhB9>_i6677v)GOcB-OS>C?)9FGx@)B;;>k+G3S6jtU z^Z@k|sbeVQefw6rax zIo8G~&hir_S?{63=B6-UcnT|^uB1F}t!|W|+(Uw)&(g6_NII>qQ8*IN)`1p!V=z=X z$AzgS#eTG``7B&$xd3I;MX*t*sl;=?{7sPNtqYU$YJeGT3%#B>n(WHhf%{~3$E)2Y zddhQb2QC2zA&QH$CnslWMwe~Yl*n~b{TMSw#&*I_Bo zLs&6X9Kq7w8YeaTIIpzz;Vi@CD4>xqGI$T$orBnhYPwB7O|1 z2UpND?kWIg$Hio6S|Sl}5*GFHs4{HaN+79<6uQ=BQ&T z+F@%(zMDR(V@%zoWu}SJ31Pon-B3}wE{v7-3Gd}0;%)V&IfXQ~4~IX(Uh$v8AM+$^ zEy}gN0H;m)NP_T;wB_E=V<3s11Wj-k+D+xOLsE)*ST3xqijU0Hw}Lse4R;C7Hq_&5 z@S{W%_ls3#ikj~5)l8>os@O!!!PTH#Fozrrl?Jt? z2>v$9PJR-jHJ6sOcErQXbF>Mj@^Y>*TG}N3CqEOP$g_mV;B(Ft5a@S*9{wEMMAph> zz$EoJxThVV$JAB$iFQceLhs}4C>GSct>@DKGA zp`bp{ctW3TTBo~BKoi8G$`1on&+^rzhm416p-g!^|4iFwxS(Z;2Cb*5iE`1>S$S?x zA)j2c_>bW?`Nyv5#A*K^Ke67F8(Wj4Buf{$r@4>nGtX81ri02f<3RSBAGLU{2)@Ua zhvRu{_-w2pY_v?~GAtjtsh0WtBg+cIT}yxAjO7Nu!PJ4a=LhJc(0$woVHyklup`Lk z4-nPx21oL9aGqfoU1#hI#uzy$h$6gi{2M(Gzk_dR2`*2X>6NjnmZQZ&6+xE&JZk0X z1fJxik?wiR!2zFH=p8s|vIeP14fZnU1aplYLi0FZXai@IKJ)El8^2oa$&XfUqCV1j zeY)?3{66ovc0R8F{q1Q9dU@xOAq)kl`@iZB0#C3-dIY=bcHXH!ga>dq9ZV--0tI~` z^x}T7A00!t(nX{?ey^{?CH33-b5dE`Lp$LFR1p$x6<34{gZT}&NW96QZ?=T#+w8T- zZ3m{k?Zfr!*3Mdc>)%?6eYBR}9;MZ{^a3Vx55s=b7r`!ix%2DBq=S07~RUSc(*VW%n_Q?HvA^=l<&cf=Kwz#tTVKwgABDu ze>esI(RGrjy(8cBx;R|#qPp}`lA^=l5BaL^TkwVNk)#IR;o?3WjL-WARmr=Cf}Xyp zinkhk=^uz90tVQZJ$KC)2ln~$a41kqN${VM-vpzzxAFwCRc2~KJ^&}lt-#07S9(ZJ zh6nWC2B=Gh1NsfaZCu1K1+PR-e1P`Bf9QL#8uUd9(a<2gnrn#vF|@%G48`zT!*jGs zNHKL2;w?F1gk`$%lKH&lrg@Qlq~($QjWyk|-~85|BN%Oy;U4EbYLA#iCPeH6gCctJ zRl;WoH(W_#3)d1c(Ro7L;TU6V??|znbo{biW&ggt<(jzGGTPA1UX35>D8%L3$ME6y zQruC?Zy+0A(UPJ9S{Z8qT}(l7!YRWW!#87o!+fzP*TrxPUgN8v{M=CB<@VCkoSPPh zNf_zv^-A)2{g#rXP1bA3yGh@`1RCvqj?4MFs9D}Wn$zRO3-jVZY_ zoS&Tm&V#48-taMB7w$tZ_~x*WsXxiI-qdedpWv~!IC9NC5A*hp%3S*xX@?_SHae%O zyPbgQ4ws>!?W*B}brV;}k`58BY4n8sdH9xsSe! zpt1j!)+(5$#K^a_Icj_2QObc-sRYa?MbVqGjf|5k(<^dmu7`BZa7k)mxG0a}lNbhE zP>X@iS~XzBB6N^S^dqtB8}WAa3X7F9;5u2%`V}T~f^Y$qHr;@Q&BswolZQ7N*YJOd zdwD@@z04Hn7>&4b89>g2$~5KoLt-`nS0*=wUW- z6->{Bdq%tXoON1ci(k20<}ql$xh)#P;@u=H=QfF7;ZI{L(q0^({Srs(1B_j0oUsGC zBwXj;^PBm)TxoP0jYpN?8dM0F;BQg_?8ioY0yj`Ak-c&quuTTQD|aOCRXW)*`$ft$;tj-Z(Hve-j+2HwfKPODct= z8JZ$h$1l_>cn+?km%!;v*)G6YI0aOoMWGXfz%8y2P3HH}%7(@u$1s6k&*ur}S>Can z>m=kL-Lw)uu+FEyZ2yrC_Ko<4vpp^Ds*HNMh8Wg3ABwFURmA`7UyW_;t&BUY%T3Xi zC{wQ4XF6cHC3>uPg=4n%LO)w|p{Ug-MA}LUX}0>}bZa4@o%tAl%^b(8rUbFEku!HR zgsj#1I7>^ef^iTRZ@9|O07=>JuqhO^{b9$JAnSH+`iv zg4~jFXh1DY=jcoEdE(NS(h_(Y{XhrOi}V_8M;g#K`V|n=lVEG|1vEsJNpFKwuOnPl zmx+s&A4aJ7jTaQz6i_=@HfoElJ@9r*f6&@A673TAu>QEQ=)7QqQ-x+QMwkvy3ENO* zu{c~|>_~^1YGAXeism&Q()$~W;D1FA?ICUkyM>dicMQQSAq+h+Jm*I64Y`si5=Dap zU;x-bioy&%j@zJ__>$^3uA#OKDtZ=UqZe=~z6>Ye;b1c12x1Cs02~wg56uliG%*+l z_l26m5)yzNLz`gxU?SKW{7$P$kMVG|g(mBjb)dh&bM)dgTB}2^sn6(Abu1mL90PM@ z4JFHW`7iPSK2_R+Zb+5rbLkO2ue8FARE4zDOEGjzWAADQYv~X07#4wx!4B(aRUv7xb|p}p#WVZYB<~6oV2w>fr94!Xr?K^ zPc&CEytNDzBdvDvtNEm;iM7QK+&0kxZyVxJ5!99QfLOsr?}^vIf5tRa$g~Z$Gp&N6 zsUTft;^|mpHjHNfqMzX$|2Mai`;2-)g8G2jNT$!Z`g9+I$fBnghh0-UA#Pz7Z! z3M$>uU3DbfqBo<2xX52L3eTj^u?xJ@GT}qn2h)Ns@X9xy9Pzc%lmMrk2$h%Dv!05( za*T3MPE_xyrPL(NtxUl{ZmkpfiuNDtV62WS$jM}bq>>A%T(^I%~uBF*;+2?O8z0EK{{!KT9At9EpZ?XujA_L2e>iXTJ%IS!=lJyy+8X5(E4*p`syRSZ>HOq#KMv zXTG4}KVIMu^Aou;TpDu1*QgW?=Puz+LJfSyxQHsI?dXDO1i#C8)-cF8#PGLqj-jV9 zg1;-w;s}?Gvf)X%7G#4m@IP9TyG)B17J_2J1UOVE3g7U5U{P)&%|auo3%;VOUwk+1V`aoAw~V5991gml@$^HqaGtRJP9AC zskj0xsVi_UEg~25Ai$!>ZCr>K;-;4brmeI1r}123=GG zm9)zAGV3&o!*^gDsg0VG{+x|e;K~pydO`-HP9z6DqwQb>?ZUcrN0CvWFt)?PdLQng zo@U4+N5tjewXp|UYmDbc7<+OD#gW_&!#!>R_k^1b)3^fQ8sfoSumx_W4bT|U8hyq( zI*c<=X?z5^a2@oYev@CQKQl=9nlO=eXLVtoKLKBJN8kvq4T$5~ll5G4TnT;CE29Ql zD|k_D4i779Q9orqH$^SLSJKM!oZcDz#N%L1=9QCaJrYJU@K{hALlCR?rXRH#G)i5A z*DAlXPs(QXh;l>~)q?DAsY+YDsxlADs+G>v8iPi-1L#Uu(c`c?xq%kp0P^ETC{f=D zKWXP+ggOUoQwC7CoJd|N9L`cl<5yZ1xrC!YAG{9+@i7kIbKG#Oa0kdx)*W+@uRu=l z1<7dcATgkeI0s%P?Lh{u23mkAbT9lshjSMClKTj{@XuhFK}8LOd)zU>V~7=|2t^EQ zgq8dnp)t44uo?Z!e}xY?4gBPagS%)rYz=!OE3hEUYHP2_KE4sH$S(u=4H2yC;2|6# zG=iUm8R(!8$(84?qwDA=ya>mF8(=TJ2^NuU5Hd`hj`P9!`exWiKL^X>K0v~6z)?~I z45Btr7__D{U>`CD*>MNdT@Od$>NPl7nFGelOKGeefv?Cz^qopI&8_m~ilac8at$>xuOBL)qLLOK^N7UxA_9e>(Toqx>v`14$SzAw7YjYq>!BUBSsL<7MH z^o8}Ub)%MGu6{sEOeotjlkrZ@F3I z6iOlhjc3`$Ok5f5!6i^CUXOA~HFTZj8zErf8bK>p1ZJZX=ndS(l>rbPV>!}R)?wUM zzd}oCZc<2#!kyJL{kPUepQo478{k&@L}Jswkq)>U8ILvci1?_5=8@mv1z8Sf;@j|@ z-W}$s@o<4+0cYgSRF}Kasq!8Ykh95AWeUktJJBmzJMcj7hl=Th>w@i^st5VL`VxMC zmd0giN4Y9m1{$evhr4k-@D^_eRq;K#5x*ucNe8yV1Bf3iVclO-SRbtmmO(v`fR>|6 zD3xWJVSG=tjo$)K^KHNr?l`E64pSL6r2+Z^G$6CUKHLg+*Ds-Mx{u4k%MFpFnZZW_ zLQ&e^aEeaj^JoQr9y!C;!SA^P`XQ8|okPR5W=Pap!kgL>xIjyUW3_+bE9Q0m_0#BY zT!wYZ#6y*oKn8LZg;NLohc*J4v@2an(wNr6`bk_w=UMlCe(kotN~@}WSO3Ma>P8%| zN@TWnm@e1*vnaKLYxov8PNsmagwl_6BAr3MkRZ(>B0Y!Rlo;OU6LQwC;d=0vXu2w&x8HR3^0S7p=U{ucxf!@ zL~CG;E+ajGk#+;ez-qXZtziRh3abX!M8)|f@F$-Lm$Jt?d}|oX*9Lw*3T)->fwEjz z<|o%cNn{6`;S$&$wu4^S7)^n#S-mBZ%R?eR4GH`c#w9uM97Bfl`~vtlFF>BV2AXjr z=rlw~2HHu!qoOn){76SYKjWL?;BQm_WWx{)gV&$~wgssm7n}zQSPvt>aPSP6KvlYg z&Le-wXHt@E!Sl&+ERrkwQu0!dpk^&VIqeJisePiw^yc)iuFyAl86ASpk%O!s{}1c> zFM*Twd3d7s6W7#Q;G$|8?yA1QSiMO?>Uw%vT?)e01W;Ms4l1hmK^?6D7_D6at922K z(ffkp`dNBfzeK*XzEX#N8PCT&j>J>+?>JM>AkA?z(uJLPbs?|G4PciaCb(@CkeX>tJ(G4&I@`w0gS^E>&1Kz1NbDGho5l8 za4L5Jr*IcZX>L8)&P^nFNTEeh9cp1%c?ygq188?Lm8>Jlqz*NainI;sO%Ib3^f`G= zKa(vWip&8m$W2g;ML-g*LR-+KRAiGmCJ;qk?3ufu76ELB=g@6LUIUb!N^U~kK?CFhX1I-pfDDR)aiA6r(R8|juA?>R zT#`=rvU^A)^FSYVJzzT3NMtyKhQXKA2GhxPxQ>*EJbnn~;M-Ip2AV)d(VpZJbfx)~h#)G=Sg85;TfDK+nh?ljwz1y57sSK%>*xRa#X)1%-xyCWFr7Lcc4ku- zr?CP9Bn%ZNY_5Vt!yxGjzmOa70ky&{v=yvIH-S&|3!4my1yfk(w-KD7(;*mi&g{WHa0Oo+v*lh34ZtbOL`z6Nw1Dq#|5G zTEI4>11v)#Ko-6PM&jM{BK}4TlEx&3oFKWxPcn&{dFXL+mkc9$q$(XpTp*J9`#(4U zi{k4{nM?t%aa*t$R|7k7EZeV0I2N;ROI#MN#_eE#yc?D$g)cew_xV7~2U_|TME z&`9zGbtb)07%2?jF~&bc-oZh%9PrZ$U^wf6{7xRSSWKmNXlv%%U+8bJnqG#D>0iu? z!`WK?M2(3T4W?me6fMnOaSRO6V{kgX4&Kr~pgWs;f}j~Y@o3C;p)A<}Smy$WA!Z+i+j>x zcn=*!qL?zf!gTl)x&%bim0&9!#rC5fY()#P$PB^@#@i2x9?Ligx*~4iBh-F@5 zBXejj8AyLKgndRf&_6U9w5R7m5~vML-~=oP{$<%9>n>n>ok7>qPINj+W-DKrRU&t= zydyuTqMv3;V?TJR2N-sB2e~*NB;bRh=1Mbcp``3(LhAAp5?pf|}^ zx|t!?N($+G!cGcE4z0r;ThL0h51mPyGZx}O8*&(&B>i9`G7-w;9$HUSbc@L7084uzIbRE`bf{X?TJvFbi~sY2YF} z0Ddx$_?JzcE}>&UC-NVNBa=ZnmSK$}MZq1M3X9>Va1K5VPvXPy7=F#XuPozpcE(N= zXrM*Gce)6Cq%sJCsjw+H0@pFVK1YAU+jK1aM61ITS_P&u{gg}cnD+F;T*|sB>3BGc z_F;EY4Ys8chjg5M+yyd)pNPHF%NOm%*u3D8WRv-MNigk&^02ugv+ z4Bg6r3UCrA1^cqss>-6R9DNB(&@I46SAh+54~yGGrUMg5E{o;8vnly>rM?+Ld&qEl3qQf|R5?Ne6n69Hf)UZ{|;kVO<0{ zM6F~d36U|BBRgml=5LE>3A&3`X73iuzNhT>a@efZ8^#XP$V*lM{l=6>9KKA)l6v$4 z>uD@VJAi5QC_|^)U(@e8K5f-bZ=t72jZyDnYU;~TeVW0-61Z?y-Lz{RypJC`QdYIv; zmu?1y=x$JvMNtK&VjI$(U>NPqlvpaL!`AW>X~A^SeAsThZh56MM;sr<8^QW1g9b^c(h{bj<+78sDvzQ{7#S~<3=BtaCx8DM;b+r7FYr~ zum-jU$?yovR<-~gn%RENU`!Qc*Cw!ob_cI$92AKU<|oggi7750`*fe^6vhDO+4E09 zJVW?d^bq@$JAsp-cR8jE+A_}QKp%n9bU#gFp8kk^?pI8~J)$S+4tCBuh{n-qmIogr zS4bW59LwY;eoK<@NAiKq&;BC4+2dsLj9eyJv<%Djwy>BFl5=b?QWy?*0~HygRA>0y zk;VET-~oSuuV5y)21bLkpdZUW7D7AN2jjpQc0X@e4)zWlXVE#Csk7m*C}_p7D2g#g zexQQ-ARY8)IJXlPVEvFIp$I2J2nR7woDS>53$O|F!B(t0?{BmjK1QeD3p55^MNzE! z_%FN#J3|ddv8*ozdcZQcfO&o+x{~!66oZ9H2>hf@rr{ehuBys*t{^Q>8#ARlmQJFZ z>2P|P;nxZpPGiVV7WF3P6Pw5#ke{S8kIe_>GIp#^&N0qgz*NRrrpSNM6-;5zB^PL4 zrnar5Ah}Lr$XZf?O_Ww8g-IoxNgViJ{2MREKk#M}g)^A%Rbcb_HQDqJr3sj=KI>~s zC#9IKWjsjU!wB*kRwo)P$o4spO&q;tEBcL1W+yW*m<=W|oUBJRP=@h-15lnlw}P$L zdFlgq=xO%&0Bi;Y7*Eax>zU7;23c$lKNIX=*su)N0n^|NuoWJJ0I~`X65uYD6@P?o z_!Ajm5((jkba%XgyerssJZkN5_L8W95r1XWBwL zgAq(c)CL8aPHaIx0ajB2W7w6zFzNy&47u&h0}6s3pcV*YcVK5bYi5Y#U>czT^MnBm zCCV~Qah1NK)7cIzVaRxu?MHwiZZ75M4z?46m~I&MKfY!@dX73-E|*Dti@3YXG9up4865a`LGXb$y**=$u4*e83qUG_=$g6H55^V4sz9(W4F zz-N#Lc^Jd;;c0LMi{u0FIUEJ&G3+eO*8dap|HF)Xwtz2S40y&E@f=;u6juwTxEeBF zYz-bT7C*q=X)(i;0W^jwoj7`rwxgrydTO94RV}3xb18tsWx}!40OpJ~JIAk^3+o?Z~+OE(A22DU@7>*&jd~x)GQd%6*`l z=yST0ex=pvFQyo6B!S`m5zw4uuocM9vRa|F4?q+IXYO)Ah!zy$k1 z{};#f6swZA0S#ygP@eG)q!rm}7H2+LoStH6x{BfGQWnKK*q>MEIOe58|BtWpjXCnA_H)6(=5Sk!8mff@XQ#{9HjaVu}>H=y=hNWUm{N$-9M{lk14`M!*NG0_)QXyCuyFCnbL_T%4@ucLD|=-$BVY#5C^} z_J&!wHhHV?RPsULx#XR~lgS(8GH(_BmAqc~6)f>jlGcSonB|V>->Txr$)w`srsJJtFLM2r=^3!w)Kb!;()DRW zV!0QvoR_CliO=6J9)b)HPfChEMb{rp#xY;J6pPsWKIubf?sympZRYd5tGR!%x^^uL z`-Zf6ahLSu;&th>#Z74~8U4ZOgULo!Ub@7&De(@gK3&{**_z;?N z5js5<%^3ivIX^uty%z6vC|ur2}$zevJQ^%bWL=g(rw>rh(y^$#n9jg@xJ43bu0#&nEw+&VCDWytFVl zIUPn}A3R?BLPKKG=IKmy{gq@h7_3geW_3u9!m(JC3t)uDCQlYRW5H)(S+7bq;=>oE zPvVh&%2)>zCG~;fJ2?F*)^8A6TZy;*G+jy-{Y{a&2RM9_4CW44+q2T6(@yCxi!;+3 zU;?fp3%b78HNB;_n2xVqlXk0JP+VI3Rk59k^msC;r@6YAo}LU#f0-PHtVX~* z_AAaO+WIQ3!RNh>Z$BH^?_Ruzj4LHtzkvMfDdy}uV)J@wA?XVXcrvr`7p&iX6zq;!WGFe*oFax{gV#F=j{sr0pZh=riIU8XI@QCD!iUN zTKEEum|N&r_>w5~uB3ur)F}{QmGR^ac*zgQeJ+Myu1zQ4tsf(PnUTJk^dcfZ8cTW> zerY@w@<=RdJ${$uRj_g%W3NuvW0mWJzqEF1QonXVT3h>8I!)lNw-B-T6vuIi`7 zE3gl#8;Cj{O1G15osiy;JO!JyG#wAdPemiogORu}c{x2bxs$oNh1JGC zC%fJi%d(BgXga=l0{-?z_}upjwdp7Ic1x$$>zO_Wb1=SePr4h7chh7e{Qy8Du_xnle@xP-cwN#5#(y|f#zTu$a9``;RMs;i9g?@xW8pY1D(p)& zWf(oGj}4uSzj=e+zspLDyNaWdlaYJ-;xFObCsXfgLymeDcJ_6&Z8I51S~vv@bu?ZA znG%;?UU(UaJcsZ4C(Pib=?R5X)7$vInt13)n6j&rJHhXzX#39!4anXPPkw{nzKxju z7IgaO$ty%$Fn&pS`dnH?3^SkK23yG3mJzY8#1FNHqq`U$({Mo(a@bBYAW~EPI zmG4bwgQ@yNzr*2&#*mX9gx@<5PIE8v*0S_R@J8dY#uL*8=|-5zfyvn9cr4O+MCZRD z%DxwgJXhF{sODGXihoKvBbk!IWl1wKya9zvl95!OMx*mTp|W=umS8#6y*|nK!eN~K zqvUY-rK7oGXki?-@1SHK?sP1f_(<$zJ!0@rlYe0wZv@%*rH>`=!#vD~6PleqL{9%E zar#qmNw+7JSpT`$?R~b$y!5CYrtER^ez1Si`3N~$DU85 z*RN3xd<=g1CK$AFg+t-^MzcPicfsZ?=3Ca!yq(Oyo*HU##r zKA2iS)cFos!31)?TZyU90PTk|o`b>Ff&2*2D1Je%KdenD{$T-;$LHzI#U<(g6=#v3 zOu!r5nch~sDZRINFTcn29udk%tm}T9%-!$bZWzU)5u zv(@~*+wj63L^Hb=PAGKeQ`ckx2zrYcXabd|2Z?oVDV)l6XC$X_Y;57rFrDXv(>*|8 z5l=J~KJI>e@fC$`;P7O8^37yIH)0*mhl|{w7_}wxU6wB7J&tL~-;wb-%-mS8cra}^ z)}%*|L*P1Tww|cH}W~kvYjVc;dgq{mMhlMpNeFU`}uS73};ME?}Gt*np)2D*gf7AVtXnGJ{)g$0(UwQEgO~A z10gISO}nSt(qoYAi9~9B@n#8{)-c%(es3=r^0DahS@@WXh~)l&Mm&tKnaap3ic4V` zjFx8=h890BbYa^N4kRUePI*4D6_MdGbYxL-HgE#R@XSa1N}aan)LqU>wT~T4aq{Plf`7UTkzd;u_OP%{vMs)oOH&M zb|5Mofj9XvJnXK>brCX|gcY7bmNt*bqy+2NEPVnF=5F$p@#(|ld5=;le>klVH&GvC zRin9!;ayiyGbs>5w@CL(%iu1Wz{yszmSzn+`Zl7AdPHuWXeYv7Jc8$00B#qjr(pvx zO~2y(jw0D?Ush;QPvfcM$b>E@u6zf3*Nj>0g$*mE3ci#(e3za~l=Mr^ek|!iFSjI3 zK~P_8^$^-29K9rkX9ZpNF}nYxZ-J4=VMCt+RntJ+R=D!c#Jan}P4QZ=VVX(R3-JeH?Ret zu)h+%U=j9sGG6Zsp*rDl-AmwIif>)&%A=BH_eTaPzBw82?>vj;jIGUJa zS1JIlsl>K`VQ9(s&ACS@Rm5UCy7(P@>*LhX@1=I~4w>5AbQjuw_?5B6N7Hk#V3!u3 z;LWo4VHn=UUp$_!EB-tEsQ3&F#8P<1uFS__Nc0^1_iw@8)!2w%ft@Rf{O-nS6x99R%KrOmCukb1jVcHTa6llb2YN^eA(A2TaBdSdZT( zyK$sGc6K&WnTSsO1Kj+9c=LLqkAH%fe1itY6!709?%waJv^w+1}&@!@=%e@S}SY zWsU-`qtW1fu?t7Q>zs!z`7_bw{n(PHv7E1AO+Q8xmQn2}M+Wx2A9k=ccCRt(S{f$% zrfZX9;fKeim!M@Qp(Q^?^1mhnx*v}>mAuue_aU_3AnpH9J9s_$6Z(36vPceJf{!}Y$%oZgBCTucme0^c3YcL(83h9@l; z*&Igm9B6!$k$uFdh@**RhA_H5jCeQnekAP7zKrk)FmfDN*&ln*n;fnYvCL{#2d_kj zo548j%9X>gbGzXmcV(?ZXU-_aAD8fnl>k`7gNw`3L$H{K!zP@{`B%Uy-j+Vd^Z$#z zn+)sx9=2~Pvs;5-7==Dv0T1{BD43P}9bLW|H2slEz@_l%XC;ro{oezF{s8Rxb5xn8 za79gWLZL5J)*)o~yCfIFZ2hA!25#YuLf^uLg|USb;ZsKx4k(N%j4qtRYTAnnCsBzy zw(#4+VD?+W#Wsf5Udwee$Vomf913%DBEJbclDbtXc40QQ<+0>sEWpA1bpbQW(SZ+< z)C)v^4}qHp;Xa=NTQ6XrUxz=Kf*qShgtid9M_O3G3$dN!$Ol|^bp)35c({XIk_9f5UJ54gI)-Ii5%k{sneq1-7t0kyTstsWrH5M{Lp= zE>7Lr%9UF{OFe9KYp}dKx;GBHb~U#3|KPwL27?a}HQrKaM@_32Yv1}K>7mKrkeWQ# z3Szq2!qHR(j!QO>XG|mRdj&$^0rdao0_a4-kCNLyM^5)J(dKR3>t-y#Z{g3+WB(v3 zV(qX&n~0L;Qs4fHOnfE$VOnTSK3qV17IN$ha*#=|#xKAh+<-?v7VR&ivbT^Cew@CH zd>_JR{}UT~75e;Bka#5Q&EZ6ZCltToR|yv3aq7WYx5lS6L{4O8)V+Q~)ObEo{OQQ? z^x{0M=#2E5;s$(QXXLUgb2<>;)gHUj3h&rC*(V*490xypEXR)_XFjvIHMx{L;`i_n z*N_4I9uD{C*q2j?l8%FaJR&`XobL&?+wfQ;sUBR6Zr{TA??Db)#aCc&-evDg@I4d0 z<`wvw2a)&__#EE-r>^)6nev~po@a9QQAqVLEaoxTgkw2#1lrOL|GgEttR)9tiXER^ zsFyxm=nZS!n=HJ2dT*gA8B&|{)xw@|42Q5PYzQ;GnJi%fI({9aJcsyiRN4`b+ZUTK z0!bc}{*{>fGNSAY*&olbi;?ODFox$L!3)y%=`~32e*Dyn)L@=W2jbaAAlUW`>u zla&*(|C>)Yg2U_Jfvy9Cf5-OThfJTs!aRUwxrXhj#06uJ?}^EttN_^$&%|@7u$@h0 zb2@dI8>#C~LuL)}9z(E>rz3?M@WW5x|3ASJ&cLU9O1}JIvKV=+girXE@4tWxn@>$J zO@2i@IUXdP1&=$f&>g0sDXkt>dK0yWx!9bKv9NCw6}^pQU*Onn`26cZ=Wo#eD`6r2 z!OY!FEN}~M^@2NL%U zL-P+HnmHAA<`+oqUs%D{@a|KQ^fb=-Cacx_j`;BJVEWI*rB{*r{F1wz&Rve@tg*=R zQ0&fLJfSy8AH*34U}a9BhWAVEd?_-%2xO0E9xmZ&mtg~}E#8W)y@P1-P8hkz@d5wE z>rEm4pMzhh!dGkuVU02$GX<}?n6?$avI=WAjRFUH3I17sJ{SM4t$hsX{1q*~h`9Vnbp5bQw$C!^*O1&Ku(%X#H6knO zi0A8xP3}kQ%i4i{;As?`!YN>BTzWqK`WLL|`Y}@Ihh;8-F<%ciwjK{upQx(?_ZWbk z+@IAMClY&{LPqto7DX++pxCa=)9ugPp?!`OU)XLy>p=V@>;5$sLGTRhBo zuSdVnBSJhG)SM1##-q1a!_@pWc^Py*gB5r%IRe}aVy_z&;m*WAoxoE$vMU3L?bvqX zoPI=6gSoyp=XT;bZMeE6Ua|#|K@+0QBKkWApZ{cX8qv`(MppvrzCucGQB9rz>K;HZ zZ|C!E;N;(+?^Y1`5B&a3c#VG%13Zxa7?1UHq(S#IxzCOGls}{Qf9GBga{aSxpCM;@jPoA{%M-!c`4M(vbc5y7SITNY<3LE$bMt&oIx1xFfq8jiUY~4w;z3>&o(AHz& zHqIv^KZ~gIWTbXF7WF*N`Z;$Pk2J>6wcPiX-Iv6eXV6VUern7fOy+(!EkIJ^rxb`w$5O^ovnqdUcM>B%LN@&(F~Tcc|01^RaWe7yS*iFC@!m7|jAvkw?uAFbp6|~g$8$~SNG!(w z=?p3*U!lPjc((#M<7Ol~jd^(qsZL}LCew>~WP@9X0!z`HR^-)Ph)9Oe_NM=iVn4R9 zKvY%tBl;W*hRy~zS1_{QBJ0b!;zIQCRD8ryVCG1o;uG1P3bKF3s+p_Npu6bZ<7A=F zr0>IqeVRN>4sbVbd)$xzeFFRTJkNdseF9r4aA zBD@d5(?|6FTW~NBi}wxV`4G!^7c#pXe{lu2>LzseexjA z!|@8ofUTcoc>Ov4;{cG@7g_fNb-g*W2i~eXy4nZZw+|lcEcE_LJkr(V+qcjj#?L>2 zy}gSp_Ah+88I0c#8d=pr&E|AaJe*l9A;bRyoXAOBiyW@R#$C_$Ps6d?CZp98`E(CjeGRp!@gQtGGxRI&^=q(v zC7S%Te@J?;Usbp)%d&ZeiA!UbJP z_WN66k;{?6C1~k5{tiInbWzU>K~hhf_e#@Czz zHh&5BZsgu~u%_W(AnPXXax3ctp1?!D&3&h!=U<}lQ<44?%*Kt(%H??QaeN+wrVnL) z%2;i^i8x{@cl`=~@&S4}ktpXWWO*-`yoHhci#YEw^lB=0zlJployZ!?iGfSGLj$Zq z3H_?ij3lfI*a&;JoLb2uwu|ZIS9rvi$v^)Ay3R+B55w9Ghc6n6r5J)`9gbDq5A+>@ zY=6c)-GKeP2V43CI`Ax?pQk4;WjWB-U~@S+*LHNWns{sm*5YL>%Jamy6Y)kblle}f zmz#NZKQwX(tZ8fJd>M26K6Cyqv-kmRBC-Ax-0^AH;dk)`-(ZoJ;v1@&mn|@r>sdXp z3A8l;dwtO7!^ou0!XKT1-#QG-Yj$-g8gK;mb`-NRfC!)~Qbkmg(vw-_l@^SK5oZzRH7hXf0-Po2pphJfl_xO;1GlM+QVVTC(y z>|-xq0Oxm;o8Lx{@4$lG%$=@c6qn#*#)9}^#4@A7-BEmVGM3`!jPpkH`Z?q`3mleU zx7xvlmBH0FfQe~LeAAn1^3mA0i-;*Mq37qoUYrIte}oK>X z3PYcQN*VSC~a`oS@l5zQ9qVM8$3 zg=*;@9NQoL@5u~oV76w1^{+tod@RH&;)Qj@50&IqvuIzkzXq1C4Xnp-qN#(i;=^H2 zhA`V>nXf<49%24oO&?8O1Lx0yhR4wT*O1UOWd0ep`VAy?2R4DK6D#Uiv4yP9B9=U! z&%@a-BWhep6gd-lE+B`fM2nVl_xUj9^IOOq@^;pBP;Jghsrzu*#D>`|&@jVDFr#DOK@pssm z4WO(HU*8qXx21;^;nAY{pg%$KRp`-Na59%qC7iz(+IKWaIe;vqC%tV2idwU_q6>2C z#rnGT$gn<@)s0kdDvFzFl`u{T&+CK~_D2?{;LA@&3P*yd!`c3b&ws$S$YXqtY(Bu^ zJqT|9#@^lFmEQv6=@CCjDnL>|{+6aEi9e-UQyEp&1sw&Gq8a}ANf#rU*e z(p(vM0lIkvtv7n!j0m(H+P@Dz|3uC_n(aPB1p~oafBgIyqWjBMq8{dPcSOgY*Yi1_0pUFHeWDeI8yOr{(9K<(AD%*(m7>iJqnFDhG(6KCmTl$aXJ?3IP#Vgn2Srf-;>PCr}Sqg zZ3eylf-G%5$ga=q^uU@A!~zdsHmE-{2m2GZ4k@G4%<$Pp3lQDlr?)x5he}ydbO?ownUVla}zoj>M#5UZ+K5rjk z@i!9z)dOMm>D3x6{|x-o$7tF|-2EfwV={9(3E6%I+qW?DZt~#!AhiQ%qp@_uh;zEq znsG)gS8d^bjksSq`D7W^Dq)7Iu=r~jOC{r2iQa#O7kCYubvOIh@!fA3$8{j&TC~#j z!y~{?e~>kjv7JRu^hd6^m3A9h%k7-^IG*6YeD@BYUq^Re#(%#;q55wB+ zOT4r<8hIcnI~^(h8hl+ze0w2r?b&GeIO5L}@k$3XGb71N_vGmC%-fvJ85e-Z3%JAi z$n!LMG8Vnw8^6B`{$()UP~PiMc!uNgGsjbnIR@)=9G2-QFnK8YemLiy2)53Ed-xfc zy8wLsjQxuk`Nd%GOh$PaqaBuU&<`_D|3J<+Fc-HXsYgNEQ)tn>c$&Wu2VBYATuHQM z4tpQ%Atd?;-#yPYAJeM9nV9T=Jj=Lab7IhT_?q3wZjXk&yMUD}e*gtn@%bFGu+eDB zK=Q}_^tLxT+?Mqr^|8K1w5S2TsSQluK)mVxw1e^UBN)vdTnCdyed!(W{skI35AV7G z&s>5W>tTyG;Zav$FJ^Jgr=0&0QQ{Xwi*wPiCG1yVFVll$}SP`(?$c|Fjmjy$meKA5#6 zAoDH|dn0!77VP6hWcLk`&tgWo2!Hk+_x_Z4i?^t;4I_v=S-FKh*bXjAU>WN%M=9D` z3NCtrlf5}UhG^tq@WWaHY}g^7X^Kbh!}MBP6^GskkR9=Qv8*&SQf7vv7+o+H^m z65ag~-slW0-?_v=KjYJQ?sg>+{BO8&JpSZdvaX+I$TaF1O03wIPaU|bB|Rxael3VK zwqo}eVq<6HUsqxEi&&5C*s6s{_dT}H;vt?ymJ`s~H#p~Y_=$*gWV00MEF~BJj%X6T9vy##T<2M|`Wcv`JIVb2K$dzok^E`+l*`cge}X~Y zx0L0gFpn!#oDf=?a= zt`B9F_rosig&i5jbM|H4j$?Mt;CbUf$4{8K6JZ&ShG94WE_E0Y#1LYP{>)w{Fw+d= zmf-zLu;wyAy_u{2%w%iqN&%}@ijC>Xb|m)vD6sxx;7JsJOW40zucUFky&yBSt{JIG&)d{!{8%aGDCY_hhynvpi-oVIwF4tT8g zcx+bZA^o?J@+aub41C6CAnbK!WdgJF7Sa|C)9@4WX{>TUPjANq@J<{U_?lQ?3cMsM zVnD!&oN*ZEj^>H5&3Nbn(RK-0OAQ%e6;aUrY+fBCt|ja8C&}oX60sPz*EYe_vM~PF@HaWnK~8yJ_NML_?ee? zVJ6$rs}`JH4~cA|_f?F&8r&Dq+{VQCO&Luo+T0l5*Am~>lQ?2`MyG|6YiP^2+nMib z#++iQ%t^M>7NdKgF$0sCp&3}##dwC5$ay*PT)@oDLC2`(Agw=g<+bS6jeLJ6@@FL` zy8bnDv6kmF!N<1Zz74_22DD`vcwI}}Rv;Q_0NyrZ-Dl(H-p0qhNbc}5(fI51@@ckr z;UDi~|229w8@;XN4yE+1NZ*z-%4s~|Lwey%e@?GH$1=Rbv5Ab}Wo+|nX#Sf-2%lg_ zKZY-S8O?m2?DG}+@FD&A797t*YSTf(8zBB^&^LiB;v=m5*Dz#rz}u%VZg0RpOu<^M z#S^!NXBdEN`*OEV+^rKntuMVD%9HvLi^nmfWBj5ruDz?guY^JSaGu+~XHytG@#& zf5cwgfPMNs_WoyR`9srNfAK7-qcDDwZ9g#&Z^m_m{w>P!C=EPr{!D1yf+ZD8B?5}6MMPjxZBFl|g zI~big0GqHkQXGUY?ujJ3p@}_+pt~|-?U8o}bh#(r_T{_2*oVGc)0gXqa=-nsEeD~A z2jH1TBEvn1B?fb>J9fM|NZx>KSdD{hK4fnyy7UDy{G9lADth(>Se!>ZT!~D#5qp)8 z@iivSYD(p+6s>8>Y_w*5SzBhN474{w;>uQ!xs`0C2|lU~tsKwVHp@SZc6cKljTlCc z4nkv&1kYoM&kki)kHBu8LIiaIJsywU_!+Z*9$3Bv3v@M^>P>jFKM{#sM!OIhp2y$M zu!9%FV_ysw&j5=@fXtEjw>`k<9{8kvXhu8xU>|ou6Z(PRA$ZmUu!Bcteo~%zIPx5h z_6$RAdmx*A;C1$;7sKfN0DR6aM4_XoyBtV_xi6Zy2VD68BGJBCdw{I;Nk;n=T*JL! z>( z27Dh+9?TW`nqjmN%*sgGZtQgj>n*Um&A@j@X417R1KBr*=!JgwC8OG%{PiGa`yisC zp~$@_c{4^+sZZDhz{0qb_J+k3sN_6j~ea>M-0}Q@#In>>_*IbV`9C| z==pGZc`(}%Sn@tZ8|BEa1?Tb`9>^j=CN02ON9_E50SKFfjhn*f&pGEynQdoz1haZ97H1qiJQsOVDaPW-ZLbGG4e%kYh%j2Ci5=0{{%A9+$?*;sgRS3V zBd@`y{042lfMcf-hx`PDjYFE}fUh%<`tfWJL+S?+;~s>E83RVgBHb~_cu(%z2?^Fm zX4{zAt@Ls&R(Te3n*!b@V`-e#>Da^>^qf_eSo1M>*(33=hoSHMh7CIZDwuo;6g-E& zc?L`O9QS)33_S~`9!C}rU>WZrAGx1nk0X`mz}eHF>3)34zsW6bMSk}p(_?u&xixZiHlQ@0?b8rIRorXobfcWSacpBEclK;+!Kbz07 z1++Qre}%oB#$3%r0&|hZ3huiB?5~G0SczR(hW4(&#;;|hoB6lMw~aw*TXM!;L=U_3 zlzqAK0AxIxIBQ>KemHj>3^sey(;kdKPOS?)YDW)z*R~yc-HY!BBY%HG!P<;GZg1@C z0PO2-*xC_f@xzh(uFQpRb#=zmbYt5M36z7ZW=NnZ9=8pn?Zt=&@r>R`t`j|Phv#UG z-ZammP0?DP);80#?et~?y{Y8$8tzbm&M!gsi`id^mQnfU`?hR*^8FyJ*KXW(cb>2t zGTWWDH|HOOOn<~ZF6Nxy)8rK{Kq{x8vF1?2kWO!&SI)dNVU|;Ls2aOejVu!o*#K|3 z6O4#=QVOpJ47D1!+(5^yfJ?k)FuFe$4h$dN&<;&gYp`#1{ox zTXd;Aw?T_qfU#2g4daOR&*LuNA+Nbedmb|S7MaWhtIqr)>MqN$@=KVNWz4P~ zbsZS39mRjtxnQVP5Z~+t->FIW`wvkz>VkA}g z>?+2;nmL${d_QAElNsquHxex)E!!9BV8?vIx7dl$;}c z)I7eM%ba~l-(=5us~(+cO5e0?1&(fGhO0TU8tqWlOOWp(EZA)P{4Ho=b+v2N?Z%1Z2_7H%yVucobKe?C~84)#9a)9cv6 z|1twp81o#q71?~GAfyC@6gabn(bnP->!VFAvUx3n%u=$5ZfpmER6jN0iJP&_>yYRM zo?o3kzY@vF+qFh2JwOS+1BPvfqeCj~8BrUg*dA}u3!D$a6AfgH{b;;_&!=6$&M-Xv zew=dv_GBM)Vwdc>gE`Wl$h0$OH$#T@Y%{$#`dz_1E@$4>@t1Xw=MqnkDbTu=w zhJPy=T_u{fj!|tvHnn)_l$fWOwYkV)74qkQ1If6nh?UkO=WRrXjj;#q(ViY?SRZt_ zFV?RQn$m}DH(IOgKA-Z0caYpONKW?X8RqO&_TS^!2T1u%^JR|;hZgezXmN|#C9R`whr03-k;w?LhjueZ4X9kUf7wr=mMVGfVFz` z+(>OLw%W>y8Q)5Jrys9iTaEM@(>iB}9tg6BA-O$4`tHP8L-@2ix-gn&9m#n|GCv0* z_dR*~05rKb_v^=8?LzMcv+ag`XoH-!nl0&NOC*7HL#i`rUt^nRWuB}XBkTo&`f`3h zd`f?C(VrglV+{Qn%YbZDvN)U2*p=LGHYl5lMBYaN)?(gduHME{PGW98W9FtIp|3&Y zB9K{0#E)%Zbn}qqGLW+##BAoto9L0O&PL?76-m^vtwnMP=jju+5;t$a%B^68dilA; z9N#g@&*{Y^r1vR!n8}<@=gCvhiOC?x_)Wjd|4sqzZ_0D5yY&UVLy+!X%mcs0f)tyA zPu7`c@@~P?+90zIoFPxpoO@Uyt>XU6*jvH8X|MQog6!xzw08~9TF#S}(N?32)qEmr zp;wz3)plf`GG9%Zv5w4GFP=1z8QYaMkfYtfL|gjUh^sb(Lf6mC<6hq)EhCA!pnMVE zEaQn)Af^TxVRJcuJ7cdwhTE~~zUxxp{!Oq+I2NzvHV?TWM z9(>*#WbBD;l${%b&h=&6m47=BDYc;0XV!{5t%kYX&P>+hYAsAF=7g#hDCmynu!e%( zZAR19WqRM0dFYM)4+PVDpj9KeX0Ob$bjGuF=C2!`tsAr0gR2KHrhbg6HE65_fmElF z*q2Cd276!dHv=m?D`PvBb96H^+yFVYK`%Qn2W{AIjy#(4#OBDVDI_B6h4q(R-8HkGWjw!x z@m7PK)u2dgu@D5VLEE-t*$T9T{aV^)WV8`kYzAAKn6(Ye=oWftO^(_Qv)-KJrSzg6 z_t?VxRDtS^So0dBQpF-6iwX5-0=P%QnWP%ZS{Dn@rY4j1%2NH@)~+B-*Oci z+7mer$gpW`twA;`yi-Fg>-)?bh;ug*|860+NReR)Qfq+xTF?hqCiG=qy+a3{*Blw} z-XStv!;{R^=Cd~kn>!x~EFq?D^NX{YjbFreKA8N9d6qVO@rYggaTMOu-rdCjg`$ zKD%Nw5IoK%clerB12f6r8>Ut#~%%uhK!l~GRRoKKkTNyyIFZYq8FmSYusw}nxs%#velN^8kpD`eV=yEX-n zDRZ%fZ4JFEp*Kyj>aFMvzg$O~f=!u>eQ?d{>)hS;E>D`lomV1TW2quoVXm=s-rHXY zXv4PC4$IaDjkW&0J6PO{nH|P8L-8nskWdd=Yvz{!VJUi0%Uv2`8JaK`RJxfDd47Id zn6?Z1LqOI5_Iq+hFU~Vh@NLcEpmr3<*S8G=F}r6^+>9m~K@>St3(^SvE6t>7X1kJO z`ie>{Mt5TCP*XswEEHCnfpC%7VNIapi8^-9fpd<9Qh%JUYX2}{{u!6;Yo zyyc+7btv<=?=0l6hgrnESMYfw^3*D(JYOG>(3;R(rC83tZ9!3Mu-Y1|m`l3;vIkeW zVx%2CX-=~hZTn%%7eAGDa>%m?|4cw$BNG;*eF)*2(5W*|fMt`+Afw-(GnDf^Ak-^OTR zQ!H9*&g;T)`JVyIWnVt`;@r;6M;Xs)j)d%8V?NtT*>^QaOGe$Ae_J8dQV`sb)_^_y zK;{=VbL9rcx7Jw&CCj*S0X;FdUrTRbPmxy>uH*k>!|b#~&&sfmt=Rgx0UA=1*+u1U z-qx93x1h(RVBKvSK9?~~I2)wRrGJY!zk=_z zvPF7RLQfme8*Nw<8o#5?=L8(qplP+BQJb!>Ht*iRv5ov~1w-{2M>DX%*x75#eR?6Y zfyihOavRJUgVFH;Yb1Z zWAD0TmZ~d#>q76^W)@7{ZIel=1!uLwA~wf%H3E(GKxPTom%>)G;d;GISI+6g6O0r) z(7TRkQaQ71Oh%lG6xJ}tm2BlD7bD}PY*+2DA1kqBt^o6I6K4~P)AX(1U|HsYSH16Y zB(fOE&*sXn!Ps}qzITheZ{qIjv4Ly3ZUxsZAmW&hzgd8 zMI^orZP}Vxac8Cr$HEf&CK?$n_v^zf4MM8UK=156WgKgf>HH98&9!2Em|5$yJ&|K? zdfXei^`h6EKtXGI*NUxCcPn~pYswg@9%L4IEwWe#j`Z{Vk_>zL`_0IBGZ-W401< z1@`>|vk@gQmo}es^~JWuoNM&4jB{7=tt&NF5iwR|Z8}$fO*0Q!#@(GObLTb8Ywq3G zF{dIMlrrzl>0=xEYOkAtg{B~*C9RD8R!G3uuNi1HCNl5o#z?v|x-J}(fha?N+p_J* z_wBi#DCd{;GkkUgi`|fG4=~srS@BD#$kDiNFf#MK9&K)~4Et)mzhF`iyThs{W}G(~ z==Elr@pl!yUJpX_88v**>S%CR%UJ#Y)2yLYuSVCs*}B;{9oTkYQ);+7cO>K{iI3jhR>eA1O#lIjRw@=s`Ji-T~=#q9>h^cPGx5 z=X2hzp;}q%h^Oj^^^}t@Ck}6ok1b={j8=lYwjrwxNFlH)hDBNh(pibjS0c4ld@Bd< zH~cCm%_wLiQrXDWo6#2D8OV^weDc&1Ehav%6q&Z*$>9TKTCAR%b;|aw=iE(p& z+Q${3Xen)Rrpa;-wr`Q>H~f7E-e!Z#d2la_!00mUqm0$k>`Hz2awIQ@v4N)=^KarQ z#{cW+nbEd<`1Z_WT1Tu$PZB(P!gs{5G_`0ujT#ZHHL?-~dW7Kd+GJSlfvkEXE4@uG z{_PGjyMw>(;IAwGgwW zdF4iYZjr?Y9oUmyHl8p(5WNj|Z2jaKRoA36qQ?ni-+nb@Nb(urzDHp8v@(mP%IU3k%6wff;oY?aHCPVWxSGs+H3w&AIIh0d4>vZJ=cn$l1!C z)j{uHL+_P^Jd)pS=DTYCwSK;eBUTWWaJF^ZHR6cttShR?+vwF6o*X*Uk{(%;=m^%j zfxYhZtP7az$T3$-wBvXOj;ph6Gd(xn6^E{l@!DdBjPBsEH#m@w)eDu=M25QB6(>^nwdO2q#2rDK^)CKj0DN}!X=@PEEVH#*!zTRIV-{-ZspGcijzE@T1M^}vR~AnT zvw#kOxnu3ldw8q)9wy@nsbL(?q26&EZ zPgqBVR;g`TD5F8++DcGnys%jma^BWV+bZ~%UuDb~2-yj%__G=9xAg2=o-8jj3u(yB z%%K;4H!EwN*O+4sY4!0EMLft>JjNE<=B)V}jNfv67Fs)(Coba26+A;vv4Q7Qv2V7t z7~IG=F6Q%cj<2H0<5cqsS}CTBFVWoOoy+icO5(A}7`uAF7&)|PX%dCfSUTQ#{7 z^|1`ZXz}?!nV_{s)7A)Df`=w}1L~RFzZ_)w&V&_!*4)>1A%Wzr*oSR2QJv?@RoT9o zzHvcgnjShq4!(t8^u_VP`CP&M zZ^zLmIy`&TkLnM3WG%@OMdttPl`aT$0G9@-k@HtbUkZ9DeLEi2o&kNoXAq+#X4 zoKUM|Jx80gh0hx~s%NagqAkZR>XD7nwO@X>iEp=YTsGL)PMuI9vTJ6~4YQ^fD@8(9 z;N%0uk=WD9xK6%#X4QHy;@oY$jhii4S6X$lJY3+LOOzQ&udFCMQ zyDQBq(r!H4T0tMA+Ktu;XmXy`^P-zIFlqu9W99V3!qwymSBM;gJCSs`qUB;+j`Wq35_ zE-~()iE``i#u?&z9naI6$=n*Li@z;MLzdHZUE8x6ZJ1#lo;{mQElCMaFb6eW7VGM% zb*yxUp2-9@#tLbP_!`qC~G2{ZJoe% zU0rsx&RDO`__{7xYt4QzJZ8`xvldx&2d>r^M!stVZsb#rd|YQ?4p+_@?Ks11r4!97 ze40F)R?;_WI&n?LV$d^lH?5i8s6KNL7EtfA5#+h9SGI5?7z#aC+A_E`V2Ua|BmbIf zW-|J3nOEPGoP$K?BF#Cp*?d2nt?anD-(2oCi^l&Ck@_DTEX_3+bNF6ABPZ)xjBjY- zRHnF+?_343k?-VS^_J0Geeq6z$$BH>453mXgDcdS%7_6&XSI*C&eaHSRBqBTL+9FxmMeHx( zN|}Xae5Y?Q%k$qA+4r)$Yq?+WK>S~4xlZmZGDGvkU@O<~O%>P3$5F9C=ElzE?p8F- z$KXvEnf09}*{Ee!GVSAtk+jThPny-3ft)#zWBoY44`=s6LcQ7V&$WZu4(78f;`*{b zfbRz*zaePzuIyVk=!ca1AZ2R?t|{}LeX?hiVgZ_E@eu#7Tb^$&R1bR~|K-~x##s?B zTZ@Hb0xuJl47V-c@(5ud+&P zvr2C)pxrPca z^t-Y~ix~bk*4P^3H{&iXIj1#u@;4`p1U$6DsMMhV!IeMeT=G4o5K zBiE2qjc4C?NX(ezNt6<+X&9j_u57NXj(N9Hq!G<_kQ}In;RnO&y}bBFP(|#7Jj9S3 zk$h3M9wWO(rbdoPCeX~;D}5K$)gwHab2o4-nl=(%33;mHTfw6B9OKum-+xx`)i|rD z5joaJiVeU~9rxFm{d)AoxKz0}Le{e9o@1oxHzm#s_m)%fm}ikCvyGXNP4{gtTgI&O zZ8P?*!j>Xen|WZY%dgLvj1%&|8b+%{RATW?uMZD zK-L!ADhuV+2+3&)tVWfAw=!^OYr{G1#2=D0FEK|fW%iu0tTw^-=1I}&alRHg){L4b z>DP?ht^c*98Lj!bMRp&5D_w3`rbQ1U-n6IDjI`sZalG-nzXs)MB3Bwx31jTW>Dqt{ zXY7kjS1#GK3Cdq#C{|pnsD_)@G(>hH&#IrSL233UlOT?wLT3GjwPD=N^E^1wy;T$x| zK3TERV>QX1<`bh?7m&j>0+kO?i+nFZ-ByDFni=X^FBV+SP`Spfu{eR-9Z*tk%;cZA!Ew5%KVhBfJp%(h$& zl`QVif;-9EtK0q=FGpr+{UG6vY7kr{&CfLc^^h;Pie+CzIme@ttdChP?Rxc+*558E$X2E8j%~x*V245!di{B zTJ3#-ySsW)xfriU|HBU0KlkKcy~zVpKb{qF@m8W*tLFSJ5Od{k;QEeA1^ccy_x+s}TwTH4Ve-_B<&8l%Xny^O%xmfE6?WL$CM@N>Di( zUj+{(j?GhzqwwF1*gVO5sry9vXyB($%s9o z1m3Bj2d?XKm3e25Tiu9Sm^``bVOYt@*vgmz*DG0JwytAz8dW^y5wQ{fuUpbLZc14(o^1JZ* z`hOz`rK|4`)~^LRY~@^CHmg;iWs+MWQ`fk~nqAMe_UM{?bvlbM=ur!LVXq?Vh^Qm0 zF>*|9);!P{z%|QyUe`>7|F=@Doi=j_kCpRS;xeqc_5X-uja0)1ug~T{ySonQX_2iT z$+>C;j17!pwJBk5y_;y)_GT*x*we%Nuhuv+6l+;oRWUo3S9h(EYNxXQ*jGogN*!0{ zJcXQs84&9&kc*t3ayHWPPuZ){;jesWNM=dg~ z^=>2ITluO1Bjm-5su>uwHP2dPNk&$#Aqo72brWZfU#k$YYZK1$v(0$Sm^SVbl?{>I z0;#kD>1EkARv}r{G9K=LTswiEjx=LrvjtZwS@X3P>sy*;3RbP;_>HTL2VFC(&Z|k{ ztP%ImV>S8NCS2Pnla?6FaTpRbMs=>8`J8ErnRmXdB}TMh#INp(K37m{L5v)t#u%A^ z)lH)St+jI*$dau!Rtqa^)Dkf+Su4kFTKHJ^LWGu`XXY!i{T%xq_Z~(RA|-MS_vM6* zj?g=1&~Z)T~$unZ<4g8`g2m?qcSv#ZM ziR{+MyMXP8_fzCm-1k@F>$xr<>dV$>taMxN-oU@I$gz4yFRc$Y_RJAsB&%Jr1s|_v(MrafdS*I} z>7|^hm35JAomN&9ABa{L{RaBUPM8PTj$q^Di$b5xlza=pcXPtO$k=(Vz9nkP zT5;pfz=fHQ@7Op`W>sQL`xkj0)k^mB%*PsrjFUQN3&e%z%4{a*>L((H+MYedXe&5d z^F(v4S|s6|W@}c!w{vMO8Ga=)Be7yD0gI9I85g_GEl?pcY`)*(Sb`PW%#&q<-D>l+ z43WusZa&7)A7$rSxnMPwWmvZ0ZOvkpah9WHvLTP<9I7oi1fy*cYEyf1{}L>^xHAhks&wnxv+z4wW4Qz68LM*iBiasa zMb3qrLq?VoTR-O+pqYr=gi*3=xv`6TW}2~bBKNSa2GmnUV>N5`Ied+FL2KixR^v#U z`yRL1BhPm>ow>l8e!$hT*~pNwI-WOIOIxkB9M4Axp?#-cd(@AcGkqDB+7 z{NT-uUgT!2&)Xue+m6i5l;pOx_|B^FMMIkU7q#r%(&WsNc1b@a!)sGx^kwR|+_aWP zcF7r*<@Jsck+~mSq!Def55D2yx{3B+%->{oEAJtXAzN!s;%@@zf5eYWTdbTm{uO^( z&3H1=6FqZ{LYxzEiz~ZY(8GvZf{WHd>yu(7gj__hUHS;wnusL))d|-@uKYo>rtPm- z`;Lg!Aw7-j&9nqnXtG&gU`bpVyO>eOudn*?SGX?0CVLbuJ~!aA`Yy9+ z9;jtdf1_&CI=f>7?kp2*rPANvAwFcAS94^J^(&$yRu`!mdQCm4QSch}ebdh7NL`B| zM{abT`+Au+<3Q1_2BR4}G$G`8^cBRVf-eq5V3l!V3F%F%7`kz>uUn1dOZD2 zEod>DiuGF7ZQ63owfF5AQAb*5M%S5R9r&)C=9_n}M7CvoE%G)>ifV>iYY^%Z{*R{q zgdT-X=_TFc4DMtd)EHU6>&&|TQ9QbmNBd`O#kXjJk1@*itrs)hy5_rso3hMzAu?GE zvV1>j73b)aV)cfxkbIhJnPat!bNs%Yb!!BUOb_hZQCEq&MrC=n_5Ce> zug8k7Ij$>xj4h2L{nv_F{616sMpNV(bsVpJuhFO#3Ex1`4y;9%>bs24TI3lyV2(?D zg;|k)JFmN_Y1UZUfg)>zu5^zTkPX@Qy>Le^Cmbz&xEia)j7mjVPWc@7w54H9wWqR` zQOS^-Fn=~vF`AO)$Rkmshi4b7&E^A@!*>tVs12U`7C%Pi9-BgZT{n`n%7QA{dBxxx4i72gcWx+XH!Yr}+j`tg(-^d-@`gC{rc}FQ+C-gGFnJ%;j*S#V;j_U{@p5 ztv<-#mWmZ$=1y7(WgP5rwlWD>%8ke!hR;#^#9RF8kr?#-;0m^4)V1RAW@a@=5`A)J zq1*o(YX(OnPZQ10ayN44@@Yn-`5Sqz2Hs9nrm~yn$HB@(Hg0@igrMEhd+0-q4`r(J zNH5si7hEslw@?Ck{Z@2Xgv zEbV%l^<1TuF$|oSb6hgJMq&}AnL&{m(_?*r(u-=1Z{`O>Ym8$ZAeh+P3W`71vsj6- z@qf=@+{(t5S8(d$cx`~}zg{_fzV^eYyCuh!pk7{H%xH|5n_dM+80&Ma&A4(Pys3F| zyzQdRGqRD1wa((ImpXRV*vEWFB!!;|>!^i{h)B$Nt>=kpnOAM9ZzpJXZFM%*IkP?- zRXKTB{L_%nwId5J0c+2Bj^eYavZK1YTUQH|at zY_2xeH8Xk{?W}UQqNeSPyeMi1a&6K0O#%Kg9)(`!tDlVIbM`_h+ah+6-_M%}biF}T z$Ye^zRM>|ckC8z{JYZxQ(PgaHFjlbTwTieVTSLsTJiGLr38fkNQ!pKoRYvX`nYcdF zm^yFq8w1voh&mZr-puOj7$j^O-$!1O%~GbJIa}b`*ocL4{z4{$#{J}u;y&s$ZO46f zv6)*2A0BHxcvSZ6 z;3L)Po%LGIEY^hjucHd?%m`3l8tkk(uhq=|WNZJoc~1NVzv~JXEuLAjRxdoV9LNtd zZr^?kUfAee^yMwTqiD2OvPE@#pLWTN+0lx}sA|Pplw78Dd}m?sPW3GXOSdxnA_RB?jEa?cGQr)S2hp9p2@|?7n|`!GwX~>Y`jmc4U?;i zb?a`eb2wZ4$B66x6OSUxI)2Wl#nxO_Zpuo6o<%k*&sM`@n-@n+ALuu~HTDg5E%IM; z3*$I@E*BU*meaKogSDkAasS8-a!yb#OS|mqklat2rN!)vfXK+}G^Y-6GF|=>ku{z? zQ*!*VPQuXzlkAETb7EJZMU%(3_eM)~40PlnQ5(vuB{6rwxduxW70IaVL{6rDg{7+F z)nqf&xcGBV{=&alI}pe*nl!hSQM38>u~u#8Ds<${R#x@Adfl+0*-8!eV|7T>d_`mU zj5?cOAB_&|W1UTPFU}Fwb)$)%Mg=10QRGGA-90&0SNsJJ;d-H1Gi3G8>{?H|Gfys4 zujdW^O#Y&dLk}+9?;{U429JC^m^Y&%Ik#Bh5$Aa?qc7tq<0>(eS9*wycHlB<337%} zS;?)N)?RjLhlNA#89SDJ_E=sCG}o3pjTZ8gE!8tclR-7way5Y7dgnin#8KB@sP7S9 z8CwL0CkG|Z7a3*bywR(CU48U2X4u#+)*tE}<6f@J4IGBIl+BCkj0|5?8H3pm6fzWK zBU`3N(Yx3(@59lI$>w|QKyX-Uj+VxjvlzZ7m0KhAIxLZPK${$qsTH?6RwZWN&k-Fs zyU}7bSX3&*0))kpInPS<)j564D zdz{WpsbQC5FqKjRp=SH!U4VS|g?QJF`E`ke4Pp|{3V`X8eUn|?@~ zMGLISX^XL(gAN`#qT}z6gFkJBF@ruQ*ZG{0%A=KtRPw59uK!vptw4@m{XuYrVSQvT za%RnlSq~SixV^|DKr5FvBSh_}44pc!SIt%&GxC@VV}Yow)kVp2-*p^dWc*Q=GIO!< z$5qNIB9fS?(D6LF5HERi_Hy0NkHt2kko>)B@wVyv<{R}*(L`IkXYKncRw$xc5z$J- zSrG?>Rdba2yxG5O?HIF`tstZ45eG+=LHQW-T|OSCG$ztu>+rB^)t&)@3Y(@8&BXg5bbCp z8m_a2`I-br6)SPATg%wF)e>pl@)o}!t~C`C~kSeKC3dGtEgdx9MZmcslYk4w!~ z%vn4V8HQfY&r$QuGmIViT!wIZo5?%ufZ2xjAnb!Vo^iXYazf6bb$ON_`6)IUDd>0d zC{vFfEqweBBRW6jbv?HcshF{78I1LI&V1`Ch=EtJB#vEo7_~fW{L$jQY_VGx14L{P z+7fl`$RlJ{oEtSJZ;|1e<;n$_2S;;1GTqD`@JXC%7wYPlxdjRv8c|37K1K8LpB)o(?_|AE@_9t{A^6#)k>U*AxdpzbUY(PX#X1%#J^GIMZR-M_yd=)|D zL6Hlozj<~2huc^Yq!$ifwTxX(RD-AazS+%=yMCFp3g zQF7DJc2SZ2$2alxSpOLwBs@v1uFoUe+`D)*_IHkWz0RZAEM{`7%ba6neLiJ$PPUMO4$nUgNIX~w%);joI#-8NYaD6V# zthYOkd!IUOjJxI*&nUUh6U*>Ki;Ob2k+BV}^Uig)q%Mm3pSXb0WXR#%h*P3xff4m# zXAH#ba z#CiEl=i5vNv)RdK-Wm5>?;f5bqL`?M=RPW)oX?=y&`y}#Y3{fi|K&WBx|BbM?f3s> zIm`Fo?A!yTnM*geVYwsz&trqwh7Al`=zCZ@M<;pg7O@I3-3}>+B=b26goYgs8y)}t z|1c7>kz1Qw!p?HYP%Nm^`VyNqF;?INU!Si;&_+g+OH>PTAFjo&v)3_mVc8y_)bx?N`@ zclc6dSQqQWtnO^P>UaR7gorL8vWT7rtB}V(`OF1h9ai25Ba8oePH<52P&pS>m(@pZ z5NOFfPo{6-b?TxDG0K0)?EChE&$&-C2C&7`^AY7E$Rl7;VU*^~E3;VZ^TS#}ta-Cu z5UZ%={By66YhUmIx%_j_yR$9LGpW$f@L%D>tit;j_AqKrQFqEb8okRcnmCN;LobHxrpfG!sPq_(RiIj$^Ar~ z&qf}MB5%2si&5p?Ft&A?mg{)kJZJWYc@nqL!uE!gGq1++(11F`XS3@JXFaI%x4CBs znda6kj{U*hjx7^b2Jm$D+XE}+FJS)pr;nr0cbG^3KTX78~ld7Ve^QWrDi7>OJv;^5G=(7A{o zbNd|MXs1O|$To{;GW$?xPeboxJ)kxtTY>Ku^YA*C98HhR74{v{j(e%T^Me^w2a8E7V=OBsMnoGqJ=vXCRzp7L zVa+~ul3p`^6m!fYUbAp&!0LjvjpR6M(B7n18t_)9I2lqeTD@o`v-G>!0l6*xmU(4fny@2^!&e4r?XC z1W&Bjk{-Sp{|+CM28m_j6}U~j=F=nYZ~TUycWSOfoD=W!I-T-Z)0y{JIr!{@doWfi zlx3Ac#L+BZZIyWDlM}mh!2Z-&4~Ghwj4o;^E=P9z%ED)eqzNAF&%bwjaDZ*ugwjzVQAi=XP2nY1Vk9 z!l_VB;)rFW!f4wg{Aj2^G4 zNkq}Z`(esUEK@w|U$Ta8lQ=yP=6v#`IXP$b(8mAB9t(zX%KYOP#yP7@WhXtfD9d9pLjLtfdrdEa6_iW5G#MuWsaZj=1DadeTgB1hHlr zjZU!=&1Jj`-73 zZ7oLxt=h~%v0mfE`D67?R-T+rl=Su&e9>dJ$U7{shgLDYk{$7J#!E^LbTN`}46Bh& z`JB&fBx>L@F-XTW?++MV-|CChPUl2juCY|2zya(bJ_uq@=62P=p@d_R$QNXNUR)C+rv z-bXYtNB-dF`6eOjs`(0*;(P?;6_VL&8*#Xo;C%z9EG?O1%P5Hky(sr}KBXKPRbI{Kzqo-9$uX#jmCJ=U2V&k_uXAmhV#$H0aK{n3ZB{Dr1k4C_}VSno-Vucn0$Mo#g7lZ0J-~+wAEy zaMITL=WKkx&?}nys+RQOY-3_R$x-IjPuk%mgH`cpmr&8WH1dK}MkV<}JivQj9W~kvzB8EM_3CaYKftE4z`}{q32w`B`_&= z(vxE;=gYWkc$wRmI)wja4UOkKWQqR^hf=B|5P4a{xL!3cv*!pEnn|u_g=Rs{^mU%r z7ygwURqzpR(fY+vipZBbEvLSM7a=d&s(c#R?)4}mwPyf%->2_klE;nNOZDlT@^Wv} z2%aFT+0(UUo@W_5UX3l^I3#+kH*!b7ouHkv=W_4R?`bf9NIm9JohLtKnOopt=_xY` z9(vZWOx7qwp1)Dz2aF`7OLUgY;8mBjg}bCO3P%n z^DL+KZa(Q0#+184c|rsKbRW(Od%$EcnA5t4Yt3OLV)~4fBx~TDfW+>gQ@t}XGIA!Q zm_Oz!^+jY$4icS0vzCztyQ4@MbD^#G@@Q8whswpul;<5NW5!TEQZ>T|UsErVqph1B z*jno_I=FB9)r`P=>vbySwdT_jV{J=D{i-_f&P&g6&+$&{ZHO_VNh=;1!CHUT+um+T z*nrcSJxAk~R;K9ZDm{hJSf;E?vGwHg!4~Rkm?J)7X5cH{!r&~-5eg||YP z9)+b=i>}XJrum_rMzr~mBPGceJH6|H=%_=5+7*ytc|% zjG4p?Wy@H%9U-HeTIEM0o`p_Ew=;Rfx}LBr#1c@;N5{vCGx61(3MhtV0G0JqkC!U zO8w}`{gGGg%Lu6>QLMJ}rgn;B6!T9S!Qq>hox~v?(E~nJso|itz>9sxHIHqKs&D`v zRmyy^XLZCgPMSy|=M-^WF)WRt^$8NB~rSj`;RaQezHntv-S31@?+jc=;+pF`82 zCp0%^Ud=@1RfT`ztoGEaKV*VpnR8g*)MDGFX7V^ZHkNr-Y8mCBP3wZJoAzvz6DV_w!am zZOLI-^1xW^lYG5oTA*kWY1)NlE6ijpVu= z<$G!@z zj^p+yrv(YW(z*%WcJaJbIUmcJ0&NT}662Nc3gYci4b~^F9V|g z3M#F(dL~+JM2?Xu)jupRjHIFfp#2gl-!OFDnJ;5DmuVJK8~t0yb7xjrzhf%=(LTPH zZ+M`P>t=yyw^5@KeVa%*;3bhn7m(bY>M=R*TXsqt?rs%ZENL&CcmzrE%Kk{a*5^R` zwnFNy-0IUM!E?e$Y0}@}YXt7Jm(eceERxh!OJ-H+J~}_!zuT@yzfZ7Zz0DZbe)xIK zjOX%phG1C}L5?V4R1Zy4H#}3C)>WZBGfh)b0iP)4M@uZy8Vy@BD(Rl%JS@4L$_z9a zSLi-_lxJIA&U;|d6-A5N*vnRX=&RE_M-6MUg{A-N$`$nvL7RWAk!$CSq=ijeK4Ku( z-=7tXY|LC!Xkk>yH5VyAJ=<%ngqFt0rFA>XhsUs^n_{-yG6KZWH0F;_<#`+V;7rasOy z&6L!4cU#B2FBk1baxKQ2Y5SkH8S(FRSTKj*l0F2;XkKi+eqfExgkd~e5oojF%9{gw_igF?z!4iwy*+bZoxitqoND1v%dcQP zZaX&{+KP@7TxIe1kto{?mHuZ9N_=L@n;;r+#r=IPj?tu5-g**aV(pF_Z|e?ISOPR;55u$5&@ zFM2<#li2^z;Ig~LmQY;x!*f!O_-GmP^XQ;4*nR|R-qtHXtIZPYz^po573sC+ZL2^V zkrswC^0wBf2?PRxKp+qZ1OkCT;146vJH>f*e-etB)1q$kCqeL?@;E@UKl|u;UYY*_ zz*=*;TE5-YmGc5!+l`I^RwB^i?8-5^y1*No;_c-8+aBBB_UjrjQza?MZ=g&EnkQ6^gpTK5@Q_q2SRG-ceZjgscvmHe2W z7;|jhU7?MOD#X)(bc|}44ZAd8fUF<)`n;o2mk@ipHUut z9!{^uZQ1@|b7i;@o~V}|kqZO@fk5Cc0$5RYq<3xV^eb0tF4uRj9TK^pbPOC-^>My( zYnyND-|t42M*RW=e7*{kP`_ZPv5NP&H@0oi0yx#_j!0*nGD`#F?o{{Z!ba>J{n6)D z1em9NZVJD^>Q_t_CeH3CmYvd{<*zsqg9ZZo5kQ{Sw*Rm2= z`FaZn8hi12rEV}xR0jf01b%>Lt$1B2Z{qVr#g#drw($f4fj}S-2m}IwKp+qZ1OkLW zoFjt=GYEJ*nd$c>ZC2jujugQ z8_d@#HKHQdQp(5EL!d+pYq_SiG4GZkEiq5gxbKlz z$B4^Z2u1%L0^rb0`WiTPMX2|SJN2(Q69WeVs}bPno!fKj{iBTi)z(exyA#K{&-6gi zFc9b^g$G-;8!(GdC+sFq3fj}S-2m}IwKp+qZ1Oh-npBZ%? z^^pbwK!Eu1V~>CT8{hGI{a%AW$LH1jYevVwe*%GdzR@?txo;2~fwA%1d*9>L&8-g` z&4=m|NysCeN1((|m*=(IY-xF@dFAo0C)0gz8Z+vqk*V|gZv%Syx!5QDo1ZrJ7Ryn) z&1Q!BSp;fMTCUCNS=?^KpS$&o&74y=!nmxT(;BT_MWDyPR}G871A#yw5C{bRE&}C= z;ZAuoI`#h8yNRus znk3dS+EN!n*?)ro_%oZn28^r(61ShqUUMb}4g_`}z)@W87PegP9cAqAuxwgq#Pl>& z(eVF8pp4nNY@=RE-d$oJpJ7K`f$ynX#D~LGi=;yR?S23 ztItBe7JWCFJVvYa_X1iz{|$1J8&KQEUT_?>fv!jcfe`{DE?uo3jkmRav=(d~Je03R zV8pz&qlLCWAP@)y0)ar_L|}B9@ai81&+d`_{cEMv-a!^QTjQv2X6y3)9dD5nq2^~1 zu>4!cH_{}WTMm!J{>lg!T{hM++HyBS;eUewI5bLM1w_Z}s{E@C#o&R!E(Bz^;GDl_ zc=5i=qDy)|iSJ7TMdLu=cM2U~LV>kRfu6%gsCqrWzgzaQx9`NYzxzHQtE$5ET9fud0$a3V0`(`Z{D}u@7~R7_1SJe2<4-op5lA z(LiLJw*Hc3{+r_#2dq-TS#Y~5vl^om2+SjJm1}4}KSHz&1ZEHbvqtHRuE*MVyU=5U z|IvX;O#i5x;Z`6J2m}IG5UBS??*_I;X73|ctek9X*ZJ0M?Vh}S$D1@Rn*C`6R&!7I z_6Tge4y=iD(qdyB~qqK)|jD63=(!-{4Q!5C{YUZ3JfHx~(B<0)hVm0h|Xv zN&gF=!pT4&5C{YUfj}S-2m}IwKp+qZ1b!HSPwsrW@9PlEzVFfPUN<@n_)`dIZhe~H z2#k)~I^X*0=zl{j`)@S+M^$TtzRHCehCXJnMoIE5E_!m|=Qg8f5aTxGU$tEO-nh*H zQ7jk>ZdYWYDRP0peFTDY_pytfs}PuF;i~aI*3;UFK34pnDQMwX%KtN1!ree15C{Z- zK)pYDH?YrT_AY|aH>I-1m$$Wh<^COSlM|u#rw|a%X|`PFo9_KE0K67_7V9?7_3HAl zGcjBs@Er*FD}#;mQJe4ZB&-Mo0)ZI>%6OjX6Kw*4{}2IvMx4q2hY*F!fj}S-2m}Iw zKp+qZ1OkCTAP@-rECMt4yk48HaJ+oSGb(?D(P6}&LSV$X+4{|(^kSLo%CC;??}(+Y z&8GjLdX3Omng1nh6ihTyJ`YP?>N0awv~9@EBKAqU4Q97g)_Bjwc}ri&1A%J@fPvBr z5}iuzlwUxnE^?81rWkxWd6!+XujyjqfY%9x(eyhaeQc?rE{Fls{^? z<=gC6Z~5N6-PjVHmF4Zm+W{=rg5gMRwL~cpxQalJVOMo+Yd;g&+XfHCPa@FcV_Em4 zUG7*TUb>y06_%KJ(yB;TT42gSLC-E8_HKB&|{&lTRrYjpXFlfo41zB_wS+d6%8~xEAuOC zyP(73EEx9W7t}}7=MgB`_`C((5qr$ibzLP-RF*i7%1_ud7(?TS{GdxzD+GYqC{vX_od5s; literal 0 HcmV?d00001 diff --git a/Source/Engine/SFX/clsSFX.swift b/Source/Engine/SFX/clsSFX.swift new file mode 100644 index 00000000..1b184f76 --- /dev/null +++ b/Source/Engine/SFX/clsSFX.swift @@ -0,0 +1,74 @@ +// +// clsSFX.swift +// +// Copyright (c) 2021-2022 The vChewing Project. +// +// Contributors: +// Shiki Suen (@ShikiSuen) @ vChewing +// Isaac Xen a.k.a. ix4n33 (@IsaacXen) @ no affiliation +// +// Based on the Syrup Project and the Formosana Library +// by Lukhnos Liu (@lukhnos). +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following +// conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// + +import Cocoa + +@objc public class clsSFX: NSObject, NSSoundDelegate { + private static let shared = clsSFX() + private override init(){ + super.init() + } + private var currentBeep: NSSound? + private func beep() { + // Stop existing beep + if let beep = currentBeep { + if beep.isPlaying { + beep.stop() + } + } + // Create a new beep sound if possible + var sndBeep:String + if Preferences.shouldNotFartInLieuOfBeep == false { + sndBeep = "Fart" + } else { + sndBeep = "Beep" + } + guard + let beep = NSSound(named:sndBeep) + else { + NSSound.beep() + return + } + beep.delegate = self + beep.volume = 0.4 + beep.play() + currentBeep = beep + } + @objc public func sound(_ sound: NSSound, didFinishPlaying flag: Bool) { + currentBeep = nil + } + @objc static func beep() { + shared.beep() + } +} diff --git a/Source/Engine/vChewing/clsOOBEDefaults.swift b/Source/Engine/vChewing/clsOOBEDefaults.swift index b2c059fe..56975c8b 100644 --- a/Source/Engine/vChewing/clsOOBEDefaults.swift +++ b/Source/Engine/vChewing/clsOOBEDefaults.swift @@ -33,6 +33,7 @@ import Cocoa +private let kShouldNotFartInLieuOfBeep = "ShouldNotFartInLieuOfBeep" private let kCheckUpdateAutomatically = "CheckUpdateAutomatically" private let kCandidateListTextSize = "CandidateListTextSize" private let kChooseCandidateUsingSpaceKey = "ChooseCandidateUsingSpaceKey" @@ -75,6 +76,11 @@ private let kChineseConversionEnabledKey = "ChineseConversionEnabled" if UserDefaults.standard.object(forKey: kChineseConversionEnabledKey) == nil { UserDefaults.standard.set(Preferences.chineseConversionEnabled, forKey: kChineseConversionEnabledKey) } + + // 預設沒事不要在那裡放屁 + if UserDefaults.standard.object(forKey: kShouldNotFartInLieuOfBeep) == nil { + UserDefaults.standard.set(Preferences.shouldNotFartInLieuOfBeep, forKey: kShouldNotFartInLieuOfBeep) + } UserDefaults.standard.synchronize() } diff --git a/Source/Fart.aif b/Source/Fart.aif new file mode 100644 index 0000000000000000000000000000000000000000..84c06b3997edfe0754f2137d1e4ddf1748b5376a GIT binary patch literal 63414 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 b ? a : b; } - (void)beep { - // use the system's default sound (configurable in System Preferences) to give a warning - NSBeep(); + // use the vChewing beep. + [clsSFX beep]; } - (string)_currentLayout diff --git a/Source/PreferencesModule.swift b/Source/PreferencesModule.swift index 0ad0fb30..1413218b 100644 --- a/Source/PreferencesModule.swift +++ b/Source/PreferencesModule.swift @@ -45,6 +45,7 @@ private let kChooseCandidateUsingSpaceKey = "ChooseCandidateUsingSpaceKey" private let kChineseConversionEnabledKey = "ChineseConversionEnabled" private let kHalfWidthPunctuationEnabledKey = "HalfWidthPunctuationEnable" private let kEscToCleanInputBufferKey = "EscToCleanInputBuffer" +private let kShouldNotFartInLieuOfBeep = "ShouldNotFartInLieuOfBeep" private let kCandidateTextFontName = "CandidateTextFontName" private let kCandidateKeyLabelFontName = "CandidateKeyLabelFontName" @@ -245,6 +246,15 @@ struct ComposingKeys { @UserDefault(key: kChooseCandidateUsingSpaceKey, defaultValue: true) @objc static var chooseCandidateUsingSpace: Bool + + @UserDefault(key: kShouldNotFartInLieuOfBeep, defaultValue: true) + @objc static var shouldNotFartInLieuOfBeep: Bool + + @objc static func toggleShouldNotFartInLieuOfBeep() -> Bool { + shouldNotFartInLieuOfBeep = !shouldNotFartInLieuOfBeep + UserDefaults.standard.set(shouldNotFartInLieuOfBeep, forKey: kShouldNotFartInLieuOfBeep) + return shouldNotFartInLieuOfBeep + } @UserDefault(key: kChineseConversionEnabledKey, defaultValue: false) @objc static var chineseConversionEnabled: Bool diff --git a/Source/PreferencesWindowController.swift b/Source/PreferencesWindowController.swift index c276871f..d05289bf 100644 --- a/Source/PreferencesWindowController.swift +++ b/Source/PreferencesWindowController.swift @@ -51,6 +51,7 @@ extension RangeReplaceableCollection where Element: Hashable { @IBOutlet weak var fontSizePopUpButton: NSPopUpButton! @IBOutlet weak var basisKeyboardLayoutButton: NSPopUpButton! @IBOutlet weak var selectionKeyComboBox: NSComboBox! + @IBOutlet weak var clickedWhetherIMEShouldNotFartToggle: NSButton! override func awakeFromNib() { let list = TISCreateInputSourceList(nil, true).takeRetainedValue() as! [TISInputSource] @@ -151,12 +152,16 @@ extension RangeReplaceableCollection where Element: Hashable { } } + @IBAction func clickedWhetherIMEShouldNotFartToggleAction(_ sender: Any) { + clsSFX.beep() + } + @IBAction func changeSelectionKeyAction(_ sender: Any) { let keys = (sender as AnyObject).stringValue.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).charDeDuplicate if keys.count != 9 || !keys.canBeConverted(to: .ascii) { selectionKeyComboBox.stringValue = Preferences.defaultKeys Preferences.candidateKeys = Preferences.defaultKeys // 修正記錄:這裡千萬不能是 nil,否則會鬼打牆。 - NSSound.beep() + clsSFX.beep() return } diff --git a/Source/en.lproj/preferences.strings b/Source/en.lproj/preferences.strings index 76042fc3..da828752 100644 --- a/Source/en.lproj/preferences.strings +++ b/Source/en.lproj/preferences.strings @@ -101,6 +101,9 @@ /* Class = "NSTextFieldCell"; title = "UI language setting:"; ObjectID = "9DS-Rc-TXq"; */ "9DS-Rc-TXq.title" = "UI language setting:"; +/* Class = "NSButtonCell"; title = "Stop farting (when typed phonetic combination is invalid, etc.)"; ObjectID = "ArK-Vk-OoT"; */ +"ArK-Vk-OoT.title" = "Stop farting (when typed phonetic combination is invalid, etc.)"; + /* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "BSK-bH-Gct"; */ "BSK-bH-Gct.title" = "Auto-convert traditional Chinese glyphs to KangXi characters"; diff --git a/Source/zh-Hans.lproj/preferences.strings b/Source/zh-Hans.lproj/preferences.strings index 572b9b32..0b1869bf 100644 --- a/Source/zh-Hans.lproj/preferences.strings +++ b/Source/zh-Hans.lproj/preferences.strings @@ -101,6 +101,9 @@ /* Class = "NSTextFieldCell"; title = "UI language setting:"; ObjectID = "9DS-Rc-TXq"; */ "9DS-Rc-TXq.title" = "介面语言设定:"; +/* Class = "NSButtonCell"; title = "Stop farting (when typed phonetic combination is invalid, etc.)"; ObjectID = "ArK-Vk-OoT"; */ +"ArK-Vk-OoT.title" = "不要放屁 // 例:当输入的音韵有误时,等。"; + /* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "BSK-bH-Gct"; */ "BSK-bH-Gct.title" = "自动将繁体中文字转换为康熙字"; diff --git a/Source/zh-Hant.lproj/preferences.strings b/Source/zh-Hant.lproj/preferences.strings index a43aa075..490bd454 100644 --- a/Source/zh-Hant.lproj/preferences.strings +++ b/Source/zh-Hant.lproj/preferences.strings @@ -101,6 +101,9 @@ /* Class = "NSTextFieldCell"; title = "UI language setting:"; ObjectID = "9DS-Rc-TXq"; */ "9DS-Rc-TXq.title" = "介面語言設定:"; +/* Class = "NSButtonCell"; title = "Stop farting (when typed phonetic combination is invalid, etc.)"; ObjectID = "ArK-Vk-OoT"; */ +"ArK-Vk-OoT.title" = "不要放屁 // 例:當輸入的音韻有誤時,等。"; + /* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "BSK-bH-Gct"; */ "BSK-bH-Gct.title" = "自動將繁體中文字轉換為康熙字"; diff --git a/vChewing.xcodeproj/project.pbxproj b/vChewing.xcodeproj/project.pbxproj index 47e78093..34dcd2cf 100644 --- a/vChewing.xcodeproj/project.pbxproj +++ b/vChewing.xcodeproj/project.pbxproj @@ -23,6 +23,9 @@ 5BC3EE1C278FC48C00F5E44C /* VTCandidateController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BC3EE19278FC48C00F5E44C /* VTCandidateController.swift */; }; 5BC3EE1D278FC48C00F5E44C /* HorizontalCandidateController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BC3EE1A278FC48C00F5E44C /* HorizontalCandidateController.swift */; }; 5BC3FB83278492DE0022E99A /* data-chs.txt in Resources */ = {isa = PBXBuildFile; fileRef = 5BC3FB82278492DE0022E99A /* data-chs.txt */; }; + 5BD0D19427940E9D0008F48E /* Fart.aif in Resources */ = {isa = PBXBuildFile; fileRef = 5BD0D19327940E9D0008F48E /* Fart.aif */; }; + 5BD0D19A27943D390008F48E /* clsSFX.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD0D19927943D390008F48E /* clsSFX.swift */; }; + 5BD0D19F279454F60008F48E /* Beep.aif in Resources */ = {isa = PBXBuildFile; fileRef = 5BD0D19E279454F60008F48E /* Beep.aif */; }; 5BD0D1A4279463510008F48E /* clsOOBEDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD0D1A3279463510008F48E /* clsOOBEDefaults.swift */; }; 5BDF2CFE2791BE4400838ADB /* InputSourceHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BDF2CFD2791BE4400838ADB /* InputSourceHelper.swift */; }; 5BDF2CFF2791BECC00838ADB /* InputSourceHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BDF2CFD2791BE4400838ADB /* InputSourceHelper.swift */; }; @@ -114,6 +117,9 @@ 5BC3EE19278FC48C00F5E44C /* VTCandidateController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VTCandidateController.swift; sourceTree = ""; }; 5BC3EE1A278FC48C00F5E44C /* HorizontalCandidateController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HorizontalCandidateController.swift; sourceTree = ""; }; 5BC3FB82278492DE0022E99A /* data-chs.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "data-chs.txt"; sourceTree = ""; }; + 5BD0D19327940E9D0008F48E /* Fart.aif */ = {isa = PBXFileReference; lastKnownFileType = file; path = Fart.aif; sourceTree = ""; }; + 5BD0D19927943D390008F48E /* clsSFX.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = clsSFX.swift; sourceTree = ""; }; + 5BD0D19E279454F60008F48E /* Beep.aif */ = {isa = PBXFileReference; lastKnownFileType = file; path = Beep.aif; sourceTree = ""; }; 5BD0D1A3279463510008F48E /* clsOOBEDefaults.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = clsOOBEDefaults.swift; sourceTree = ""; }; 5BDF2CFD2791BE4400838ADB /* InputSourceHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InputSourceHelper.swift; sourceTree = ""; }; 5BDF2D002791C03B00838ADB /* PreferencesWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesWindowController.swift; sourceTree = ""; }; @@ -287,6 +293,14 @@ path = Keyboard; sourceTree = ""; }; + 5BD0D19827943D270008F48E /* SFX */ = { + isa = PBXGroup; + children = ( + 5BD0D19927943D390008F48E /* clsSFX.swift */, + ); + path = SFX; + sourceTree = ""; + }; 5BE798A12792E50F00337FF9 /* UI */ = { isa = PBXGroup; children = ( @@ -396,6 +410,7 @@ 6A0D4F1215FC0EB100ABF4B3 /* Engine */ = { isa = PBXGroup; children = ( + 5BD0D19827943D270008F48E /* SFX */, 5BC2D2892793B8DB002C0BEC /* Keyboard */, 5BC2D2832793B434002C0BEC /* vChewing */, 5BA8DAFE27928120009C9FFF /* LanguageModel */, @@ -475,6 +490,8 @@ 6A0D4F4715FC0EB900ABF4B3 /* Resources */ = { isa = PBXGroup; children = ( + 5BD0D19E279454F60008F48E /* Beep.aif */, + 5BD0D19327940E9D0008F48E /* Fart.aif */, 5BF4A70227844DC5007DC6E7 /* frmAboutWindow.xib */, 6AFF97F0253B299E007F1C49 /* NonModalAlertWindowController.xib */, 6A0D4EEE15FC0DA600ABF4B3 /* Images */, @@ -652,11 +669,13 @@ 5B000FC3278495AD004F02AC /* SimpBopomofo.tiff in Resources */, 6A0D4F5815FC0EF900ABF4B3 /* Localizable.strings in Resources */, 6A2E40F6253A69DA00D1AE1D /* Images.xcassets in Resources */, - 6A38BC1515FC117A00A8A51F /* data.txt in Resources */, + 5BD0D19427940E9D0008F48E /* Fart.aif in Resources */, + 6A38BC1515FC117A00A8A51F /* data-cht.txt in Resources */, 6AFF97F2253B299E007F1C49 /* NonModalAlertWindowController.xib in Resources */, 5B58E87F278413E7003EA2AD /* MITLicense.txt in Resources */, 6A187E2616004C5900466B2E /* MainMenu.xib in Resources */, 5BF4A70027844DC5007DC6E7 /* frmAboutWindow.xib in Resources */, + 5BD0D19F279454F60008F48E /* Beep.aif in Resources */, 5BC3FB83278492DE0022E99A /* data-chs.txt in Resources */, 5B000FC4278495AD004F02AC /* SimpBopomofo@2x.tiff in Resources */, 5BC2D2872793B434002C0BEC /* CMakeLists.txt in Resources */, @@ -706,6 +725,7 @@ files = ( 5BDF2CFE2791BE4400838ADB /* InputSourceHelper.swift in Sources */, 5BC2D28B2793B8FB002C0BEC /* EmacsKeyHelper.swift in Sources */, + 5BD0D19A27943D390008F48E /* clsSFX.swift in Sources */, 5BE798A72793280C00337FF9 /* NotifierController.swift in Sources */, 5B5F4F93279294A300922DC2 /* LanguageModelManager.mm in Sources */, 6A0D4ED215FC0D6400ABF4B3 /* InputMethodController.mm in Sources */,