From 223632d9fe2874e99b227edaddd9e3721b41b560 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 21 Feb 2025 16:20:04 +0800 Subject: [PATCH 01/33] modify:ci 1 day left time --- .github/workflows/macbuild.yml | 4 +++- .github/workflows/msbuild.yml | 5 +++-- .github/workflows/ubuntubuild.yml | 4 +++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index 52f11fa..53c12ef 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -86,9 +86,11 @@ jobs: with: name: XEngine_AuthorizeService-x86_64-Mac path: XEngine_Release/ + retention-days: 1 - name: Upload folder as artifact with mac arm if: matrix.os == 'macos-14' uses: actions/upload-artifact@v4 with: name: XEngine_AuthorizeService-Arm64-Mac - path: XEngine_Release/ \ No newline at end of file + path: XEngine_Release/ + retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index 6396a77..5cee66f 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -92,10 +92,11 @@ jobs: with: name: XEngine_AuthorizeService-x86_32-Windows path: XEngine_Release/ - + retention-days: 1 - name: Upload folder as artifact with x64 if: matrix.configuration == 'Release' && matrix.platform == 'x64' uses: actions/upload-artifact@v4 with: name: XEngine_AuthorizeService-x86_64-Windows - path: XEngine_Release/ \ No newline at end of file + path: XEngine_Release/ + retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/ubuntubuild.yml b/.github/workflows/ubuntubuild.yml index 65ae3ec..2407f97 100644 --- a/.github/workflows/ubuntubuild.yml +++ b/.github/workflows/ubuntubuild.yml @@ -81,9 +81,11 @@ jobs: with: name: XEngine_AuthorizeService-x86_64-Ubuntu-22.04 path: XEngine_Release/ + retention-days: 1 - name: Upload folder as artifact with ubuntu24.04 if: matrix.os == 'ubuntu-24.04' uses: actions/upload-artifact@v4 with: name: XEngine_AuthorizeService-x86_64-Ubuntu-24.04 - path: XEngine_Release/ \ No newline at end of file + path: XEngine_Release/ + retention-days: 1 \ No newline at end of file -- Gitee From 94391e270b339c01dad46051353c1c010e75ccb1 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 24 Feb 2025 15:57:52 +0800 Subject: [PATCH 02/33] update:depend library --- XEngine_Source/XEngine_Depend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_Depend b/XEngine_Source/XEngine_Depend index bcf8d94..d022f0c 160000 --- a/XEngine_Source/XEngine_Depend +++ b/XEngine_Source/XEngine_Depend @@ -1 +1 @@ -Subproject commit bcf8d946890a2f2fb39eec16e64a634a8ece52c7 +Subproject commit d022f0c7d2298275d663543afd33e18243c5f25d -- Gitee From 8e7131ad23a23ccf94d82ada80ccfd33cf535c7c Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 24 Feb 2025 16:11:32 +0800 Subject: [PATCH 03/33] delete:aps temp file --- .../XEngineAuthorizeApp.aps | Bin 131512 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps deleted file mode 100644 index 1dd52e9c7754868d4f2b10e46c09d50822378429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131512 zcmeFacYIV;_b$Fr5iFqC!9ozFSTHl`N}J3~l9416W)ixFnt+C40ttZ_P)Y(pIwpvK z(y@V3RS-l4>>?;CMZglQh&A{ExzF1BoH_fPIl=dSe)szQ{c%T!$=T1d*Y0iYefA6446TkuVx?v#k%+S+;=enCU+59;xsdgQsgPY>^~+#$mTWxGa=96UUK z$e2MPm*DVG`2&ncS4Ku~P=4VM)k*i`8Zkom7Lo(EcKHK{9!s;vWw(ezBpGpOAzWHe z{-6R8XuH9L2>U#q>>l3qWM8^B+m)4>;t%+Gc@d3lkI$9rPbNpClj<`qke%l8r6&bk zX-RmJobR=DB0^sh?N_TtHyy=;Moz%z#X9f^VbTl+xj@7Y8*lT%62t(iMhF6uU&xmC_~E7nHuD=_-R0 z&75euTDl}=WoG)*h3pu*#$d%TD~7H$B#F>s=sMM(aEqm;hChe!7)#Amnut~$U9Zq0 zS$-Vdpg6@!ryEtDBC_#xlR-;hRy;K~TpV%IDMC8A{b`AQk)Q-Z{p0+Ui4-wQpqmw+ z@$55!S}Hy{NsdTvW$aUAyykSP;>584tCe(;@;Uwv2enpc91S?NQJgq0;MCS|68@ZY zn<|TwsqUbK^B%{jdc0^I6;Ze9C z2*smFb~HH+l2dbvl1>4a$0u?cg&wW2L=s~tMqvq$u@tMYM0#Q=PGJd;aTG6|f|;&N z9~y%%BgoN>qXfk_7bcwUR(uPA@pMm^ZxMJrwU>a*0a1YQ)IsqtL?%#2>Ev-`dNX}# z-VC3+i#H%LF@ZWMbS^e$Bz3ly=qLryH1Cp>ug4yFJp$m*Mhw z0^VSd;{j){!sL`VqbNx_iP|sZMNzWCLS+Rl8Y71YU(h(i;N(+jB7hjWSD|sfIAf@b zN)ri;rBsC`@*|coDsTd2-4GFpqjc$JPP7O;j{GWLxW!Y3bdx0|V;)akRicPf0tM^@ zYgka_bL22iWJ)(~)lSVROQmrkMLDRObkoA;EP-QpmB__|0j7s^6YY%C3a6ebjmst~ zih3z-s1|UGrrxTX2qK31sBWCa7?JK%-9#91bieAxd4>Thn<(3r5zJ2a_Q=deRqNgnHR&N$%_9YqeFivhj!!UEiL@OIJ$X?V&sTIiZ66I0mV_P(TDN^%>I+bbi#+6C+Ckm%6WtqKk zzRSRr;H5W3a9i{uGBj6esuuYqd{WVANcVKVsKPSATEgzrFj1}56d6&|>V_7#`!x?- z#Z-PM2TWC|ExHLAxU6@o58)z{p;YO%)K~MNRYui|bTautxNWH)H*3@okI(JO^arxh zB_WmGI811BEsz_1mc+OdF?&nT;&upcP8wo?g6;rkDzGSez=HX^ab*D%O%Gb2fS2ne zpcu-tKwVtvE{Vm`P=N)#8Lj}wAM>Q)RL_;v19OoyGi2iaPILvbxwU3%3Bt1DxqqU1vK2IvNA;F+4SwkJP(?CEvmZ7@Qzv%P7F zUXMp>@~q}~$6z6&kug29d9KKnoHZQp8L&U`UKv4U+5%1tePD1nARo_50L0QqVhG^r zCuY>$*%cEz`qXgsXLv;|<=O9k!&$UnNq5p`hI`N@D-GuA^tstN+a(&215y6MKr)bF z*+FlnY&H(W^?(8fe3PyG_u*Kq#A4`&a4b$@ zvGij&7B8_l`Y9YskXStZ9F8H?oN4G+PS}82&ba6o8&J!dL^^2$YI)qTV>oA^i<6ZcI*+p!_v}<(dKc*_mTIkFFvII+4KtUD z6MC(BJe?JZ33xNSE-e!Aa906s6$LK|be@3(F(-0o8VPmL`39Jk?(xfD66pfNIpEcu z-Be#VcSj;IuIpVGR3HsicUK_bN|zn811gS-RLt!Px?LWb70_#3tYVqmFN#$crxnV9 zOTtjGxDseIU8gVpa%g*&FgnXD{ffl^cqH4FKWF0pijaPfGPTv#P5 z+&H>XAVS~5gR<}t6G;)mnY+L6sTUTs z1=Ko(iE6~PPxP=(3_5Mh7*eBWxf2VfwiYyn%Q@Qz7KiJ^D0G{dk%6fnLic&K0HW#k z5CMV{jjq^@_gx zm=z3LKq3;Dp}P%dk2e$Ju_)pkySdPjN&oZP6}m|$O~kl zFAb}8l(~2|qMK|Xx_X$1n$#2#4(27$r5P110oj_WBKlB~fa;&70^A5WnF**M=_;Vt zjRaJ9KLciEV|P7vL99_&bHzfSP@}#opilUd5Ntmaz{w8za#DX2$Vm->Q8YjWIl{7U zmLW#dKo#a_t8ferQsK}fGYM5PM@69cg~CE614W*zVwqUX@|K_o5v4xZ0MnqUN%5tM z@h}PF@B;?q@dmr_3OyL~WAl=;$K#?r1Lt`#Pm=+$UX+F#5YGz@$U!3v2(=kVrs%5S z%}Ea#SXR1NOK@ZWMNz&1=@NOeDdA`;Fkowc1Me|3(!jIQxejv;)8iXUqYRk!FhVL; zzJ6EPJ-IqkNJ33MutC-i2%Gk+};dLWst;MJ7WxH zNH=dGIccmxO2aBM06mCVP85|G6yD{w5~As0gWyYt_8%=0-Gh}EL!|~UgBKJ2bdI`6 zJ;vWh4Ah?vHJIp}lOiz&KWZSE-TemQqzMKhBr+y7c<>lS6IEC&F_?hb#Tq# zF`bffVrZR02*nrkJ519>CntHawBC-F>cUZ=6n)Krq{Yz&gNGi@8%TGd9YS!H7_&i% zr;P?h-=;M&5@?gb&=RK&7iiUb+FZ2RU}dETyvaznSfn73M0(i@nu2iCD+caCSCQ&> zVbl~EAXDt2SIvw>5YVOZ=B{LTX^X+YMhdjraw49@s+?_B3`N5WXMhgcZUx~H2MXju z6$~f6Ze_4{l@dietdw9T#<}EdZI%Zy(e#FuBTg-7$Ax5UV(3jPDY2(e5I{mKy=4Wn zLWzu{omNn7R}N^8cUcK)+hoPgZYv=!vB?pDilayFGYEZOJH>4Cs^yBE5 zfg7Qylz95ej)Lw93lq5-aKtCj*LEbaL1AXP=o>qxp$kE*66srmlkA0lMV+e4l)0(e z;6SZz$MMi{gQKM$mBH-_$Qm5)rSA-ak$gGo$Z(SA`!EWo96r&(3JPW%KN%FgSqct1 zVo7n(&jv*cNHBuXv`dPUPAC)}+S2vj-xWzGEf^;1I2$X+UzdY^wZNQVNjTOjWxJg8 zn}xuYG1MctqUd)E&ciC^s6E99(|zK2NRq=9Lw{OGdWPt8bB8OI z{<3i7mRGjyOT{G6;fkXg3k%yIMi=FZr&AW3(-ic2S=)=4B+%a$JO$;R?Gv+chs#C( zvA{v#QsW5UiFDcmW1QADuK~O1j0NTnG}M2hhdgV+z5XN_FE7;^kSl<0DOAphkyP(I zO%n(8Dr0InTK)PR6EYN!)}*?u>4J8oC1H!Izj8O+YWDI=lb zN^-a(>0*PYY3DQ*Y?2eb{AC8J9iT#e7g|HW4!YccA={1ZN(FXO69Z;Fn1V&o6*`uY z9qgK__x7R-<|H`L&W)brxBdo#umjj?cA=2t?EMX09(a)tijj6mQE)N(|j#ricS$8R%33{_fcQ zO-jNDCflqN%gh_iWT;QHrijs=6?{@?9NiSgvk`}r-e#JSKWcS#V$g^%6FI*TcBVg5 z&MckrE^1+>_&tek>)h6f0pn&fjZd@L4hqhAH?=f#gXuWXl!6X3Y?N_gt$K@@%soHG zDzRk4O9L`vymYIXrBxg=D~Vc}Sx73TcrMf$t)q5gC~0lxAb)WTgJ*&^(Zf2njhQa8 zr<)VS)-?;8#<5yP#h}4dQQq0E!dfWT?R9k`#n*!>>_|I2QynFC^LXn z6r!vJA47MTNt~!8uU?-MV(CsZ?n_6dL#@fo=Jbd>PKcv+W|EdG9&EZHbL5yRsqu7| znW~*_ds9ib|DAMdjHb2ua>P&Ev!^}#=ahWt%po>MBD5H@`&U3M`$cA20%OW>L z>D*wpOp=CpC{{=Cwv7uDXZaQmx~)v?T>5(H=bVz97(UvYxgH#VOGNiAB81_igBjNJ zVw_6tYy^ZjsiT>N(n1%D79y36PK+XMGXrA;hayf0a}SjmO&&8t_IFw7CVi|E!--et z1+!B!GmSGTNluT0?zMp2H)y&=r^iWMEHID%T=Bg^VGapVlxm@1LYiW39G+-Ovyjki z6Y&y~)WSJEF_dm0n5%^+mi!iiwh#!dOProK%CK-)h%XIYGW2$OQ}N);yg?HO!FY&B z^!LbSy#!tj5haN;6j^o96q1v=)j>+rj`Joty;0QNAn|lvC~dgM#!7}yhjhv2V+mm5 z{QEyKosx-D@&Ck(l1!YH|0ia&Wa0$$SKj!{&gJ8FA# zU`EqO-4Xlrz97#);2cAvj6m_~8xM*6@_|GnsZd8fyfw~>QBP_zMMcIT=qUy!(y1d( znyMmVzk#)TV#k)fMp1=9kQ?vXf|=21nr@)7K*R24ZQZ0SHB}ejtR= zIGSakyh9+g$s!r?G~0l9ek}`IUYq-jIEBp7%aMI%jL#9B!62ek( zV58DN#UxUD^^(D8dO`=?qAbu$iZc>XkqL2ew8#L{T*>MD<|G60wAcW|{x5d3QD+61 zKu;N9iZ}tnyWsE#y~xuB)XfArXo&%(`}uIHI}nuKoV3)y#982Uv=1RMik4X+Z?L<7 zqG`Dm5)s6%$qEb5T?&h(l@=hnyGx`P>W)0?1<6hqk$}qmd0UiY z2xa>Vwjg4Iej<|A*rAXM&_QeMz?5zRb<&G=sFWK;FWG^dYY-ew>uga0#?X3OPzsKv z4R)wFI>e&mXrmpD;UZH=kEcym+>hgKI*JD9KoQLnq*9u{>3o%}S0`0Yg2k!#BYWD zclH-Uhpiy`I83Q9S$7}}Us_RjPi%hyilZY|C^>+B0#H01wL*AvEhSUO6X=)~_h1zu zQ;7=vl^v?56jk_ZJ6uaGYVkK#SOm@^3`ZQtK)$sSICLY`*e0pAV`wSIS)k(oTKQ3;VjRL z!Zn(H(Ovlznm>cj8nB)On*AuJGbWDyw84eWhv9ho%Lc}qz#=ltNT3>>0acS8fVOvw ziA$0f2{~&}WR2&uH2k8Lz@w?wieqNg-H!!ehJ3LOLhugt`I-(dDC3`vcZztPl`I!x zUewBZHWYnn<3-gx&x-TrzC4A7AmZtKJKPYEKo?jE;uM2+kPRYSRNu<*rCT_ObfJ|a z8Ad>EYG9@4Vhoap8d^zONa8(AnYUiL$V$>B$#>f%Er~9+(vZ8dtK~96>$}8Ckgt*; z_k@ZA$FJ#9Du$XcFEy=;Bs&99%1P9$E|%Wr znTHM0>kXcUV7jjDTY0e@xxtKMse+}pIL{%n2RorRhBI`Hy%&p;o5EpvDn)w!yNMgHm3cQEzE*IHR*e-d%J{IAr#n zNVggkEe8z&Zfa$Vnq_#Xbr?&I2l^{WNjPUrZ48oZ@?y@D&F@SA#|0erxX@2{v3$DC zz%iRl6zBMbUmTCS(}M8;5IQ@ZFK<9>ka@8uc(+QyMADxmTdOhHVNdWL z8xqDkg%d;VRSvXtykO?ZgFk@NhKX_y*^6z#4k}NO{Fx!;xEDKu9aVxRNZ<7EVn?u( zin9P$DraxcP$^B zaEi)8yTE=ER|jKb*9*0S{z5n0#ma*qqnM!- zPE`ro{xRh7;VW4KWr(=B#D<8ayFV#iJIUh3hGV)7iDM>qXT)Z+H!+_4HY}}^=qaz{ z;D(i$KpE#C^4kDCL))d8ZBbX1jU6c@HFW0K#rq`s2_SD`A_dMtmPvL~Q01h1y&gT1 z*04R4sZwRwqHK|ovd2pFQkKfWQHyiLFNwOHgDm2QZQJfDM~|DSfZY!2p^~%$cBlF> z67fETM=2LKE@!c!szbaRceSV#O?PTkI5!m6DuH`-R&sL{z)mAnX)@~2TC21m-eq&A z@Z`lDd8n*a8eS9Qx4~G4k7N8;t%&O|u)7L{_4#})3f?JeL4||z^9%9^C^xM18!;rO z-_Rj>#c;ztEAsvnolaljGCA#o>x3-#$Gt5O_0G21+Qzt7Zai*r%g3cL1-O)^2ks>q zhMOCP;NL;GLBd6&Xe4fH7*6?c8v{2Njlh5H@H7CfMAf(@%zRJXJ7M8)ZeVXNH4EF! zxONJkTM(}5ikqiwTygo7=8Bmy-wJ2GC+=Uk`tDv4Q*q4@0zda%cK-GMH1Z0Z@XqN!VSeqWy zB!mG@`dvEHRl|q5LOHHN)-lh_0U@jZca1u z6MJ*~>hHghqmTbz%29c3qD>t=cTLp$maweS^HAn{tf^YY*;U^#33ax`IHgv{s->Xa zA_U|vM}|2 z)!bZJHkV9TlVl)XYmp(*dMo1b+qj}tUby-%l;20;mnx5MFtT%xQpu`Lj87$LUhulbrGYekwV06 zyccMd5vm=fGHRFn{tK1yOn7B96_z@D^50Ia(R0JH?SEyVk$y`om)#9tO$j;TrNQ|dNdJ;`@5586UUr1RSkuo(g<~W-Q%k;pB{>L#-3bP+t zOwvpbEZTMkZW{K&ykJ|Vj+r&KW8?%n+)p%SEqVc%rXBJE?|-2P62mK(DVnASwW|Fe zEvc|j^w~+>tv}2Q_Kj`UW+KY5+Vnr%Pn@8;(uV1cHmQ!^b6o#At(YxSv?Nf!Rdk=wJYpi$d|BFM&)n(}Owv(b@=a zqL?0p*eGpK2}h!}g=;txqm48sMAk^WS0kn^TK$9`Dm-({@zf_6CSj%r5l?;Qp$T?q zvkg&0qqNBe6UBO&8#RtA;NoY?4aNULlb%+OL&wPg+-5A!Jo77_UOrHR3#>Io7hgT9 z88N^vr#yut2f1^ZQTP`kfBAVFd7J3{PpOiwt}{ZWNx{FR{b*KabW8*Izo$HCUT1_% z1KPj0j=rVN2>lN&4BOTfq5rAHLAyF5WUA8t_B=PL&S;sc_P;bYjjuB{rh5IaP1HJw z_;BZljZEua$X)fgV~@Ptu#@9~A&dWJpCz0V#D2>t?86MeE=)M;!Y%3<6aT>Iei_Tl(1PwYsg z!M}9Hb#d5tVk;%>Cwh*z1*miVMBWSx~8ADwBecE?M6ws z+YVOjZVJ^jW-w|Box5&!GzG2Ms!~0jN zT>>zC9zRae6aKQUUf@^{?w7H4(S`SmQ_=4T54dYJfcGopL%_>Xiqgz)u&Sc+t6crpK(?uVr&@t3@O5VzQ}vv@Bkf&b=304tVRKct=cSDlr&+CZ+`kPMn9t6~|K!_oB3@R@ae{w=5UnkwwC!!)^cLWSDkv%zH&FpKP$8{maZ43o zLlxAj7B^P`UZjGGH8}xZtb&R~IRRdxf~MNVZCFq)RViGC+d^F{bxg72mHHV!3>MRAnHYc8VYaK#mB1D1vCWf@jEjlyK8 zZ_y|b!r4x~wo*jGDug3rBglB?Mw278tdN5eWcu9t)|+45eHDP-XT^^xOh zS7aP|cuJu%L_ncxtXEUZYeuGkL{Z=-Zo6WT$ues8f3{Rw8!}Zi~ zAE8B)?UAu}i&V~N-VD?$hm;)hrNit?i6Y0IeHp@J95^qaFB9(E?P+1N@iKPS6Dw0C znkMJJ?!yQ`$U!U9J;0ISmhh^kU;$ zrWPybBjcQOqZSBPt#6f?E`*8f)0}yXkokc_{*a+LDeq2$gWUJVPV3T5QaL=8N=bo6iVf(+!91wv^Jo`f$N^` zti(YCqBQ}%#fC`~5f#G<$3m8|s9$h1>X(R}2u7>JJT_XbB#Oe;nt&`fy%!SR#T*m0 zR!^KvfLVFWvB4IyHDoRt)Ft6;7c%FYjw>0!)dHohc(dAR6tfvE^EuUc!$VvS;Nz+jms_iQ!yzR^!D5j(0#5x)v|a zMjcQ+a8c{iK`p=d0u9a=-C3n`S>qjEO};VP)owOW%_^!@1XUCMOoc9zC;B;9OHkq~ z-MJX`xu%SkbQke5m6vqq^1zZ&lcSHI@--mkbzF?0W=we$qW{@nR~!_-Ku%@j7l8q`z(}7B1%0SzgBt^J;n>*A~@Nim}cXH(tjLgRQUQ zh7rPE$F*e`uj5)_J~q#9+?uj0{B>N#8~YGbdht503aGE+D(>p*xQes#IpMIYa@`jFp>1 z6d?TO5Cyc}9HKzhn?n>R?B);!v)&vM1{pVpghBevAyy!CbBGlP-47x(DS97dxj7`{ zsg7GG6kJR~HGNBV=+=o4!T#2X5bVZ1Y|wLSg#ycGcqb+!|3Wjdr^vauQ%5+8&nG0bY9 zg0j{Tsy3_DK!w2;rNryN;Z_3`7UsOTm&a^1P=V1s+FK1&I2@2+H4p#>GVX|VD^6IJ zb3yB_+PkB;SwPb}Npi@b3#QpBUAxjAbWK?+>Ec>77r&MXMAO_#MBH16~qo+7@`!k~IvZf7JT9~W`DsuTQW0TcD z1q-tps9<4M1H&-IYM>3q*UsTq2UGD#nW?znPGF`Y(lNeT4*pE#q+=ngfi~fVtOnX( zA*+ElSjcLi4TcLSIWC%xUKXPs7j!%VG!;?^03mN#x&P|Fp8fXD^Q&4O*P(nO2GFuI_x*Nvy^wO1n6sv)%7sG0x;;LE=RGh`6 zP2?R`+g5jz)xa=Nza)+`9&2m`w^$7nStnwwy(cQe(+g4{;Z_3`c~HrQtOhF1Siot{ zdf|mz4U}}vT`^O}_uiW@i`76A7G^at92LVO=LA;4Ce&m#P$Jy*nydyI&Z^Zw>B>Wf z*=nHTZnhez04A$}(w&#^cym>^>H#~0dV!0*FpfL6S|r!bYM?}T@uHXq)W->Plp|HhJDPd6& zEm1RD4Gb5~xMDRB1Y|2;YKx1Ear2oLvAEFOz<_YsiWt}9LSY?J! zm&7XF30pl>P{WKMBEnV=6--=&qFOyvG3-He+~cujpg3Es9x4bQw>7LDDuCJQp#9fValw#K9KMNCcMTKTBYs)taU3dKb%N2T3!5e)hk49U_U z5MmUbGF)5RMHLxpX%>;V3pN#3B;ti5nKn^JOmXE4XA*s|E8A1%o8*NwULkqn`bBR* zG(z0OfV)f8@Iyr2{2$K`d7u0e55yAmLR%dx4Z*#>JXlyMC*6zcrAKy_YnQW_$E$xYZ z(Jh;_DR|V(RNS4;23I+6QgH{plp0>;!l)iC0^xN}L_iEtmSVvsg*DF=u2MLL$~BaF zCUP`GL!TQPYj)C@Bn_F!q=eVHfG;r-mn?xNTB=&)j_?|2utn~7@%9w20E)~HuZ)t- z=8IF+sD{@^m8eEHyjrTv@Cb+3QN0s&%LzUgxX)uX)2ij11XMGvW&pRh8kSf?9hc_I zVy4yPlRIqH4r{2ENWa`|t8l1dNH{csVKc2JxfV06Cd_K4RROJLS{2CFOsj&k;(_%N zs7=C5s{-lw*GMST5;+ZMdhn!OaK|TO6mM2DtqP<|RL!(1FlQTEP}cKDm}ymTJ2R~c zteR;JIiJf+YlvjAtY9|b#XGzTGjuk}VuRI`2X&cgRpjtdGHXDlYNVSqvNhAH2oh6L zvzb-}wU}vD5Q~{s1rZW0W?D_KC?>0!Rucm%qi{2=budKzl4~QqHH#Q1H4J82t)7+J z2P1Jl%?g{%v?{3F+Yt9Pt7cjihFIe8B1J?DmUt9QjACpj#lTGkFZV_Cg+1($hK3r^ zY%l~%p{9~Hn`u=-Gn;8u03Q0d)$-6M%(N<)Py+IJA~93eXy!}|G&CTHo(UIL!5D*L zW;HYdgkU=}txDiwW?B_Y1kU$x>Vvj0)2a~k3oEgpRn4?2jBqop3TSJlRl&u2*Un6< z!m%^cs=z{>!*a}KS`~(knN|f2H`A(sLVchl9oA?RRPPQ{Q;@hO-;SamjSv+8H^yqftw+%W?B_Sn3>iv3|BNtBZS6`odXYfRBf=D3STnVyGl`d zOl6X$>Q(W?I8Q)l6#`s5csJFq#%!4p@2|)waoITEir$W?I8Q zUJOXlq4~6tha9#9O{J@~LcMb^dJi1YP=mMdLPi?s^A^{5Q0 znO23ML!}Q_zpAE8p7%}(`uo}O#tqLFcycIX|<5+G}CI~ozqOK zg==S~)j~P9nN|xK<`C`8w1)H8te3^=t7*VsgQZ6PsMVFtv|8lZnQ669>N3-6p`FuA ztA%@RGp!bK9cEfBtUAoJT3EJbS}h#p?>Wu1TIh9|X|>SKX{Ob}{RcCx7B=RruIw-~ ztrij|%4DY1g4>&EwU9KuhOL=a3-!M-(`xZjhnZFj>mSUto|A1c(;DK2nQ09n|Am=W z3)gC<)dFjJF`g{wh78zDtA&NqLKkZ?(`sR046vGMwJ`8n0nAcc3B`@!V0NUkgylU8*=*jV3V0vMG{Zfh0=z5Y^-D~W?KJ|$%n!au&Gq-W%3Cz zFikmU&*bA`V4CvJo*6RJ`j7DpnQ1)-(=gMjkobs;I991z@{v3Hx*A))Kx47)rHGKY zoprA;l8tpQeRilA0Am#*=Mh`?3KOC2F-lw+n05b*8v>L8Stn@rv|M~_L|FF<3nFAp zOXnz>46_s?AVr^{Q*$ewsvZp{{p6cY#?};D_fkS* z+{U_>4MVl=Wdob7d)W~5%@UCqdAL;XcJxT7*1Z%7vYv#@bD4@Ygqdw?nK}cjbuUG< z4w-$Mid)M;)w-7=KtatiOdWv6va#-^h_bcrRRq=Z*R-m2uW$x0rKBQB)CO4hQaIs&;ug)Nhg9A`AoX+2BnX*t~%vdm;REi6; z?q%ZqlXb6ikwyGq-OI$$GtgAPug5zdzoa^ zZQaX6tJ}JliFOX_Uf}V47xE?!x)Z793pMKFQkDzxZv*_-5Px5U@5T7*65Mfdsd#FR z%S$f7D|NUs0QVz$VW}$d z%UknQ|1F2)3>!EoCjy7nGqZRv76s$SVTnc;w;VETK;EcUAutAh9-W)+O zLroAAr$T~=g@wa!Je&g-2Y}BlL9f257*1_YL<^lXhZhXb85z-SNWrLnc@gg0Z;yEK$d>0fyt)6Ked|?mdF>EhAFU|z2S5aW zAm+vI_ix$%-IlYKG;pSJ)a_*q>ED0&FhqsLKt@`UJL2UPZywxL^UC|%KKpd%dw*!b z>vci={X7f!3L&dbfo%gO1MqyY{1=9R`pxq0O^({ghmsWW?M z5Y@78%huGO`o|eFW=zg2%uU(}_XcrM0|rD52t+p6RXU?)`sBjAlALaRDGttY&VH?1 zo>w}3bj{@4ojVJ2Mh@&tV^_v)bQU<{S`KJfbfRY1uH4*RJ9ol8ZfyC4f|dgYL_0f{ zmH)M?Fs~4wU7f+Nom#;BTiZZ<^^cSDs(0q*^rfOrGbR+QY#rCyc~g1$Uy~=7g1&QS z25nkdJE6QFuBG#u`03+nOUkE}Osme#*-mAfYHDXp7!VihEIM9}j4vNnSdv%RmntUI z*47lnwT>Flro4JaZB2Di_2AsR5mZ)ITNbx6s$f8D{PFVY(Su8O7v&Z10)J|4`KG8b zad9mNmme=bUR^f5w5%HODc@9ER$dktx3nPsc-e8dmXwv=UowKq%Me(_n1X`VkY7?- zGHv>>-9@`0rvh=9I<}yoAb!-W?j@zAMMc%eOPOCjdehjVxRs8sO`9fMQ&{xD?!1!8 zBdDUhqO4+ceB2y-nie~{?JTM;Egig_$}7spjviYur?PT>aj`GKqv$<^QgyJcqYpQAz zis#I^`f}-h+2-<1n_n(JwQWXK`JBpG^JdMI?$ofNY(m+#zshSz*Hq4_oHIw`<8rsL zMVl8-shv>)`NauMbUvX7#?JVwW^oP6pO+A+$-&Rq(To488C_FTiA2O0e2AJ+Q&Ux2 zGk;1#anq1|c(`O-?Qc_RYl@4D=Tw^b<7&&RW|URF3`CJn4Y$=!si>@~M0`T==inQT zo>DQTta!?lDaFMj*g^X=EZFEX`kbMcgyr%b6VQsr}|7HzI7E-qS7sq#^5VwD!wX#%quKAO1x^LM{Rl zzqM4amcyyt-dz43Ma~l)$5bZ*aggJXocCDAA;vr7tB*sNjMecOFB3d|yhu0yi$DK& z$073w)X+5YG%U>7m8Xn2lfNmSoK%?9nd8&IIf5pSE-%X~%)?mKpum}*KVn+V^b(9l zNrXPUpk+bC^cwEibGlLd(h04dBVtF_#SKtapV<<+}#3Ul))Zq;x3 zQTh3$wdH?Jn^w4!D#q3Pm0u7$dR*<~>gt?ADvz(3fKC|W&9uqWrsbl4{B2C!(){xB z3CH;o+^U$d=g zanq*!Obw@&Z!52vfj(@Gc&3J%M$Z^Gqba&T`HbFd#^PGQmD)3ns~KIJFeRa<{ygIp zI<6_jxNJ;*CX|;Im!T`upUXFmu0TJg$>%;qcwP(lG)*k7EW`9}jX=-rx20H)91-R{xZ~Xi3znxgrczloG zTZ1op5n0{se#Zkla(->?FP&6~1X zQ&^ouMZZSnwk|E-g~mW}f5pZ*QFDvF$)&QIsMc|qtmIDKNfS_`QDe)em&3hwLQzy% zVQI&xqc?n77EC>mQeUjE&% z7}Zhx8$+f1tG0F<3idLp-QIv|wx5rj{io`|IoS!kakL%ZU+}H5d{5)~EWWj6wbaH` z4=xZfvDO1lX9T`_Js6L_?LXsD=s?D!{P~Cf!yn`E&wn>BXJ07xfjRi2hz6HU%bk!P z)w+CV;lTV~TgOf>oK`fUCN6HqpObSZ{8iMtx~Tkv^708qMbn3sS5y?unSWK$;F|KP z(Ur51>*#=FOP;Z~O0?i@@l~@}dfDg-(Spm-7!eFgwh~RW_Ah*q7r!y3t`D+yJI20W z)GypnJhZB@%p=*J>I(_heB|=)i!a|_M{Hc_tUk_OX;Ru7ezeirQ3!iQHxIh!Ro!`ptE^q|)l48rd~dV6_4dheM* z^ybo`_%N0?E58k=yrrU``;mV*Y_#8`+n-0y`TJp4^y!J0ZJQj zkh+chg8B{rk_L`ENQr%pQBuw~)NRNyO3gn`Sw+Wb(CBaIq0(wfc!(r5mO0ezA*UPwKje1S?|eww=Pc#?YWdYT5ky@E!( z_Z&U&(F-(u&sr+pw}D2NeMVy+KS;eM{6INVzN4b4-_zh(KhmhGpXtG>Uue|AUuevV z-{{F%^Jv0`#Wd}eym5GmT&T3r%_Y z7|nb32+dn}lpcNVcPiibC(U{JPg?!T*R)~lw>0I@4w`jf2feoc1A6SpTlDx>@6f{I zduZAB`{<>g577FPU(&p{PSK*hXXu$7U(v=L)wK1aqx96ff73Ic{D;;ZJVUSkdX#p- z|DjLbq@7>vrM(CC(~%Fi)6qRU=-A-{bo9t!+VSppv~zDYef-&X^!gY7p+nzR(>uRc z)7~G?(s#$J>6a5H=#P^>(f2?8PQU;D8`b>v7sg^tQ2+VUYs)`#bVi@H&2MPd_ICa8 zoWBpmx4Gr!7R{UAaC?gu-OtG+dN3m+{9nj*m8NZoQ>N zi{=jYb^YCS`v|0``BKnlx!#zkdCz>U;2%4G;JB{^2A(@7{V#%P0<|dGlr(f2q53$M)^7 zXmWYuMvbp(T>k>_;i2!zQzw7ew)Mewx84$uXmJXd|HOQ^JJID59vU}pd^G~O;JVy? zfxx?`{(dkeDk`#FJHfx@=H@qE5B@^-;C`|rJRn9*uI5;spO-hN-JmzTHo%$dPy!b4=cd%(Z7B?5r_MGK!;bn@gE zi5#Q$O|IyKRMfBkW?tS~XU{&^Bi$FDf*7T8#gx|TP$0DmR;r~dxYy=40m4xtmL;=(uI%o}|6?AgIx?|b_Pe?m;R z7$=IlO-rs5&#hXq@Naxho!QR0>Scc8o$&ArJmB*~Fyo#csR%^pKeuYh8UFma9BJ;{ zsRMi12@km^n114cZe26_cTJ5K9w7hq*PmN)_ROD4pLDxjuFjpkoUe^{vxmIA2L|6a zsCVBUUHfz9qsp!?t5c76SFKvHc=40qUt3gAQj(wl(1=I!FKu{dd`en+dH}XD($ahM z&tg72APvv0TD@w?ie+O)7nYVjTr#qR`6c-yE^c*)Gv4P*yEiR8&7a-_{KJP19z5{b z>(AjcWA?;}{D;aBO8&6(THof3j`7`lZ+hTC(CILHIC$vu1JA9RT{cO2 zc=+LxM@K&NNXbYnNQYn406zSKnaiIe_#8fj2tD)6>@xO%Pw5LkeKT@oIVS@ihBlQ< z`R`xfeTfvj{@k;IxT3Rv{87q<;&Zh%{zxK?T>1WQ&ICFZ>nO{pwr*g(}05*KgCs(Z6 z3;qjdzn=a3nLp1mA4MSou;s&X@7l9xzdrl^%okDlejPWiLhunlUHpCEpFO*_awhX9 zj(cpP3}9rP{Fgxd{iU^)U!VQ;`ALt=oH%|Q*QImw_q=d8J$r6t#Z-O8ALgg#__1S%&_))|(r5E$=FF*K#E?TZ60ji@o7rWv zCrv7QY-R`!|KpE+dj(&LFPp?4EOyTE`9#KM9->lKR(5W#6th;ue)gOf&mq+WeK_y& z4@?f~1Li>gPd|!jVC|9r8U5%gEKMU&AaWghp(q;bI+pRy_=eW8m?DKfJSpNYKBXNR zkmt@QYSue8w1#cfw(k{}pFTZ2ik1z(hn9_W((1w}dS)8kepKo(p^}aM$LYJVix4nJqrsddRZ~WJyS~Fi32HV%3w-) zERXJ;TR`slBPnU|80xa1nEFp2MV@6Pl=1X9dSQG5)~_9C^R!M_%XY>ZHicfC=n1W1 zU!0Um>#>G?dAgsr%(<5~PRqc0wkxf#=uMku1?bh;L3(v=FM6$N2!0D_>-|?_D|Bn*v(z$f zGu@swpZX2N`t{E36mi$7IPXr1P2NWdnFpvt)=}!5{x-R@-lvrA`zWpd zA<7!~DP@-&roLFG4tV%;${+V7CH6i>DY@TJ=8&(%S~WQOIORT!b?UR@sl(byl)PXn z6;67Re5)r?aK%LGwQLggSY1wu8>dn7tFtKU)yJt|$yCbOIG^&jE~bZHT|)lX=Tom8 z3#sppMRecJB{b-r6;!ZmH4WRdh93Ipc^ba=MH=<-Ix7BnJ&pVHWqSDYS19NvJ>dtbrb3R4Uf^jmnUOg`vmQKWj5{IGM_$qZ3#W`#)~w5|0^`{z-x4H#{@e1 zP6ZwN;Bm30{dD^(+W+1z9ir(+c2eb6@6waUKcc1I?WLEormftK z_3QgT(uSSi(8_mD(er!$ruCnlrdP0*edCk&=&djI(3gh}(b0X|>ByIdY2T60>A=ww z^xhxG>8)?h(BWez3BwzGUHv2d@cs8#zy3_WojgH5{QL)<`1Ke1GoE)q_=9({HA8SF1-8TiFhV-x~y^i``$S7W|uDa-f?@YKr0r21?dy_9Qq?Z z+8OQa)a0^D?;mjH%zGc4$?S4F(g^`XtC!9`RCDNbWwg_KWs}C)gL<7gQ}cS4V3z?t z5PZeel5k{rmPC+UwpsF;D+; z#gC^CzS?QNw<<2?nz_Y=`4``n+O==jzG+Vp1=3mtC=C;Ynss5ovUww7#*n#I( zJU@OM;4u^Si~>F~f5dq$hseVF_4{LA?pnS4`SH`oy>Pf}&xuhZCm@jgheAdB>ya;> zTea-@vOmkd{p0hG{}@#=am>hq0s}`9Rxexn;`*8m|2h5Vp3}fFRV^@2hL=74(x%hj zo?dhMy7|*jUw(PU z-VGBUeYnUP{@2yVt3P{XCsXv{@Zu^_cJ_wT17?0hN%;+I33^r%I1wT z;JxAzeC#Hly7xz>?G5uS96nt)ecH@V&Dj6+{?=|xT_O-AIgjBzk#p^DVbX(7=kvsm z{70F`+#7v2-H?4Zbnxvd^7i}1T;;~WZff1XGezVXI`=yZ{B&z!2HiR)NNpePPL9#o zcP+V(?(9E|N^_ z??`LLyXl2TyU>e|x@cW_BIYa}S~n?;w#`eS=O$#(sz22^GKIAB`Ft^-dH?y5n8Os&p7o`4<@J-OVUtQ~c+CQ8+;kZ=x_&h^xpB47 z%QuNwLs#Cso~~{E3N?j(zS(VCC?a7kwGGards1Gb-o0kijkj;77S1>6_Iuu;PHDTz z>HUQ6>9Us+(hgDl;CHBf<`L@H;~04Y?~^CEhr0CHN6ACpqt1ozQP+pwr=FueB+r1) z=-!;e6d3psrH%cF?k_z^LkbU3V)j?$8Td8$-%^)h)nd+*IpSN&9`Oxz9d(>CAO4;O zjry8~jyVQ>{W0>+DI@>$Wt6dWJoR2)Mp>&SQ`(EuXwcJ>DQDSK8oZ){`mLHu1uJJ# z{ao0V>DvYca$^t1dUnn6&1|+iAv`EM0xX} z*MI6)Dus@H-i*bx_}S^SaqA@7zqOn`*|wM_e)(Ak$SIYM)neND5M{7e;?(=1$fgl2F4lPXwOfA}q0bZ8eX zKMXy6^@p_Vn-A%!>W^sS_n*`3?KQOF&2MP)8`bpm&Ki2@1I%mo{!JSXoTe?9*Svb{ zEbTn-F&*2xL(FNu`0^+E{P0OSaQrBJdF(jt{Pk-(cH{_s|1G}X9j9M@_=bM@={WuR z+ew_ysSRb9_=$)9r@1 zi0fH<{Y*lmi|e1)`Mks-ckVlN-z^cXyR={r9UHa3@Y0LwyDmB}JMHxQH#+aU%ilTz z^M+2Ve{IyL(M6t%>-SCn&&k{FxFs_4E}jppSpE0v%NkwmZFEt;LHA<vU?KVdHdljvU&_0knzCaJ{U}2SiL0qo~N6P9aB7Vc*zB~$3V}R-W%ii zmmeHGI(y=y<4OyrKlI4RVfETLQgV^3pa1&y>-CdnKKl8gieC%L;pa*%6Tbd(!;91Y zp7ZD5kNrJzO7X~1dfw2tFRj^p_SLh$9X~sI>bPRVo#?}jaDCL_i}CRlqY9RoiKO8_;Dfm_~YOk+ZOKp?5#KVFP<=7bwBabkKZ5O zv1NYc>)XxRnjfoo@7%Jma$eco*Hu2z54*N)sj8ejdBJ|OJJFj@ymmlw`@g+^Ke)a+ z&dG7ix?aB=@rl4Uv|g{LM3Dd1o--5L(3KeHuIQUU*Z1#4*AH@GtaDM*As)JMl%JZF zWY8_8-6(2QCJik}qKYn;W1PB@c$}JlKkpUaM2m86r3Hg;rzan1k1^;LS~|Q9t<1;T zd&Hge%&6OF$<#ZGV>8id1fN@d3qxC-Y|#yY^|bx z%gd?H`wMB<&J~pZ!5S+5bR&&D@DklW??ayC>02tU_<>5NeNRP?{Z7NM2RmZU zf9R3%PtqGtKSDd6o){V*`PU!N z+V4N3mwq}xQ+J%9tvgQ8%3U?|>b_I-D*ENuzB)_Czj&M8u0BY=eYJ}|`s5G#{L8;- z&v!@YE%e8q)%;9<{QNal|MoL|`_pOq_0(T<=JY8#^*7FNpZ%})N0rL`|Ni`Ma=^M? zAES8cbmirZn>Cg$x7|T>&Ey4<(Kj@Tc;w@`DIrPxoFw>7qn~8 zYGKFgu8(itq{W0=YiC~aV8htXwM%a(bzIqUM(&EiZSTA#!PUM){KWA$L523@Q?qW* zxi_`A6wz{NlUEP^e$)FlBeg6=sLakWj6}m%J(Vzi6 z`iV8y|JU}N8UKht|u^Xf&(I~O%?GIrPW-R-Ln-ge*2H#@Xg_{yyLvu4ejfAZn~9JuG^s7D@Z zwo?25i{iK2?{9S7%IBBQ*|hbKZdW~apzGrmp7qmS>a(JB_^BhqvDNwEr~^B{o3vo( z1;4cSuPps;X!7oBc0Kmu{s|37To4$y`i^=_2F)Ed|DChHKK*}R-JK9wZ~T)Dwzb?|FQUQaoxd(gNPc$&g4kAayr`qI)x?LIRk83? zf9>}N*0`7cantr2&TkUYcmFM&XI+rkH2%CtHl06W(dFfXn@$|GIseozCudB*sNa*f zJa*BM;<<~?Ei|W)XKRU3O(e zuU7f*R@R9u!t8gb+QV(F{Hntb24SB%l48%9VsO2=qWN)Sgc$@Yu0RG1#dHjav%v7$WI}Wk5+Jw%G81xN z6()#6!%-`uSM!T*ns@;NH&7_`ciG-6K0U*CAsjke;YpjyWytMJLc&Al2@mv4f2@6x zq#Zpy0L&>}&hnRv9LGu)|6DIf0qC6DrKu43k7h4wn>~tl_<ND33tgq19 zRFJ(k9ks(0zXr_DI^&R?;71C#(Ki5^-gDmualjTN=q9#e7&$Fe&SRu`BD#s% zX%VjGy3W=!^jTGSYd)ie+CsiJx3sN588UiR6^TI7FPqKu?;+K~(`>J_&q*~A_E_*|(avi%k?=v;u zNCoujZ>c|2km3VS1r*AgzPSo-L5MzI2aSxN8a55Z$asjxJs(y?%Lfi$exHWA8m8C8 z6Mf_Rf3ZWy_UY2NqYv{*Z-U@anw!tKv!rO2Qzsbo%dEC68Ikso-fV=MW_3S`n(Y9F zf<~yRl;7yFq%dW2%+Q#1(8sKxs(E6RkZb&DBiG^?DC4A2TuCnr{U=M}%O#|J37>nz zi z{x$G|_c^JLKFa&cG~;J|^d~Yho@DMAuCyUY!0QLgCQ)ZfvfUSL!nS%p61z_}g0Fjy zkiyG2$2S1i!qL^9$joc zP-q1|k)8dG>DARn!E%pd2HSWD*iq=ga-@2fGmU+)GFwLLems{O

>?G8s6+0)R^G zds4;I|^{2=%)+l>^W-TseO+ZIs8YN=na6P#VQ9AnknukT`FS@N3kYWH3prZyW&5P?C z%e_W{PA&B@hDPreB3YGQAukVH{Z3!qb_21b|BA-BQJi3!hrj*%`wjj54u0atTr4}J zjveX?sFX(3k(*l1viMI4qq39t`t8Sfg~-#70Xl;Sz=wE4Yq>nfLz(zL;{xN`BMV2Tr7PBShqfDQhCv206F&?7@uRh{Nx>2ZjK!+1k77 z`D%}ohIwEoY%R??z$f#@c+YaL=LxhUQwp}MD|+}~Q@qzr-9 z_{jVuR14EkdtEXhl!yX$!l4XevVQ}$!dRY}-4jUH7CH8Df2wJi+nZ{A*~klg5Bj>z z@#THw`pF&BS_+ZH9Dr`AH1K{!C&53}*?Ye&*Sd?V=BQwp4I_-r7{6#e77_JNv3B8R zNAZ##gG&f&9X2GW7|zXxA<_-d`rihmk~wEGb-zT1AX)b32&Z!1vlTqUV#4~M5Hju_ zw3SMO^)5f{K>yDn@S{pTpv6}CKOlM%@OVeV)0M4eiFsmcNnxr?8d(0bb8V@Y-TcBY zp8h}?%-I7zS{q=oVzwK7I`$QRFKAbo50??}vIK#Jj2MZi4Z2B z!(-wly-lRue$1u(*Tfi>H3R{mqsMzYseh3Ej$1vFX6-Q#a*7StHMoXjf6O=iGdXcF zgH8XwIK8b1K?-beWFA{6a`S?A2^Kwm%V2dB*E)Ot?v|r*+Vr= zxF&wYs6geD_b>+bfJvi(@a}_|=5*&eJFpg0yv&<}haqwAJ!g12$fYNSyGj`omyAV* zFv_H;LmWZ|Qx(*+2*itNPtuNpKhO>o*P)aKfN@d zNBXt}z*_3 z>_f`GX9(9^5^CW7nHE+GO7Z65nsfw3k`aFmNO|q!ZTKsi_!DB{yRDjdk1{sL5Dkho zM7X?fnC*W~x`Mak2P&(ATiclP#Z1y_v8W3^2sN1dV5DGt+#6@^$Gp0WdWkw>l#-p+l z`2@l{0n~0*tv^RTq6H8qe=?ibA|uI`{Ax_wd5S+$llzU1pz5VMCAFf7!Z0qg{7XZa z%mF-qDk9o!40d>kHQPlK*OS?MEnP6u5Z8MDiy02TOc@W-dSnsxUW2Ggj4x~)i? zyQ4B{x@+%5&~SgmdpZjY97%`F%td`vi~X7%s)^+8l*PGcLQ{`H<*z8qX(7T#4|Snp z+eF`crn-K_S=SzR7tOq-{ul`TK>YH*aEiJ}v@})IYRuJ#>o*SQ?Y?*XsN~Ep6S3wb zEMMVJUOTzm?44VprU%ZW9sp|=bAgPcu04Ne4hCyR4S<28D_lhnL8mU72Y|$x@A$%%!2n6Z-#^DQ1Wpr4tR4ch8O=Im7tiFATdJ#hN|WRES1O~pW@}7tRmsextC?kC=s~-+RK?w7;i$QltUrw9g6#m_zU3 zcBcZxwUfWFcpoC^^pG z?9`!-<60eVBvJ}HDj+zH{%E=Oz-#M+AmlnK0({dmW}4E_2bl8^ut;U<4_<$wB8-bb zsiX;6s(As)4+$=x>;bnHv$@&Gvm5|bo|n0}c*Li~7(>2Sh&M{t^vjviD*7a0@J}2)3p;lGiA>g`PPs#r%jL zTuSwh;U*b#Bb$7NhG!(xklctzDy=8tN9sqkiEh_&+m$G8PuhbZQz7I-ddk?|VgZTzaNLa6FfD&Tj&%fe zbxs>*lb;W0$C9H;Iw9#Xv9yi)A_G+QLQa^(*nX+XuGo~9(E029oV`qCM*)q%=KR4UrXnoIhA1@D3ERXxis@GiBGR11t_yFetE9_(csiV@{^&aG<89!w7AzYi7POvYNom^#JLCE z%CG0G=V5iP;vyBxJ0OH(Uc#<2mVMY=Ip@~a~8So`{+-&kBBQb-$nCP545FW_h9iE z4+MKO^Jb_*j_7*`D(}*u9#B*%cKk2t>zip=)i=lh7U3avfxsK|nm!^z@jA0}AR&1q zJ2P^zMevz6kE!crl`JigI~e)*8vLao&6)FWvO0;Qcd!>*q}p~sQq;cq&35>IoAf$>Q6B<0xSKV!IQz~>_YO>muf?pn*z>do-q|V zvx*d%z7wk?Ca{7Ome=FlV7ZN8D4>giHgPB$tT0g2RYUm#NzgGT>VP8i-*{}SM-ZFG zzSMah^~$qb>j_UprX5KR4**=yGkk|VG=i6WADDg)&Py>jB4%gYN8T%YwU>ORAn*HI z-WIy6y!;{FR;7>7zm?9nd|V1*9vESa$1%ntnqIY_0=e?e4Q`(n9(!gB;QbS>^o_1R z@B7nWJ$Hesd;!o-Ah?JXTWsiKD#oQfm!os7$zHQm1z6f}=}=NvzfKP-SYiH-li~KB zyGtIG#F}jGOI!dvE!TQ29B0*M=YK|fS`kS5z4q+G1$7Xo7eZRWR2d%2N7FS8+5Rf_ z;&WKe9O$_cdQ7CQo%+{;b_f&N;Jr%ciJTBPDpCJ8U*hHnutXE92z~6qm7|XO?M>qs zX>@iT9?|1x9NiNMSeFIq3!KCC2)A&<o#Yay2mtau+{ za_;~BiVt;rV95ph2zz^=cPxRMW#4Mc)XDRrpwVzT~n9CBnr^76M= z-`6p8PCMn}4`gj}6Luuc^8tCjDEp(0FuW<~nWH<5il082^6OWSmxp?|sBhah3S5i| z8&!mA=I|)%1AZCD3w#KZnq+Ov_~^1l-eV46sU;UuT;WzZVykJT_7(5_sAx?Y7jB)K zQF(Xt-SI*Y$jzj;<$==o9X7Dx?C6w`qXICkvt5Ri`41tF(@(p8pE7;Xtwd#@w!$^B zGl@wYfD%z8gy@FB7n6G}riJZ*FOGvLO6pD@RShhPdfgOYM-Kv0?;!02|Knr7P_>Wc_a$9s%T9HMIQcLT?3(+nV9BV zM0qTAD*|O@<6Qk{UJNoJ^Q10AOrQ3XGF51EumZjkxY}HqJJx12^45I%9H@5Pne0g} zHmkcUtBlE{`ryTxNHjQ_x1jdfyFhq=1qlkin!>bBFV9J}UB(Qv$^$loH`yWOI6 z%ka1G^mF^))M^6gDH86+ZC}9F)_OruA>1}Y>c{IBsFGhcN`iG5nvfPk_qv|> zBwV0`*6xvxX7-IF_C8wg8$fJ9ewO=G3FDJ$yZ&3w# z{R5vQCS*C=97zMoC2yc-`nn#CsR>6%1KNCA9|V+b<=eXz9=(f*zFpflOTv=>SOEC& z)?X*L9rKqQr@iZm>hHIn>k>$R+B`6)V!hW_IIXw2(Bv=f{IK>yFEjgbe@Icq$WvgX zz}c;Jx5cwMZcz{wZedeadcard(;l5nvNn_#J_L~x`LCi%6T)Rcz2Q(Y)4LSw@%$q7 z@!nzxDly(zbI#hw5;4%|C=TX--Ej>i4;(7yms7>pN|xD@=z`Ky>C}rRhtY=ak@+2Y z=X)D0QPlXKRB)u{ZB&fO+!<~Azwnjb|J6pD7$T~jGf@Kd>Y~&A#D0<8fd}ue|1hiu{1wL`@3mzr18wb*e0y@4iKpa!NxH?m6+5H?c zvAou9hu*3JK2h7w{!D=2`|n?wVrSyiyGeVxU**7P$G6(oJtfnc_{gy7d{=A)5T$nA z44%*&;_;%`*7LEU4%0inE0iJsmsd9RS)iID{A*_mL&PEy26w{cX306a&7lg# zLCB0#SF~zQRTB)6Mjus982JAd#fh|zD9*}$ zR)dc;{{y%WHh)3KGk8}=MdkB9hJ)QJru16!R|+T&FD`vL?pEfYzEG^+;S{r|kL#F4 z2JN=zq05dpw>akSe7`#4K=Si-{U?tPpmJ0gIewjN)<<~L6!5;XL9y`uY;Sxcr z8d#n6+R9xan-P7TUrRa{dQGMP1AqDIk2W6n zj@{7aTx2G9W_Cx5McszD^!g)v!;AmhEdKg(CxM+|e<^lFNItiP4W z;WQ~4XumMQzP>*4-~Z0u6Nwyfic#MnlmmELw+-Nuq|sd5<&C>G-IVy7fN~7Y$zp=h zZ&pBr5qa*L8Eh@xy9Oe*&5+B+yC;j)V+HWU{^v|-0Mn((rsI{~?9jxD$P4M?#if_Q zr_s=WH5r7~zjkW!4_c@%FJyV9tk3jW^yeLcq22}|a~wGM9lOTfmQ@h$ZP+<0nZBwb zo)l12-TSj|!uZRB?%RgwShamKJ}`#XW`hNDXp7I zjCQ?ztxE_w(?EWJz1nQ?npzIOG1KT3B}1hE?u}UVM6F~Cf4a33AW{T&8q?4R@>O5w zz@TMBIo%tjnKEd;_a4tfxyU2=SN`;GRlsJkq*e8yjvm41O5g=%DjgzS;qY*P8@{n4 zZTaRrPLSm8jk-0NYp$~f@4R=LwFGSlyytYU+oeqq_?hDHFN+`?rKkjpeYD&;R{utw)}{TSS@4@6}VC?&m4~7ZWk@)N=Q&Cz8v(MK>ml_B1aD-rKX;4Ev|OW9Ld^ z+wGvO+E7j|^`}509z5EH`3Gzqujze`d8in43yqoZjnYmi;F1!P8^%p^*^IBV>i% z_tAipO|)>C=cTlQ!$Kh`@ZBJ3x&j7(qrZz?DEFYln!il|^+=9xBLnAW&;5mW^oaq( znC9C99l+F@#4Q^NrHJG8#9nW69oG1w$T{g857Cw~A*uFjIQ6!AJb39)4uJGO23htJ z;A5AU!-1PbZtUt1+lLPxQnJcLa6^dGWqx?jjq;g8rz2^mni-m%zXuy`o#7pRE0YW4 z#do2W@d}XI&tg&5t13%XFF3(ALX^qy?)<0(p|DvK z^^Ph*&W#5>w}EM(DE{AKxZxZ3&v-xf+Upwq{zSWc6S1Q}l4g4*vM!<(%(58$#n01= z^~b}Kg(o+wm)wUxCgHap?{w^w7KW&=o?dkN$y=Xujl2Pxe%a&&tGniX-{{;_ngSL@ z=ML5`fCt^K=jf9UO8 zZ8QzV(V$OG2T7t6v*4v?6=r6K8kI1nw>7>dV?5Qg3PEYUO z&wcOHLp83ludU<$&o4pnJuE6H{^~EC?VZk|Z#EYLG=~TPX*o$RetJ`>UdL#jP2#5x zuqY;ic3S=B&H5Fx2c=;(MT{5)Dr4nw5*CL2Y-)Dp4xsBArzKJ39cyFgb_Gaj3Y3Vg z3;(gen24xhTc60!E8yO#%QjHi-Ja%O%lIezSrRafGFsrHB3N6!K?Y$jIyiVuMKNXG zQKiQwnJ8XxI$!F4n=Nwm*a5|Qqk)E<5xwjW>oDB!*DEIr__0Ud$59&?IvT{MXTfFl z7xVsY{|@J>*@zQ;|KkEw^OHo?mncbM%Wl@r3#P8f;2d0Ekn#8F;(Fg2wsDf-7|+me zXE1B->wI3=;Lgx3mh1n6{d^s&EX6M>sBdn2<{9OmFE4S~_-)+sA2=&BnTCQw2Asx$ zLN#GjhVK-ceqRj@jkwVdn#9Z)T)iM9j3xAv;T0wA%+pQ(#Zb0MINIo_jL7J>Y+RDf zg~3a^lLl#a3`IEw3y5{oPhCRrR_#aE?bu^=WyNQf{+#YlBfZ*PJ(%*$8~-Sjr`^>A zX?wNK1mX&=9}etuK5Ue3NCBMDMEpZdo!Oc>*ID%yi6n+n(*}!8@nAx*hpU#aZGXoe zuU($O+m90@OgiuiQ>B~+fDqc~9qPIjDSh#Ev{QW(%^gx|*OlNR7MsVXDe6M~k>Nt( zMF0qI{!$leF1stpD{`^X6Xn{bnMjV|&!TshN>Jeq6=ll*?k>^Gh&>FlAXUVLu~s@x zQ6p)Ap8Y*H+f+7I0xOLqy+EORdOdq1Pt_xqU%#9aY;8dxf0Lrs|I&T{U7W_I;E5or zbW+(BUOh#u^XPml@Xz)J#5AP#C}>BHsdsJl^>Ou8zo%YnYP2p;FHQ*@%0`NWZmV#? zW7uOPuGb&#)HzZA4oCQ0tEVUaOna?Ab@$&a+5-*jkxeLf91(mI&)c zsY*ek@3+Lk3j2pkmsY1#3pO@kyJD`q?ZKXsusJhGA_K$k<1<58sg&4bypy$_m7YG3o^`)h^brUpd#Cj!2Gs3m$_G&jf}}iC?N8mgoqsv7^sqb54!mgjQY;-aXg%K0O@GR@#=IJx_4k>`1eT9ynwzJ3or$L0yNg*)fy<2sd#N^plnf2#9(` zZFh^8#m)IH#=6rh$q%~jp+|lF$G_MASz?yIb$8Hfxn`14aa(>!Wg8$aLmI$QJeNO^ zo4Ob?IOCw+L?G15V~>gmTyIrD)wRM_nCqQ(x~EHL<9b}DpTI=}H*NVwZ|wZEv;trm#xhv zg8=7DNGE@NBro$cHPJccS-r>WL_bI24uy1sy_;NVSC8NUUNX9y^{LThHA@M?P^Vu* zHJ8>)_Jf*wK%L9Qo17fsJ5+qBPgk!md=0xd?OHzqBH&V1L~15$K=a_#iuBiWFxlUm z@Mn+cdeY8=NYX|^2e$ac^-(5fYUydy&}ED4!Wj+BQpd$A-}T;bH13^w^)q#!+0_zh z=umh$yKcL*)R6YVRz;_-I19>1hi!i*9{vKyUy$ZC5IuxkNXUJ*IEz2Hp}iyCzq2jWz*p~WuiKt{ z6#b3L*VcbsXbIlLvnCO%nDF0pn0=F;!|9Er_w@AD?OQ4JTwjOq>T>_Uj3bgCWn&oP z;fDN_u4sb+^&4Q-E(W9TiQIQc^t|K*>VnpaQWre0n&r_6QRRjI{Kt>#_o~&^g03lw z&V+0)HGd9gMfH)gaPC{7UMAlKZXvJ~nYWVoF}2e-vX#IR6_15}$5cwFMj1urL(A3* zC~(T$(ZkKvtK0h?(qV?Pd1ZA#*e8|q>v(J#`{M9r8nYN>`+fYKV+nrRXif&h!Wm{c zmO{-)KR3>mZkias4WQNn$~92(*M~T$(dY#M;2d21ENQfs?Lo6~@7}d;hU7OU@qB4T zFN2lkcBMB~0nal_?~`p7<-GTlU+R6O&2k*#hx%DF|A}A5BPM1e>^&gr`iJ`YZtmx9 zK>@bL;pF= z4Q64{LP0LNYJHq%ullV4V<^LIZQkQ&5E%-jMHs~%rglHxSo!-WHgs2jVuMFTwG4vmjJ_UwmgKs7V(GRj2i|hJ z!TGT*^&prluuU=zS*8&t2%H zHh0}1=929x%{yfqSJy?mz>DvqE^ArOZN;>x*`p&#A1b_}(!hw{7_G4|s*|X1b9K}z zeD^LbB#r^_XKws->BVt^BlKrIug3c2aD|$xrv!$3;bK|-Thn88rNv(%dAGi?bh*v> z8)lvWn$T;`2KLxFI6WR~8S1qqs#;?yV zR9yO=1o-Ss&p(*Dh4khO#;gRBG^uyr+mbw<20EQghX}Kpl%CuOng6MJM_=C$c(fkV z^d#T=hkPdBYQ3kZCnRcfA}M#eFt1uzM%2F~BmqbY%s>>Hfn86H6sW3BPlc&TM5r{% zRiIy^Z)vpoG4FnwgP~l=F^ENVp_r?(UC^7$;tM&+r?g)lphM^0poa!<%S~33iu=eW z?4Qz>O2GY3bS(N{-Yas#TO<_7eGAilbBmjXnS5HpDk_W)i3E{XwQC{9@y0vND9-gexM+CYfTstZ2+6+$@i^9Ph7o1ms4E$%?U(K%s)blvf&ipCwBI*BQZ2#EpR4xr2mL!tBWM!>B*> z7?M|4&wN~W)=vUutM6Jm5%;wJ)PJ_45K9c&U6x5CA9ljN%?#Q`N3Pm)SFF?@a~JmP zLU1wT*9)D3Y!t2X+x&?f`8mL>mC3Q-Iqsd?)VM9)YnfUFBkWpK!F{eG6-4wvZ)E#*RH|&12|1P%kirj@ANpZ~=s+X_t31a2MT`Jl3SO_hG|(_M1zbZ0y*>4D6~csvTb+(@2=X0%>yl=c79`+)l$ zZ~`SSUI$RUQn_>xdQ!g5hrelDHixR9yC!v@ z?T-6YF2`}v*1#$&z&oIUG z7|sd@CL1^h5V=LT;)Lj{>9c9ZRuhKCmk?4tiQ~1nDbk;z?GFW;7ZWA@Q)2FX0Bq#| z;VX(~bFtboV|!&Z{mNZqvB?ziTIg@YekrA`@3F)7R)i3deQF3%PZcUxyi)iPXBWoN z6gqgrVfn=A%CoI7oTT-!%{J4o;crceSkKXFOp)y+z!aL3_UndibkXD;)(6NPcBb|( z@zz@g{7}#t%WLf+1}Oyx8KQ!5<6Jg53PBN-^;_X!upYH^xu>&B7dZmVLZQiuVgZF2 z!sDe@va6L0ey5SPWt{_8%%~ZX2Gw^wT$3m1lFj{41hY{|riAM+c5zb_H=pyd?e-1t}5?9)yEa81?8JXaaa zz86FAM16650sp&=l9Enr&27{9&4}3I8O|)#g=>^+6KrU;gA(~j-wDi)2%+ARQ{tl3 zmM-y2uRfNw><;g0>{Wcz*QWfCw#I_V5uA*$Y`&#ZACOy0Z*nP9-6k3uVcpCK$*V$ z4|8fmMbPiDk97dlpR*>VskPWgD>jBY5?gF7+JNZOSxGTNrcVDNf5#}he&as9XPie; zTz5ja7gPBWH7NKq62l}|lmK*(t**Dwk5qd&PoHkXElP!7pKhB@k4L3iu)9X!Z>@pG zbO^_JZ=~pps?_4pxhH6Qh1do~D@oxg(QaNBZ4#`+5tgfm{m~B1!?RVxqcOLY9zDLq zrVdz$-7EEnJgkgW`ia^GQB*Ahnxst*9mi{yTAR9NtqoWE0c4-tIxESMtVbv?WkrKf}y|8Fp$(Gt42&w7XQo zd>}_qgJm=^?QwP+^pD(@ zi#ngQR(NYP`uolw%jpFN(?)9j3#~d<>&Q229_u#;LbwNFcIM%OC zMY>Od_SV_ms4TCKE_0t%-L~(~c-oS#t*S%u7S#l@&cdc;mkRVpDdK!S>o_d2(f!Fo zM?U_u`t_WGtUQwb6jI6Y{d}lGZHf+4W_*>G$7Cz1rgm3MoK8_eM0J1xx18Mb$mU|t zmc&{{C|4{I5!LaQWnfFB5u8!c%dt|Xj|BV^*YMu06=bi`GHiV0wJ}S!&J*O=NmcO@ zd)<*j=NHL0#;Q+P5ec|h>!?eO0zEpO*ZrNdI%FQY`sd9+3AsiEVbG9db@D~!``TJN zyYFA(wB7>mD~_7C=)CH)sRsOP_6YT<^ZEYeWW}di+u`lf_o=yDVIEX!0bzwNIAt_d zvdJ+*)fBn9=aZW%m8qAhz4C5gJX3>-FOkV{aGm~%raCk7g)_`hV1G6(=pcIvm{|p% z2J6QZ+J%uE@ta!9x*}+=o$0m+hy2`MeXcX26Q*BYD?i%)I>ElY8>MbPd_$Y}#0V^^ za#8o@UlH_cqOd)esZn8da9hB<%(kGs1`|UnC9sqC4Ga8@z-Bjn`iq&U{LOSYCQ0^s zxcaa05Tt1eo%J#})=Ut98NbT73ptsmHHfvaN4}yL zQyCZIm-yC&oV=Ab6C3EM&wDi$@)l9@5__*VTh2YUARw2CEW< z$DCiQr+e@%cbJ2@xgU2_W1|s|0H_OVw>1y3m=C;NR+3o~@Z2|8^f4on5-B%Gfz7ZX=<9g^m?8%mp%DP+~CGwff1uz$v zUj5_%Ys`kbqX&YI>K9CY@@ehMrU7bdrzZk+&4!(`0U8dF?`SL+ZZ-l&eo*MD@lW!` z7GyT*Wm*;|m@eyM?xB2NSVlJSTbLz@LGpF z;@+H{d-SKS>=uJA46$;vVuVu5br;5Y`*YaF$Iq=mboi8WN%%lD{we|bQ_mpMtoqiKd!?N|fw36IUyuN|g~-tZ&w6;W4S7tm?m6zd+&ekE z>L0o$S*Wam%)T&uzez4F6e%@yjrm#k0VdrjASQOZ$(>xnE-I>A7wJ&~a<16DPQ9N7 zPo(A&A%Vvw{xVAlyF_gl88bsmykP|z6)Ed-X(|GS3w~T=Bkn49-F2Ongkh5orri60 zpO2|5TRg!rRU=^2v&tZSROtaFh;@ERv*BZoOxg<8Q?>dYYPgqI)6c*dWOEr;t?q=p zm;FnSDOKb~(SE{1MRh?-M>hhEaY~_GoCax@3a#~zSdAFaRipV0rGTGtr~<)VDbzC| zYgGh*>orG%A~@^QKZJF36{QJ0=(cJa9BQ}<{l^FXW8LS1^At!0ncI{0=Bpg!b+ItG zsva$6N_`&_;*WyAgu!g|Joder)>)z{n`y=f}sZfIj>OsUHlF*zXUd)k^X5mtg?5DY=~1`f{!#ZH>Exc< zDu!d#sUdML+dgJvCYrh9rR1PTJt=!PZiIBalHpG6!Joe{JcCfb9?icF1Lfi|#(yF@6;J7DdIX)wm#Nun#k4HyUg_yA#hNM^mvxkg7k zn?fH!CkwleVkuw7y5#d3N~82QC^SGvcLV7&*%3dYNboNxVcy1oK_f9w#`X8hQ??Pu zRyMURVQR@)4e6xmuT&Ji)FvUO`xY2tZhU;+EGX%`lXQq)8Ae{8NibxPFgZ1_%Vv+e zoun*1yEUqT3GI2K66dr=QvL!h^leyH@B3~jFw|UE;sr;uYa(W5hGJq<17=e|)*%#AG zC=6CO-*|%)meO`!qm8}{G<{E}`}tZM$e$Hu$~6~adA6`gfp4`eYGRE$e7n$e&j_d^ z0EZFSv?EZn=9c6=dI-9Vb4~BlmzQOiZvqhoGl5w9-9fSxGk<5v>V(?N@ zLaIHfo%L)9s-CH(PHGy%bP_NA!rgq<-RI>>LiFA=ryeY&539FMX1w??K`jK?L?%Lp zL_o|jC9Ka61WeH+Znx8fft#O-1(GLBgaHk~UF` z3{0TF$4+|FKhbqy( z;o^QqdBTfUGX-!`ZuW@kv#8P;E+<4`)6jenaSb>49>LGIgXNmpWlbYPv*7?4!6d zIfc2kwGW{|kaz)wg^Q|m4id)H%IXvNZTxyHsbo$;Lwj_3c4hp^N&Uo{>bc`Y1rO65 zCCT8B(x0%Xa_YP{JSH%-+WGelFb|r{=dIKSl4UVA4?1cGmLseoH?;#WXmdGFVazEk z8~K&~t|p5#etjM>P^{eCg5RtairsEp6t)gVQGcO`^|sL79srYBiEt3+{Cc!#u@BTL z*!KxSRpatvq~$%s#NY6}7gDZnI><{~LB~Hli7}})SJ4x|>T^(DQ3JV)qJ`C>ri{?j zH_6?1#K8;UbVPG|n-LrCT5~Lo5#zO&Sc*b8 zo9omq{QKa$zg{B|`-4AZ&Zv%$6%=OlihlixL+Jk0aIq6I1f$j7-Xzmg&HTW;K%%}a zgr!b*;=RU}(Oq^ZtU2*UI)8^#|DlDvPz~}LC{ng{?fXHUQ|M!)R^L$HL!L+%TfIse z*%4xd3;gbYNG3;1q`ZZXnQnz5Y)^48nOAFoAPWM$uc5HP&?^6j#VCL09QaL4*j&8H=)T;$#6JA76m)3z-4K?^?W_0@Tg1gRAt9B`Ez9L= zgY@Gw`qth{57pm!%!}Qjx zxHKxXDuDS$h|45RDQ27!{x?pSK>)r%oJ#GWhWTdmNW~l1An#H{sgXt(d$08Jc6)8y z<6=eX{Udoy{;^+uUbVa@^c4v4c@6s$^O5ISsqei8gP7WR@_R*~22hmiSMdU1#nZ~>DD0U z$Y-UyjAO<8Ixt+ksdX*X@ZA6o>tsoY#=;m?c4D-b z-wDn{6P`E&{@naW1soq^_bnma^*b+e>#*b1ByIFP`Hcwglnj-P2$kgbzAb#H}hNodImX~4j1K~(b*b9lS;Bv zh0^O*zF|Xl7-zY>3YU>;#Q>Iwq5dcyY5lxjaF<}^-%c~$$gl>K(tmSx8;}S7I~uSa>s=$jIYOOSXKwlj#739C&50w^|w~ zoYz;9_b+#CF47bhAZ0CkU>ag-Rs?!IM$z))oKDI;to}$u9Zm?rS~xR&(sqmvr+gr5 zk=NcjD8X~FekttZwxI6VDXWdI(ppN2RtX0`beVL{9k+B61^6Dv{gl^%v}WP|LSc2) zzo>I-OVr(I_`LytW7#(R^}wtPAi&J!Ij5*2r*kf9MLBxqqA*y~tF$03J&&Ug(aQ7q zQM1t(-s<6v<6Fl=4Qwj)VBKeRJmkevMhq=U&kIn}vg@7HlyBDCjTAO9ETrV`C<&C{ zXi*GZDo7i_!=*+N;kvQaXA6|bAa{~}4+vu9IV@qap^PqRe<;$UlNUBp^# z#4@9%mf!o`kCfI_CmPsVu+>^@7TamUC{>E&)!LtUVDjBW3@Ks`OxpBpFt0p3XCSa_;mrm{Vh0<)9J)i}Lg8=C@ z3NOxxrM|i&{aUHMuny=g;QPIsUKhk7;4AYOK|%+o74k*p?|9J%GkMXkImF4(2@ihL zZ+ciugHP|VwH4rhKN%+VwIwR(g&tB+&1?1>6RWUrchblioxsP8Kb#a_I;6JN<7P!{ zMHfYoqG9)aHK||{&^F<)pU}$|(*(bM9APkyTf5E>uvIm;|D2;pybao#rkV9b7?%Vq z8iri`tt7^cYep#@T0tB`?n>)hNHU<1j{qyhNaoj1#|GiRnjlllCI7_lMe=$UK4C=? z!_BOfl7)~*w!i=oCg@3HE8+9Je^0R2hB*H%8o({*WjU%B_%eBUU4rnHUfll!qCj20 z@~WN+G4Sdt_@Tis+o~#rKt6_0ZlHs8>D&$5LQzb>?png;o_%=i)ot|3E*dLqnEA>% zEIhV`#jmbo@QEz#@R_8`fOEXKsRbdRD2S z?sft;S*O^#YONJHP*O_@#F{*E&}PKI^~&*ua8g2%ZcWPigZ$Tk^5c_3r`!N_10fio zVJA@73DE9EwD;`8%B$P>a@m1ByNa2woWs)NZ7e;$fywiIa96HMew~Lprn)8yxJ(}4 z*7G&xyt1AZ^2qN;LIix<27prX^>x&e2O!sO81Q2kh@_&}O5Hc!HzNW7pDgBa=PTcV zwLMp+a$l2xmi`9G5T5}nf-I01C-OuKUJ33+2@k{8KK1c=y)WzkAwBAZ6p>-73PzDY zTpUdTOA`fVxo>Pks(lzplYzd0vMm9$U;V5j{x#r^R!VQzFQ|;b7Fh|Bpk8`ju6i8j z&?(nJv?>?0uoGw$lPGrYLU->0eDyVLe5tnyd+q{ezj7W+U)#X0$J;1YdT3hzoV|dR zuUtf2B!c96rR2d=5hAF>bSi*nz^wt025#y?K;_f=_yl5}s`c?J2l<@1_h=H6cF9J* zMFWl#+x@kY@S!WN$5)TO0W>jqav5lTl}ehu8H6kPyq*^w=0`PdP;180EK zWmRXYv&eNM5v?c37`Vfyaf4j)gDCiu`gPjA?b_G$+nmZn>gkso*z87^p|F!^+6kE5 zd(hc?2w(lyHonx~#OLpM1hZ!e`%kao@H1T;+91sEmwLIq(L@SZV_t)wuT2iz)OsdF zph+dvr@_wk0lZIref0`2*2fiS=^lxSkCl;tUY6C0utL5=gpW^LhPz(<4)m7}$%G!G z{~9g%gD+oXk$fQlD^gw0+DrZVEVvh}w|aeT4GCz-WUAXxg%m2l9%RwCKmvs^m~U7t zGzygc5`7{#=eCgmDmOWTCY9Jow};MB7x9PgNB}_DEI_f=h{w`o!xmdQ^)TS`upvCa z!9YTG%(VSc1t>DeevSzJ{yH{kP2wBPVhYV-8fI<+CutpDn{VLWmp0MpJM1~z$K@*} z4xcS?VAWyL40#0?20h@DftAmwLIhcTLKvC|kgVtWpz4E^i-ZvgIK3V@;Y5?;Nm&iRtivZipxs>qHG##M zMVvo>9z`Q`wnl+x4mEK0FmRs%8a=|EGhJMEriX)P`q+2DVJbLmV&>MPwr6!HL3a%Qh>^+YnB2Z>2Yh?dm#+%eeP910GiwF<-W|@=ZAF)HN+Pp z`b8Mhs|CIa`hk6Q<3Bk80G6K=RfGU2pWZ~2vOs{RgT&xd7W^aVk_yKINFd7%N(F#D zQ%y|6pzlhQB_+V;{C1>9+5sTI0aCE(j>Dkkogx_P^0AW%q$?nWvS^eXGYx1Xc-gRhX~vxPdYyUtXV!*lM_J-&RmHNt{dSK>yZ$+&Cth*Emy#g$NC&K z@!_lAg7a6r&OfzhEo>tK-xglNTYfZGPuo>Pd}85cUcOP&crBoS%lC&=ppFTG@f&@8 ze}S|^KpMz_Fsjh=fKM@BExDDT;7r3}?_>j1I&{l20leh5*9B0FkMxG6);f>_h`$pl z%eBB$`GD{m!14vzLc~APiL&ZposRft;LnfgNKl<^hY(xhGKlg}>mA~}b7R=`l$$Jl zLS1M#Veri5lQ?tvB<=^H(RJ8$s*C+k``_+!B^rDe7{o$^HDKk6wFR!r*VU0(WvZz! ztvftVLGjp?<4IkBS_2Spx+L7Ocs0KA>URQ@GiVn4QVu_D*Cuk`ROCL4cMT+>4+~=m z2F>l~NaO6hIsgdpBFD&jvZxL5(c z`nlSCI$4G5vj!*%lURPft?@gCl-_3p=@9)1gHxAJ;MCu9rMl$vTaB*3ZTI*w^D(d0a%UrYwH+06Lgt6@F%1J z42t+`;3wc0P^MrPHBlGw=lX|`fE+^u-l_HB=OwGDxA-RQ1@h){V%L#EUV#k2nf*MT9@x+mKPkw<{7T(7tfH&W{6d^mrT94jLo z21q#e6Mcsd9)1H(zWkrUOwRac^<`Y20bgVJ^J%*_`tuS4P{Vg5!+cT7GqyzLBa#3S zD}ng+$po)NAznbT54c?J4h$fH3g+t+zX2w!!QP1`TGpV~@7MeK72n@&vjR}yk9lR; z6#%y*;$QC`Y(3)d>p>Rr&q&Paj-MZs-y}Q&^m=_wd1FL@LbTt&Byf^N0l$fW)F6T( zJiV`llY5%D@0C+()Lz@amh;-~ZC^k`61DpMh_adHXT2=dC~DBf8q!Ga0Diyco?#1ih#LgxAXXB|-=h z5CB-&jr57Y$O~m<+n`&!WfI7J17P<=152#}{eFo~x7;%5w|x{qgV}=#&=G&OurHa^@Ou)NDlGO- zHDQU+?Um@49^6E6f{$~q67hGA#0}s+xE-kxEoY6@Wbo%!LjO(jsWsLL;o>9yz`!~F zIruXmr&d24*Qv4>6Y)oC{rP73=gJ|y%D;*%y|{vPqG$n3w9X2O;jf-@mysTqR~G!q zeGPo=2mc35T8pKL0#gq?fY!qgqI~!tuyN1b=$(2J{dPOFMIBL*Ts0p%KHpCR^05|O z2C=E9OTtHHkKm!}ei)eBjh229XY%N-8q?1o%T?2N{U^+V3V@Zl`Du_3a`E%)?%ga4 zjbGK=@ESQjpFjsvUnENtv^o<=EeYg$Uz30u8L-A+_e2AWO^aUNVY6QadFh-F{M8Kk zr3zphM*)D?@l$5!&d)__Ug=c>LJ;AJCr;zw!QD01Th*h9f)r3y{dM4nb6LGLE`zjP zMf{WYA_2BMvZ^BfF62{Ui1o7zz=nta^7ZtcfrJJ4g~rk=0i_DLO}s6Fov#7k7jeUU zPX-at?mKMs9q91Yu$NzriSIU8ytRSpCmuobiw~f@@6%Yn=VR!fdJ_GO4Fz6`ZB_SO zgC8L8Qb9lD%0vX*Q#NqtRsR&7m*1dX(vbpRzk)kX>Olhc`;+x8ehBF7UzBk6z%@N2*?bpTj-;sAErtMCtx-h-zuJcxt)cjL+{4`5=lk%Bp^ zCwDW%_hxvwxV-}S0c0d~WWTy~L{aublVTVKi!TlJR?*lx*FQqq2b3Ux)kXCs3_~ObCqIr-{XXDtyBc)_Yyh!XcQ~AHw7tZp8dA6qtDYE0}xuLD2o5M*E(- z(Ru1AlN4a$RlvD4LoUjy%-y!uUe-7DXSx8er?0Ou~8 z#aEwt1ou4fQGD_7Phx%-VgF^juz&v|w0jUcSqA=a(w7?X*LBts!H9^zbCBcv^2#s; zzuw>TXtlK*pioAjZX%eZj3%Lk(2)I1Ql9%MaXpaBC>DLaM_B8Ypk0SyUw;UV@3;{Q zKVM+_YmcD$@B_g8pGNyrccJstQ|PzX!5|T}qmI=f!d?9)KKt4qM*qmQXoS~rr!VU; z*$`jNgdVo?+0Y(KaXnR61C{-B?c?)yx%37gvT_gj+IS@v$}^A!v^7#*-Ac;0V>k&c zPByToRe+pByVplq4!828gMBq+C@;TV1W;?qE8tJ9vLw=0i+@gCJ)f55cVTIM7p}ef zH2{EKzl)P+p2UM+`Wznk(#P@mxd(9c$Ua=QZvm}|hL8duBS!pn$7jGIX=j?>o`}CF zl%N8{Dh8>@!96eY**1~nb;l7xlO;tAYCF^xB32}jc5|I1{V#%FF^dASUta>~_e->U zC1~jo?6)06_lz z7Kk8ER6qcDLINsOkf%oB<^FU5bb8+Em!ZE6CV&k18uWTO*>`&;0?2E@#rh%zzjQ_g zegRhk{MeC4rDmgr%l99}<@=A~#y7qlfL95RpL_(L`NCaz;E`oa&6U`Imqn4(5CwFeI#Jy*6U>fE?;XMtQ0FArwmuO0TJk^ zssMG}BSFNrl?3!rVsoPeEgph--9a?J?MBS~T!EQ$PhX460La0YABr0InL<4&!8gQk&Z92kFL|fWHvm0cD!;-nM2qX!v4ZhMSlei_g~T^_nfMLH zn)otA$Lr2*(BO~iBc5Y*S>0;i9tZR(D1_Dm%(uJ|jaPmrc1;v`XHj5tV-shdS;JGO z&*N)PokiDC^1QxPZ{gA7`x5Lk@UP^83I0415|GQOMX&n)sYTBKKcF0`y0#-V zv{iM|kw!%PrIRWvrnUj9172ckHClMlp_k%ChhB=eUH?M>fR)v=_`+B2!#{rYK78`Q zKgZ&(Ca$__Uub)bBc$zxA~s4Q{+xH>Dkx&e!OsNAq{3a$#BqLw#1M=^c;TpS7XSe| z$;V0MeLGS-TKa?tl=Y8gA$1FRBPTc@5(LGTs%s?oRMqE*&?mxXzx1&W0L{f&T(xHb zufFCe+8Z65JHLU`D;qeyvWi|w$t$^%xAL(6t_UFl-G=Lyl7Q|;A@mADcz8EhZ@Cy` zJqa*Uc|SsA3I%kYF~G+V=YUDT1XnKW%1i>*0J|p&EKL+B`wr`!a)7VzYW?_H|Gs7& zsck|I+eQG1Wf@`VrEKhhb>+;ZNPsP*#kpO0!?icy4cFd)Ti$vb{`l{H4`=aLNt=d8 z{8L~t&>2MjB2*Ovvu?lap=9jW4<0$H9*q(glqtkSc@Z|A0+M>^1gU;W(r4_X7TdoLG-&_tgdx%=0Y1Q z>znBG18XP(@JK88bB*9Bx;o&;*4L=ZX#oEv>CjMP!eiCo*?R!OC*M-taOQ~ z!Qiir_zwVot^)FM->5XvngsQOMXmvUMbcBW?3FzEdUV9UbS3)zKKf-Br7NR_1P~sL z^Z!Z5Pzpeksai&I4Hd|Op84-dRW=$U}d9=|G&L2kFxA4>;0Wux2n3ks=KSY zI_b_p29gjUn2s1UD40f^!1v<3)a6tAxt8-35O^Xi?JS<4;t_x^p~-scWg)tS7z*X_FJ?0vrdO~2pXXP};_xBdS=?K*> z%YfaR>)2W!L#LBtrP=Pg!ryDkuSfqJLf86>IwXm~J<5K)r4Es3#or~WohtgICcwBl zK0d2$h;Dt0TX@r8NPKch&I~L;h@g0fK(~o@r(LkQ0$>anlz$lP412h3M>qhT=a;hp z{_R5PY6VV&Z4m_7G-{{7uSRzg%>DRw_ITGk0e(wfp--SIIXYcnrPYBfmotR13^UW4 zarWFaq?2R0-Niz)gM~&5%}z<6$h@B64BR`{zZqH?U7%FW8UQI55^KmLH>13t^p_VJ z+?JE?6v)iw!D78<>-ZSXoT#H#6RbAd<#qjP&_^r(iU@K7wF5oMoU^k4l*FJ1t&J%4 z)QZ0YG-rVZJ|(#M@ehwWr@Lgx=#gFs{r4b(!r8%*B7$z-L95+FyW2{Dp25!vU)q;B zpCS0mj-*bf^2Q%Og6HMxz9A1iLW>6~V0EAnkqSUeAn-&G`mgH4x6MV%Ah~>c5RS2A z4CKhsZ3C;V4vsAqc$%oyuyuS4XKa~9h72p+E|ywdEVepWZPOB|gwZ+Z5ndTzCIOLT z3GyuX#@+2F;;b-f5!O#=0?47(=AF+E;GtJA^CYB$`sFR78-p8o^lZva9$(o?Mt59w8Djk?@ zs!7r-O1>8q09fsGu+l1Gk)e3v?WTGSGgFhO)iSJh1uLB#3#|^CovvFh0Z?4R%d%S0 zSuNNeuJhA+A8L>+FOMmS!)fLg^4%FY<+zz{`3+Lo&^9HM8CtwAH_RwxDIZki?{GB$=ryNzb6TQ2fdo!_T#@pS`I)!lp%=*@y)0e*c$o4;Ls z1B!Yqc-42LUgDtwtgpXk?p&>3$$)LUmaw|{R^0UOpTrY~PXe83T(tWoxcuU)aM8Ih z#P;dg>cg{;cpmh;4Jkn1Sw*YULY@cEyHW-4c%P{YFenp^K)_@u0LrPpXKiyt1fy4}uEphOELq1^;fd9P$luiisR)+GW?kh)ey0F~r080f} zC&n^N)@#^3Sx0^II99qjmb=C6&CO01D3<(!K_R`$^?_nNfUoYmm3@DGza)}c4VWFT zV{Uv5-8{!)v*kzq;%B<<$2)+~dHX=u@ok;k=D*_3`NLlksAD&D1`q-j0~|h?b>hb} zgpeF1wGIM*A0&|+v$I<;Gqbr|-1rLq{fWEriMvi={^SaFY`F+mUiv+F!G(LUd+s?H zD`yFATBoM|c{#mrH_&RY6hEs3YMFK<4dc^P{Tw$ z!{+)J&YBp<_~uD0cLl569E+_SjdrKVA@>VGk#ZrhxH3>!nRy?$bA}ASrdkbWPS!D5 z%g|`G(P(!)*!e#F)Z$(*&?m3!i`f_L2a!X3OZ&!M22_A{evvZh9HjJ$e*i>yq?fzi z+Q0a;qC_l=tB=)i_E|GH>#Xe%S;B$U58>|5e*j01E~1X@c;4AB#lw$2fVuOF|=V5uB^eS4N4e68xi4FeGX zp}#PbDZdZ7;ty|!wk7n33jLkmT<#=DO%X|mMUEURO~G=b4ah14f=%^0Hr2}1dSNeN_-b~|D=k;ou zpPKd)*!{L|%Y?ta;%^1^QS13gueh#=pnjwm4BdYHu0|$;rj?a2_QuPkn@=!Iz|DW zbr&t)3spcP5E@%m|GAN&bkN{t@J6G!B@gx)2>iUxpyENK2%)PcIq5IKo*Y(dWm_DPS03^O>+!(6b^Y-6b*ki`Z7V6tAr zrg{ytlXdLgGKof4&;&3pg3VcRXXB}6t9VdH1!#L-@^ftmUDtA#t#qcPhxiY)i#o59q{f!0T;}(*q-YHtezB9%uwW18$W>1H8n;-PJW%F@}+x zPToedy^Lmi8Qr|20ca9OfrbF3fw)exfB}R7zE55n{k$5bKUf#Sj@lR6#qvB+c$pTQ z)GvccZ4=m1`%~a@ZP&EoU+qul14VM;aw>IGR*(myH`@Z$R>Emq4lH*&m~MA)#+FGO zU2VlT@W|RhpIYRLr~B?vb5h>n7i{xDryQ{B0RemKFZ5#|=RT-TB4AQ-C@0f2ewb5$ z;;t7;yJn5*v3-h* zWiDuU8)&qb(CVxd*Xw~e(d^&KHftjbtyFKafbvgo9RS(}ygVb$fZPy71Wc`(2fCLh zfNIZ4lLmj%7UK_9@ACpZz|VOV{F{y|0ap3LkwSbdqGRJYco3O31$g-~pSw+$FZ-c# zwO^4zw32WCqWtc30@S%a13WKLrE)=Ia1eM6QtDc;D0YVEx}w+qFY&Oy3Cbj_0 zGjRVy_hQqOVDlCZd@7jzL7d(<1X(0k{1aqhfUN=DD^U@FhGz#(sMR|dfY8P(00L^L zQ~iVVr4|1`2{E``MGR8gpY@g7?GfmE(ROK~34Thi_^W=1Nch~^`CJ*akezZ!7O8i0u2=L5ISQs)kwhn*7sp%vo86$Ll-+HN=y z^eLMrrtyp4_s0;)vD{d|!-v0uuO9q7?tlEVkopoPCV{cKN0mx&pXfRd*H0ESidM?< z$xFaS(2KE5yUPu&lNw-2z6Mqd=u~^Hza|xbj9KwlWaExeqqM2_u{S_wS(G>FSp@Kb$;*5@;4O%&^5t9;}F2rz=-)z4KZBXW&CUzS;(y3y_U(Ez0jNXA{gf7`3Jg`#| z)A@3NE`Zy;E23&~FSU>L2mlYdGrl;d%G2yz2VFP`HlWls@I?n@kk@uoou5f$!xBJ3 zvDyT7&0c_Avlrm%%YPIiIaZpBIC%7{_}ZZ_;O;{oLw%x4i546?9EdCGP)!ydz|@xo zJwV{7APLa6mO~#4YTtiZysoBi10Eo5Cq|y?6G*K1r-7_uko2eL9ZKNfv*P$3EBDHnoE)k)CLfH}$b-=3!y~%=- z5-EA{$AcSsA3*)3YzXul>sBetfZv=4d*Dz)g}4(i!N;WuB-V$Ln3Rg!_XoeTf8Z5= zw$tXc(B(IQKfhO30{nL%{Ipm6Ou*mxBh;Su=|1#|e++)|X{4*enghOxi);)7ME3z` zWn40HUG+;my4^OGnfP7;VtSVV88vw*Hn8A)y2;#r!OBOtu`9x<@aQ$#HQlBx9 zOdrtOmJmS4IGeOgXJ-t4Zy$`W4DqOXpBLI+%Fil^gP!TQxKB>Ungo|vZw7y;3+qrh z5`Eb9gVL_({GR|@kOO>fM~ixD5l_PPe7oPrF|4WSoU}T|G56b)wi{LIE-5V$6ut0@ ze+5H{pxIu+N^2gi&T5%>;rG?2t7KV5PPB<^0h9)D`fqQtNF8Uv3+@|;!R^4S+DY6G z7#InHaO4c5539^8{=VOeW0D|s{lI^E=`#F^Kl>rrqxvBtN&ZL%q_3Un@Ol7)t>5CG zJEnX>lwQt964t$JBPz2qr&%oO*k&S(7n^*kHg{^4C-?i_z;_uFxy}VS6b43mjaR7<{^yqHx z(|6y^=r2+=-PbzjE*}tdb_(YzKSEps&~-k9SZ@rD>fwCe1%Qn3!DZm*SZSQZN^2gu zbamU1PpAD9pq6Fm_5*ldLKvPbd|=9iC2SXV6EIVwWoR!^+b|*~h=PLd!0Zyj2~fxM zTk&^w6?O+>2*}Wc!iiit6J!55A3%^?@we@r3ig`0AD~2!@X?AtAQqH#>#aI}w~KyB zz*8TR8uhIogC2g(%=^pbgUcbIxH|ua#9-new5_|;1Dm8@+wH*L&0AP%9LH*F!6c55 z!;9~OUItulp1{rbz6Y0_^-}Dfy%<|Joq-I4Jx?&pGPCNRNajTHC);B^+o>q2ssUL>&s$e{h4$m&D#l|BBLHLUm(U{rh8uFr~p zAcN2!qHF$v80@*cTIBP(y1H0)2_5R+_{+!0yFAo$-gv)p&hdfkE9D}fexz4OfZ_)^ zOO0a%@XG`Vi6L6~^0>h-0}38lxD^jC{40>x0U5`($=!JVIj_VyvzKD$)(bFR+nhYI zHkP570>C>J+F`(7wc;;YzW<&( zdwTl>MrNoZol7MbPpx3#)CvT^S!eGEJ{w}iKdv`Z`MxXu2DGGaG4dlm=NCy|*DnDb zuR#Fz&PC;4MW#0PIxjd8d>;9EK*%}2y#b{j62c{}1AYt3jpJBpoeJ#5MskvKGL?Ge z(qBRMi^js{HUw>)Xgr8pA9xUuG1O4UST>0Z&-`Y*;OuY5-1K?aGC79~waP_6O9;O3 zzV(m=%-jgjE^k5aT*APVn9I4n3tuu8%`q0OXEUfZ?kMz>< zOArhvUDU5@Blzk)kKlWrw;Qkf!58Da-Pt4Wv z7T}XmRA0Kkvd)b>oV*-o6<_#x>TSV8_dkZ0oUs)j`K|B6risBH|9)R z*|~W0PrnS096p7Q-Sz<9_vx?Ttn<&n<}DLC4+zj2galIcUEA31bkXkQXqT_?YIVYG zy#?Sc2~^9{PpJZZm+~#o!S5U|!gLuQ1~FrabBb9cma*Pa&+`tJTPLy7IDxKo153Gn zD9d%ixP&v#DBBKl3P3rmkEev!pr`8yeq8%n%6YrCnb7G|DmTo109kwr5HAAt z0l3qo-*E#i2$DS}5Gp9S1GBRfL-}N(KeAR0t~m}59lBGux$wfVVQ@&b_jp_=I_UN-TemR^nadv_6%;g z?uT&jz)@wVe==@)FMp%m#o}u52IA#LrvSgt8AFIZ*Tu&meO>{E9skU^$?yi*c{%WFYsrx*UbR{?SdwI^g69!1s!9B6>E2cZSM-6t@ibE0UF`0D~;zIlGfUO|-8Bai4xF z0GK*11!7dlRQrP)O)x`pXi$P9`Y~p%ZCdn1}6Z%vBK}4{v(ZZ$AnHw&vHn=pq zIgTwg$d8)90#LNSLB0#^01iN5Zyv7dR9?^5IZzbw|La(=4iqbsGnRP$@wT3Nfg__0 zVt{&35P^Nbii$EQuwftupWM#SVeSJc-{F=Vz19k1vS$#o$cOC5k1}Kj?PlyLK-qxz zwO1t)LI*0rS+CGhrQKd(_7(Nxw*~iq?NNO2*S>SGSoSE79a}<&E(@PEH;wVJ!CxWY zrKjSgY_Prv?ZQB&>loB@gHP(oyH=L-kb?@vM(8_yJwiUjG~w|BgnmOkVm*w^^_IHo z#B}Nvc1gvCla(P^g8}&f_W?-8h7Sl>r%7e|@-yg)zgI>B%YscE=U-f;Nx_2Jr>aUK zko>Z1?#|d^n=68YPQpkI$JTXhY*)Yl14?lI)C8tBjSrGXQF-LZ0^a_iJ8;K=fasV1ZK6}l6U6HrKL2Yhlmj3W_P3c%nG1gQz#2t-b- z1Z)L}Q*~h7s@lVlMRh+Kt@IO51svxuEh`-7%rvsecJ4zZ7q>I}BAG7nc*UQ{+t)Mr zIrai9F0SGizw1Rqr&*_)X`OiPw_u;@ayJH$6f}@=--hAViaQN^% zUi}T{;8(ACF`jegwpeI++c$$Qd`|$5>uj7{TUFN=M*&}AG0POH& z(d#%z6ts^5u2c;)^p-*z?>oY==ER z3(HM>$D2Nk&bDdH%}rCn2Jm;fITlx2IJ~fmV~Y)RGGNE98GQcm60UjsC-5_G|2PgF zSx|D_+omJCT((vK&XX>+fMhAu?u6ASO$n8<|^U1FRh;rxRN7efC;{h3ER#waY@q~{0<<3DFJG= zEV#4Jrz?VA`m;~tk{6ug?-g*l)XfDe%?^$%uHx{*Di#`Tbi29I9RQ}cZ^46&4qpAX zf5abs_>09Wx}l%`K0R>+UDXyH z!~>4keFKVrCZMx|r;vfw3>bWta*_o{KXl+f@PIr7ksC0xZ9Ar?rm$<~Je;@fW!NO= zq1M@ob}K{X0%d^*mfHiU1HQz=l0{#D_mP!*1vRi0{>YY)6ox?T$0e3Yn%*|LWVCI0 zL<{}LI�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 NkneRm-v2zu{6C#T*F^vT -- Gitee From d20b69d474416bf0f6a2d77b54df42ee1e57add6 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 24 Feb 2025 16:31:05 +0800 Subject: [PATCH 04/33] ci:add code ql --- .github/workflows/codeql.yml | 62 ++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 .github/workflows/codeql.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000..1716d18 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,62 @@ +name: CodeQL Advanced + +on: + push: + branches: + - 'develop' + paths: + - 'XEngine_Source/**' + - 'XEngine_Release/**' + - '.github/**' + +jobs: + analyze: + runs-on: ubuntu-24.04 + permissions: + security-events: write + packages: read + actions: read + contents: read + + strategy: + fail-fast: false + matrix: + include: + - language: c-cpp + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + ref: 'develop' + + - name: Checkout dependency repository (xengine) + uses: actions/checkout@v4 + with: + repository: libxengine/libxengine + path: libxengine + + - name: sub module checkout (opensource) + run: | + git submodule init + git submodule update + + - name: Set up Dependency Environment + run: | + cd libxengine + chmod +x ./XEngine_LINEnv.sh + sudo ./XEngine_LINEnv.sh -i 3 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + + - name: make + run: | + cd XEngine_Source + make + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + with: + category: "/language:${{ matrix.language }}" -- Gitee From 64e2859a594adb0352d40b6b2dc5d30e9444937f Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 25 Feb 2025 10:47:30 +0800 Subject: [PATCH 05/33] added:hardware code login support --- .../AuthorizeModule_Database.def | 2 + .../DBModule_MySQL/DBModule_MySQL.cpp | 130 ++++++++++++++++++ .../DBModule_MySQL/DBModule_MySQL.h | 1 + .../DBModule_SQLite/DBModule_SQLite.cpp | 88 ++++++++++++ .../DBModule_SQLite/DBModule_SQLite.h | 1 + .../Database_Define.h | 38 +++++ .../AuthorizeModule_Database/pch.cpp | 8 ++ .../Authorize_TCPTask.cpp | 63 ++++++--- 8 files changed, 312 insertions(+), 19 deletions(-) diff --git a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def index ca0bf35..1f3ef92 100644 --- a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def +++ b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def @@ -9,6 +9,7 @@ EXPORTS DBModule_SQLite_UserDelete DBModule_SQLite_UserRegister DBModule_SQLite_UserQuery + DBModule_SQLite_CodeQuery DBModule_SQLite_UserPay DBModule_SQLite_UserLeave DBModule_SQLite_UserSet @@ -43,6 +44,7 @@ EXPORTS DBModule_MySQL_UserDelete DBModule_MySQL_UserRegister DBModule_MySQL_UserQuery + DBModule_MySQL_CodeQuery DBModule_MySQL_UserPay DBModule_MySQL_UserLeave DBModule_MySQL_UserSet diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp index 351cd90..d78d48e 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp @@ -265,6 +265,136 @@ bool CDBModule_MySQL::DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USE return true; } /******************************************************************** +函数名称:DBModule_MySQL_CodeQuery +函数功能:硬件吗查询用户信息 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要查询的指定信息 + 参数.二:pSt_UserInfo + In/Out:Out + 类型:数据结构指针 + 可空:Y + 意思:如果为空NULL,那么将只判断此用户是否存在 +返回值 + 类型:逻辑型 + 意思:是否查询成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_CodeQuery(LPCXSTR lpszHardCode, AUTHREG_USERTABLE* pSt_UserInfo /* = NULL */) +{ + SQLPacket_IsErrorOccur = false; + //查询 + XNETHANDLE xhTable = 0; + __int64u nColumn = 0; + __int64u nRow = 0; + + XCHAR tszSQLStatement[1024]; //SQL语句 + memset(tszSQLStatement, '\0', 1024); + + _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_User` WHERE HardCode = '%s'"), lpszHardCode); + if (!DataBase_MySQL_ExecuteQuery(xhData, &xhTable, tszSQLStatement, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_GETTABLE; + return false; + } + if (nRow <= 0) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_GETTABLE; + return false; + } + XCHAR** pptszResult = DataBase_MySQL_GetResult(xhData, xhTable); + if (NULL != pSt_UserInfo) + { + memset(pSt_UserInfo, '\0', sizeof(AUTHREG_USERTABLE)); + + //ID + int nFliedValue = 0; + + //用户名 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + _tcsxcpy(pSt_UserInfo->st_UserInfo.tszUserName, pptszResult[nFliedValue]); + } + + //密码 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + _tcsxcpy(pSt_UserInfo->st_UserInfo.tszUserPass, pptszResult[nFliedValue]); + } + + //过期时间 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + _tcsxcpy(pSt_UserInfo->tszLeftTime, pptszResult[nFliedValue]); + } + + //电子邮件 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + _tcsxcpy(pSt_UserInfo->st_UserInfo.tszEMailAddr, pptszResult[nFliedValue]); + } + + //硬件码 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + _tcsxcpy(pSt_UserInfo->tszHardCode, pptszResult[nFliedValue]); + } + + //充值卡类型 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + pSt_UserInfo->enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(pptszResult[nFliedValue]); + } + + //QQ号 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + pSt_UserInfo->st_UserInfo.nPhoneNumber = _ttxoll(pptszResult[nFliedValue]); + } + + //身份证ID + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + pSt_UserInfo->st_UserInfo.nIDNumber = _ttxoll(pptszResult[nFliedValue]); + } + + //用户级别 -1表示封禁 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + pSt_UserInfo->st_UserInfo.nUserLevel = _ttxoi(pptszResult[nFliedValue]); + } + + //登录日期 + nFliedValue++; + if (NULL != pptszResult[nFliedValue] && _tcsxlen(pptszResult[nFliedValue]) > 0) + { + _tcsxcpy(pSt_UserInfo->st_UserInfo.tszLoginTime, pptszResult[nFliedValue]); + } + //注册日期 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + _tcsxcpy(pSt_UserInfo->st_UserInfo.tszCreateTime, pptszResult[nFliedValue]); + } + + } + DataBase_MySQL_FreeResult(xhData, xhTable); + return true; +} +/******************************************************************** 函数名称:DBModule_MySQL_UserPay 函数功能:用户充值函数 参数.一:lpszUserName diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h index f0957e2..4cb5243 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h @@ -26,6 +26,7 @@ public: bool DBModule_MySQL_UserDelete(XENGINE_PROTOCOL_USERINFO* pSt_UserInfo); //删除用户 bool DBModule_MySQL_UserRegister(AUTHREG_USERTABLE* pSt_UserInfo); //用户注册 bool DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo = NULL); //用户查询 + bool DBModule_MySQL_CodeQuery(LPCXSTR lpszHardCode, AUTHREG_USERTABLE* pSt_UserInfo = NULL); bool DBModule_MySQL_UserPay(LPCXSTR lpszUserName, LPCXSTR lpszSerialName); //充值卡充值 bool DBModule_MySQL_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_TimeProtocol); //用户离开更新表 bool DBModule_MySQL_UserSet(AUTHREG_USERTABLE* pSt_UserTable); //设置用户信息 diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp index e3419ee..298bd34 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp @@ -223,6 +223,94 @@ bool CDBModule_SQLite::DBModule_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_U return true; } /******************************************************************** +函数名称:DBModule_SQLite_CodeQuery +函数功能:硬件吗查询用户信息 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要查询的指定信息 + 参数.二:pSt_UserInfo + In/Out:Out + 类型:数据结构指针 + 可空:Y + 意思:如果为空NULL,那么将只判断此用户是否存在 +返回值 + 类型:逻辑型 + 意思:是否查询成功 +备注: +*********************************************************************/ +bool CDBModule_SQLite::DBModule_SQLite_CodeQuery(LPCXSTR lpszHardCode, AUTHREG_USERTABLE* pSt_UserInfo /* = NULL */) +{ + SQLPacket_IsErrorOccur = false; + + XCHAR tszSQLStatement[XPATH_MAX]; //SQL语句 + char** ppszResult = NULL; + int nRow = 0; + int nColumn = 0; + memset(tszSQLStatement, '\0', XPATH_MAX); + + _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_User` WHERE HardCode = '%s'"), lpszHardCode); + if (!DataBase_SQLite_GetTable(xhData, tszSQLStatement, &ppszResult, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_GETTABLE; + return false; + } + if ((0 == nRow) || (0 == nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTUSER; + return false; + } + //如果是NULL,表示不想知道结果 + if (NULL != pSt_UserInfo) + { + memset(pSt_UserInfo, '\0', sizeof(AUTHREG_USERTABLE)); + //ID + int nFliedValue = nColumn; + //用户名 + nFliedValue++; + _tcsxcpy(pSt_UserInfo->st_UserInfo.tszUserName, ppszResult[nFliedValue]); + //密码 + nFliedValue++; + _tcsxcpy(pSt_UserInfo->st_UserInfo.tszUserPass, ppszResult[nFliedValue]); + //过期时间 + nFliedValue++; + _tcsxcpy(pSt_UserInfo->tszLeftTime, ppszResult[nFliedValue]); + //电子邮件 + nFliedValue++; + _tcsxcpy(pSt_UserInfo->st_UserInfo.tszEMailAddr, ppszResult[nFliedValue]); + //硬件码 + nFliedValue++; + _tcsxcpy(pSt_UserInfo->tszHardCode, ppszResult[nFliedValue]); + //充值卡类型 + nFliedValue++; + pSt_UserInfo->enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); + //QQ号 + nFliedValue++; + pSt_UserInfo->st_UserInfo.nPhoneNumber = _ttxoll(ppszResult[nFliedValue]); + //身份证ID + nFliedValue++; + pSt_UserInfo->st_UserInfo.nIDNumber = _ttxoll(ppszResult[nFliedValue]); + //用户级别 -1表示封禁 + nFliedValue++; + pSt_UserInfo->st_UserInfo.nUserLevel = _ttxoi(ppszResult[nFliedValue]); + //登录日期 + nFliedValue++; + if (NULL != ppszResult[nFliedValue] && _tcsxlen(ppszResult[nFliedValue]) > 0) + { + _tcsxcpy(pSt_UserInfo->st_UserInfo.tszLoginTime, ppszResult[nFliedValue]); + } + //注册日期 + nFliedValue++; + _tcsxcpy(pSt_UserInfo->st_UserInfo.tszCreateTime, ppszResult[nFliedValue]); + } + + DataBase_SQLite_FreeTable(ppszResult); + return true; +} +/******************************************************************** 函数名称:DBModule_SQLite_UserPay 函数功能:用户充值函数 参数.一:lpszUserName diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h index 0258045..7f8a725 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h @@ -26,6 +26,7 @@ public: bool DBModule_SQLite_UserDelete(XENGINE_PROTOCOL_USERINFO* pSt_UserInfo); //删除用户 bool DBModule_SQLite_UserRegister(AUTHREG_USERTABLE*pSt_UserInfo); //用户注册 bool DBModule_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo = NULL); //用户查询 + bool DBModule_SQLite_CodeQuery(LPCXSTR lpszHardCode, AUTHREG_USERTABLE* pSt_UserInfo = NULL); bool DBModule_SQLite_UserPay(LPCXSTR lpszUserName,LPCXSTR lpszSerialName); //充值卡充值 bool DBModule_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_TimeProtocol); //用户离开更新表 bool DBModule_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable); diff --git a/XEngine_Source/AuthorizeModule_Database/Database_Define.h b/XEngine_Source/AuthorizeModule_Database/Database_Define.h index a25c073..db26038 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_Define.h +++ b/XEngine_Source/AuthorizeModule_Database/Database_Define.h @@ -93,6 +93,25 @@ extern "C" bool DBModule_SQLite_UserRegister(AUTHREG_USERTABLE * pSt_UserInfo); *********************************************************************/ extern "C" bool DBModule_SQLite_UserQuery(LPCXSTR lpszUserName,AUTHREG_USERTABLE *pSt_UserInfo); /******************************************************************** +函数名称:DBModule_SQLite_CodeQuery +函数功能:硬件吗查询用户信息 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要查询的指定信息 + 参数.二:pSt_UserInfo + In/Out:Out + 类型:数据结构指针 + 可空:Y + 意思:如果为空NULL,那么将只判断此用户是否存在 +返回值 + 类型:逻辑型 + 意思:是否查询成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_SQLite_CodeQuery(LPCXSTR lpszHardCode, AUTHREG_USERTABLE* pSt_UserInfo = NULL); +/******************************************************************** 函数名称:DBModule_SQLite_UserPay 函数功能:用户充值函数 参数.一:lpszUserName @@ -582,6 +601,25 @@ extern "C" bool DBModule_MySQL_UserRegister(AUTHREG_USERTABLE* pSt_UserInfo); *********************************************************************/ extern "C" bool DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo); /******************************************************************** +函数名称:DBModule_MySQL_CodeQuery +函数功能:硬件吗查询用户信息 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要查询的指定信息 + 参数.二:pSt_UserInfo + In/Out:Out + 类型:数据结构指针 + 可空:Y + 意思:如果为空NULL,那么将只判断此用户是否存在 +返回值 + 类型:逻辑型 + 意思:是否查询成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_CodeQuery(LPCXSTR lpszHardCode, AUTHREG_USERTABLE* pSt_UserInfo = NULL); +/******************************************************************** 函数名称:DBModule_MySQL_UserPay 函数功能:用户充值函数 参数.一:lpszUserName diff --git a/XEngine_Source/AuthorizeModule_Database/pch.cpp b/XEngine_Source/AuthorizeModule_Database/pch.cpp index 19cf22c..71a7050 100644 --- a/XEngine_Source/AuthorizeModule_Database/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Database/pch.cpp @@ -51,6 +51,10 @@ extern "C" bool DBModule_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABL { return m_DBSQLite.DBModule_SQLite_UserQuery(lpszUserName, pSt_UserInfo); } +extern "C" bool DBModule_SQLite_CodeQuery(LPCXSTR lpszHardCode, AUTHREG_USERTABLE* pSt_UserInfo) +{ + return m_DBSQLite.DBModule_SQLite_CodeQuery(lpszHardCode, pSt_UserInfo); +} extern "C" bool DBModule_SQLite_UserPay(LPCXSTR lpszUserName, LPCXSTR lpszSerialName) { return m_DBSQLite.DBModule_SQLite_UserPay(lpszUserName, lpszSerialName); @@ -167,6 +171,10 @@ extern "C" bool DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE { return m_DBMySQL.DBModule_MySQL_UserQuery(lpszUserName, pSt_UserInfo); } +extern "C" bool DBModule_MySQL_CodeQuery(LPCXSTR lpszHardCode, AUTHREG_USERTABLE* pSt_UserInfo) +{ + return m_DBMySQL.DBModule_MySQL_CodeQuery(lpszHardCode, pSt_UserInfo); +} extern "C" bool DBModule_MySQL_UserPay(LPCXSTR lpszUserName, LPCXSTR lpszSerialName) { return m_DBMySQL.DBModule_MySQL_UserPay(lpszUserName, lpszSerialName); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index 1fc5987..1e78ea0 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -155,29 +155,54 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n else { bool bSuccess = false; - if (0 == st_AuthConfig.st_XSql.nDBType) + //用户密码登录还是硬件吗登录 + if (_tcsxlen(st_AuthProtocol.tszUserPass) > 0) { - bSuccess = DBModule_SQLite_UserQuery(st_AuthProtocol.tszUserName, &st_UserTable); + //用户密码登录,查询用户名 + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_UserQuery(st_AuthProtocol.tszUserName, &st_UserTable); + } + else + { + bSuccess = DBModule_MySQL_UserQuery(st_AuthProtocol.tszUserName, &st_UserTable); + } + if (!bSuccess) + { + pSt_ProtocolHdr->wReserve = 251; + Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,登录失败,用户名不存在"), lpszClientAddr, st_AuthProtocol.tszUserName); + return false; + } + if ((_tcsxlen(st_AuthProtocol.tszUserPass) != _tcsxlen(st_UserTable.st_UserInfo.tszUserPass)) || (0 != _tcsxncmp(st_AuthProtocol.tszUserPass, st_UserTable.st_UserInfo.tszUserPass, _tcsxlen(st_AuthProtocol.tszUserPass)))) + { + pSt_ProtocolHdr->wReserve = 252; + Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,登录失败,密码错误"), lpszClientAddr, st_AuthProtocol.tszUserName); + return false; + } } else { - bSuccess = DBModule_MySQL_UserQuery(st_AuthProtocol.tszUserName, &st_UserTable); - } - if (!bSuccess) - { - pSt_ProtocolHdr->wReserve = 251; - Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,登录失败,用户名不存在"), lpszClientAddr, st_AuthProtocol.tszUserName); - return false; - } - if ((_tcsxlen(st_AuthProtocol.tszUserPass) != _tcsxlen(st_UserTable.st_UserInfo.tszUserPass)) || (0 != _tcsxncmp(st_AuthProtocol.tszUserPass, st_UserTable.st_UserInfo.tszUserPass, _tcsxlen(st_AuthProtocol.tszUserPass)))) - { - pSt_ProtocolHdr->wReserve = 252; - Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,登录失败,密码错误"), lpszClientAddr, st_AuthProtocol.tszUserName); - return false; + //查询硬件吗 + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_CodeQuery(st_AuthProtocol.tszUserName, &st_UserTable); + } + else + { + bSuccess = DBModule_MySQL_CodeQuery(st_AuthProtocol.tszUserName, &st_UserTable); + } + if ((_tcsxlen(st_AuthProtocol.tszUserName) != _tcsxlen(st_UserTable.tszHardCode)) || (0 != _tcsxncmp(st_AuthProtocol.tszUserName, st_UserTable.tszHardCode, _tcsxlen(st_AuthProtocol.tszUserName)))) + { + pSt_ProtocolHdr->wReserve = 252; + Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,硬件码:%s,登录失败,硬件码错误"), lpszClientAddr, st_AuthProtocol.tszUserName); + return false; + } } } //是否已经登录 -- Gitee From ad324f67d44ab6b737c725b75f1366ca89740889 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 25 Feb 2025 11:07:34 +0800 Subject: [PATCH 06/33] update:client module example --- .../Authorize_ClientModule.cpp | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/XEngine_Apps/Authorize_ClientModule/Authorize_ClientModule.cpp b/XEngine_Apps/Authorize_ClientModule/Authorize_ClientModule.cpp index 8b8f454..dd60d02 100644 --- a/XEngine_Apps/Authorize_ClientModule/Authorize_ClientModule.cpp +++ b/XEngine_Apps/Authorize_ClientModule/Authorize_ClientModule.cpp @@ -21,7 +21,24 @@ using namespace std; //Windows::vs2022 x86 debug 编译即可 //Linux MACOS::g++ -std=c++17 -Wall -g Authorize_ClientModule.cpp -o Authorize_ClientModule.exe -L ../../XEngine_Release/ -lAuthorizeModule_Client -ljsoncpp -Wl,-rpath=../../XEngine_Release -int main() +int TestClient_HardLogin() +{ + if (!AuthClient_Connector_Connect(_X("127.0.0.1"), 5300)) + { + printf("AuthClient_Connector_Connect:%lX\n", AuthClient_GetLastError()); + return -1; + } + if (!AuthClient_Connector_Login("2FDWAD02JD2091", "")) + { + printf("AuthClient_Connector_Login:%lX\n", AuthClient_GetLastError()); + return -1; + } + + AuthClient_Connector_Close(); + return 0; +} + +int TestClient_TryLogin() { //插入查询 LPCXSTR lpszTryInsert = _X("http://127.0.0.1:5302/auth/user/try"); @@ -35,4 +52,9 @@ int main() printf("failed\n"); } return 0; +} +int main() +{ + TestClient_TryLogin(); + return 0; } \ No newline at end of file -- Gitee From 3df7b9ec591e7b8da1b0ea6f49de4cc0f8164ecf Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 25 Feb 2025 11:07:59 +0800 Subject: [PATCH 07/33] added:hardware login switch supported --- .../XEngine_Config/XEngine_SwitchConfig.json | 3 ++- .../AuthClient_HTTPVer/AuthClient_HTTPVer.cpp | 1 - .../AuthorizeModule_Configure/Config_Define.h | 1 + .../ModuleConfigure_Json.cpp | 1 + .../Protocol_Packet/Protocol_Packet.cpp | 1 + .../Protocol_Parse/Protocol_Parse.cpp | 1 + .../Authorize_Dialog/Dialog_Switch.cpp | 20 ++++++++++++++++++ .../Authorize_Dialog/Dialog_Switch.h | 2 ++ .../XEngineAuthorizeApp.rc | Bin 48722 -> 49166 bytes .../XEngine_AuthorizeApp/resource.h | 2 ++ .../AuthorizeHTTP_Switch.cpp | 4 ++-- .../Authorize_TCPTask.cpp | 8 +++++++ .../XEngine_AuthorizeService.cpp | 2 +- 13 files changed, 41 insertions(+), 5 deletions(-) diff --git a/XEngine_Release/XEngine_Config/XEngine_SwitchConfig.json b/XEngine_Release/XEngine_Config/XEngine_SwitchConfig.json index e741092..fd16601 100644 --- a/XEngine_Release/XEngine_Config/XEngine_SwitchConfig.json +++ b/XEngine_Release/XEngine_Config/XEngine_SwitchConfig.json @@ -11,5 +11,6 @@ "bSwitchMulti":true, "bSwitchTry":true, "bSwitchBanned":true, - "bSwitchTokenLogin":true + "bSwitchTokenLogin":true, + "bSwitchHCLogin":true } \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_HTTPVer/AuthClient_HTTPVer.cpp b/XEngine_Source/AuthorizeModule_Client/AuthClient_HTTPVer/AuthClient_HTTPVer.cpp index f9804fa..a670d58 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_HTTPVer/AuthClient_HTTPVer.cpp +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_HTTPVer/AuthClient_HTTPVer.cpp @@ -49,7 +49,6 @@ bool CAuthClient_HTTPVer::AuthClient_HTTPVer_TryRequest(LPCXSTR lpszURLAddr, LPC return false; } #if (1 == _XAUTH_BUILD_SWITCH_CLIENT_HTTP) - int nHTTPCode = 0; XCHAR tszJsonStr[MAX_PATH] = {}; Json::Value st_JsonRoot; diff --git a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h index 1741bde..d639bfc 100644 --- a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h +++ b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h @@ -132,6 +132,7 @@ typedef struct bool bSwitchTry; //临时验证 bool bSwitchBanned; //黑名单 bool bSwitchTokenLogin; //TOKEN开关 + bool bSwitchHCLogin; //硬件码登录 }XENGINE_FUNCTIONSWITCH; ////////////////////////////////////////////////////////////////////////// // 导出的函数 diff --git a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp index f736c2e..51dfba0 100644 --- a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp +++ b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp @@ -349,5 +349,6 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_Switch(LPCXSTR lpszConfigFile, pSt_ServerConfig->bSwitchTry = st_JsonRoot["bSwitchTry"].asBool(); pSt_ServerConfig->bSwitchBanned = st_JsonRoot["bSwitchBanned"].asBool(); pSt_ServerConfig->bSwitchTokenLogin = st_JsonRoot["bSwitchTokenLogin"].asBool(); + pSt_ServerConfig->bSwitchHCLogin = st_JsonRoot["bSwitchHCLogin"].asBool(); return true; } \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp index dac1cc3..891f678 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp @@ -663,6 +663,7 @@ bool CProtocol_Packet::Protocol_Packet_HttpSwitch(XCHAR* ptszMsgBuffer, int* pIn st_JsonRoot["bSwitchTry"] = pSt_FunSwitch->bSwitchTry; st_JsonRoot["bSwitchBanned"] = pSt_FunSwitch->bSwitchBanned; st_JsonRoot["bSwitchTokenLogin"] = pSt_FunSwitch->bSwitchTokenLogin; + st_JsonRoot["bSwitchHCLogin"] = pSt_FunSwitch->bSwitchHCLogin; *pInt_MsgLen = st_JsonRoot.toStyledString().length(); memcpy(ptszMsgBuffer, st_JsonRoot.toStyledString().c_str(), *pInt_MsgLen); diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp index 950540d..50cad0f 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp @@ -846,6 +846,7 @@ bool CProtocol_Parse::Protocol_Parse_HttpParseSwitch(LPCXSTR lpszMsgBuffer, int pSt_FunSwitch->bSwitchTry = st_JsonObject["bSwitchTry"].asBool(); pSt_FunSwitch->bSwitchBanned = st_JsonObject["bSwitchBanned"].asBool(); pSt_FunSwitch->bSwitchTokenLogin = st_JsonObject["bSwitchTokenLogin"].asBool(); + pSt_FunSwitch->bSwitchHCLogin = st_JsonObject["bSwitchHCLogin"].asBool(); return true; } /******************************************************************** diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp index eb831a1..106c3ee 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp @@ -50,6 +50,8 @@ void CDialog_Switch::DoDataExchange(CDataExchange* pDX) DDX_Control(pDX, IDC_RADIO22, m_RadioBlackClose); DDX_Control(pDX, IDC_RADIO23, m_RadioTokenOPen); DDX_Control(pDX, IDC_RADIO24, m_RadioTokenClose); + DDX_Control(pDX, IDC_RADIO25, m_RadioHCLoginOPen); + DDX_Control(pDX, IDC_RADIO26, m_RadioHCLoginClose); } @@ -257,6 +259,16 @@ void CDialog_Switch::OnBnClickedButton1() m_RadioTokenOPen.SetCheck(BST_UNCHECKED); m_RadioTokenClose.SetCheck(BST_CHECKED); } + if (st_JsonRoot["bSwitchHCLogin"].asBool()) + { + m_RadioHCLoginOPen.SetCheck(BST_CHECKED); + m_RadioHCLoginClose.SetCheck(BST_UNCHECKED); + } + else + { + m_RadioHCLoginOPen.SetCheck(BST_UNCHECKED); + m_RadioHCLoginClose.SetCheck(BST_CHECKED); + } m_BtnSetConfigure.EnableWindow(true); } else @@ -391,6 +403,14 @@ void CDialog_Switch::OnBnClickedButton2() { st_JsonObject["bSwitchTokenLogin"] = false; } + if (BST_CHECKED == m_RadioHCLoginOPen.GetCheck()) + { + st_JsonObject["bSwitchHCLogin"] = true; + } + else + { + st_JsonObject["bSwitchHCLogin"] = false; + } st_JsonRoot["st_SwitchInfo"] = st_JsonObject; st_JsonRoot["xhToken"] = _ttoll(m_StrToken.GetBuffer()); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.h index e8fd2d7..4663823 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.h @@ -51,4 +51,6 @@ public: CButton m_RadioBlackClose; CButton m_RadioTokenOPen; CButton m_RadioTokenClose; + CButton m_RadioHCLoginOPen; + CButton m_RadioHCLoginClose; }; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.rc b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.rc index 57de1d2d3eff2b5bfa037627a57723d4f5247cdd..15f027a72c6e48de12d7b548c38a4e97cb2de48e 100644 GIT binary patch delta 80 zcmccghpDfDd4omVxQE?cp delta 22 ecmeBcV7~N+X@f=FWR7hrlcm=4Y*tBl6%PP!VF`r* diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h index b2d0d3d..b3be7d6 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h @@ -94,6 +94,8 @@ #define IDC_RADIO22 1036 #define IDC_RADIO23 1037 #define IDC_RADIO24 1038 +#define IDC_RADIO25 1039 +#define IDC_RADIO26 1040 // Next default values for new objects // diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp index 5f48e3a..d9eceda 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp @@ -13,14 +13,14 @@ bool XEngine_AuthorizeHTTP_Switch(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L { Protocol_Packet_HttpSwitch(tszSDBuffer, &nSDLen, &st_FunSwitch); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求获取功能开关成功,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,多端登录:%d,临时试用:%d,普通Token:%d"), lpszClientAddr, st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry, st_FunSwitch.bSwitchTokenLogin); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求获取功能开关成功,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,多端登录:%d,临时试用:%d,普通Token:%d,硬件码登录:%d"), lpszClientAddr, st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry, st_FunSwitch.bSwitchTokenLogin, st_FunSwitch.bSwitchHCLogin); } else if (0 == _tcsxnicmp(lpszAPISet, lpszAPIName, _tcsxlen(lpszAPISet))) { Protocol_Parse_HttpParseSwitch(lpszMsgBuffer, nMsgLen, &st_FunSwitch); Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求设置功能开关成功,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,多端登录:%d,临时试用:%d,普通Token:%d"), lpszClientAddr, st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry, st_FunSwitch.bSwitchTokenLogin); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求设置功能开关成功,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,多端登录:%d,临时试用:%d,普通Token:%d,硬件码登录:%d"), lpszClientAddr, st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry, st_FunSwitch.bSwitchTokenLogin, st_FunSwitch.bSwitchHCLogin); } return true; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index 1e78ea0..cbb7838 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -186,6 +186,14 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n } else { + if (!st_FunSwitch.bSwitchHCLogin) + { + pSt_ProtocolHdr->wReserve = 251; + Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,硬件码:%s,登录失败,服务端关闭此功能"), lpszClientAddr, st_AuthProtocol.tszUserName); + return false; + } //查询硬件吗 if (0 == st_AuthConfig.st_XSql.nDBType) { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index b2dff85..31193ef 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -351,7 +351,7 @@ int main(int argc, char** argv) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,信息报告给API服务器没有启用")); } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,功能开关选项,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,动态验证:%d,多端登录:%d,临时试用:%d,黑名单功能:%d,普通TOKEN:%d"), st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_FunSwitch.bSwitchDCode, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry, st_FunSwitch.bSwitchBanned, st_FunSwitch.bSwitchTokenLogin); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,功能开关选项,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,动态验证:%d,多端登录:%d,临时试用:%d,黑名单功能:%d,普通TOKEN:%d,硬件码登录:%d"), st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_FunSwitch.bSwitchDCode, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry, st_FunSwitch.bSwitchBanned, st_FunSwitch.bSwitchTokenLogin, st_FunSwitch.bSwitchHCLogin); pSt_File = _xtfopen(st_AuthConfig.st_XVerification.st_XCDKey.tszKeyFile, _X("rb")); if (NULL == pSt_File) -- Gitee From b4bcb42596a92302e1c8972b171ad7ec1dea8451 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 25 Feb 2025 11:37:16 +0800 Subject: [PATCH 08/33] added:type print set configure for log --- XEngine_Release/XEngine_Config/XEngine_Config.json | 3 ++- XEngine_Source/AuthorizeModule_Configure/Config_Define.h | 1 + .../ModuleConfigure_Json/ModuleConfigure_Json.cpp | 3 ++- .../XEngine_AuthorizeService/Authorize_Net.cpp | 1 - .../XEngine_AuthorizeService/XEngine_AuthorizeService.cpp | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index b681a84..9c87cd9 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -64,7 +64,8 @@ "tszLogFile":"./XEngine_XLog/XEngine_Authorize.log", "MaxSize":1024000, "MaxCount":10, - "LogLeave":32 + "LogLeave":32, + "nLogType":17 }, "XReport":{ "bEnable":true, diff --git a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h index d639bfc..0821b5a 100644 --- a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h +++ b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h @@ -104,6 +104,7 @@ typedef struct int nMaxSize; //最大大小 int nMaxCount; //备份个数 int nLogLeave; //日志级别 + int nLogType; //日志类型 }st_XLog; struct { diff --git a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp index 51dfba0..485c9dc 100644 --- a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp +++ b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp @@ -173,7 +173,7 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE _tcsxcpy(pSt_ServerConfig->st_XSql.st_MYSQL.tszSQLUser, st_JsonXSql["SQLUser"].asCString()); _tcsxcpy(pSt_ServerConfig->st_XSql.st_MYSQL.tszSQLPass, st_JsonXSql["SQLPass"].asCString()); //日志配置 - if (st_JsonRoot["XLog"].empty() || (4 != st_JsonRoot["XLog"].size())) + if (st_JsonRoot["XLog"].empty() || (5 != st_JsonRoot["XLog"].size())) { Config_IsErrorOccur = true; Config_dwErrorCode = ERROR_AUTHORIZE_MODULE_CONFIGURE_XLOG; @@ -183,6 +183,7 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE pSt_ServerConfig->st_XLog.nMaxSize = st_JsonXLog["MaxSize"].asInt(); pSt_ServerConfig->st_XLog.nMaxCount = st_JsonXLog["MaxCount"].asInt(); pSt_ServerConfig->st_XLog.nLogLeave = st_JsonXLog["LogLeave"].asInt(); + pSt_ServerConfig->st_XLog.nLogType = st_JsonXLog["nLogType"].asInt(); _tcsxcpy(pSt_ServerConfig->st_XLog.tszLogFile, st_JsonXLog["tszLogFile"].asCString()); if (st_JsonRoot["XReport"].empty() || (3 != st_JsonRoot["XReport"].size())) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index feb11b3..7961463 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -2,7 +2,6 @@ ////////////////////////////////////////////////////////////////////////// bool CALLBACK XEngine_Client_TCPAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { - HelpComponents_Datas_CreateEx(xhTCPPacket, lpszClientAddr, 0); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("TCP客户端:%s,进入服务器"), lpszClientAddr); return true; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index 31193ef..7b7a444 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -155,7 +155,7 @@ int main(int argc, char** argv) st_XLogConfig.XLog_MaxSize = st_AuthConfig.st_XLog.nMaxSize; _tcsxcpy(st_XLogConfig.tszFileName, st_AuthConfig.st_XLog.tszLogFile); - xhLog = HelpComponents_XLog_Init(HELPCOMPONENTS_XLOG_OUTTYPE_FILE | HELPCOMPONENTS_XLOG_OUTTYPE_STD, &st_XLogConfig); + xhLog = HelpComponents_XLog_Init(st_AuthConfig.st_XLog.nLogType, &st_XLogConfig); if (NULL == xhLog) { printf("启动服务器失败,启动日志失败,错误:%lX", XLog_GetLastError()); -- Gitee From 203acca0a949f105fdd85ae974b94257fcab18c5 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 25 Feb 2025 14:01:51 +0800 Subject: [PATCH 09/33] modify:user and code query merge to user functions --- .../AuthorizeModule_Configure/Config_Define.h | 7 + .../AuthorizeModule_Database.def | 2 - .../DBModule_MySQL/DBModule_MySQL.cpp | 146 ++---------------- .../DBModule_MySQL/DBModule_MySQL.h | 3 +- .../DBModule_SQLite/DBModule_SQLite.cpp | 106 ++----------- .../DBModule_SQLite/DBModule_SQLite.h | 3 +- .../Database_Define.h | 44 +----- .../AuthorizeModule_Database/pch.cpp | 17 +- XEngine_Source/XAuth_Protocol.h | 5 +- .../Authorize_TCPTask.cpp | 4 +- .../XEngine_AuthorizeService.cpp | 1 - 11 files changed, 56 insertions(+), 282 deletions(-) diff --git a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h index 0821b5a..46bc893 100644 --- a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h +++ b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h @@ -31,6 +31,13 @@ typedef struct int nWSThread; //WEBSOCKET业务线程个数 int nHTTPThread; //HTTP业务线程个数 }st_XMax; + struct + { + int nHeartCheck; //检测次数 + int nTCPTime; //TCP检测时间 + int nWSTime; //WEBSOCKET检测时间 + int nHTTPTime; //HTTP检测时间 + }st_XTime; struct { struct diff --git a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def index 1f3ef92..ca0bf35 100644 --- a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def +++ b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def @@ -9,7 +9,6 @@ EXPORTS DBModule_SQLite_UserDelete DBModule_SQLite_UserRegister DBModule_SQLite_UserQuery - DBModule_SQLite_CodeQuery DBModule_SQLite_UserPay DBModule_SQLite_UserLeave DBModule_SQLite_UserSet @@ -44,7 +43,6 @@ EXPORTS DBModule_MySQL_UserDelete DBModule_MySQL_UserRegister DBModule_MySQL_UserQuery - DBModule_MySQL_CodeQuery DBModule_MySQL_UserPay DBModule_MySQL_UserLeave DBModule_MySQL_UserSet diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp index d78d48e..637dab4 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp @@ -145,12 +145,17 @@ bool CDBModule_MySQL::DBModule_MySQL_UserRegister(AUTHREG_USERTABLE* pSt_UserInf 类型:数据结构指针 可空:Y 意思:如果为空NULL,那么将只判断此用户是否存在 + 参数.三:bUser + In/Out:Out + 类型:逻辑型 + 可空:Y + 意思:使用用户名查询还是硬件码 返回值 类型:逻辑型 意思:是否查询成功 备注: *********************************************************************/ -bool CDBModule_MySQL::DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo) +bool CDBModule_MySQL::DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo, bool bUser) { SQLPacket_IsErrorOccur = false; //查询 @@ -161,7 +166,14 @@ bool CDBModule_MySQL::DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USE XCHAR tszSQLStatement[1024]; //SQL语句 memset(tszSQLStatement, '\0', 1024); - _xstprintf(tszSQLStatement, _X("select * from `Authorize_User` where UserName = '%s'"), lpszUserName); + if (bUser) + { + _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_User` WHERE UserName = '%s'"), lpszUserName); + } + else + { + _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_User` WHERE HardCode = '%s'"), lpszUserName); + } if (!DataBase_MySQL_ExecuteQuery(xhData, &xhTable, tszSQLStatement, &nRow, &nColumn)) { SQLPacket_IsErrorOccur = true; @@ -265,136 +277,6 @@ bool CDBModule_MySQL::DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USE return true; } /******************************************************************** -函数名称:DBModule_MySQL_CodeQuery -函数功能:硬件吗查询用户信息 - 参数.一:lpszUserName - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:要查询的指定信息 - 参数.二:pSt_UserInfo - In/Out:Out - 类型:数据结构指针 - 可空:Y - 意思:如果为空NULL,那么将只判断此用户是否存在 -返回值 - 类型:逻辑型 - 意思:是否查询成功 -备注: -*********************************************************************/ -bool CDBModule_MySQL::DBModule_MySQL_CodeQuery(LPCXSTR lpszHardCode, AUTHREG_USERTABLE* pSt_UserInfo /* = NULL */) -{ - SQLPacket_IsErrorOccur = false; - //查询 - XNETHANDLE xhTable = 0; - __int64u nColumn = 0; - __int64u nRow = 0; - - XCHAR tszSQLStatement[1024]; //SQL语句 - memset(tszSQLStatement, '\0', 1024); - - _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_User` WHERE HardCode = '%s'"), lpszHardCode); - if (!DataBase_MySQL_ExecuteQuery(xhData, &xhTable, tszSQLStatement, &nRow, &nColumn)) - { - SQLPacket_IsErrorOccur = true; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_GETTABLE; - return false; - } - if (nRow <= 0) - { - SQLPacket_IsErrorOccur = true; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_GETTABLE; - return false; - } - XCHAR** pptszResult = DataBase_MySQL_GetResult(xhData, xhTable); - if (NULL != pSt_UserInfo) - { - memset(pSt_UserInfo, '\0', sizeof(AUTHREG_USERTABLE)); - - //ID - int nFliedValue = 0; - - //用户名 - nFliedValue++; - if (NULL != pptszResult[nFliedValue]) - { - _tcsxcpy(pSt_UserInfo->st_UserInfo.tszUserName, pptszResult[nFliedValue]); - } - - //密码 - nFliedValue++; - if (NULL != pptszResult[nFliedValue]) - { - _tcsxcpy(pSt_UserInfo->st_UserInfo.tszUserPass, pptszResult[nFliedValue]); - } - - //过期时间 - nFliedValue++; - if (NULL != pptszResult[nFliedValue]) - { - _tcsxcpy(pSt_UserInfo->tszLeftTime, pptszResult[nFliedValue]); - } - - //电子邮件 - nFliedValue++; - if (NULL != pptszResult[nFliedValue]) - { - _tcsxcpy(pSt_UserInfo->st_UserInfo.tszEMailAddr, pptszResult[nFliedValue]); - } - - //硬件码 - nFliedValue++; - if (NULL != pptszResult[nFliedValue]) - { - _tcsxcpy(pSt_UserInfo->tszHardCode, pptszResult[nFliedValue]); - } - - //充值卡类型 - nFliedValue++; - if (NULL != pptszResult[nFliedValue]) - { - pSt_UserInfo->enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(pptszResult[nFliedValue]); - } - - //QQ号 - nFliedValue++; - if (NULL != pptszResult[nFliedValue]) - { - pSt_UserInfo->st_UserInfo.nPhoneNumber = _ttxoll(pptszResult[nFliedValue]); - } - - //身份证ID - nFliedValue++; - if (NULL != pptszResult[nFliedValue]) - { - pSt_UserInfo->st_UserInfo.nIDNumber = _ttxoll(pptszResult[nFliedValue]); - } - - //用户级别 -1表示封禁 - nFliedValue++; - if (NULL != pptszResult[nFliedValue]) - { - pSt_UserInfo->st_UserInfo.nUserLevel = _ttxoi(pptszResult[nFliedValue]); - } - - //登录日期 - nFliedValue++; - if (NULL != pptszResult[nFliedValue] && _tcsxlen(pptszResult[nFliedValue]) > 0) - { - _tcsxcpy(pSt_UserInfo->st_UserInfo.tszLoginTime, pptszResult[nFliedValue]); - } - //注册日期 - nFliedValue++; - if (NULL != pptszResult[nFliedValue]) - { - _tcsxcpy(pSt_UserInfo->st_UserInfo.tszCreateTime, pptszResult[nFliedValue]); - } - - } - DataBase_MySQL_FreeResult(xhData, xhTable); - return true; -} -/******************************************************************** 函数名称:DBModule_MySQL_UserPay 函数功能:用户充值函数 参数.一:lpszUserName diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h index 4cb5243..0c84daa 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h @@ -25,8 +25,7 @@ public: public: bool DBModule_MySQL_UserDelete(XENGINE_PROTOCOL_USERINFO* pSt_UserInfo); //删除用户 bool DBModule_MySQL_UserRegister(AUTHREG_USERTABLE* pSt_UserInfo); //用户注册 - bool DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo = NULL); //用户查询 - bool DBModule_MySQL_CodeQuery(LPCXSTR lpszHardCode, AUTHREG_USERTABLE* pSt_UserInfo = NULL); + bool DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo = NULL, bool bUser = true); bool DBModule_MySQL_UserPay(LPCXSTR lpszUserName, LPCXSTR lpszSerialName); //充值卡充值 bool DBModule_MySQL_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_TimeProtocol); //用户离开更新表 bool DBModule_MySQL_UserSet(AUTHREG_USERTABLE* pSt_UserTable); //设置用户信息 diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp index 298bd34..f816523 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp @@ -148,21 +148,35 @@ bool CDBModule_SQLite::DBModule_SQLite_UserRegister(AUTHREG_USERTABLE* pSt_UserI 类型:数据结构指针 可空:Y 意思:如果为空NULL,那么将只判断此用户是否存在 + 参数.三:bUser + In/Out:Out + 类型:逻辑型 + 可空:Y + 意思:使用用户名查询还是硬件码 返回值 类型:逻辑型 意思:是否查询成功 备注: *********************************************************************/ -bool CDBModule_SQLite::DBModule_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo /* = NULL */) +bool CDBModule_SQLite::DBModule_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo /* = NULL */, bool bUser /* = true */) { SQLPacket_IsErrorOccur = false; + XCHAR tszSQLStatement[1024]; //SQL语句 char** ppszResult = NULL; int nRow = 0; int nColumn = 0; memset(tszSQLStatement, '\0', 1024); - _xstprintf(tszSQLStatement, _X("select * from Authorize_User where UserName = '%s'"), lpszUserName); + if (bUser) + { + _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_User` WHERE UserName = '%s'"), lpszUserName); + } + else + { + _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_User` WHERE HardCode = '%s'"), lpszUserName); + } + if (!DataBase_SQLite_GetTable(xhData, tszSQLStatement, &ppszResult, &nRow, &nColumn)) { SQLPacket_IsErrorOccur = true; @@ -223,94 +237,6 @@ bool CDBModule_SQLite::DBModule_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_U return true; } /******************************************************************** -函数名称:DBModule_SQLite_CodeQuery -函数功能:硬件吗查询用户信息 - 参数.一:lpszUserName - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:要查询的指定信息 - 参数.二:pSt_UserInfo - In/Out:Out - 类型:数据结构指针 - 可空:Y - 意思:如果为空NULL,那么将只判断此用户是否存在 -返回值 - 类型:逻辑型 - 意思:是否查询成功 -备注: -*********************************************************************/ -bool CDBModule_SQLite::DBModule_SQLite_CodeQuery(LPCXSTR lpszHardCode, AUTHREG_USERTABLE* pSt_UserInfo /* = NULL */) -{ - SQLPacket_IsErrorOccur = false; - - XCHAR tszSQLStatement[XPATH_MAX]; //SQL语句 - char** ppszResult = NULL; - int nRow = 0; - int nColumn = 0; - memset(tszSQLStatement, '\0', XPATH_MAX); - - _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_User` WHERE HardCode = '%s'"), lpszHardCode); - if (!DataBase_SQLite_GetTable(xhData, tszSQLStatement, &ppszResult, &nRow, &nColumn)) - { - SQLPacket_IsErrorOccur = true; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_GETTABLE; - return false; - } - if ((0 == nRow) || (0 == nColumn)) - { - SQLPacket_IsErrorOccur = true; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTUSER; - return false; - } - //如果是NULL,表示不想知道结果 - if (NULL != pSt_UserInfo) - { - memset(pSt_UserInfo, '\0', sizeof(AUTHREG_USERTABLE)); - //ID - int nFliedValue = nColumn; - //用户名 - nFliedValue++; - _tcsxcpy(pSt_UserInfo->st_UserInfo.tszUserName, ppszResult[nFliedValue]); - //密码 - nFliedValue++; - _tcsxcpy(pSt_UserInfo->st_UserInfo.tszUserPass, ppszResult[nFliedValue]); - //过期时间 - nFliedValue++; - _tcsxcpy(pSt_UserInfo->tszLeftTime, ppszResult[nFliedValue]); - //电子邮件 - nFliedValue++; - _tcsxcpy(pSt_UserInfo->st_UserInfo.tszEMailAddr, ppszResult[nFliedValue]); - //硬件码 - nFliedValue++; - _tcsxcpy(pSt_UserInfo->tszHardCode, ppszResult[nFliedValue]); - //充值卡类型 - nFliedValue++; - pSt_UserInfo->enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); - //QQ号 - nFliedValue++; - pSt_UserInfo->st_UserInfo.nPhoneNumber = _ttxoll(ppszResult[nFliedValue]); - //身份证ID - nFliedValue++; - pSt_UserInfo->st_UserInfo.nIDNumber = _ttxoll(ppszResult[nFliedValue]); - //用户级别 -1表示封禁 - nFliedValue++; - pSt_UserInfo->st_UserInfo.nUserLevel = _ttxoi(ppszResult[nFliedValue]); - //登录日期 - nFliedValue++; - if (NULL != ppszResult[nFliedValue] && _tcsxlen(ppszResult[nFliedValue]) > 0) - { - _tcsxcpy(pSt_UserInfo->st_UserInfo.tszLoginTime, ppszResult[nFliedValue]); - } - //注册日期 - nFliedValue++; - _tcsxcpy(pSt_UserInfo->st_UserInfo.tszCreateTime, ppszResult[nFliedValue]); - } - - DataBase_SQLite_FreeTable(ppszResult); - return true; -} -/******************************************************************** 函数名称:DBModule_SQLite_UserPay 函数功能:用户充值函数 参数.一:lpszUserName diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h index 7f8a725..3a85c4c 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h @@ -25,8 +25,7 @@ public: public: bool DBModule_SQLite_UserDelete(XENGINE_PROTOCOL_USERINFO* pSt_UserInfo); //删除用户 bool DBModule_SQLite_UserRegister(AUTHREG_USERTABLE*pSt_UserInfo); //用户注册 - bool DBModule_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo = NULL); //用户查询 - bool DBModule_SQLite_CodeQuery(LPCXSTR lpszHardCode, AUTHREG_USERTABLE* pSt_UserInfo = NULL); + bool DBModule_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo = NULL, bool bUser = true); bool DBModule_SQLite_UserPay(LPCXSTR lpszUserName,LPCXSTR lpszSerialName); //充值卡充值 bool DBModule_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_TimeProtocol); //用户离开更新表 bool DBModule_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable); diff --git a/XEngine_Source/AuthorizeModule_Database/Database_Define.h b/XEngine_Source/AuthorizeModule_Database/Database_Define.h index db26038..965f3c8 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_Define.h +++ b/XEngine_Source/AuthorizeModule_Database/Database_Define.h @@ -86,31 +86,17 @@ extern "C" bool DBModule_SQLite_UserRegister(AUTHREG_USERTABLE * pSt_UserInfo); 类型:数据结构指针 可空:Y 意思:如果为空NULL,那么将只判断此用户是否存在 -返回值 - 类型:逻辑型 - 意思:是否查询成功 -备注: -*********************************************************************/ -extern "C" bool DBModule_SQLite_UserQuery(LPCXSTR lpszUserName,AUTHREG_USERTABLE *pSt_UserInfo); -/******************************************************************** -函数名称:DBModule_SQLite_CodeQuery -函数功能:硬件吗查询用户信息 - 参数.一:lpszUserName - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:要查询的指定信息 - 参数.二:pSt_UserInfo + 参数.三:bUser In/Out:Out - 类型:数据结构指针 + 类型:逻辑型 可空:Y - 意思:如果为空NULL,那么将只判断此用户是否存在 + 意思:使用用户名查询还是硬件码 返回值 类型:逻辑型 意思:是否查询成功 备注: *********************************************************************/ -extern "C" bool DBModule_SQLite_CodeQuery(LPCXSTR lpszHardCode, AUTHREG_USERTABLE* pSt_UserInfo = NULL); +extern "C" bool DBModule_SQLite_UserQuery(LPCXSTR lpszUserName,AUTHREG_USERTABLE *pSt_UserInfo, bool bUser = true); /******************************************************************** 函数名称:DBModule_SQLite_UserPay 函数功能:用户充值函数 @@ -594,31 +580,17 @@ extern "C" bool DBModule_MySQL_UserRegister(AUTHREG_USERTABLE* pSt_UserInfo); 类型:数据结构指针 可空:Y 意思:如果为空NULL,那么将只判断此用户是否存在 -返回值 - 类型:逻辑型 - 意思:是否查询成功 -备注: -*********************************************************************/ -extern "C" bool DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo); -/******************************************************************** -函数名称:DBModule_MySQL_CodeQuery -函数功能:硬件吗查询用户信息 - 参数.一:lpszUserName - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:要查询的指定信息 - 参数.二:pSt_UserInfo + 参数.三:bUser In/Out:Out - 类型:数据结构指针 + 类型:逻辑型 可空:Y - 意思:如果为空NULL,那么将只判断此用户是否存在 + 意思:使用用户名查询还是硬件码 返回值 类型:逻辑型 意思:是否查询成功 备注: *********************************************************************/ -extern "C" bool DBModule_MySQL_CodeQuery(LPCXSTR lpszHardCode, AUTHREG_USERTABLE* pSt_UserInfo = NULL); +extern "C" bool DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo, bool bUser = true); /******************************************************************** 函数名称:DBModule_MySQL_UserPay 函数功能:用户充值函数 diff --git a/XEngine_Source/AuthorizeModule_Database/pch.cpp b/XEngine_Source/AuthorizeModule_Database/pch.cpp index 71a7050..d9ce3f5 100644 --- a/XEngine_Source/AuthorizeModule_Database/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Database/pch.cpp @@ -47,13 +47,9 @@ extern "C" bool DBModule_SQLite_UserRegister(AUTHREG_USERTABLE * pSt_UserInfo) { return m_DBSQLite.DBModule_SQLite_UserRegister(pSt_UserInfo); } -extern "C" bool DBModule_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE * pSt_UserInfo) +extern "C" bool DBModule_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE * pSt_UserInfo, bool bUser) { - return m_DBSQLite.DBModule_SQLite_UserQuery(lpszUserName, pSt_UserInfo); -} -extern "C" bool DBModule_SQLite_CodeQuery(LPCXSTR lpszHardCode, AUTHREG_USERTABLE* pSt_UserInfo) -{ - return m_DBSQLite.DBModule_SQLite_CodeQuery(lpszHardCode, pSt_UserInfo); + return m_DBSQLite.DBModule_SQLite_UserQuery(lpszUserName, pSt_UserInfo, bUser); } extern "C" bool DBModule_SQLite_UserPay(LPCXSTR lpszUserName, LPCXSTR lpszSerialName) { @@ -147,7 +143,6 @@ extern "C" bool DBModule_SQLite_AnnouncementList(AUTHREG_ANNOUNCEMENT * **ppppSt { return m_DBSQLite.DBModule_SQLite_AnnouncementList(ppppSt_Announcement, pInt_ListCount); } - /************************************************************************/ /* MYSQL数据库服务导出函数 */ /************************************************************************/ @@ -167,13 +162,9 @@ extern "C" bool DBModule_MySQL_UserRegister(AUTHREG_USERTABLE* pSt_UserInfo) { return m_DBMySQL.DBModule_MySQL_UserRegister(pSt_UserInfo); } -extern "C" bool DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo) -{ - return m_DBMySQL.DBModule_MySQL_UserQuery(lpszUserName, pSt_UserInfo); -} -extern "C" bool DBModule_MySQL_CodeQuery(LPCXSTR lpszHardCode, AUTHREG_USERTABLE* pSt_UserInfo) +extern "C" bool DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo, bool bUser) { - return m_DBMySQL.DBModule_MySQL_CodeQuery(lpszHardCode, pSt_UserInfo); + return m_DBMySQL.DBModule_MySQL_UserQuery(lpszUserName, pSt_UserInfo, bUser); } extern "C" bool DBModule_MySQL_UserPay(LPCXSTR lpszUserName, LPCXSTR lpszSerialName) { diff --git a/XEngine_Source/XAuth_Protocol.h b/XEngine_Source/XAuth_Protocol.h index e1a9769..64d2370 100644 --- a/XEngine_Source/XAuth_Protocol.h +++ b/XEngine_Source/XAuth_Protocol.h @@ -159,10 +159,11 @@ typedef struct typedef struct tag_AuthReg_UserTable { XENGINE_PROTOCOL_USERINFO st_UserInfo; + XCHAR tszADDInfo[2048]; //附加信息 XCHAR tszLeftTime[64]; //剩余日期 XCHAR tszHardCode[32]; //硬件码 - ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enSerialType; //充值卡类型 - ENUM_PROTOCOLDEVICE_TYPE enDeviceType; //设备类型 + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enSerialType; //充值卡类型 + ENUM_PROTOCOLDEVICE_TYPE enDeviceType; //设备类型 }AUTHREG_USERTABLE, * LPAUTHREG_USERTABLE; //注册序列号表 typedef struct tag_AuthReg_SerialTable diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index cbb7838..e7f2176 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -197,11 +197,11 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n //查询硬件吗 if (0 == st_AuthConfig.st_XSql.nDBType) { - bSuccess = DBModule_SQLite_CodeQuery(st_AuthProtocol.tszUserName, &st_UserTable); + bSuccess = DBModule_SQLite_UserQuery(st_AuthProtocol.tszUserName, &st_UserTable, false); } else { - bSuccess = DBModule_MySQL_CodeQuery(st_AuthProtocol.tszUserName, &st_UserTable); + bSuccess = DBModule_MySQL_UserQuery(st_AuthProtocol.tszUserName, &st_UserTable, false); } if ((_tcsxlen(st_AuthProtocol.tszUserName) != _tcsxlen(st_UserTable.tszHardCode)) || (0 != _tcsxncmp(st_AuthProtocol.tszUserName, st_UserTable.tszHardCode, _tcsxlen(st_AuthProtocol.tszUserName)))) { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index 7b7a444..80daa69 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -242,7 +242,6 @@ int main(int argc, char** argv) NetCore_TCPXCore_RegisterCallBackEx(xhTCPSocket, XEngine_Client_TCPAccept, XEngine_Client_TCPRecv, XEngine_Client_TCPClose); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化TCP验证网络事件成功")); - BaseLib_Memory_Malloc((XPPPMEM)&ppSt_ListTCPThread, st_AuthConfig.st_XMax.nTCPThread, sizeof(THREADPOOL_PARAMENT)); for (int i = 0; i < st_AuthConfig.st_XMax.nTCPThread; i++) { -- Gitee From cd541da3e7ae071a2f962381132d28186e7d3b74 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 25 Feb 2025 17:26:47 +0800 Subject: [PATCH 10/33] added:multi login for day supported --- .../AuthorizeModule_Database.def | 4 + .../DBModule_MySQL/DBModule_MySQL.cpp | 84 +++++++++++++++++++ .../DBModule_MySQL/DBModule_MySQL.h | 2 + .../DBModule_SQLite/DBModule_SQLite.cpp | 82 ++++++++++++++++++ .../DBModule_SQLite/DBModule_SQLite.h | 2 + .../Database_Define.h | 76 +++++++++++++++++ .../AuthorizeModule_Database/pch.cpp | 16 ++++ .../Authorize_TCPTask.cpp | 30 ++++++- 8 files changed, 294 insertions(+), 2 deletions(-) diff --git a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def index ca0bf35..8ccb2a1 100644 --- a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def +++ b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def @@ -13,6 +13,8 @@ EXPORTS DBModule_SQLite_UserLeave DBModule_SQLite_UserSet DBModule_SQLite_UserList + DBModule_SQLite_UserLogin + DBModule_SQLite_QueryLogin DBModule_SQLite_SerialInsert DBModule_SQLite_SerialDelete @@ -47,6 +49,8 @@ EXPORTS DBModule_MySQL_UserLeave DBModule_MySQL_UserSet DBModule_MySQL_UserList + DBModule_MySQL_UserLogin + DBModule_MySQL_QueryLogin DBModule_MySQL_SerialInsert DBModule_MySQL_SerialDelete diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp index 637dab4..f7a7abe 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp @@ -564,6 +564,90 @@ bool CDBModule_MySQL::DBModule_MySQL_UserList(AUTHREG_USERTABLE*** pppSt_UserInf return true; } /******************************************************************** +函数名称:DBModule_MySQL_UserLogin +函数功能:用户登录信息记录 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户名 + 参数.二:lpszUserAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户IP地址 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_UserLogin(LPCXSTR lpszUserName, LPCXSTR lpszUserAddr) +{ + SQLPacket_IsErrorOccur = false; + + XCHAR tszSQLStatement[1024] = {}; + XCHAR tszTimeStr[128] = {}; + BaseLib_Time_TimeToStr(tszTimeStr, NULL, false); + + _xstprintf(tszSQLStatement, _X("INSERT INTO Authorize_Login(UserName, UserAddr, UserTime) values('%s','%s','%s')"), lpszUserName, lpszUserAddr, tszTimeStr); + + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_ISFAILED; + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_QueryLogin +函数功能:用户登录记录查询 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户名 + 参数.二:lpszUserAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户IP地址 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_QueryLogin(LPCXSTR lpszUserName, LPCXSTR lpszUserAddr) +{ + SQLPacket_IsErrorOccur = false; + + XCHAR tszSQLStatement[1024]; //SQL语句 + char** ppszResult = NULL; + __int64u nRow = 0; + __int64u nColumn = 0; + XNETHANDLE xhTable = 0; + memset(tszSQLStatement, '\0', 1024); + + XCHAR tszTimeStr[128] = {}; + BaseLib_Time_TimeToStr(tszTimeStr, NULL, false); + + _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_Login` WHERE UserName = '%s' AND UserTime = '%s' AND UserAddr = '%s'"), lpszUserName, tszTimeStr, lpszUserAddr); + if (!DataBase_MySQL_ExecuteQuery(xhData, &xhTable, tszSQLStatement, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_GETTABLE; + return false; + } + if (nRow <= 0) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTMATCH; + return false; + } + ppszResult = DataBase_MySQL_GetResult(xhData, xhTable); + return true; +} +/******************************************************************** 函数名称:DBModule_MySQL_SerialInsert 函数功能:插入一个序列号到数据库 参数.一:lpszSerialNumber diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h index 0c84daa..1f0986b 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h @@ -30,6 +30,8 @@ public: bool DBModule_MySQL_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_TimeProtocol); //用户离开更新表 bool DBModule_MySQL_UserSet(AUTHREG_USERTABLE* pSt_UserTable); //设置用户信息 bool DBModule_MySQL_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd); //获取用户列表 + bool DBModule_MySQL_UserLogin(LPCXSTR lpszUserName, LPCXSTR lpszUserAddr); + bool DBModule_MySQL_QueryLogin(LPCXSTR lpszUserName, LPCXSTR lpszUserAddr); public: bool DBModule_MySQL_SerialInsert(LPCXSTR lpszSerialNumber); //插入序列卡 bool DBModule_MySQL_SerialDelete(LPCXSTR lpszSerialNumber); //删除一个序列号 diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp index f816523..80d13c6 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp @@ -516,6 +516,88 @@ bool CDBModule_SQLite::DBModule_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserI return true; } /******************************************************************** +函数名称:DBModule_SQLite_UserLogin +函数功能:用户登录信息记录 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户名 + 参数.二:lpszUserAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户IP地址 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_SQLite::DBModule_SQLite_UserLogin(LPCXSTR lpszUserName, LPCXSTR lpszUserAddr) +{ + SQLPacket_IsErrorOccur = false; + + XCHAR tszSQLStatement[1024] = {}; + XCHAR tszTimeStr[128] = {}; + BaseLib_Time_TimeToStr(tszTimeStr, NULL, false); + + _xstprintf(tszSQLStatement, _X("INSERT INTO Authorize_Login(UserName, UserAddr, UserTime) values('%s','%s','%s')"), lpszUserName, lpszUserAddr, tszTimeStr); + if (!DataBase_SQLite_Exec(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_INSERT; + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_SQLite_QueryLogin +函数功能:用户登录记录查询 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户名 + 参数.二:lpszUserAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户IP地址 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_SQLite::DBModule_SQLite_QueryLogin(LPCXSTR lpszUserName, LPCXSTR lpszUserAddr) +{ + SQLPacket_IsErrorOccur = false; + + XCHAR tszSQLStatement[1024]; //SQL语句 + char** ppszResult = NULL; + int nRow = 0; + int nColumn = 0; + memset(tszSQLStatement, '\0', 1024); + + XCHAR tszTimeStr[128] = {}; + BaseLib_Time_TimeToStr(tszTimeStr, NULL, false); + + _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_Login` WHERE UserName = '%s' AND UserTime = '%s' AND UserAddr = '%s'"), lpszUserName, tszTimeStr, lpszUserAddr); + if (!DataBase_SQLite_GetTable(xhData, tszSQLStatement, &ppszResult, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_GETTABLE; + return false; + } + if ((0 == nRow) || (0 == nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTUSER; + return false; + } + DataBase_SQLite_FreeTable(ppszResult); + return true; +} +/******************************************************************** 函数名称:DBModule_SQLite_SerialInsert 函数功能:插入一个序列号到数据库 参数.一:lpszSerialNumber diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h index 3a85c4c..bfc3ee7 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h @@ -30,6 +30,8 @@ public: bool DBModule_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_TimeProtocol); //用户离开更新表 bool DBModule_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable); bool DBModule_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd); + bool DBModule_SQLite_UserLogin(LPCXSTR lpszUserName, LPCXSTR lpszUserAddr); + bool DBModule_SQLite_QueryLogin(LPCXSTR lpszUserName, LPCXSTR lpszUserAddr); public: bool DBModule_SQLite_SerialInsert(LPCXSTR lpszSerialNumber); //插入序列卡 bool DBModule_SQLite_SerialDelete(LPCXSTR lpszSerialNumber); //删除一个序列号 diff --git a/XEngine_Source/AuthorizeModule_Database/Database_Define.h b/XEngine_Source/AuthorizeModule_Database/Database_Define.h index 965f3c8..b4b8dd0 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_Define.h +++ b/XEngine_Source/AuthorizeModule_Database/Database_Define.h @@ -174,6 +174,44 @@ extern "C" bool DBModule_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable); *********************************************************************/ extern "C" bool DBModule_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd); /******************************************************************** +函数名称:DBModule_SQLite_UserLogin +函数功能:用户登录信息记录 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户名 + 参数.二:lpszUserAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户IP地址 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_SQLite_UserLogin(LPCXSTR lpszUserName, LPCXSTR lpszUserAddr); +/******************************************************************** +函数名称:DBModule_SQLite_QueryLogin +函数功能:用户登录记录查询 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户名 + 参数.二:lpszUserAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户IP地址 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_SQLite_QueryLogin(LPCXSTR lpszUserName, LPCXSTR lpszUserAddr); +/******************************************************************** 函数名称:DBModule_SQLite_SerialInsert 函数功能:插入一个序列号到数据库 参数.一:lpszSerialNumber @@ -1003,3 +1041,41 @@ extern "C" bool DBModule_MySQL_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* pSt_Anno 备注: *********************************************************************/ extern "C" bool DBModule_MySQL_AnnouncementList(AUTHREG_ANNOUNCEMENT*** ppppSt_Announcement, int* pInt_ListCount); +/******************************************************************** +函数名称:DBModule_MySQL_UserLogin +函数功能:用户登录信息记录 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户名 + 参数.二:lpszUserAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户IP地址 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_UserLogin(LPCXSTR lpszUserName, LPCXSTR lpszUserAddr); +/******************************************************************** +函数名称:DBModule_MySQL_QueryLogin +函数功能:用户登录记录查询 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户名 + 参数.二:lpszUserAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户IP地址 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_QueryLogin(LPCXSTR lpszUserName, LPCXSTR lpszUserAddr); \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Database/pch.cpp b/XEngine_Source/AuthorizeModule_Database/pch.cpp index d9ce3f5..7fe6db0 100644 --- a/XEngine_Source/AuthorizeModule_Database/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Database/pch.cpp @@ -67,6 +67,14 @@ extern "C" bool DBModule_SQLite_UserList(AUTHREG_USERTABLE * **pppSt_UserInfo, i { return m_DBSQLite.DBModule_SQLite_UserList(pppSt_UserInfo, pInt_ListCount, nPosStart, nPosEnd); } +extern "C" bool DBModule_SQLite_UserLogin(LPCXSTR lpszUserName, LPCXSTR lpszUserAddr) +{ + return m_DBSQLite.DBModule_SQLite_UserLogin(lpszUserName, lpszUserAddr); +} +extern "C" bool DBModule_SQLite_QueryLogin(LPCXSTR lpszUserName, LPCXSTR lpszUserAddr) +{ + return m_DBSQLite.DBModule_SQLite_QueryLogin(lpszUserName, lpszUserAddr); +} extern "C" bool DBModule_SQLite_SerialInsert(LPCXSTR lpszSerialNumber) { return m_DBSQLite.DBModule_SQLite_SerialInsert(lpszSerialNumber); @@ -257,4 +265,12 @@ extern "C" bool DBModule_MySQL_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* pSt_Anno extern "C" bool DBModule_MySQL_AnnouncementList(AUTHREG_ANNOUNCEMENT*** ppppSt_Announcement, int* pInt_ListCount) { return m_DBMySQL.DBModule_MySQL_AnnouncementList(ppppSt_Announcement, pInt_ListCount); +} +extern "C" bool DBModule_MySQL_UserLogin(LPCXSTR lpszUserName, LPCXSTR lpszUserAddr) +{ + return m_DBMySQL.DBModule_MySQL_UserLogin(lpszUserName, lpszUserAddr); +} +extern "C" bool DBModule_MySQL_QueryLogin(LPCXSTR lpszUserName, LPCXSTR lpszUserAddr) +{ + return m_DBMySQL.DBModule_MySQL_QueryLogin(lpszUserName, lpszUserAddr); } \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index e7f2176..725fbb1 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -338,9 +338,23 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n } else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY == st_UserTable.enSerialType) { - if (!AuthHelp_MultiLogin_TimeMatch(st_UserTable.st_UserInfo.tszLoginTime)) + bool bSuccess = false; + XCHAR tszIPAddr[128] = {}; + + _tcsxcpy(tszIPAddr, lpszClientAddr); + APIAddr_IPAddr_SegAddr(tszIPAddr); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_QueryLogin(st_UserTable.st_UserInfo.tszLoginTime, tszIPAddr); + } + else + { + bSuccess = DBModule_MySQL_QueryLogin(st_UserTable.st_UserInfo.tszLoginTime, tszIPAddr); + } + //是否存在 + if (!bSuccess) { - //如果不匹配 + //不存在.减去一天 __int64x nTime = _ttxoll(st_UserTable.tszLeftTime) - 1; _xstprintf(st_UserTable.tszLeftTime, _X("%lld"), nTime); BaseLib_Time_TimeToStr(st_UserTable.st_UserInfo.tszLoginTime); @@ -372,7 +386,19 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n { Session_Token_Insert(pSt_ProtocolHdr->xhToken, &st_UserTable); } + //记录每次登陆 + XCHAR tszIPAddr[128] = {}; + _tcsxcpy(tszIPAddr, lpszClientAddr); + APIAddr_IPAddr_SegAddr(tszIPAddr); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_UserLogin(st_UserTable.st_UserInfo.tszUserName, tszIPAddr); + } + else + { + DBModule_MySQL_UserLogin(st_UserTable.st_UserInfo.tszUserName, tszIPAddr); + } pSt_ProtocolHdr->wReserve = 0; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); -- Gitee From 5be803f30f88bf90133aa55d3d96838cce5a1f59 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 26 Feb 2025 09:52:46 +0800 Subject: [PATCH 11/33] delete:not used time function for help module --- .../AuthorizeModule_Help/AuthHelp_Define.h | 14 --------- .../AuthHelp_MultiLogin.cpp | 29 ------------------- .../AuthHelp_MultiLogin/AuthHelp_MultiLogin.h | 1 - .../AuthorizeModule_Help.def | 1 - XEngine_Source/AuthorizeModule_Help/pch.cpp | 4 --- 5 files changed, 49 deletions(-) diff --git a/XEngine_Source/AuthorizeModule_Help/AuthHelp_Define.h b/XEngine_Source/AuthorizeModule_Help/AuthHelp_Define.h index 339feee..21c165a 100644 --- a/XEngine_Source/AuthorizeModule_Help/AuthHelp_Define.h +++ b/XEngine_Source/AuthorizeModule_Help/AuthHelp_Define.h @@ -100,20 +100,6 @@ extern "C" bool AuthHelp_DynamicCode_Get(XNETHANDLE xhToken, int nDynamicCode); 备注: *********************************************************************/ extern "C" bool AuthHelp_MultiLogin_GetRange(int nClientDevice, int* pInt_IDType); -/******************************************************************** -函数名称:AuthHelp_MultiLogin_TimeMatch -函数功能:判断登录时间是否匹配当前系统时间 - 参数.一:lpszLoginTime - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:输入要判断的时间 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -extern "C" bool AuthHelp_MultiLogin_TimeMatch(LPCXSTR lpszLoginTime); /************************************************************************/ /* 剪贴板导出定义 */ /************************************************************************/ diff --git a/XEngine_Source/AuthorizeModule_Help/AuthHelp_MultiLogin/AuthHelp_MultiLogin.cpp b/XEngine_Source/AuthorizeModule_Help/AuthHelp_MultiLogin/AuthHelp_MultiLogin.cpp index fda87a3..bd02f06 100644 --- a/XEngine_Source/AuthorizeModule_Help/AuthHelp_MultiLogin/AuthHelp_MultiLogin.cpp +++ b/XEngine_Source/AuthorizeModule_Help/AuthHelp_MultiLogin/AuthHelp_MultiLogin.cpp @@ -106,33 +106,4 @@ bool CAuthHelp_MultiLogin::AuthHelp_MultiLogin_GetRange(int nClientDevice, int* } return true; -} -/******************************************************************** -函数名称:AuthHelp_MultiLogin_TimeMatch -函数功能:判断登录时间是否匹配当前系统时间 - 参数.一:lpszLoginTime - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:输入要判断的时间 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -bool CAuthHelp_MultiLogin::AuthHelp_MultiLogin_TimeMatch(LPCXSTR lpszLoginTime) -{ - Help_IsErrorOccur = true; - - XENGINE_LIBTIME st_TimeLogin = {}; - XENGINE_LIBTIME st_TimeLocal = {}; - BaseLib_Time_GetSysTime(&st_TimeLocal); - BaseLib_Time_StrToTime(lpszLoginTime, &st_TimeLogin); - - bool bRet = false; - if ((st_TimeLogin.wYear == st_TimeLocal.wYear) && (st_TimeLogin.wMonth == st_TimeLocal.wMonth) && (st_TimeLogin.wDay == st_TimeLocal.wDay)) - { - bRet = true; - } - return bRet; } \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Help/AuthHelp_MultiLogin/AuthHelp_MultiLogin.h b/XEngine_Source/AuthorizeModule_Help/AuthHelp_MultiLogin/AuthHelp_MultiLogin.h index f607c58..09bc69a 100644 --- a/XEngine_Source/AuthorizeModule_Help/AuthHelp_MultiLogin/AuthHelp_MultiLogin.h +++ b/XEngine_Source/AuthorizeModule_Help/AuthHelp_MultiLogin/AuthHelp_MultiLogin.h @@ -18,7 +18,6 @@ public: ~CAuthHelp_MultiLogin(); public: bool AuthHelp_MultiLogin_GetRange(int nClientDevice, int* pInt_IDType); - bool AuthHelp_MultiLogin_TimeMatch(LPCXSTR lpszLoginTime); protected: private: }; \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.def b/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.def index b87ef27..6e09250 100644 --- a/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.def +++ b/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.def @@ -9,7 +9,6 @@ EXPORTS AuthHelp_DynamicCode_Get AuthHelp_MultiLogin_GetRange - AuthHelp_MultiLogin_TimeMatch AuthHelp_ClipBoard_Set AuthHelp_ClipBoard_Get diff --git a/XEngine_Source/AuthorizeModule_Help/pch.cpp b/XEngine_Source/AuthorizeModule_Help/pch.cpp index f83797b..8925175 100644 --- a/XEngine_Source/AuthorizeModule_Help/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Help/pch.cpp @@ -60,10 +60,6 @@ extern "C" bool AuthHelp_MultiLogin_GetRange(int nClientDevice, int* pInt_IDType { return m_HelpLogin.AuthHelp_MultiLogin_GetRange(nClientDevice, pInt_IDType); } -extern "C" bool AuthHelp_MultiLogin_TimeMatch(LPCXSTR lpszLoginTime) -{ - return m_HelpLogin.AuthHelp_MultiLogin_TimeMatch(lpszLoginTime); -} /************************************************************************/ /* 剪贴板导出定义 */ /************************************************************************/ -- Gitee From ec573158db561f9d5aea235f6f6b31f65dcbfea6 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 26 Feb 2025 10:09:30 +0800 Subject: [PATCH 12/33] added:tcp and websocket and http heartbeat supported --- .../XEngine_Config/XEngine_Config.json | 6 +++++ .../AuthorizeModule_Configure/Config_Error.h | 3 ++- .../ModuleConfigure_Json.cpp | 12 ++++++++++ .../Authorize_Net.cpp | 12 ++++++++++ .../XEngine_AuthorizeService/Authorize_Net.h | 3 +++ .../XEngine_AuthorizeService.cpp | 24 +++++++++++++++++++ 6 files changed, 59 insertions(+), 1 deletion(-) diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index 9c87cd9..95269fb 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -12,6 +12,12 @@ "nWSThread":2, "nHTTPThread":2 }, + "XTime":{ + "nHeartCheck":3, + "nTCPTime":5, + "nWSTime":5, + "nHTTPTime":5 + }, "XVerification":{ "nTokenTimeout":3600, "nDynamicTimeout":30, diff --git a/XEngine_Source/AuthorizeModule_Configure/Config_Error.h b/XEngine_Source/AuthorizeModule_Configure/Config_Error.h index 7dbec02..49404fa 100644 --- a/XEngine_Source/AuthorizeModule_Configure/Config_Error.h +++ b/XEngine_Source/AuthorizeModule_Configure/Config_Error.h @@ -19,4 +19,5 @@ #define ERROR_AUTHORIZE_MODULE_CONFIGURE_XSQL 0x0010007 #define ERROR_AUTHORIZE_MODULE_CONFIGURE_XLOG 0x0010008 #define ERROR_AUTHORIZE_MODULE_CONFIGURE_MALLOC 0x0010009 -#define ERROR_AUTHORIZE_MODULE_CONFIGURE_REPORT 0x001000A \ No newline at end of file +#define ERROR_AUTHORIZE_MODULE_CONFIGURE_REPORT 0x0010010 +#define ERROR_AUTHORIZE_MODULE_CONFIGURE_XTIME 0x0010011 \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp index 485c9dc..c30b95e 100644 --- a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp +++ b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp @@ -100,6 +100,18 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE pSt_ServerConfig->st_XMax.nTCPThread = st_JsonXMax["nTCPThread"].asInt(); pSt_ServerConfig->st_XMax.nWSThread = st_JsonXMax["nWSThread"].asInt(); pSt_ServerConfig->st_XMax.nHTTPThread = st_JsonXMax["nHTTPThread"].asInt(); + //时间配置 + if (st_JsonRoot["XTime"].empty() || (4 != st_JsonRoot["XTime"].size())) + { + Config_IsErrorOccur = true; + Config_dwErrorCode = ERROR_AUTHORIZE_MODULE_CONFIGURE_XTIME; + return false; + } + Json::Value st_JsonXTime = st_JsonRoot["XTime"]; + pSt_ServerConfig->st_XTime.nHeartCheck = st_JsonXTime["nHeartCheck"].asInt(); + pSt_ServerConfig->st_XTime.nTCPTime = st_JsonXTime["nTCPTime"].asInt(); + pSt_ServerConfig->st_XTime.nWSTime = st_JsonXTime["nWSTime"].asInt(); + pSt_ServerConfig->st_XTime.nHTTPTime = st_JsonXTime["nHTTPTime"].asInt(); //验证配置 if (st_JsonRoot["XVerification"].empty() || (9 != st_JsonRoot["XVerification"].size())) { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index 7961463..e754716 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -17,6 +17,10 @@ void CALLBACK XEngine_Client_TCPClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, X { XEngine_CloseClient(lpszClientAddr, false); } +void CALLBACK XEngine_Client_TCPHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) +{ + XEngine_CloseClient(lpszClientAddr, true); +} ////////////////////////////////////////////////////////////////////////// bool CALLBACK XEngine_Client_WSAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { @@ -51,6 +55,10 @@ void CALLBACK XEngine_Client_WSClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XP { XEngine_CloseClient(lpszClientAddr, false); } +void CALLBACK XEngine_Client_WSHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) +{ + XEngine_CloseClient(lpszClientAddr, true); +} ////////////////////////////////////////////////////////////////////////// bool CALLBACK XEngine_Client_HttpAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { @@ -69,6 +77,10 @@ void CALLBACK XEngine_Client_HttpClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, { XEngine_CloseClient(lpszClientAddr, false); } +void CALLBACK XEngine_Client_HttpHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) +{ + XEngine_CloseClient(lpszClientAddr, true); +} ////////////////////////////////////////////////////////////////////////// bool XEngine_CloseClient(LPCXSTR lpszClientAddr, bool bHeart) { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h index 0b87f4a..6a6b3ad 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h @@ -3,14 +3,17 @@ bool CALLBACK XEngine_Client_TCPAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); void CALLBACK XEngine_Client_TCPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam); void CALLBACK XEngine_Client_TCPClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); +void CALLBACK XEngine_Client_TCPHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); bool CALLBACK XEngine_Client_WSAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); void CALLBACK XEngine_Client_WSRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam); void CALLBACK XEngine_Client_WSClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); +void CALLBACK XEngine_Client_WSHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); bool CALLBACK XEngine_Client_HttpAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); void CALLBACK XEngine_Client_HttpRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam); void CALLBACK XEngine_Client_HttpClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); +void CALLBACK XEngine_Client_HttpHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); bool XEngine_CloseClient(LPCXSTR lpszClientAddr, bool bHeart); bool XEngine_Client_TaskSend(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nNetType); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index 80daa69..9923653 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -242,6 +242,14 @@ int main(int argc, char** argv) NetCore_TCPXCore_RegisterCallBackEx(xhTCPSocket, XEngine_Client_TCPAccept, XEngine_Client_TCPRecv, XEngine_Client_TCPClose); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化TCP验证网络事件成功")); + xhTCPHeart = SocketOpt_HeartBeat_InitEx(st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nTCPTime, XEngine_Client_TCPHeart); + if (NULL == xhTCPHeart) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化TCP验证心跳服务失败,错误:%lX"), NetCore_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化TCP验证心跳服务成功,检测次数:%d,检测时间:%d"), st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nTCPTime); + BaseLib_Memory_Malloc((XPPPMEM)&ppSt_ListTCPThread, st_AuthConfig.st_XMax.nTCPThread, sizeof(THREADPOOL_PARAMENT)); for (int i = 0; i < st_AuthConfig.st_XMax.nTCPThread; i++) { @@ -274,6 +282,14 @@ int main(int argc, char** argv) NetCore_TCPXCore_RegisterCallBackEx(xhWSSocket, XEngine_Client_WSAccept, XEngine_Client_WSRecv, XEngine_Client_WSClose); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化WEBSOCKET验证网络事件成功")); + xhWSHeart = SocketOpt_HeartBeat_InitEx(st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nWSTime, XEngine_Client_WSHeart); + if (NULL == xhWSHeart) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化WEBSOCKET验证心跳服务失败,错误:%lX"), NetCore_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化WEBSOCKET验证心跳服务成功,检测次数:%d,检测时间:%d"), st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nWSTime); + BaseLib_Memory_Malloc((XPPPMEM)&ppSt_ListWSThread, st_AuthConfig.st_XMax.nWSThread, sizeof(THREADPOOL_PARAMENT)); for (int i = 0; i < st_AuthConfig.st_XMax.nWSThread; i++) { @@ -306,6 +322,14 @@ int main(int argc, char** argv) NetCore_TCPXCore_RegisterCallBackEx(xhHttpSocket, XEngine_Client_HttpAccept, XEngine_Client_HttpRecv, XEngine_Client_HttpClose); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化HTTP管理网络事件成功")); + xhHTTPHeart = SocketOpt_HeartBeat_InitEx(st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nHTTPTime, XEngine_Client_HttpHeart); + if (NULL == xhHTTPHeart) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化HTTP心跳服务失败,错误:%lX"), NetCore_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化HTTP心跳服务成功,检测次数:%d,检测时间:%d"), st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nHTTPTime); + BaseLib_Memory_Malloc((XPPPMEM)&ppSt_ListHttpThread, st_AuthConfig.st_XMax.nHTTPThread, sizeof(THREADPOOL_PARAMENT)); for (int i = 0; i < st_AuthConfig.st_XMax.nHTTPThread; i++) { -- Gitee From 21c595873d06f18f89f8a1afb857f2b6d95e0572 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 26 Feb 2025 10:27:25 +0800 Subject: [PATCH 13/33] improved:heartbeat management insert and delete and active. modify:heartbeat to disable and enable support --- .../Authorize_Net.cpp | 15 ++++++ .../XEngine_AuthorizeService.cpp | 51 +++++++++++++------ 2 files changed, 51 insertions(+), 15 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index e754716..d49965a 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -3,6 +3,7 @@ bool CALLBACK XEngine_Client_TCPAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { HelpComponents_Datas_CreateEx(xhTCPPacket, lpszClientAddr, 0); + SocketOpt_HeartBeat_InsertAddrEx(xhTCPHeart, lpszClientAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("TCP客户端:%s,进入服务器"), lpszClientAddr); return true; } @@ -12,6 +13,7 @@ void CALLBACK XEngine_Client_TCPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LP { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,投递数据包失败,大小:%d,错误:%lX"), lpszClientAddr, nMsgLen, Packets_GetLastError()); } + SocketOpt_HeartBeat_ActiveAddrEx(xhTCPHeart, lpszClientAddr); } void CALLBACK XEngine_Client_TCPClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { @@ -24,6 +26,7 @@ void CALLBACK XEngine_Client_TCPHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, i ////////////////////////////////////////////////////////////////////////// bool CALLBACK XEngine_Client_WSAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { + HelpComponents_Datas_CreateEx(xhWSHeart, lpszClientAddr, 0); RfcComponents_WSPacket_CreateEx(xhWSPacket, lpszClientAddr, 0); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("WS客户端:%s,进入服务器"), lpszClientAddr); return true; @@ -50,6 +53,7 @@ void CALLBACK XEngine_Client_WSRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPC RfcComponents_WSPacket_SetLoginEx(xhWSPacket, lpszClientAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("WS客户端:%s,握手成功"), lpszClientAddr); } + SocketOpt_HeartBeat_ActiveAddrEx(xhWSHeart, lpszClientAddr); } void CALLBACK XEngine_Client_WSClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { @@ -63,6 +67,7 @@ void CALLBACK XEngine_Client_WSHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, in bool CALLBACK XEngine_Client_HttpAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { HttpProtocol_Server_CreateClientEx(xhHttpPacket, lpszClientAddr, 0); + RfcComponents_WSPacket_CreateEx(xhHTTPHeart, lpszClientAddr, 0); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,进入服务器"), lpszClientAddr); return true; } @@ -72,6 +77,7 @@ void CALLBACK XEngine_Client_HttpRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, L { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,投递数据包失败,大小:%d,错误:%lX"), lpszClientAddr, nMsgLen, Packets_GetLastError()); } + SocketOpt_HeartBeat_ActiveAddrEx(xhHTTPHeart, lpszClientAddr); } void CALLBACK XEngine_Client_HttpClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { @@ -90,6 +96,12 @@ bool XEngine_CloseClient(LPCXSTR lpszClientAddr, bool bHeart) NetCore_TCPXCore_CloseForClientEx(xhWSSocket, lpszClientAddr); NetCore_TCPXCore_CloseForClientEx(xhHttpSocket, lpszClientAddr); } + else + { + SocketOpt_HeartBeat_DeleteAddrEx(xhTCPHeart, lpszClientAddr); + SocketOpt_HeartBeat_DeleteAddrEx(xhWSHeart, lpszClientAddr); + SocketOpt_HeartBeat_DeleteAddrEx(xhHTTPHeart, lpszClientAddr); + } HelpComponents_Datas_DeleteEx(xhTCPPacket, lpszClientAddr); RfcComponents_WSPacket_DeleteEx(xhWSPacket, lpszClientAddr); HttpProtocol_Server_CloseClinetEx(xhHttpPacket, lpszClientAddr); @@ -174,10 +186,12 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, ptszCodecBuffer = NULL; } NetCore_TCPXCore_SendEx(xhWSSocket, lpszClientAddr, ptszMsgBuffer, nMsgLen); + SocketOpt_HeartBeat_ActiveAddrEx(xhWSHeart, lpszClientAddr); } else if (XENGINE_AUTH_APP_NETTYPE_TCP == nNetType) { NetCore_TCPXCore_SendEx(xhTCPSocket, lpszClientAddr, lpszMsgBuffer, nMsgLen); + SocketOpt_HeartBeat_ActiveAddrEx(xhTCPHeart, lpszClientAddr); } else { @@ -205,6 +219,7 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, ManagePool_Memory_Free(xhMemPool, ptszCodecBuffer); } NetCore_TCPXCore_SendEx(xhHttpSocket, lpszClientAddr, ptszMsgBuffer, nSDSize); + SocketOpt_HeartBeat_ActiveAddrEx(xhHTTPHeart, lpszClientAddr); } ManagePool_Memory_Free(xhMemPool, ptszMsgBuffer); return true; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index 9923653..7f2f96b 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -242,13 +242,20 @@ int main(int argc, char** argv) NetCore_TCPXCore_RegisterCallBackEx(xhTCPSocket, XEngine_Client_TCPAccept, XEngine_Client_TCPRecv, XEngine_Client_TCPClose); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化TCP验证网络事件成功")); - xhTCPHeart = SocketOpt_HeartBeat_InitEx(st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nTCPTime, XEngine_Client_TCPHeart); - if (NULL == xhTCPHeart) + if (st_AuthConfig.st_XTime.nTCPTime > 0) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化TCP验证心跳服务失败,错误:%lX"), NetCore_GetLastError()); - goto XENGINE_EXITAPP; + xhTCPHeart = SocketOpt_HeartBeat_InitEx(st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nTCPTime, XEngine_Client_TCPHeart); + if (NULL == xhTCPHeart) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化TCP验证心跳服务失败,错误:%lX"), NetCore_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化TCP验证心跳服务成功,检测次数:%d,检测时间:%d"), st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nTCPTime); + } + else + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,检测到TCP心跳服务没有启用")); } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化TCP验证心跳服务成功,检测次数:%d,检测时间:%d"), st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nTCPTime); BaseLib_Memory_Malloc((XPPPMEM)&ppSt_ListTCPThread, st_AuthConfig.st_XMax.nTCPThread, sizeof(THREADPOOL_PARAMENT)); for (int i = 0; i < st_AuthConfig.st_XMax.nTCPThread; i++) @@ -282,13 +289,20 @@ int main(int argc, char** argv) NetCore_TCPXCore_RegisterCallBackEx(xhWSSocket, XEngine_Client_WSAccept, XEngine_Client_WSRecv, XEngine_Client_WSClose); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化WEBSOCKET验证网络事件成功")); - xhWSHeart = SocketOpt_HeartBeat_InitEx(st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nWSTime, XEngine_Client_WSHeart); - if (NULL == xhWSHeart) + if (st_AuthConfig.st_XTime.nWSTime > 0) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化WEBSOCKET验证心跳服务失败,错误:%lX"), NetCore_GetLastError()); - goto XENGINE_EXITAPP; + xhWSHeart = SocketOpt_HeartBeat_InitEx(st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nWSTime, XEngine_Client_WSHeart); + if (NULL == xhWSHeart) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化WEBSOCKET验证心跳服务失败,错误:%lX"), NetCore_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化WEBSOCKET验证心跳服务成功,检测次数:%d,检测时间:%d"), st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nWSTime); + } + else + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,检测到WEBSOCKET心跳服务没有启用")); } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化WEBSOCKET验证心跳服务成功,检测次数:%d,检测时间:%d"), st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nWSTime); BaseLib_Memory_Malloc((XPPPMEM)&ppSt_ListWSThread, st_AuthConfig.st_XMax.nWSThread, sizeof(THREADPOOL_PARAMENT)); for (int i = 0; i < st_AuthConfig.st_XMax.nWSThread; i++) @@ -322,13 +336,20 @@ int main(int argc, char** argv) NetCore_TCPXCore_RegisterCallBackEx(xhHttpSocket, XEngine_Client_HttpAccept, XEngine_Client_HttpRecv, XEngine_Client_HttpClose); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化HTTP管理网络事件成功")); - xhHTTPHeart = SocketOpt_HeartBeat_InitEx(st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nHTTPTime, XEngine_Client_HttpHeart); - if (NULL == xhHTTPHeart) + if (st_AuthConfig.st_XTime.nHTTPTime > 0) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化HTTP心跳服务失败,错误:%lX"), NetCore_GetLastError()); - goto XENGINE_EXITAPP; + xhHTTPHeart = SocketOpt_HeartBeat_InitEx(st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nHTTPTime, XEngine_Client_HttpHeart); + if (NULL == xhHTTPHeart) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化HTTP心跳服务失败,错误:%lX"), NetCore_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化HTTP心跳服务成功,检测次数:%d,检测时间:%d"), st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nHTTPTime); + } + else + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,检测到HTTP心跳服务没有启用")); } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化HTTP心跳服务成功,检测次数:%d,检测时间:%d"), st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nHTTPTime); BaseLib_Memory_Malloc((XPPPMEM)&ppSt_ListHttpThread, st_AuthConfig.st_XMax.nHTTPThread, sizeof(THREADPOOL_PARAMENT)); for (int i = 0; i < st_AuthConfig.st_XMax.nHTTPThread; i++) -- Gitee From 4902653a2901176780878cb24fd41787033bfc96 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 26 Feb 2025 10:54:27 +0800 Subject: [PATCH 14/33] fixed:heart insert incorrect added:option method for http --- .../Authorize_HttpTask.cpp | 15 +++++++++++---- .../XEngine_AuthorizeService/Authorize_Net.cpp | 4 ++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp index 93e1108..f1a9678 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp @@ -48,12 +48,13 @@ XHTHREAD CALLBACK XEngine_AuthService_HttpThread(XPVOID lParam) return 0; } -bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM *pSt_HTTPParament) +bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParament) { int nSDLen = 4096; XCHAR tszSDBuffer[4096]; LPCXSTR lpszMethodPost = _X("POST"); LPCXSTR lpszMethodGet = _X("GET"); + LPCXSTR lpszMethodOPtion = _X("OPTION"); memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); @@ -64,11 +65,11 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int //是否在黑名单 bool bSuccess = false; - if (0 == st_AuthConfig.st_XSql.nDBType) + if (0 == st_AuthConfig.st_XSql.nDBType) { bSuccess = DBModule_SQLite_BannedExist(&st_Banned); //IP地址是否在黑名单 } - else + else { bSuccess = DBModule_MySQL_BannedExist(&st_Banned);//IP地址是否在黑名单 } @@ -251,7 +252,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int memset(tszURLValue, '\0', sizeof(tszURLValue)); BaseLib_String_GetKeyValue(pptszList[0], "=", tszURLKey, tszURLValue); - if (0 == _tcsxnicmp(lpszAPIVerDCode, tszURLValue, _tcsxlen(lpszAPIVerDCode)) || 0 == _tcsxnicmp(lpszAPIVerTime, tszURLValue, _tcsxlen(lpszAPIVerTime)) || + if (0 == _tcsxnicmp(lpszAPIVerDCode, tszURLValue, _tcsxlen(lpszAPIVerDCode)) || 0 == _tcsxnicmp(lpszAPIVerTime, tszURLValue, _tcsxlen(lpszAPIVerTime)) || 0 == _tcsxnicmp(lpszAPIVerNotice, tszURLValue, _tcsxlen(lpszAPIVerNotice))) { XEngine_AuthorizeHTTP_GetTask(lpszClientAddr, pptszList, nListCount); @@ -262,6 +263,12 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } BaseLib_Memory_Free((XPPPMEM)&pptszList, nListCount); } + else if (0 == _tcsxnicmp(lpszMethodOPtion, pSt_HTTPParament->tszHttpMethod, _tcsxlen(lpszMethodOPtion))) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,发送的OPTION方法处理成功.此为心跳请求"), lpszClientAddr); + } else { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 405, "method not allow"); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index d49965a..e7d1e8f 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -26,8 +26,8 @@ void CALLBACK XEngine_Client_TCPHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, i ////////////////////////////////////////////////////////////////////////// bool CALLBACK XEngine_Client_WSAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { - HelpComponents_Datas_CreateEx(xhWSHeart, lpszClientAddr, 0); RfcComponents_WSPacket_CreateEx(xhWSPacket, lpszClientAddr, 0); + SocketOpt_HeartBeat_InsertAddrEx(xhWSHeart, lpszClientAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("WS客户端:%s,进入服务器"), lpszClientAddr); return true; } @@ -67,7 +67,7 @@ void CALLBACK XEngine_Client_WSHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, in bool CALLBACK XEngine_Client_HttpAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { HttpProtocol_Server_CreateClientEx(xhHttpPacket, lpszClientAddr, 0); - RfcComponents_WSPacket_CreateEx(xhHTTPHeart, lpszClientAddr, 0); + SocketOpt_HeartBeat_InsertAddrEx(xhHTTPHeart, lpszClientAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,进入服务器"), lpszClientAddr); return true; } -- Gitee From 8c1ff7a3487565d3eeb3441c9bf867a3210e6c5c Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 26 Feb 2025 14:15:42 +0800 Subject: [PATCH 15/33] update:sql file --- XEngine_Release/XEngine_DataBase/SQL_User.db | Bin 45056 -> 53248 bytes XEngine_SQL/mysql.sql | 87 +++++++++---------- XEngine_SQL/{main.sql => sqlite.sql} | 42 ++++++--- 3 files changed, 69 insertions(+), 60 deletions(-) rename XEngine_SQL/{main.sql => sqlite.sql} (79%) diff --git a/XEngine_Release/XEngine_DataBase/SQL_User.db b/XEngine_Release/XEngine_DataBase/SQL_User.db index c16e079d0ce1e4588a5ff55226fa89d9b578d1ec..651450ed9be4ec802b95b71b5fb1e4e3c2b5d558 100644 GIT binary patch delta 500 zcmZp8z|^pSd4iM>lLrF>11}J>0x=5^r%lu`QUi+Wm38nk&t%|Wyvo4W&AW)Rj9rae zi6eyZD$8{c&c)1i5ltPPBi~JIEQL`0=ob&Gf)T=16)AN0krrH z|0V%O0Zt%~L4bjQ|1MDIGQYASI~xP1EU&Slk+HFnVPc|@fsv`MfuXLUv4Wwgm7$rH ivC(3|1c5~Y0*e(A1SUCfG4X2wb@uRYp5dPX76Sl9If6_8 delta 280 zcmZozz})bFX@Zmx!!!m425u;32GU*=b&QmNqI&+dyv+R!?2M-w__}!)ah9>GaVv3z zFrJ3M%@bL@8JU|M-Y%*Zr@k%dEtdHQBSfyvC9)!6Syh{-ds@^drrr}H=R zAK`z+&kcb<1)upOgd~_X`5jA3GV+Tut5V}bi&KkC`DZhDOq}QSeRa54eaa{w{dW Date: Wed, 26 Feb 2025 16:07:19 +0800 Subject: [PATCH 16/33] fixed:DBModule_SQLite_QueryLogin name is incorrect --- .../XEngine_AuthorizeService/Authorize_TCPTask.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index 725fbb1..0373980 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -345,11 +345,11 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n APIAddr_IPAddr_SegAddr(tszIPAddr); if (0 == st_AuthConfig.st_XSql.nDBType) { - bSuccess = DBModule_SQLite_QueryLogin(st_UserTable.st_UserInfo.tszLoginTime, tszIPAddr); + bSuccess = DBModule_SQLite_QueryLogin(st_UserTable.st_UserInfo.tszUserName, tszIPAddr); } else { - bSuccess = DBModule_MySQL_QueryLogin(st_UserTable.st_UserInfo.tszLoginTime, tszIPAddr); + bSuccess = DBModule_MySQL_QueryLogin(st_UserTable.st_UserInfo.tszUserName, tszIPAddr); } //是否存在 if (!bSuccess) -- Gitee From cc63f6c3a0b04e552423a0c4e2572bb40e8b1e99 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 26 Feb 2025 16:27:55 +0800 Subject: [PATCH 17/33] ci:add rockylinux build --- .github/workflows/rockybuild.yml | 82 ++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 .github/workflows/rockybuild.yml diff --git a/.github/workflows/rockybuild.yml b/.github/workflows/rockybuild.yml new file mode 100644 index 0000000..5c28696 --- /dev/null +++ b/.github/workflows/rockybuild.yml @@ -0,0 +1,82 @@ +name: rocky build workflows + +on: + push: + branches: + - 'develop' + paths: + - 'XEngine_Source/**' + - 'XEngine_Release/**' + - '.github/**' + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-latest + container: + image: rockylinux/rockylinux:9.5 + + steps: + # 检出您的主仓库代码 + - name: Checkout main repository code + uses: actions/checkout@v4 + with: + ref: 'develop' + + # 检出依赖的xengine仓库到指定的xengine目录 + - name: Checkout dependency repository (xengine) + uses: actions/checkout@v4 + with: + repository: libxengine/libxengine + path: libxengine + + - name: sub module checkout (opensource) + uses: actions/checkout@v4 + with: + repository: libxengine/XEngine_OPenSource + path: XEngine_Source/XEngine_Depend + + - name: install system package + run: | + dnf update -y + dnf install gcc g++ make git jq unzip -y + # 设置依赖库的环境变量 + - name: Set up Dependency rocky linux Environment + run: | + cd libxengine + chmod 777 * + ./XEngine_LINEnv.sh -i 0 + + latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_RockyLinux_9_x86-64.zip + unzip ./XEngine_RockyLinux_9_x86-64.zip -d ./XEngine_RockyLinux_9_x86-64 + cd XEngine_RockyLinux_9_x86-64 + + cp -rf ./XEngine_Include /usr/local/include + find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; + ldconfig + #编译 + - name: make + run: | + cd XEngine_Source + make + make FLAGS=InstallAll + make FLAGS=CleanAll + + make RELEASE=1 + make FLAGS=InstallAll + make FLAGS=CleanAll + + - name: test + run: | + cd XEngine_Release + ./XEngine_AuthorizeService -t + + - name: Upload folder as artifact with RockyLinux + uses: actions/upload-artifact@v4 + with: + name: XEngine_AuthorizeService-x86_64-RockyLinux-9 + path: XEngine_Release/ + retention-days: 1 -- Gitee From aa5717dcbcfa9fbf2cdeb7c1c3f10e399d0254fc Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 26 Feb 2025 17:01:04 +0800 Subject: [PATCH 18/33] update:rockybuild.yml --- .github/workflows/rockybuild.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/rockybuild.yml b/.github/workflows/rockybuild.yml index 5c28696..f77f7b2 100644 --- a/.github/workflows/rockybuild.yml +++ b/.github/workflows/rockybuild.yml @@ -48,7 +48,8 @@ jobs: cd libxengine chmod 777 * ./XEngine_LINEnv.sh -i 0 - + - name: install xengine library + run: | latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_RockyLinux_9_x86-64.zip unzip ./XEngine_RockyLinux_9_x86-64.zip -d ./XEngine_RockyLinux_9_x86-64 @@ -57,7 +58,7 @@ jobs: cp -rf ./XEngine_Include /usr/local/include find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; ldconfig - #编译 + - name: make run: | cd XEngine_Source @@ -72,6 +73,8 @@ jobs: - name: test run: | cd XEngine_Release + ls -al /usr/local/include + ldd ./XEngine_AuthorizeService ./XEngine_AuthorizeService -t - name: Upload folder as artifact with RockyLinux -- Gitee From 2ab6d70ea46d1dfc85a85fb8ad2c06c6b0a280e5 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 26 Feb 2025 17:32:09 +0800 Subject: [PATCH 19/33] update:rockybuild.yml --- .github/workflows/rockybuild.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/rockybuild.yml b/.github/workflows/rockybuild.yml index f77f7b2..f667aa8 100644 --- a/.github/workflows/rockybuild.yml +++ b/.github/workflows/rockybuild.yml @@ -74,6 +74,7 @@ jobs: run: | cd XEngine_Release ls -al /usr/local/include + ls- al /usr/local/lib ldd ./XEngine_AuthorizeService ./XEngine_AuthorizeService -t -- Gitee From 5d60dc9403368c4d94dac19694a58d9d7f3aa697 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 26 Feb 2025 17:44:33 +0800 Subject: [PATCH 20/33] update:rockybuild.yml --- .github/workflows/rockybuild.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rockybuild.yml b/.github/workflows/rockybuild.yml index f667aa8..47665a6 100644 --- a/.github/workflows/rockybuild.yml +++ b/.github/workflows/rockybuild.yml @@ -74,7 +74,7 @@ jobs: run: | cd XEngine_Release ls -al /usr/local/include - ls- al /usr/local/lib + ls -al /usr/local/lib ldd ./XEngine_AuthorizeService ./XEngine_AuthorizeService -t -- Gitee From 9fd703509f7d9fb390185784ad21abe9c2e524f5 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 27 Feb 2025 10:12:48 +0800 Subject: [PATCH 21/33] update:ci rockybuild.yml --- .github/workflows/rockybuild.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/rockybuild.yml b/.github/workflows/rockybuild.yml index 47665a6..40f5eb6 100644 --- a/.github/workflows/rockybuild.yml +++ b/.github/workflows/rockybuild.yml @@ -56,7 +56,7 @@ jobs: cd XEngine_RockyLinux_9_x86-64 cp -rf ./XEngine_Include /usr/local/include - find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; + find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; ldconfig - name: make @@ -73,9 +73,6 @@ jobs: - name: test run: | cd XEngine_Release - ls -al /usr/local/include - ls -al /usr/local/lib - ldd ./XEngine_AuthorizeService ./XEngine_AuthorizeService -t - name: Upload folder as artifact with RockyLinux -- Gitee From c2fbd911f236dea924566a21e8873cd7df397eed Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 27 Feb 2025 13:47:08 +0800 Subject: [PATCH 22/33] improved:parameter parse and more parameter supported --- .../Authorize_Config.cpp | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Config.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Config.cpp index e219999..7563dd0 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Config.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Config.cpp @@ -33,6 +33,26 @@ bool Authorize_Service_Parament(int argc, char** argv) { st_AuthConfig.bDeamon = _ttxoi(argv[++i]); } + else if (0 == _tcsxcmp("-TP", argv[i])) + { + st_AuthConfig.nTCPPort = _ttxoi(argv[++i]); + } + else if (0 == _tcsxcmp("-WP", argv[i])) + { + st_AuthConfig.nWSPort = _ttxoi(argv[++i]); + } + else if (0 == _tcsxcmp("-HP", argv[i])) + { + st_AuthConfig.nHTTPPort = _ttxoi(argv[++i]); + } + else if (0 == _tcsxcmp("-LL", argv[i])) + { + st_AuthConfig.st_XLog.nLogLeave = _ttxoi(argv[++i]); + } + else if (0 == _tcsxcmp("-LT", argv[i])) + { + st_AuthConfig.st_XLog.nLogType = _ttxoi(argv[++i]); + } else if (0 == _tcsxcmp("-t", argv[i])) { bIsTest = true; -- Gitee From 1bdadf7f73ea4284be6e1cbe8868370e4a54160b Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 27 Feb 2025 15:55:36 +0800 Subject: [PATCH 23/33] added:heartbeat client module support --- .../AuthClient_Connector.cpp | 46 +++++++++++++++++++ .../AuthClient_Connector.h | 2 + .../AuthClient_Define.h | 14 ++++++ .../AuthorizeModule_Client/AuthClient_Error.h | 1 + .../AuthorizeModule_Client.def | 1 + XEngine_Source/AuthorizeModule_Client/pch.cpp | 4 ++ 6 files changed, 68 insertions(+) diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp b/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp index a5ad7c1..15ec852 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp @@ -86,6 +86,8 @@ bool CAuthClient_Connector::AuthClient_Connector_Close() pSTDThread->join(); } m_bLogin = false; + m_bAuth = false; + m_bHeart = false; XClient_TCPSelect_Close(m_hSocket); #endif return true; @@ -246,6 +248,32 @@ bool CAuthClient_Connector::AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR #endif return true; } +/******************************************************************** +函数名称:AuthClient_Connector_Heart +函数功能:启用禁用客户端心跳 + 参数.一:bEnable + In/Out:In + 类型:逻辑型 + 可空:Y + 意思:是启用还是禁用 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CAuthClient_Connector::AuthClient_Connector_Heart(bool bEnable /* = true */) +{ + AuthClient_IsErrorOccur = false; + + if (!m_bAuth) + { + AuthClient_IsErrorOccur = true; + AuthClient_dwErrorCode = ERROR_AUTHORIZE_MODULE_CLIENT_NOTAUTH; + return false; + } + m_bHeart = bEnable; + return true; +} ////////////////////////////////////////////////////////////////////////// // 保护函数 ////////////////////////////////////////////////////////////////////////// @@ -253,6 +281,8 @@ XHTHREAD CALLBACK CAuthClient_Connector::AuthClient_Connector_Thread(XPVOID lPar { CAuthClient_Connector* pClass_This = (CAuthClient_Connector*)lParam; + time_t nTimeStart = time(NULL); + #if (1 == _XAUTH_BUILD_SWITCH_CLIENT_TCP) while (pClass_This->m_bRun) { @@ -280,6 +310,22 @@ XHTHREAD CALLBACK CAuthClient_Connector::AuthClient_Connector_Thread(XPVOID lPar { pClass_This->m_bAuth = false; } + //心跳支持 + if (pClass_This->m_bHeart) + { + time_t nTimeEnd = time(NULL); + if ((nTimeEnd - nTimeStart) > 2) + { + XENGINE_PROTOCOLHDR st_ProtocolHdr = {}; + st_ProtocolHdr.wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER; + st_ProtocolHdr.unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_HEARTBEAT; + st_ProtocolHdr.unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_HB_SYN; + st_ProtocolHdr.byVersion = 1; + st_ProtocolHdr.wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL; + + XClient_TCPSelect_SendMsg(pClass_This->m_hSocket, (LPCXSTR)&st_ProtocolHdr, sizeof(XENGINE_PROTOCOLHDR)); + } + } std::this_thread::sleep_for(std::chrono::seconds(1)); } #endif diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.h b/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.h index 2d05147..88f9e38 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.h +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.h @@ -27,12 +27,14 @@ public: bool AuthClient_Connector_Close(); bool AuthClient_Connector_GetAuth(bool* pbAuth = NULL); bool AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, int nDYCode = 0, XNETHANDLE xhToken = 0); + bool AuthClient_Connector_Heart(bool bEnable = true); protected: static XHTHREAD CALLBACK AuthClient_Connector_Thread(XPVOID lParam); private: bool m_bRun = false; bool m_bLogin = false; bool m_bAuth = false; + bool m_bHeart = false; XSOCKET m_hSocket = 0; XCHAR tszPassStr[128] = {}; private: diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h b/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h index 04a3515..774835d 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h @@ -93,6 +93,20 @@ extern "C" bool AuthClient_Connector_GetAuth(bool* pbAuth = NULL); 备注: *********************************************************************/ extern "C" bool AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, int nDYCode = 0, XNETHANDLE xhToken = 0); +/******************************************************************** +函数名称:AuthClient_Connector_Heart +函数功能:启用禁用客户端心跳 + 参数.一:bEnable + In/Out:In + 类型:逻辑型 + 可空:Y + 意思:是启用还是禁用 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注:服务器开启了心跳,那么客户端也需要开启 +*********************************************************************/ +extern "C" bool AuthClient_Connector_Heart(bool bEnable = true); /************************************************************************/ /* 临时验证函数 */ /************************************************************************/ diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_Error.h b/XEngine_Source/AuthorizeModule_Client/AuthClient_Error.h index 61c2a54..9f9c297 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_Error.h +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_Error.h @@ -21,6 +21,7 @@ #define ERROR_AUTHORIZE_MODULE_CLIENT_RECV 0x0060002 //接受数据失败 #define ERROR_AUTHORIZE_MODULE_CLIENT_LOGIN 0x0060003 //登录失败,请查看错误码 #define ERROR_AUTHORIZE_MODULE_CLIENT_THREAD 0x0060004 //创建线程失败 +#define ERROR_AUTHORIZE_MODULE_CLIENT_NOTAUTH 0x0060005 //没有验证无法启用心跳 /************************************************************************/ /* HTTP验证错误 */ /************************************************************************/ diff --git a/XEngine_Source/AuthorizeModule_Client/AuthorizeModule_Client.def b/XEngine_Source/AuthorizeModule_Client/AuthorizeModule_Client.def index 4051483..44b2beb 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthorizeModule_Client.def +++ b/XEngine_Source/AuthorizeModule_Client/AuthorizeModule_Client.def @@ -7,6 +7,7 @@ EXPORTS AuthClient_Connector_Close AuthClient_Connector_GetAuth AuthClient_Connector_Login + AuthClient_Connector_Heart AuthClient_HTTPVer_TryRequest AuthClient_HTTPVer_GetDCode \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Client/pch.cpp b/XEngine_Source/AuthorizeModule_Client/pch.cpp index 7cfd680..18899b6 100644 --- a/XEngine_Source/AuthorizeModule_Client/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Client/pch.cpp @@ -47,6 +47,10 @@ extern "C" bool AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, i { return m_Connector.AuthClient_Connector_Login(lpszUser, lpszPass, nDYCode, xhToken); } +extern "C" bool AuthClient_Connector_Heart(bool bEnable) +{ + return m_Connector.AuthClient_Connector_Heart(bEnable); +} /************************************************************************/ /* 临时验证函数 */ /************************************************************************/ -- Gitee From bf2e42dd98ad451fe131a6aae2b3a0aad88d9c37 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 27 Feb 2025 16:07:12 +0800 Subject: [PATCH 24/33] improved:client offline for client module --- .../AuthClient_Connector/AuthClient_Connector.cpp | 4 +++- XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp b/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp index 15ec852..5e52971 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp @@ -102,7 +102,7 @@ bool CAuthClient_Connector::AuthClient_Connector_Close() 意思:输出是否验证,如果登录成功但是参数为假.说明没有剩余时间了 返回值 类型:逻辑型 - 意思:是否成功 + 意思:是否登录,如果没有登录将返回假,登录成功才需要判断是否通过验证 备注: *********************************************************************/ bool CAuthClient_Connector::AuthClient_Connector_GetAuth(bool* pbAuth /* = NULL */) @@ -292,7 +292,9 @@ XHTHREAD CALLBACK CAuthClient_Connector::AuthClient_Connector_Thread(XPVOID lPar if (!XClient_TCPSelect_RecvPkt(pClass_This->m_hSocket, &ptszMsgBuffer, &nMsgLen, &st_ProtocolHdr)) { + pClass_This->m_bRun = false; pClass_This->m_bLogin = false; + pClass_This->m_bAuth = false; break; } XCHAR tszMsgBuffer[4096] = {}; diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h b/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h index 774835d..f67f63f 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h @@ -60,7 +60,7 @@ extern "C" bool AuthClient_Connector_Close(); 意思:输出是否验证,如果登录成功但是参数为假.说明没有剩余时间了 返回值 类型:逻辑型 - 意思:是否成功 + 意思:是否登录,如果没有登录将返回假,登录成功才需要判断是否通过验证 备注: *********************************************************************/ extern "C" bool AuthClient_Connector_GetAuth(bool* pbAuth = NULL); -- Gitee From 549dff1ec80ac529cacef825aa893b919f48b089 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 28 Feb 2025 10:46:58 +0800 Subject: [PATCH 25/33] fixed:not update heart time for client module --- .../AuthClient_Connector/AuthClient_Connector.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp b/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp index 5e52971..5835bba 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp @@ -325,6 +325,7 @@ XHTHREAD CALLBACK CAuthClient_Connector::AuthClient_Connector_Thread(XPVOID lPar st_ProtocolHdr.byVersion = 1; st_ProtocolHdr.wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL; + nTimeStart = nTimeEnd; XClient_TCPSelect_SendMsg(pClass_This->m_hSocket, (LPCXSTR)&st_ProtocolHdr, sizeof(XENGINE_PROTOCOLHDR)); } } -- Gitee From 3cb5c59cc85166001996d8b1719760a6dd753168 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 28 Feb 2025 11:07:11 +0800 Subject: [PATCH 26/33] improved:client leave log --- .../XEngine_AuthorizeService/Authorize_Net.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index e7d1e8f..09a7f90 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -90,17 +90,20 @@ void CALLBACK XEngine_Client_HttpHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, ////////////////////////////////////////////////////////////////////////// bool XEngine_CloseClient(LPCXSTR lpszClientAddr, bool bHeart) { + xstring m_StrLeave; if (bHeart) { NetCore_TCPXCore_CloseForClientEx(xhTCPSocket, lpszClientAddr); NetCore_TCPXCore_CloseForClientEx(xhWSSocket, lpszClientAddr); NetCore_TCPXCore_CloseForClientEx(xhHttpSocket, lpszClientAddr); + m_StrLeave = _X("心跳断开"); } else { SocketOpt_HeartBeat_DeleteAddrEx(xhTCPHeart, lpszClientAddr); SocketOpt_HeartBeat_DeleteAddrEx(xhWSHeart, lpszClientAddr); SocketOpt_HeartBeat_DeleteAddrEx(xhHTTPHeart, lpszClientAddr); + m_StrLeave = _X("正常断开"); } HelpComponents_Datas_DeleteEx(xhTCPPacket, lpszClientAddr); RfcComponents_WSPacket_DeleteEx(xhWSPacket, lpszClientAddr); @@ -132,11 +135,11 @@ bool XEngine_CloseClient(LPCXSTR lpszClientAddr, bool bHeart) } Session_Token_Delete(st_NETClient.xhToken); Session_Authorize_CloseAddr(lpszClientAddr); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("客户端:%s,用户名:%s,Token:%llu,离开服务器,在线时长:%d"), lpszClientAddr, st_NETClient.st_UserTable.st_UserInfo.tszUserName, st_NETClient.xhToken, st_AuthTime.nTimeONLine); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("客户端:%s,用户名:%s,Token:%llu,离开服务器,在线时长:%d,离开方式:%s"), lpszClientAddr, st_NETClient.st_UserTable.st_UserInfo.tszUserName, st_NETClient.xhToken, st_AuthTime.nTimeONLine, m_StrLeave.c_str()); } else { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("客户端:%s,离开服务器"), lpszClientAddr); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("客户端:%s,离开服务器,离开方式:%s"), lpszClientAddr, m_StrLeave.c_str()); } return true; } -- Gitee From aa5fc4cc25fe4ed3226420a530d7db835010be9c Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 28 Feb 2025 14:28:45 +0800 Subject: [PATCH 27/33] update:example --- .../Authorize_APPClient.cpp | 20 ++++++++++++++++++- .../Authorize_ClientModule.cpp | 1 + 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp b/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp index fd35cbc..4270a60 100644 --- a/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp +++ b/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp @@ -40,6 +40,7 @@ bool bRun = true; bool bLogin = true; bool bTimeOut = true; bool bEncrypto = false; +bool bHeart = true; XNETHANDLE xhToken = 0; int nDYCode = 0; @@ -53,6 +54,7 @@ __int64x nIDNumber = 511025111111111111; XHTHREAD AuthClient_Thread() { + time_t nTimeStart = time(NULL); while (bRun) { int nMsgLen = 0; @@ -98,6 +100,22 @@ XHTHREAD AuthClient_Thread() printf(_X("不明白的类型\n")); } } + if (bHeart) + { + time_t nTimeEnd = time(NULL); + if ((nTimeEnd - nTimeStart) > 2) + { + XENGINE_PROTOCOLHDR st_ProtocolHdr = {}; + st_ProtocolHdr.wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER; + st_ProtocolHdr.unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_HEARTBEAT; + st_ProtocolHdr.unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_HB_SYN; + st_ProtocolHdr.byVersion = 1; + st_ProtocolHdr.wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL; + + nTimeStart = nTimeEnd; + XClient_TCPSelect_SendMsg(m_Socket, (LPCXSTR)&st_ProtocolHdr, sizeof(XENGINE_PROTOCOLHDR)); + } + } std::this_thread::sleep_for(std::chrono::milliseconds(10)); } return 0; @@ -514,7 +532,7 @@ int main() AuthClient_GetPass(); AuthClient_GetTime(); - std::this_thread::sleep_for(std::chrono::seconds(10)); + std::this_thread::sleep_for(std::chrono::seconds(100)); AuthClient_Delete(); AuthClient_Try(); diff --git a/XEngine_Apps/Authorize_ClientModule/Authorize_ClientModule.cpp b/XEngine_Apps/Authorize_ClientModule/Authorize_ClientModule.cpp index dd60d02..5e7422c 100644 --- a/XEngine_Apps/Authorize_ClientModule/Authorize_ClientModule.cpp +++ b/XEngine_Apps/Authorize_ClientModule/Authorize_ClientModule.cpp @@ -55,6 +55,7 @@ int TestClient_TryLogin() } int main() { + TestClient_HardLogin(); TestClient_TryLogin(); return 0; } \ No newline at end of file -- Gitee From 6fdeeb3eabd8b8af202767a25cd77a6dbfda1e12 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 28 Feb 2025 15:50:44 +0800 Subject: [PATCH 28/33] update:document --- CHANGELOG | 22 ++++++++++++++++++++++ XEngine_Docment/Docment_en.docx | Bin 161090 -> 162098 bytes XEngine_Docment/Docment_zh.docx | Bin 163849 -> 164707 bytes 3 files changed, 22 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 8875a7c..18e9296 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,25 @@ +XEngine_Authorize V3.17.0.1001 + +added:option method for http +added:tcp and websocket and http heartbeat and disable and enable support +added:multi login for day supported +added:hardware code login and switch support +added:type print set configure for log +modify:user and code query merge to user functions +update:depend library +improved:parameter parse and more parameter supported +delete:not used time function for help module + +增加:HTTP OPTION方法支持 +增加:tcp websocket,http 心跳支持并且支持启用禁用 +增加:多端登录天数卡支持 +增加:硬件码登录以及开关支持 +增加:日志类型设置支持 +修改:用户名和用户码登录函数合并 +更新:第三方库 +优化:更多启动参数解析支持 +删除:没有使用的帮助模块时间函数 +================================================================ XEngine_Authorize V3.16.0.1001 更新:匹配XEngineV9 diff --git a/XEngine_Docment/Docment_en.docx b/XEngine_Docment/Docment_en.docx index 778d4c407f2542ceeec02e95cafa9a5d1cad31f4..596ffd1714c9c3e6388ee9ee76ab7d68676ab868 100644 GIT binary patch delta 144216 zcmYgXXCPbe_pegA@U0H3sG=x}qV{O1y|olY)t+hXm0YEz+S+@!r8cp5q|~gv5;LK; zAXY>YN&bHC{%`J!b6-5q=X{=X&pDrSpRVmIwTD*{WG*pog-&}XD%=H3I}KMPZnZ-7)MFs1vOYK87(vId{@i#hgYEZeOfBsh$8Y;yXy8)A2=!jK6{4yd^ zAnTSmDg9K;p!nD=S)~y_>z{Rc&rguP;C*u5cyZI&Hp5O%&1S^2e2r_nvTi&PFy8J# zZms1bAxz2LSkC94$8tXd^4zK2ihOpOQy(OBE$Gk}x0%|8MxwTQ4%TJPpl&X!DWg=6 z(I@olWB*(kZX{4M|6LDu>ALLbY%gfI8T|5Mi~c)_s;?R^r_~-wNyFYfiwY94HSJ|f zxJ1jWs})@<8veR>bE|vc%6w=CMIw*4{=w%TFZp~p%!V$Um|mahUIosC=;PHoK5u<+ zp}Jc8%I+SN0)nhJm>(X8imax%^_1Zr?>vjFY=}&{-%TXgHyKeNFOFYSD^Wh>j3*(C z@IBZh^4YYbXM=ZbSw)+t^^|CVznR5xmMOyXgJ|x(fOajyzZY^wB9H8q4i=;V24g*1 zx?2}6T)2E8+VG#6KsgW{V@7k~Lg>W{7jB%J9YGGpKA?BL;tn7mr$<3vp5P=Cqd)g< zeL@?YF*9Pt#84(AweJ?RPd*SUqO@TW{Z>d>H;WjPTaZVw|Z$ zB=*sN2A996=@sb0gvXBD*+)%Q+sAZYXsUluc<0(VI_fhk;U)?wSxtuH1e%2s>K$r@ z#}K3_`<>N0?#oF_V^3dmT3_SQZR?Cpz`muG6L5_3*nf6K{2lYR?3mA*g-JJS3H8$# zj9Jt#$+%)A41_2rA=M3}qpt5ca+rxggP=(^d`ji&)0~A+3&Y+D1;-lM{HQ#De z@;)kF49frARkefsJc+SkLN3kpA)4d$)Q=!|~Aqp!~`{5ly zTvLD6%DCa);16W09#t?*BFk`G;R2dP(2#{e;el0fjhnjSV_0dR!!y=rw|)feek#ZQ z-s~H^%vQ1Ow}qd7=78ZdA5Uz=~b*^=GKu(|5pCE;NzrxU&3@ z>YP6GiDf&G4A~q0!+w~Qim7r*q~!~WypPQ6NwoD=B8xw%E05hX&}r?coH~VRc$VKJ zXh^W)ICUN`9H`HAIF9D5y9Es7{~2WUb3O74MDg>A{ylT@EuB|ym1lLL?>oA`IL>^K z8#@k}fk3`r8ulcQ4BQ<2Z%s!tJNn+K*?WW>1Jtbbj3$AjuAa_~<*GUCW8y7;nhUVW zWIp@s7e`@g%c0(Mx-_BVsUT} zoIqBmV5pk{6pT2WOh%K}LkK+NHLNXO7ERs%3a}jjP9YAzp^#I`h8^{^fcbb31dv+c zXWQ9W%CaP~4<0n8DvEulC7MIO!ZLQG~iaO2t^9wt@ZV4Lq89EKb>Hh0mK&Nz5Nrc}N4v9h8wG zDgo&LCI7hz9N_E#90mjs2hZ0PhY%?iaB556ZlLPvSDp@HEEFfG8g}%Rx`N?>5Z5>C zz$8{UaeIRTY~g_ra0i6M0zX~vJ2y|G$=O)obp3q4d&SU>Me6&VWeMt{>bFxYg@TVK zQxA}6FcnTcCyRQF5qDVuNW^F?W$PA%^gEwAY@r&4^Yu7rWA}DG_=87NC@y_ll+JaM z;3#3SS-cMt7R>{jLvG+z&!Pd+{OBPt-DC&GA3>>IMqm<-7^n({0aOnjzcVQHbod-b zwm5M7^xG^s*J)A2yv^~&Strx+0RFdEuHsC9&sqs0O6S(Dwk4R9cf zKEoMNDVThrG;x45El&CBg$Kb2dl=vdCrc%OAjC;*SPFK3pp+9dl{gOt&USA>&WK8sT?+tDh62QMw-~`m zpTN~;ryFp}njM%NX>qoA=al??Z9bpU1nM9iklF_i3q2*QVV!U zwJsy)PMFRItIM42&okqxO+2LJWlk;tPKt&T3eeuk?@_L$)Rl4`$XOqiVAM1r4iAJ= zkEc~VW1!SMfJ{*(4>SR!V(Jbc<$h~jDYh`J|EJp)m9 z&SC8W#AH>{Fq|}~3i}371A#-H4g!Wc%0oSPWeYzug2a0rd~0yz-ca$vK5Hx z3mGo95kG?E2f&o~;BB&$*;X6S`+vdS# z^(eE~^N{n=zQp!Dmr)`iOq5(SiuA>@w?8^sz#g^c;gtjbVIXk4Wsp41H!j$2y>8>A zqk;#u0iIRaY{KIpSY={|N?hJNY3~|tf%~W&KSGi*f#MA=m~xpNqMXWtFUB`ZKyrr?gASZ)Ib5b)*g zzTLykh6l5u{!A7+P~7`@JLSkf2*SN!qj*UEQ3&<>!05)>q5Y6A_*YT0Z533&1q@r@ z89kdr4z3V}Kq0VZ=W~BAiU)H*9j?lIBq0;+mP26h5!eY1N6aBs31*VgT2OiEfuqC| z1z^7Hy@)5QTz_{QKZ>J3>_~y!$oV9z9b!;bJVhlQIoCLYJAl+H>mEW*RDw{Cc+58j z^fBW2utn?Sui@=>!Hv+0@W#L@@#P-M9CTwUZ85c`2G53{_!Zbsdg28`qwwJ2&}AY7 zR7uu}lW(B@cOUFBG7gvgB zOOGxDv^3`XFM4~RW0AZ5*!i7SSW^q&0*B+RN8Z3k)0vYtd`H?=Lta;T#LJgNq7?g_ zAjjKd2S^k{ADB{&j_bqi$SQO9wc$%RS2E8*wyQKEZf)!m?c?+Czko^{h9Fl3ju^!+ zbkyx1VKTEKyj!Y*?|7%PA{#n{2T*C-yCIe*O2thWU$^Xk0ihr;#2Y`@fae^TYQqP> zm3fpgq!sY-0(TP*QGOIu;R_vEQC{@nX|8?bC6esv)wYm#Y`xbsk7>w7o?V3^QRc_H zVEeNTHtw0M&|~1issxVXv+1$2p!PwIj~yB{T8Hc0C2vt$43Nx}F0YV<4J90ZA1QKG z8JLMtD)@zb({UGT8%bzTF|}A+$9rrw*nUJ4vs)$iO3~ei2n27_S}=&qs1`(48N>u& z7u#%YTwB!50}N2kO*lxv&OlB)bEpe=(duZ?{AwuxxU_kXQi`(Gks__iagEI0c{qD- zlJBlirx$=eK_UCrCdNN=4xGo+dwG?dq?L|ED?TnLdA!`$miv4gM~ChB$q@`DRd#8& z{-)~L2syF=qKFPK+RY`cJ@y~^a38)C?2@RYc<2j16bKo@5t~=t+U-E;jr3R~GGGv} z@rPekSxaw2SK%9RDGav`ztPtMt8+tnU3-MH_~q055doecLuzzL;Iw)FLEjKNp_zL1y|1C9KUgK(qj9OA zN4d+*;!x&}A#m`h7IY*ee{QZBdXeoMQ9F^T13J1E>DcDwh5bx7#M9B0aLnO3l!f9Y zttsHX>{WfTjRb3G_*CLa#62l3JTP{vZv~b4gXGqSXOfria`RFOy0i;`6GWjoxRv_? zi6Gs_Hiuwt*3!lt&Vh+Ml)4b6A8g>$czgeyLp#X;8t=Bv{yJYPe>XbxN1b^5{O*D& zUiX1A56rs>sZ^{IB!N`qu%C`Yyp3;@exqujS&5yDp3>^u(MG|bI_uWZc^jq*WO&ye z*b6&yZcz!+WVWsWR;rnKO0X=l14{S`x7-o1++k?nMQ-R|9k#bmPg=~sf5jiDhaCl> zy+@~b`KO%RzVwm&-8}XsZHnvgovYGCsV5nESj1ocLBT76#iJ)-!TxmM)k%fk=Uul) zWChMcMsiR|$!Ew17T~zIjM!in9H{sI2&1<%T9bA4o!TT^wYN((dudemHd&uP2EZ>j$c!ut zyU)~Q6^EH`IB7Rp&oMme_1M5TWmfUjuLUp8bAxRjxuDrZ2R#ZJGGOrtr1W$hU$MCD zdBfGcRs7Ztjv1@;(@ea|5*Om9s>N^o zZY1lx>X65@(b=FZYwPm?^9_iiN^A?yZua|ED);EsuG{9XpS0zMz0lB}JJ~%+?PXsL$-kxOT zS?BK}k5xE6on}Ev(NGEWYpE86qhjrS4@d>qwV+`&`_gjl#t~lNhy%oxdOsL-lou*? zy$ZoQXke;@c4-0s4u+>85A7M#kTn}NhgP7Aw+V_EudRhDNgkhn(Ax?UpkdbQ|9%DD zCKY1kO{hk8_HANjn1tPv&h4<6)_SDo;m+rEk5I1s-gdMXPq;UVgL*OtLNaHC!Dl-N zw*!JYY{$6*;6UIs#G2FV{^S#2Y?ZWsHlK5Km0=Ko~N|F>wpq0)uP5c<9q zL|X1W9)qm9C?hw;1ON7_T!-MNZGLw?I8woDlK@BrZYbDnl&0^vV*i8iX!mx)<(nI% zoOl>`14-y;O4Y3O%ZVSXmwvParrDhLpa;o)Ma10O1oX5dP@*X({3r|Up#=u@iGyz0 z!CI44>~aBq(z_`4&X@mI=TIrenA!ejSyCbVB%5oZh1qUn!lV=*`8-EuX})r?xwvVm zHyR)Ouy#uv-#(sBFv!QQ%_Sk9Kh=y|j*+#(F#61~&EYWwZzY}q)cFE8f8l7(whxy{ z?NET{zus?I%q_yNUWliFi0hHR_Q3GjahQUHYOE-j1YOYvp-4%^wq+PtSvS|^6ljdxlj#=mS$ z8ve`m$lir!ugnNHy_$35tpwYE}nEA2kDrtrze~5%JEwRwXt@bnLG0z6D&1X1!QOUP20A+%STGOW^mQ1v zk%_(7m-cxWN7C2Dgm@p7=nfPQHx+nE#xz=N$mo=yA#$KIBwVkXQi>EzqD<>6yCiD)1XM_gzv3QB9+IlCB> zqedACXgN>OoDB<#A6XR|AoFh;Nnp+HmcDA^tOJKT*xjp=Nigtl!hcb_mUYanEN@ga z;33|9Lfe1+6>Xd1QicS}i;!xU2;=zDGI-oqu^@;-)H9y|m7tc_@gswxOT1oR6T{wU zvUR4${SwosY61*NqBizd>hZk!0_39|*KVJiMz z3?w-ej?b4_(p{Mgxj)O<(!4*`2FZSQ@!2SQzjnP?WB5_Suh!3(8#M1{&IQ`4g>rn* z`WXe?p#PMS1q%LSxNfO-sa7WR*1aKE0bR;rH1U&D#KZvL`_QduLBvJ*smEGu$D43h z4{)Zf-Vu*zvO>Xms?b_7{^^ z&S>%y8?Xy?xwR3n&=bY5JRqstr!utrfSqJNbioZ+pWLL396$q0dX-}Nd3MThlq{=0 zXngthOit%_=l+j$95IrOMh=05Oh$Q4ftVTQ(Rpg)v1E1tJ=#m1a z9Dr2NnMBhS-QqxT)#l19|B$efn|8&>gXJLu>@Sf3^Dxcxn&hn6kIo_2s~K_Y$eK+6 znZ=71D!ct|;FL-L}S zFA&HdNb&^j^`11z#$?95NeElw=aW~>St4}!rTIlVqC%fbCO4u?UXW>=s;{uh+z&L< zn`@Vw4}nQD-)pYdJ$P+0bb0t%D3@J*tCo zdwul^n`^w-xGTn<MJ5-uO@HsT?en=RI;hrg3SX<^uX|f@ zDpq)-ecK{(tGH)g62da(F&_q{(9vb?j$0Jdf0^cj##ESt5lN!llxOEMdLFcZ&P&4! z4={|N!L17%O&t!r*v}6J&g=m}!x1BF!WDHhRF)bi&*{%VZXXPaE1^75g1>f}0A8P; zz0IqrZ{C;ZH`Uza|CQseuoERt2v-2Vh(a*WeJUKkPWox62r^*lbsts3Ibpf%|MY$r z(IfxvY8oU$W@7#!cXwO0jeo5!H1?rfqriV6^WN8h&D4;fzrMTIr#K$9EuPFXmCv(f zl0Wvi+4!S28p)|k7tImb$<7j30ABZ&G)OuQzejv`$Gr3mq3v$28n!!alYi3r!@0p> zJo@`sv~sIk^2ElAu=?`9Oh1wuU+8e}#w05#T7Z{)H-pZ8$UZOdh__ETL89!`oC#ni zLVky&VZ&vzbjZIyV!ro_G2+p(?ZHP(vojqSgYW~>I`dmcKO$LcEnf=DOKAFj9%;EK zyGS|{x<*dOewF}{Mi_T#*Sr~73fTDENT>H=&$j9)ny8sgLh|>e5v}aXL?>IlgFPze>t`;Dli8bZe9!hHsjSdFdCd-yM`UAD9)1!1EEJ) zQh1D4k~T5X%2&sbIef)=bbwd1#6Q*jWsx4Uv?MI;$XJeUamijZbhpS0w4IVeto}KF z$xp?ldLZcpnO3{yniv2vn}5mwyOyl@xEWl#Un#4wa*K~r9XK@@}5maxtmu z{JT;EkrQy&QS9*D3%QAF-5qTy$HfwiuY4c78tXV>u;}10G_vw=7npb0%W`U5{o#dT z7+~-qcgG-V!Y6OfB+4ftqo?ITq1FjiU$wN>M{XLK=ZC!3i>XCKUmbM=?~ea)*X2GI zY3gW;PLQ~XA-N{uUOZ(LDMR0`=u1js|JF1TVJmd8!=JV+(rno-BxScdU3hTs>gb2` zBIgUS$A$(pMu(m|UjW>TluTb=8d=(h-a4A5RZNJ1#{KaEkE1b%{mYJ`#E?ba%p=lk z=HpKdfn$S95$;zKT;JwQM|T>oSG6w3>9&8}iO4$5ndhqXb}rQNtr7E2ZH~X|vzM!Q zKA5BZG5YM6S=O_%*Oeh7Ui>psf1_AKrJtAEeBupM@QGJh@2mi_9qy211E(Y5xk3E( zmoKaPGQKMa*kyB8ddW&C;@=z2;=F)T%q(PZcx{2O|JLRWyD6`~Xm>=M(i8Ha)8uTB zDv!R2|N(3OP<7e3r`g-kE_?EutVB>>*ki} zZC9&~b7hxqk71Ku)WqI6nZ0?W9-+!Vdhuea1 zSU^rGX5Dusyt0d1ZNOEqcPvI4IcQlo5ba9`^nSM=tr{eQmCokr>ZP7VreQosVothUIy5vnM z3l|#2O9pwQ3;+76pbZb6vX8NR@|TxgoX~IYz4uh1_I@5ygO-oK=R@2>f;8+e3*U+x z&&mI7G$NDXQg2sEa3(GdO$x<~>0iv~oUU0#-npYF6&+^1 z3X(dJ=0AB^nLX#@G$*_)?Zmj}^}!lM*8J(=uEO{jP=wtj$D<}{YYlsG&OJ7|qgq}gQe9vXz8992V`A?8H0#y4k^qNBWv0ob0xJx% zSGE{42w0)V-PN0m)_Yy7Y9B_i`>oMTvz4xCA=d8kAtZQZL?t}?UdTItf8TPGCZ2OJ zK=D$}P1+I&Ewg5x*QE*HUV34TyS=40s~aO4Rx?pP(efTF%Oh5@mgNHDQg&9y57zr` z(0mmB>QU|bSnglo!mlA}R;LXoYOhH5exj`ljoDLnsltOBywvO(QETgJ=1TP zBVS`>V9^I9gT6(*2tkBpLHI07f3W-`EQ?f!VuPhRv(6P9-(N(T#=rPvHTf4NMPJ9> zK;y#R0hh##vSgoSovIh+t+u!X%pyMg9=s_kQ#2YdoRvGLZKH&^;#VO?Br&OBsUV*w52JgE_$D5z@afK#HDc2lFvSopIgWh0z!1 z8S*$Yx}%z|``x>uVPK;HSpOwq}H)oua!ty=;o0n46*S$13)5lNeLc0{!Y#}8>! zq>LSaWJ;sxRh5*xQm;7bqSW;>bxiOJD-XgFZa?ZzHECGQ)`g3f_HgG2Uug~Dxr=l$ zPf(@HS7=i7`Lf7gQiDus7>M`xFNrJlRf-+5Xg zDIlK9ekh`3Jc#y*{{4!_O^-S|psky&n@(94>1_4d(|_3Jkgj|`jNfXI z-Kk=IHqA)g(4x*dT`;gXQ;}F9)1f99Ct)@5_(!ZgTd> zC)w>aTwTUb{>S;i5O?q_JfUVJ+NRn`Bg(?>wheT8`Qnpxm*cV)#|J*zCFNlp;f{~5 zYy!9U=`NH=hN*21q__^{wy3LFHoPNCdmTM)WU{)(kmRAfbu-gEOY-V7pT*N~sEkYO z>5hKN2yH_(B?ecdV9-t~%6ef=~oYN;@|L&O)PN6(3-j(|xeT{<~Gs*0KQ3Y%>(K+OMq) zT&5q|vI3RqM}TKp0yV2}yj>|ThaU}NGBfhWZ#|uBf@t|q39L{;-qzUFtW54!+^HWbd@%+5bm|8IlKY%TF z07XM9ESuu7d-DPfg49lL4eJ%ZtZ(btdgTswPh zm2Z~!t{x#$f?d;S8OyxC?78!J+RBjMKubSMBGtyd@$JRkAOAZPy)55O90GLQJFM&q z0xhk~cEs0k9x&!R9m0w5t83`k^>td>xI)OE4*EW8xbFgwu7K%dwQHsJ?`{2uo4N|K zcax1KKmPP$-OG}_mvTJWPZC+*l6ZkmE%@*UF;P2q-gilMUl6kY^=XFU+ zJ91$HbZXZ90y7xv6V!vpDYEhR{4$Mrx1DPDVGXvn2X@n-jzCyU2Z3;!Up?JM^~wEU ziRQ4!+=s1$4}LkxE**Rk$AIa-JrsLH_bDjemvP4RCljvz25L0ur=PUO3y2vZifNs&j?UovsqEUQRW)DQ zs)R2od`V(+y%&%&o2c-9)(B>ZHbYa;F9hSS{53+ap{^c(F$Ci#bK8 zj=3c4iC*Qb>9)si6{3Unfy^BHuRG{kokO=H%!H@U67y0R0ch~|G268UwF;H&lKOle z+6_vU=vbRcsHb(*8S~oK1`ry)h&jSC5;oUZF( za}Vw&7TZEIyI9|%m1kGA=_p4k)AbFcQQ;3EIhlQ9!f(`4x4{XLT~)<& z?ZOT+;>t|xfW}Gtm>;iYd9j;8)xQdX+L;!p3G-c;_fX|}`_BOBAH!VCUkgM9T*7_j zRzSMp4WxePcY%^GbzvNg`OS>C`4v8`RYl}kK28!Sxz1`+BR%fx8ueP%pG7Fv-COBO zeS|Q3YD9}VQ%XO(1wym0C)Z_}&Rch?S@YWq(>${T7T|q!)_f_K9^zAn+$9_Ts&O9r zsl4ns-2t9MQw{lshNrdb3xytU81)1nK5~qniW4M^eR9*j+xLpL6G}=vL-NP>W_;M( z+od)_WB6n%(^N-wJ%kr9g%18SB zVXNn}PdDrL$LVcXn2K=6Q9iGdz+P%xqu<7S#sn^6JeiR&c?2r3yD%p5ZslDLo(RWf zbqiyb&d(Fop#N+++RSg26e@yhHD?u_teIE}r2s4oi@#nA{dQA6`+zBh_(5!aSSoU% z-;%j^o5JNabeOjMd`axD4Q_@jWlC`d*2=Uqtl&DuT@o$#d{4u$T!R8 z<2zr3(N2D_$M)6-hgLuiIBZK0AtMeMO&v+qT5LQ&b=vGiy$ zm;S%IQUjd=>co4#a{|&?^WqdWVny`vY z3z`YVyVtyPyY`$))N(d82Hcr56!J9cepzvm$5nIkdu~l=0nlenUcVSGE)U&;TQuVu zZzl5T$V@L7tBYEy;?v%aN0;_)`bPhe6p*;)7F;0JY6ym``lNO9#n6WBKSO^B0H6b6 zN=b!gC#G!a3t4G+>(TF3se+x)QatV*csopUlz6&ENx4~7A1o+F*IPn6dHKc~&owUVlar#s`Ol#QnPd1VJ$wzMa6m%y^N{#8ODF0Sz*X2Qr5w=Ik5 zpcXXUk!^6nS6fW6#fG1$_N>suq^6(UIoWNJH)NAp3i-eWEH5U0k$b?m06D~BNtae+ z(V5SykRR{ey;Yv1D+)-t{LFt~mLT~ycVzl-bs=gkcb5OMZASKMS(@MLOgXQ#$AV=r ziGN0vl0!UF4VCFBymen9hiR1E$s=Fm6J@`TwPKDl9i}Qy+`>MD6#8EqAX`Zxd&5He zm)Eh^yS5i#_k|u`m#1Hs@d7$@TrYjlil=e-n=J6Vz(4q0uSiJMj=9EHe(=4Py`z+D zqCek(lU}vmr8P`?_j6v}*>8Fm-6@fL(B#&Ylo953!q}~*;+3{&*cO;|fGvbc4Qqc+ z5_bB>!ENn6!)|7QZL%yX$8lc0UF2RFr~WtC@QU)m)BAim5JcfCvm}5o|3Q1cNu%3` z_aoahEZ`a6`1_i_yR6`KWl?(F;d{nO7YS4@)o z{L?DtiuRf39ouRQ82;VYtDnGfo59k{GnX(=0LQKQA6LYG^3Cw5gr=^l4=>F)x%*ng zKGN5NnEh^E*U$K$uLmzmf|vr^xG$sM- zhU^)jFk0GCNIBXhEV3PTvROeq(tg5{l+LC(@Ze+)^Ng6F3u^k#9;_; z!rta0Z8St(ybR5}z58AUQ$C_LQ1&Bjb9{)(Z_3`HV8Py1KXGlL$Vaq6{q%X$`p4uN z?b~rx&97ra%f0HIIsN^9Sn`uZ;$At8pC$R*x4yuZT|8*5SR#QJ?Ig z!v)~kVK$E=s(h}GKg*kpktZr(+%A~#1pIvV(c-Pd@x_~6qfq72b|Y)gyqUC2-onmz zCsVN43%8X`MmT&Rdf9LDo;yA+QmFIpv~p)$Us1Q~38ukel*?Rb%g#cwL_D^k1~DBI zpd40_tk18T&0Q;B)4qRISSu4L{`o}7Qsf;F6u^}8+J`f-53Fsw9P*omFb?;#MLoO=F{CtfAqlTha(y7} z{h($1sl4wG{_lOtk*OyJT=!95-?o_hscNx%>o9S#)OEZ!-n8G5Z{@3_v1>`X;SGjTMJMntS2d2@&ErC#*)feF&Esko&>-RIjfNKCV9@y_Lf ze0f!ABuDh&`$Z2%pxYq($CcTZEKF-tdS^~zLkE8sD3}A6(dOu!3jOXQ8>pmW5nAY6 z89SU82=hm1RQO^0!~6`He{>s6@d8@5QWzmtNB-FInt6t0P373`IK3;{I#}8hT-r;Y z!E3qCdeKpZ!TyQk+5Ya57s|zsMlxtW4IPSZt|IQr4#~0uT?;W6JBiBE9Q|Y|Q>*(n zD2EHko44t4g)_o|O2E^C{xhzO^BrK){zC z28_6yCnU)#G~GS&n{0FpeeyWeQli1J8f3)P4t3Rh+{-X>_*I$pQ`^F+FA{R^@ z`Tp~-wnU)!@sCQGrOm~pSVznMbpUa*8n=)snYz^NZuh zM#c2&W6PN*c^Z2`pAP@-9lA{@RhC!(woOL9o9*ccd0s=GTM1>5zQ3YH-f&L@NH-Qq!g*} zT0Q7d8Z94PvK!LxX&iS^rdm%U$K3l7P)ZzLG>nM{ZAzm|8$1{u*6Bq-4nyb z`U1_kl?(^No$F2(rSSpdYhNDLKHau3iiCIoab2B?CwsnSQ}~*-><&ASFzJj-w0?^L z3et&bA2weU&VsW}7}Gq3(m-a0sQu$thj80D_v__7Buv_+aVq`Vg*Il7w>OUhU)-(7 zb?*gwZIJZO^~b%_D}27#vSrzI8@M6Sq=RU{t`n1Cd+CYy)?mT~;+nD`sMoY&nkM<3 z(IsFvljy0}ca>o^W4HCeO5a0JRF+_0j;`_K)&C?gdoQzQW1=<)zjy_ z5}Oe#f`4ja|K^v?Pp9uYM$1Af;W=)=ShYyHz>OeXZi%5)h}oRrt=HJPSZuPDXY#Zs ztboBT(86|FDQv8uote?uhkmE;o8y**pdFAenDLc1SKFin@UGMzQgQ7Ac?Wg{GPk{9h6wQx)U#LQCb-oxJoTHpSdN`7Xc< zDYm4M!#6AGEStqw>YQM+MeC#?xt)OVkM~C-zF_TfJ=+S)oHqs9DFuznSfB zU&`--6G-SbO|~eE^O*f@LoJ!vEbN?C3#P-A;OY2ITFjIt|=VLPA3g_9|h89 zT30az-IG%2)BfZ1BG4>)=;M$i@YWYbFZCsJNZeBt>-^)tdHconR%j(n4Xe zw}DTvd=`FYnn~mBUJMGlJjSsfpM~ep=;EqYKW6nUq?fDLx}l0j{K0A78`;1hdYrcj8$vPS^KSGt>B|q%3Oo!nf8n*!9BCH4$rd=e1H`+_c zCJ7$!w(YlE{eG7FyvKDfh@Fol-M61G8I>CUU;HTeo`|ob#?7a#k}c}LFTIwQpjRMu@WTsb) z*JK4I<_F3?3|QT1%cp10Q?e{GTI)U%RpU5Z@}PIc)L$|fn2Z82#hvwqcC{j(i6A}jeMmR~Ujqa>L zjBA?CilVLdDRT@=`xU|{W{yVkCHVr)zkA02lT{giYj#IiAG&^%+RJUiCOFVP5D7dB zj@X)F+XJ3#&&?I6M;ttXY&74S?#~JX*Z;5`EV}n$z67Lun88viy+GvS6ZmhF=RU4_ z)Q81iR~r>-9(b2^Yw+9I=54X-Sw@rc`+3tQB`t*d7Vnuv4lM8{dXXq{`LfJBfhNXx z_!Z-oef_OST6)`>FtAxzH&h81T~+8s8k}El-v-c~!ii~%o#}4$_UzTxe05Hdl7kzl z#Oy9zb8O^uv*((+`~M1gJe@~gyGg$C$$=1x0%0$bJ^sBB=&1F$F<^E+Bs380)@&$o zf>l{c`IU^Cisu_~Dx3K-R)6+yVhl2peY5Dyut`Z7H$R(TEj`Zquw5b6Ha#Xf5lb+@ zRRX!mZCgQm7B71UitkR9HE+a>S~*PRu&n;cJp z>I(!za{tq{?eE-U=Laj=?z}1;lIvC*-JPo1{WJLvxef~tYQY%Ack1|JB~3qW$v$J1 z%0G0hF{+lH&Srv&6+|h}>CJ4A+Rw*Aj=-{-!Q9JXch#PIzS!?GIa0b{{qV1D_={cb z8@A(5MKXjQ77a!l-qU9l8lHN2D*Qrrs?`7!o14axn=i!@CS)=u*wNd+HEgLKq>aR8 za+y6G?H&bJDiXw6y5cOEJ9b#Y?saW`%c@$~{AhZ#%(u6&T(eo31S{xHv4_IFNC=RwV1fDwEIEoMTCOwIS`?pxojmA!gsGvt0ayp)=9p`i=YnW9s9 z%)U3pi!oac&67{6dZ;J_upx4A(qDAUe6F7qrQ{$h#rh3QoYB`zo0FJv^nV~?A^#F-UE5!diHbLa)Evf{Uggb9*p` z58l=3&>uEne>F>Zm9$Bi0fjvCYr)j92KFLCO5fraiwdWe$1r0Y8YZ|&V=gnU{ zJo<~a#7&%!Mz4H$Q#3NV)ZDSU81$D`WkN-cLDi1P#viX-&??w!z1kt;k$IOXOjn~8 zaprU1NNZivaJpX4Tr#QTVL8Ah{%=IQBsb`9LxaEG#o?0@ODPt`ui^PR$-8G)Wiz@^ z1?^*1VyX=mH~stBfA<%XA2j~dZ`%`PbVASb1ww1>K`-Dd3ENi?EHuLkoyG05%5~td zi>`gG8$wry(TAc+eyn;x98YJ+cJXqRfrwh(g^Q2yobUeeIh1K@qCEf%ZORo$sks(* zRDOjbIFcxjUAh^HO*znDsbCD=PW^bND|1#6Ua0Q}ZcEY1E$TdVg)Qw)`FZjlDW7@~(7ZtK$Xj)zOzBQ95vWkEwNt zc6Qw**oFQ$vbuxhLwpo+Uv*)==|H{q&Ga5M#i^BLz?O`lpA@2fRV%6-e)%Aw$JYFE zN=3Sw_4G*r5$ku9Txb-T5{Qn(QlGO5&#a=?hT{XzoXD4=?_ANDwb8cA?0=?Bu1Z*C zN3LwK6J+nvUjcdh)a$0Et1)x>khq=8^43-a(NE4`)nv4-jTL=iMov%7(J$%Ks)OUp zcP@<>dO5Fgl?1O)25HVb7Ch-eZ3E7D%TB^43|Lt4%o!hx3e%G z&Z!*ZyY)^4_`%#-V+3B@b$=;==j*+5sAhfjnEk;u$)_m<%V^#?*b6gKavp5eL~lay zLO2HcnPHIM|raDq}-3SYTrYB<#1s{Ez^s6kd5qG{NhqsVXkC zi80&tEIm3T&wE9WNe*3U;*?yy4hK2D90_Wk(nv$nh{7w}B)2->2P~VyUYT!W^hv3D z^dZ5}7bj~-Ua$JvB#PuJQbHnnT)8$9OlEaXNmk*Vd>@ktTsjRmm4Om>Z;2X#xEK5m zlTTbOe?D-7*Yd!exa;d#NOO|GkCgjBznpvdX2z(BtQ(NT%~W~xA)$62wFaEv%wEc! zB04Qkf&>7(XU#mgm+fK$E(cZnKO~COa_{J(nfa_S=9QJ| zB*$G+AlFS?s-iffhYd=y@Joh7fmZ5X%nVG$0{R`3{#gp+%o3gwTdK9O%`$u)@OH_GiGA==31|MKDKrl!~_+^ z@ifeEg#yv$Pd2zPKO}647yy8bQrdfcg6kj@L~--q+l{UsP=6^gL~Kf@?)>xI3nU zSOcHolC>|McG5ew6V)H-G*KEBKf3bzmhc*@;?2WuZ{m&TlIP$+WJhpSErim^UQUd)D&058D;oz3UZG^ zHv!nz43u!JXMSxKWO8%+9dWV37Lh=y=B;^u1zTKu?@V$JRrjuY7d2W~Hj;^Nl;3o; z>?uV1=mpj&QIbtNiPRLc%f2ue#+Mzi)=08dOVQLP*XJ$e5QM%Svf zGDhWY+7wr<4}jKcZrtF^JCELt_q~4yQVBdTpGNIeeWRyQiiIipB2iG3Pvc{xKj&$G zjF+B)KyYP~{LT!~kzaddEEng9F-+pLT^t@Be`+yFbj6DGKAQk-pM{OjlySbR4Z62g zgFHSv?J4Y2Nm>;YBqRURb3;2^{G(n{qPVRMEd|etD;tA9qbOYMKVt&)9Z zBaI$r@1FHt{akTgL1bM3?dk;UA9+0s4P=Z8LA%!(yl_NgbAw0pxR3>M{T=*o&dR`bTYoBngN8&TD28}x1#yuNkkyi_9uBNJ`S=G_g$9dt-JSMEyQutyTMC46I?=6t@`yuE#9k%7wI0 z42blxYWqkw6;=5@BztCmNnHxcz4FT~yU&n1ei5F`4B>5YYiG=X1d=P~29TSbGp;w4 z>c_g*K2Rs2gGfp+GxW*A$qe zSYL21rgquj9QtmQ#Au%uZQoO6Os&DDpHX3P^m4@yo3=lY188`E?hxc5k76S9GFs=4?we%y#qp2Qlz!miO;U;T#Zq2y;ij7 zhAUYpslLKV9~A4O&@B%mZ9af)rvDaC<2Z{Amabv~cw*VTL&9y!r`c157xN@M^=S#A zVMhU8mXNqDGo;RcHbjY#Z=KV-TpypI=7x3*wP8s(K)R8n2lo$ z_$<9P-0jk#J-7FztwCd8f_v61{Pd6+^?reYjM767M#6L6Ed53Drx(}2MlJ6PK6Rg5E-m_-+R(*-5 z$#5h>g+y9^CeM!;sEeWA=PmoP=MI51$2**3rl)SaDS`QEjWjHmVu>HUkVO{qE69qx zGFJfaDYVh=gJ!4q_2}->D@rn_eP93tPrj)Na_ur}4Pf2d)1xRO|c- z@97!Q9~4494GiU#*>a(c?k6$&Bce3VQ$J%$sft8@W8Uv%?;z2Ap*qHqh;(MY@jh?v z+S~`4`X&#pYAWR_eakGEff7NaL=N6E&)mvs>D{|tpL+Mz*A`CHW+5e#zKJ!IsD3FH z$uVlNs~6*y2_Ob}%`un*ms~f+^_>g7Z*n{tokSM>zNfc~Qcw^-e+MWang6lm>&ccG zT)>roSH}inE%gh{wH_@6Gh2>eO++To=`N+#YrVsHXC~#ovt2UoLh@cSV{_j}|N7hq z7AH9urPF}9GY(4vH<)|$*shIcxT}PIX71yD=w;g4MNk>9Q|&75G3ZlD7!Ji6biE6* zNv-CXX_)dUS!5#fP0#I}6|jDXj!z%(E>(ViPcM|@J*7Vfm<{Y+_nh8*SDbb+YZ8no zAI7NEsGX=0iL+3aHyjxrv-%3G5L`Ar25(V%yAPQ*b>B5>aYJ$Hl!z%MA;2(OA$~uc^*1av`s^>_5 z*%Zp^p1Mus?<~!+hUpJqP1*;*z0&WwL+%6YSQ^#_LF7lfS?E|;g>cIPN8QYLMh2GB{{}6Ln$`X1=5I)j3ldHH-Y4_?YiHbdE zty}0NZ9cw~*i-H*a50;w-W0}dPdk2p06o^sbSb*H-!lI8crEH*a*uLXc$GPW(c3Xk zz36DxlA_6fW690;p^&mt9Wai)zUK^>6bfT%ZW9Ke)^8Jil(~<`v|Zcw$I?Z)lzjl2 zcUd#r_uw#{tu06UpY-dMv1rti=M=0)FM)c~8NN5IC*9^jadIbezf@J#(;Q!ac!reR z@w(^Sz?h}Ma*TGW89fGEgr&~?27`_QHJ`Rh2&A?Y-Pb%S$A~nx4q0Woijf7y!Jsn8 zuRWUQrhh8jOu^->mCDQR*4#9kmE%YWXR1%VhOVafVGPEylS{~EV1T^nL{QK zXUo-5pv)$&x$$N0uRQfW0u)A$QSp}f#>a^+E#u@6drBPh)St6RY|l-nyS97zGRfp= zbvS_^-V{GkqU~`#QN5+fg>D~5@z6peVO>dkl*HaC?ee@V&@icnj(~YFFt=`j`{ROyYz0m>W|l-v7Hd&fY8-!n^_dtZC0z;*^7{z3DwC^OPpU{Vatc&))!;J646J)UZBc!bI&s3RRV?HR z(N@W^ej2|qqsLEyTNwSC8>Am*-IjpA<(Kn1$!*WkluJsiq1697JA4|Wd@bXa&v^qc z%GH@!gPD=mZc*$sZ!-oL#@TvP369RFJ!Qub1LS`gnUu`>%54iDYE{U%Lv}^&=;dzoQY= z(pG;bAT_9Ly$^Crl*B2~&8XOBZTHcbA6$DT-Ua|)#NXULwTOS!kMQf zdF_1`c<*yY8U@g0exLQGr*54YsfW(L=+u9hW0ntf;y_OlvbCb9be?PCtLTa08pZDb z1K~fYS(DI~wR=h4oxOa)RO-BvzcXWNu6x1V^H|qf0}Q-1QF?8FaB`(w_% zzV@Dhwz_%CfMw&%$+cGTd?e}>Z4uw7?A{lzS|*`ZM^+*kxUoqnFUbKtZ`3E3Z&$9(|{)>6Dq)5oxv}b z-n)D0*;S_a%`SV|$|S1cN?#)^kV=2g83+al&(*9+){MVlkyadARt-WjVar?{%h?r) zfF76yb64pAyC!x;2|dI>er*QiJN+!2oMgEZZG^TDUg&?a_Zm=|;C|)~+5NXye^W{H zxmT2APYXql5>z(1qHkT7Ka3H;$eRf+56-%urddoPh;T<~5t92F7jGlt7PL8Q~sR%Os)!TCEtyr@s=cQBkWd0L`0Hg6fVV^gy1yzo<#t!)^8 z1}a>W8nbY#i=kFqZjr2Hbt1vU-cQ4q(;8{nCE>Q50UtE69;3h#(5}X;I8)ntl6U~5 z>M_E3`4t#X&35rx6{@F?@lvFxd2asBBKe-Hvm%;HrmokzNIc}~V4=|UH-87O)T@8z z1GDc{C4?Q4_X6@N^`!MXn^KKL^=q_$grYCk07dRQkxGJjcWm(aJCkb3v{W~%)2Ch; zT6UiCrZ!I^$<+DcI?D4S0hWyX7EPkKEv{WPL}p2~lDkZO1MW^^-?XDOQPxo^qU62j zm)l3r`&>7Tis!b{AZ6Fg5ZWGa-e-NEeS2*gWkaCCzRo?mtJh4P1wQ>?CaB+k!T3RE zr-V1tCs;xLGg&!ZnGja}G;p9~lauv+NMq*=PC@V7@gwitH->;FWm->DuCuRs=1#GI z%t*h^9Ym$hk6<|Xb-gKSRDjeYW+0Cv!(R7~b_I7ld^yH`OAX7Y5`gO&z`JCY6wLgF zF`#}&Wh`eVC4zvt)^FSuLLxbT22WOI9uR`vbs5Mp?7=)GZhDHWPU9Q;dQV1VChT44 zvVKP*@{v3x_;O_Ob8cFY&&g=?zOhtOD{FEmPS7)e_(?z59`IRnMWJ3B^Yg|NIc0_A z+f_2=JEp$ zh2**<>PVU3dr1aiVARXhn&Lf*t;&A0-;uxMPSgi+&$vHYMLIs;bYQ5`QgxkkfAV)E zB({ugyiqQqsHhd?$e_Z1O^GgqTiGFs3f_X~IR-ZH!|%Aw`kYSlP(ArHo%Rxg@z$60 zlJ%Mx-W2-u)8t+<$0AwsA%dY5iq3(#Zay|;Ub7xuPLr$UJ?l4>7K*0w-Zb?nvrchN z{fQ$MT%bc~kkHloXnP|=X1xIkxMy8%7Yjw6x#1{=Tmt)?;yiLi1 zytcm2h(zo97-OK>*#}EXM57bg!_!swQC|UC4X(2GjtnyF%DsL^$gpEv#sIt5_tAM; zbfqi@**UTLT!SkPqKr~cs1^4-bJMsl@B@#lGp_9EbR}_6YQIf)vW!~}Nmp3op~mkB z_X@h_?&V7f$>h^UokZPCT2Sa2l;20s$3|!PZr&$%qKu99usMT69I1cjyv}K@W3=Gx zmZre9r0a2i-Hnre30oq`*!N7HTx)K9_LAcP>dMnIc=@8euUQ92MriqyekXU;i!YOw z!^HCD(bbA_0IwOPR=A~>GvCyOv1WwHdjfOkirP7iC&x^8?+#JZd%x~!BjI}Tg>nss zy39JTX)t3ahL+?*_o@m1^_+e^iE4;kQLR;)d3lK52*VCcjZJs%;IvcYvA)e{# z>1mcfO?=fb@HHN*ec(FZdcVyY_a#^VH0vpww&kRJdrmf=X{0r?l2ZpwMSS^90rS9T zYSt3S?~LY6_#Bk*UItdA8SG?Q*{l#82i=Cq%rA@A{qXDkq(qd{nQc$Ios2 z&@}?-BS))$M>L`>F7VN3TIA03EthsX$j@aS>|xV;|vrlR}zj5JOMuvFhA2P3xk zHKPXee$C(zSI&A`{h$#KmnTl5vq|nm{(^$i`kfQeP{wXm^U7Z4@2K|bP9W1cQ*iw| zvkPO-8OT7TKR1D%9hqUDY$cWKrPz9h>tEAL{u=nxyfGefM+iNKqG zuZmeSpGBfhA)kil0U>ey4!>m2+6ue~Hwe-iGw`07$6(nG2HzYbC6SpSjfLNhKTz8) z4q9Iu&JVaJe@Eh>aa@=T#G*^blb{^zr>P9eNXd*0rK>WT6bkus*1X_*+R7>(bWVEK zx&iZby|evsKU4e9k7am3`84`9J#jjJ3;?>c7ztCg-v`z{eOk5c7(eQ!oz?Pe*(*l> zA;m$Z59TLSWk!B@r}s58P?*z)lCL#*L6BxdW-!8R89$gYy*BsR%*T)l%-=x}n~}y@ zzz#QQj)6{0k8;MUE5}e{Bpey?DN$#X9Xh`B5zW}`>@14S<-H@Y~0 zG*7M$Xoe1B`8!%oJo;()#nQH%)$*uLs;5oL;nL!o8Dd+X#z~B=_2{4$ZoM;_;(U~R zIH$O|&$Q!bCUG+n&J(0kR^HFkiRq{89r@#{;)Yrsd>fQ}O4b*2cuMvcBC(e6DN~1l zvp2iG48mj0NF!&8D^b=4iF|B-?ww_1WAjZHK)cq;f(I(->V2TK*49;8r8$m02B5oV zp!V|8@1sY2>o;uLQjYaIt26RUt*pg13ogeDoN7Pqc(SZ&4EKkll@b8`%$Co(LGD@e zFmG=3tRa+RLUxgRN5352OwB;6CH(d&kxXfO2TsV%kYgS&jcEn!VxU=n5sxGuUrp|V z9c(bsK(la+GLoEu+d1=Q^S-~PtOuOI(w3gJ^8Pck^?FUNx`MirR_z3iR8^xnV|tAdT;%i>GcVwcp&@nv#{~ zlPl4Fr@jISALClT13voB8v~miO1u0WRV24$$WTA%jdDeybd+-D48#+Atzl#uoxb4T z-jmsCQC|X(RKLUdITIm?{~Mg3bo_!zple0==b9_$*OtZ5w5Mi&Kp`=TQ-WJ0^Cc4O z@M8HDaAk7a@@WcCGdj6E^c6`gfu2?fbaP+hrV~ud-*GEsWP#nysm{4U)u3grr;(g_ z2QMl$jw$yJ);i{TJ?(|1FnuPC12ISB*LKb7dXi7WZJ+tmMUYLqiySjuSiUWhlW2+N z;2A%_mWFYv=SE+DXXWD}UoxkM>^^r=Q@`;`lx5beb%JjUAi6Y;Uha@ld6_q@T)E(J zemVMeOX~@1IV&K)9FMlU7A**-wRg<-S$UNGwEea8`N0pkC*Q_04f=!J@e^I15p;Y# zda&j<lOUIW%+-;OZv4(N&!cfs&HBsr zoV!X=vm=^HD=tS?0xS#Ec(U}8fYg^&vn;E1>$xdn&&a|udhBH1iUmzcbFdDHj8?4y zFkN??hY^xl%{{7u0_Z27hWRC9kZREt=H#0K7O4@=rzvmGJo+;5NIhn=-Lk^~jKg*9 zyActta*>*U0Y}26o|0j3T~jh$PFyw#4?O)Ix78u3ZuZFANupLG5W0;7sH#Oi%ZT;Gt*`fQ}oB#%vn41a>eyN@|}A|7FL0c=5}No zjKpR=?T#j^cOqlsp0Ou)84kRBQ_y4N_W3(Fd(yUC`E$*kvEG-b<_!5XB)Q2Ewccg; zvm%59;J$2FIZgaKJ!@IOwD8rIs65HJajFr2Le{Kth)wCS$Pc=ma|ZeXNmJ(2RHEfA zBk#ek+G>pI;QcJ^ua^W+drS0rXuX5a6%apvXAv9B_ZbunnIQx=;ko9z=|%j?X!ttH z!Bbz0tP8TGwgl1XUQ6l((I(_+1WMlfn+|U(<01NC-nOhv)wzRb-@ij2rETdqkXqz_ z7)=`0tJGJ}!mRNj`pl|L%GJ@!=REppa-kU|P#-M`m)d32%BMXFD~4$y$4EHhH>vkg z*w-D1)>%d^`43iJPIql35f{rfm}mHqme5J9k>>3~uk&@W-}^ol{(5E99a1VBQX$+nmGwZaM_5s!ZOtwtDF&=v&<5ozrS7KXN-02dfHG>0o zKhY+GT>rM^tkG=GnR8t^S;B+)JM#$mrewKdbZ7~@NlUgX>!rq=HxT1|(}7sae93x3 z1h*ByH$#1#zXNTb*^2dq0?EjeCVU!SZ-bJ)#^8GwmP!dG_VfYek`TYtS=gX%n`e82 z$Xe2lA4HMOsU)}krm|~pw^1k25}Yu}?7OLOIkWB^Td06$=|p`pHRsFU(cI-s{RWwi zQLpqUOxkVl-{BTv8>%;xpL`a7zA2l0O58doUb(~Eqhg?2q6}bOF$MP+)!WI-wxLP% zTeSu+Oa@tXp$9t8DBtuYdz#rx@l27D(jh}4=36sR!=X|uj{26d&HsC4|M z%MT<$as-yBNFeyNZYYbJPSUx3kgqa!Ibhqrz z_8TkBWnWKYaqSs3+=Q2ZmcGr{VjZvAhFz7YN<0(7hIz8~RY&t&gWXM=IFxPIb2xKG z+m7FV?WZZIZEbmIUy`*ImJMM}-u1Y6&x|l3Thei{$H+BLTM$AP~i&yPkr&$N4SENE1JneSscr;ISced%79 za|33Oe6Lxb+{3I%+0NsJsXoVmH)RzTBq%}sj+^l!?h#KTc^?_2b_0t~mVVoDVM}ui2t+a#?0k%_ zmw_0!=W|6DmQZ3NcHyO4`oXw}uRzW*hhFL^K&dtMTGfH zu^?dw%HQEF^c}oT&+f{$uYY=>WEPHO6vyW8s4Gj)bsu%&y*d(yjl|rAwjs9icLw0) z*%CpAw73+tp)sy8BZb`7(iw)*l%lS&7=I^|O zqI(AZJ)_45G`ZU;p9a&BDA7YN5^ZF13`;pVjIoq31L|avh=-R}=4UEAJnDBefBUdH zdJ@Ph=9m@lN?8HCddl*HWHer`r(t02dNbK4WY)Pl+EhL=KYw@drGRDgcV4*MK1kle zkU0jIT*mC=L?rC-^Lhp>jq8h(7yVsyxWUklKct*k=EwMUvpB`hs zZ@CXhj`W>nX_Y{O0QK_E4BQxZ4*8%&J!-7+P-x&zJo`L9o=Cc^l zV%~WgH(e3ZV?jZrd^%5w+!XX=%?-gB992q~6nzIvscmgJNI`YIGknauam3mXVmZjU zp^j2TUUL%$ZT8PYt%$5=j=?e7R`ibCE9;%rqaYZ|8-t`#l?Rt!U@T{FBHYbg<(g69 zQDcz#01c#MG$hM^8$;E3XYTOYTk9UfCQe+Zaty1JbK`+s+qTpr5hqv7n&ww%RNr(+ zx?)EINz9X_`DlZS+Qa-EU0X9wajI$q!OJmvWv1r}XQ2S8_Na`+X#7=AyRO)YT0-}x zU8Nq;;jZt))8)O_J~+h;1w?8F$kqj7TOtXU@55c__}f5#0B(8D$<0YG_YBleWaXoz zqTpoigTd#Txp!Tk#p82D2eN3X+YBSweMvv~9NCJD$egh0-BF1|P9WEf-3@tLYpot# z^-D>_ir`*Tf}J(34Xk4zjip^kXqSH4@o28`^Qi+wVhzuih-TgxI1aSaE-g0L51@kU zebg2<6Yi;hf*j5)#{gpX$pR<$MmYxAQQn%PIjl0z8iTS_+tieJR>mMHK1BKbG)>+T zE5-AG0?E~R3#Rp1Ktuk_yM(1aTHV#G6NQt`pK8?yT&a9+4k)AYXseI8W8p_`R zWllWBIjL|-KiE1;N#}~rIEORiDWZ#IAita@#p?%u35N8+oVz> zzt5%}N}q+nY?T>8z7N9a)KxpwMq3WM1barqPi@C=E7pqc`q!s#hDrN^F*C=gI7`OR z6R*^n737c%qq#~x4HIE{AG+J%ZB1QusNYV1tUI2g>!q!lV;RAXn!zFSkku+!Ulh3H z7!0*tt#Y24f@UoGg!gas42i&L?j34JXv zuYq`Cvh@0Oy-50f7FsO#!HKObD^E_x@tPPW60K5lUuzfyhW;<#XHb!#;|lFEBs}qd zuoFp;N7e5PiEgT~IwYg0IL;4=rrq^ELvr5=WkAAks1+p{{V93|tn2c?j8XqnUz-FE zZQ*Vu-bYuQ&`2bAUF+g&56J_BsJ_A=Z?C;$43JED?<8tPN|Tc;_oEPnB=U`g=Nl45 zKKVZGvh0_`H@xBM&%GmCaTG$u7>V?MLVPNN8|ol-FUig0a@|x!D#WT4eW1oPAIyQNksun) zyYPHpB-y`_1k|ukyntVhGp ziX-VvVZRstjbw&G%w45f*;4pxV|M7g+#!OxXCZD-zm3}1quxh({aUd!V+6y?t|GZV zF6GaWXu?;W!bp@{7wVNnKfSU7NYs#2)I-C2cS%L+N%X-jJQB(Mh0?CpU{=f8`Whke zwY5J#ODaE~HgM6o6KCP@-n}z_9+|SM%=)C`bJmJ{fLCe;i{M7t*CPP=e3gYVB$&tg zX^Xw3O*ot}> z!{07Do@CZBA*~wCo$tl*X^i@ks>vrg^^wj~zhmeqbcXhXSTOo`;HwgUyFXeQs;tXd zLtbU~>oG>UBKNgiL3SuK21`ldM~4K8HmqCkg6p*+!6Z8u{j4u1xSp&UH^{TsUb!}s zI|Y+75XM={$1q0Xtk2J>S4^J;PVK93ot~xusG^f3qy2S#AAOr><=VZBXqQag&Wvbl z&`*D_ZoH9vv$A zs7x2G+s$(K(^N0_n`+&gJ#BASwh(55decFdme%_9i>;h*3O0ykvz~@BVanS~Y~RMt z8IVlHDhLUrKSrTVhD2Rx>76T-ce3~!1G!$Yr!SH%?Hvjc8nxelR9>X=+bUn!jkBtdr#A1m+CjA6#cOx97dFlTdMp9-jG4mFclO z^JxmVikZjLFxaPUDH;3{fXk=h7i%5zRPxrlie#@|Sni&Y^1RmXy!cbaK41)kqjE+h z?)tPk!7LC4lnpz7BzPZd2C6%b)bS(xlNE_K5}f9_d*5oUDgtPX?b~|CeZHhe$#Q|I z&-VcVxm3o+?}!W*(;dmCw!GIsjcL`SUU>khk;5ee^z< zLG%l8<7xU)_W40yVw={wN&buQq~!W~W{gWq+uJ=Y?h>b-IW#>l=@#T&_lySAUk z7R$JcVDDuvET{x23nBeEl$esFd1oo%OU_?U)4#s$-d!)MciLk7lB_@VGmA9;^d;%U=&*1%9(?+_fpa3zh_fe0oNn%PQxYIYo%J$Ni zv&KBRU{!T-Qw4TYMUi9p;Tdzd@zCFe81OW#MXf_%Gv>S(a8Ph(&YHnXx4(>N-sI$k ze;snn0t46*tSiNS;{!m(6~_Pxe&xbALqWQKGBb43$S3iz#xVZVS|5@`&lrPosx=bt zLwvv1;H@4nZRH#I+mZ2un*ed=gQXPZo%8&lB=cX*VA2vgvtwAkVF_|ylT5|2MpZ3x zV5#FL?GFm+H}XX)1@p!bpnVntkV^0ge=NGJ&f6?*nKrqWlN`Msv%%r#$x?X9ysUNO zFl{}CzmS}MHx#h;TYeuE6#R_*9c;j@UC=}(YlGhr5-NNmiM(cdySGIz;EdJW)MKDK zuept4{X%AAUqDNc-p5VzpCi2~lDAsQ{2e{K`fglR`u2?httHcxPdn+++@mXqe@gFb zl$0=0^)wRP?k%}Likatj+gP2&TtT8FCG!|xB>kqaU${kS7by}dk)!` zTv7B3*=tG5a_H;CQ``<*AgvP*e@NouzhNnAA81()fnf&TdC}Jq0`YKI<08c15_ko|!KExHrxg4OTfPRbkIf9X+Np5Ii4130f%bX1X4m4Y*JgT~3HDTTXk{WJjM;)EHl zroyc}C8F_{VtO!U5MY-U8xp(;^**2kb4CEQBeUJs9K#FkQ$n|_&mJ@DnwszP#=n!% za6K>t8uM(wF@YRqt>1Op6A7(Z&nlhLYrD_LdXza{2iWap{zYk zxpC{aS@*&Zvt}Knt?b5>2h254^WbqcH-OXo(qkO%^o;JB7Yc>u)8==we{wX1-Fqi$ zingY;u7RcSdhXs8ey6qn>Ne^7M=b&t@R~Jyv@H}3(KP1H)lt=~peUaP&rzsxA@8)VD(cQ9d=S}c7zvR zfH!N*0}s=Z{x%8Xm%1B;X9vT7{ton6Mvn&%E~6sH=<1XR6>VN`OZ8{+GDuk9dgd1%Jm)E+;VN*|UF3@1_{SNikllV~<*=Z; z%G9)?RY_crM8OYp`2Aswl=KJ5_DW7!#`dbHSr-Juh&Mk z2%w01m!?2++PsE{?P1wcCxQyw2KjwduxE!{Pt)Tdf1^?)NLW+vsBFMmU90niCr{*v z+IDp$xuOW;KrZuX)PLr39ZD{j)+RK|}B@J{WUfn#~_-=W0`82F#SxNJF z!_!@JjDk^slX}`fA0!GMBiZA_tl__t@m&H606c9=1UEo z)5$fHe>OQPIr!fEKHC2%<*e0#RBB8kDxVLr4Y8_MBYRY;JaNR9);FZdloiW3e$T16RJ=aaoy5y>qZsh4z#V83LjLhjVU{SK< zx-IO~tS`~vO_5Koj<~<(0uu(suZU5(H~lwLYdVJMthliS^<0v_F#@tA#n7Vmvm$9 zDnJj7Me=FW`|R(7m|KB;jnVyDilHTl7IM~Dkmk(XxlUhmVlW;De=?Da0?{zjxf4}S zf2&B(xv_h*u0Y~YfmE*O0SVLg^`V|Oqbr(c3ESlk5#47k*W4sul8Z{bK^D2!`c%J= z=rizZr6OseD4l|2%rkbXzjR@j%~kFa9_0gB~yIkQq;d|1;($g46ws z#I9j}s#7w_E{$H_R745@puW%3A$1sPe+GJs@iJ0^M>FF{Iyqb=fpW~wj_#*vdY`B; z5tIvtm3$i9Mn;04U+OXH%RN;iB+KZi(~z_&?T?CNK%!~}xA`)quZaVR>09~$6YtII@PX?7L6h>D61Sm9e*x)Z z?l+1G+`ZP|!OO}xxrPn6fy#cvC#%*sSCqH?O8adPX15t;A>E*28)4vNZe{`NXH%VgvpD;|W+S*m`+lMT|sFqQLn`87xPt4C# z&{9=Oj==?=c9l9`QIFJo0_gW*IJ-$DfwZR@?l)-k(l39ND2_Ye`c`gt&%bC zCwg=c$s8jqpA{}V!|t5HXFP8L@AWi{uIM*YVvi=4`icAiKV6P-(`T&asi#JAAqu$9 z&Amw?Qj(Y-)GAm7`+em4KD>_}y@@h-t~|ZW%YgNKx}7($==AHKn;x|Nea1DH8PBI) z7oh94qN)^lwJAAO0+hd?f1%TJD~2XVL`vL8v!xZE#(-|yhO%HmP6^>a*SN)E9ZvMb;`I4TL*@;XYFJqcI7$hw-c!(%BbWa zPsyo@q|c8gja$|TJO_d(@s{w~O1|?=F(-8l<*815Yp+1JjZ0RMf4pded*05-ReZUc zf#ibtXn6%<)L>cVGmW}ohHrdRSuXLAx}72IyLSgl>cJCSyZ43W`;qs8vQ$1s&RSLk z;IZa*#cZE9hSa|vAvxEOxduu#x>_IqHujFK<|dzX&v-BPV8N0PV;Ctd zVew=X6fW-7emzjjzQa0BBS_?WapJwM|oKJiS{Z8HJB+zvE z^>bRQMUTf*~>|d|^=e%V{S-}wO8GU}FqlH9j z2FTk#>}zg)Gn~C9E@kGBNu(T?{GC~KQtn=z;I-_@F@qmGXDvzF2o)(xJoWiIxP|rS ztKY#b%z;nI(ro9qmrn33gdD>+ORwz(<<`tRuSH!>9%eXR3tKE>-XsoW?nLAv*}?cG zgreg}o?x#7f>7_1KA1v(PPOKS^aMe9OR)9lJqJ9qXC&*jY1y;oPUKN470lm}56)bH z!oK&`H?6j)b6XB1Tid-mtzgDo#>J%6soqqzK9=c}Ol+}S z9ZmbPkAN9$Kv8+mp|#4+O~%L~WEHSt^zKffwgjd=*}Yx>7|nDgr*eSppZnmDe9uhe zOHNN^POZ*?bG~iZW4C>CUyl%E;+|fkt&=2~C4c^ojKHmb2eK!zY_N%br?d;sJdl#o zux|?fk(B^%*IdVyNmQ-YJ*UtXT}-}@@b#QEL!dZ5c4;KF#;-Nc96XlHOldypG}mdq zDR;Z;4h^7s@@XSGmbp-d@<_7Om%GU-rhP3O|J-vYlBjFTHQ=@~9`bio8>hALR%SY9 z{C_}n2V^>b2Pt&&hC`xal1>{*%pIyd*G+ZSlGtM*990*kdm(Z7!DUmt2UBsLdfdGz z?efe4Q(ya(+;NF!R$g((2SkUOO!esbJ3xTal=XdJlGm)%ct5cHB`>uzDmRsS=fQr= zI%M7{U|N2K$A-Ny&jNBjgj_Xip~0zVFn>JFtR0i#5hutQAb$hJ&)=CC5Bas9m^YKt z?+v-AL@S@RI>h}xqepyMgQ81lymEC$2g&r!AR{EQQ}YeRw)FV>n zoP=eUUrxZ`-CuiRpCnrNE!%hLyF>#dL7`e5k5Uto5)6)6rw1g2tn$Mcg_)@-;2=>w z)bF4iS<=EE#Mn5VbBtPu%m)J&J+{o32)eKxa#ta~Y<92rg6g%`ZJ7S8$q{pR1YLqf zU+T17WG~^I>rEG^y}kjLT`%6Wo_}N_=d?PtKSkc2Yp?>lw+>mAVcqjKQ;OGdZ*T$q6|~4| zbdzSg0&Tf&JCh)0AVN>3T&q48=*l8sXS&jjn}vahG3-eyXq2$NME4#ryN)2P1g10`MZ z#0yiu00lw%zJp(^@jH`2g3*6DMz*5ohN(Dvc0-kl*d?dzG(#R|#0>xHWzPr(jOuVE zYHp)Hdaur`mMD=45<`rdvO2Y6fo0CK%_3ehvOP)ZNo3dD22)pNq$kPX&eKl#0)$ob zX;8!&DVflTZy8UV^ddRa4&fN#8_zY6mthpw46p&i>9hn`Dc22PuF-$#)2fCft=kD5 z<=$(JuIE(L zgQi$>-LwQ{2IQE5S?GT;Ds3}{qQZxPk~_rbX$Ij5l|onjO~?E|8IW_EG4SLq<6t8% z?=fP;dCRDQf=sJ15|oW!qd0$1ecxl?4{BG*I=f8j zO=qE2(BFC*-aaV6l!(Wt9Y6Ci5I5u)aE9b1kcG5&`geG3k9;4@Gkc<5;U5@-bsA@O z-IjUUS@rgkaq=0OPLQkK2X6)FNJ=yo&Iq8!XV~uY%h|i!!+aVpgWhlVollv2RKD|` zo`hPa4-t$ZInsYG5gHVA&%L7ts~PB2XGxRhmxG<@S{~?l45)b)9(=Rj*BZ%L>{>U? z3eK!Np({aAa*URbXMa;=LE13Y@2FZ@Gao!7g%<3rF+v2IM5V+T$@tsM$JnxCkH#5% zz1*X`5`*%0gmu&3hF}_mb~$FDm2;26*_~;>&H6VYcFKRJsbb7*Eas^9nps8sb0f)K zPvf2H2Aq;7Zn`{k++$$S9D^9U_YRcX+51gc`Ap=<4CdW_{ftihksTLjJ@0irskt#! zyIa64O}l55jpT`jHJ_#rVQUv01Mkc;%_K5``82%;GFPAu`?2r+K3X#*XQ|o}A&lI; z3>VZ=H3NV71$Fc(QFNZM8pLqwB=T&-vR#tTTW@C|s$2skGgl`@~2wP4=SUz?w`XLNtwFdBbl=**jXw%$?c^zMBPa&*fY zoB3cmq=i2pn!hD>k_78j>Uf^f-ZqlzC<&Na1JzMW#%||>ubELP5}DQ12iWAgTfmG> zP8xr%W}v}9v*S^TgPSME=tRFADN%^lJ_fq?_FU(4ekohZr(wIuOtBu$gAg*t;B{2~ zUlt1Psz-NQUoI-|(~c*3J`*=cg0Zbm{W8#rsSij{_|{#bk_V{2b_l-=LcVmb3Y+_u z(IWhJqmgE<&fu_2HWI8>AG%j99Orv})8&75Dq705zDsXsMu7h%Us4(g4u-#-Z;A@| zoi@dS8KIdgWYI6^QELqb@+vzRFC_bxyUKwRC9bClmuY*F5)rdRE-s@!EboOypI0rB z>uKNzYjy(Bua1FVH+e&`| zb#$b43(W!2k+W8GrzkR?h959(a&7J&U8%8X6|f|SG06bS=I`jhn(R@FOv;hyv&FA; zSAvBv)AfMM>(C@Cb%n$5()1W~{rx_;&oVEwOlmIDKV38} z?>Y$*l}>e^F4LhJqGx^HoBM1L=xaV9o}o52`9AY3o0MySu}uoKR);axy(O0!KVQa2 zp$Q@FQv16CrNQcVlruprZtr7ShahbD4pk)zcKJcNAw478701F?WBuJT(&6 za872PWtF1LoYAssKiW6os;5-i*UQQ=N#BeFG`iQ|pv!yK;vpGrRZw-=GQOjYr{GGS zImI2#nZ01f2L7rQ-PAB9{u(===t|z`ie*$9<|Tp1AMRO>QOlF{jmy3xf9biwceNf><+CMLYSE0cyK#*+P|^i8H{h8gBXbMykYdg; ziXjq#w+L$sx8|5tgUj5#C)`GI`cYy6im4MdfW0KAEZmpiMy{wllNNuUHMf(MmX_TL zeWoKzj2TU`&{(GAaorI?GbCjY7O8oPENDzAG3;=J_ z+E{P;?4>UQ7xC2Dx1N87LBG2atoH}@sGPxwpC_(nl}eh@b6xKP(VkyHZc5|hoEyT< z-c^X|8_x#>q8m!-Uf5b#g1R+H@Py>oR)*%|)!YP_u329~^Xg`o>n73Vm-1=mmOh56 zUHyzoBZ)6b*_3u6;cn;qCcGr z?1LV2GT`!kFwhAG*9>qbNY$ofY@K``x56b6L>M5omx0)Mh zYghfPlTzQ-Z__5-mv1_$W62z{oS9m*T!Y!glwO;1bWzYe!GI2XX1d_m?6>@KQjs#7 zwFcY>RGKLP9L#@8PWOoPX^*jcGbbS$bD!2+H%xbHR!8a6tZX&+DAeBBT3P-FJfq%c z!6KG6xo+8v%Uqr1xI*XE(`1H}R;NTQQJ+&Nw_A1`S#7u_QT^+x14L%jRvwEwxtsxJ z?2JaN%IbhLYYYkqF@%(;UdxPt324LDV_-+J(rJZ^>v(_2DiON&j^FWLx8524LR(M! z^DaJE??bYuSFrL5^hL`tgBBnyhaLZ1cIMWP^Lh4ZJk+xGT_P(orKP$mtJ@M6u&VBO zX5|TquC1vSN%R>~b*C{`M==w$RIQs3{=N6LHbZB|#a3>KX3hCDLCCbp z^-)krnWum8grmxSQ>&Vk^TYeFQ+wS`Y?+xET2GFB#_XhA^_;I;Q?Zw-^IB0bRh&kp z`LKcxTC!LjT2u_BCC39kyvAHL0LqR%@K`Lne3~JR-b6?#$6x!vZGKU9kuyMtl^Ry> z-Yd4`9HT?whq)bYz&fXD*RUm*O#uaiue0`!!a9G=uk$O6GKojN58tqPsYfNYuzS7F zsE5y(ojBG5fTzaj1JeB@Hu)drV>xDe@XlKDL@JaL@brwX=-7?qGuQgQ!!Xs&B<6Ax z#HimHe3V(Ozl}s!?~n%u$Hc?3Z52i4`#g3?%#=K3%kxIx5GRRx*Q_-{WGSXZjxsZM zf_Z-rG`HQYrRe%^E0RPdibO z=?g|N$6yA^IwRynZ%q?&j3`0BsY+5Qpc?ZAG*A0LlWpZpxew%Wx_(YQ#%|^JZPJ{Zwy2lH`)}(Z6p;7NdS1I9*v7c*9()^)wJ9Tw zBm&sEI-C1EtC|Na4R*2CKtrb^BaNFu%@4Z?;G+@Fr!l=VFC)9ohRl7vtNzTauYS-_ z2B}AP_I+EbySmwopo^@iYEI4P@L+$Ut@qg>39{l~+ucox?Ad@Rx=YChUQeEU^qjO5iLIZ^f*^Eq#B6dLNPp z1(##=`%T>Ke&xxeO+mtTD1Bg0>v>;a0hR#}a;+KMF6^CrA9ooRh#bSi_#iphV);8t ziE#JT(?(=4a|P6az0+f8x3ouhc?Xc({2lusnV>MW$inrkH#bJ^1FfHzth~o|i?1`k zw$iA}o=>x<=Cp(an0%og^A>-}$~S$muQU3^QrGsSpC(q6sN`MId2_*&VEZdQD#WGQ zsgjVb%I_&;1Iek`h?9J|&tDsFkQO6k_+RQ?mM+5?dr{d2LIT1^!n6Pj=U13uPLt1JpLSkO&)|SMDw|?gHY<}*Urq?}OxzQM4s=uAjmp5(xa8BG z>Y4IvgRan5IY!sKM5upY`T0UnjkI@{tyH+S$=Gt~Bs!Q7x3SX4P)EY1p@q4x8(OEc^ z5Gv@>rl9&5UG+5SEWxyt;I&PZwW=)_L!KX!HSwc6tW@I$caMMjpxTuchE2KywV}ZhzRArmZ^9ziO|<-3FAlIW{3W( z?2ULI63v!s4Sat$k>%Q>U}<1f_2q^HolgA@Dym23K5&0Z)AkspoEZ}uH8EIj@^?lv zte%@+%G(UWO&TGecEh!l@hUL_TwS$8H1E~mvL)~5Eu$W4r+w49H4k?tz+=5B|F{`l z;WNQ>a#ukSUwcJ)EX`LV-+5gVpE%Hbosm9dMQD+lwG4l<7B?wTGn?mBWi0;O+}FxD zr3C6}Y70fpQX(pL%heG{W2594oF}QpH{{Q<|- zTA73$pZkAJItw_i-p40B(!zJmsolyI9oA@~UfHQ~Hn}>O1e$;JppIlEYHpleS-q49 zTP9N%9fklQ_4WHDjgV_SXooYy?!3wI=Qn+e_GUK8YKkMJ9%ZH~JFoWvXMbcoMDv5o zJ8=Odci7T=n!Z52q7yJ`#=H;h{F*h@osCO$&)fJSck1oN??yuM1e~j9Q%)yK-AxuxuZ!niWv!mfv&}2}sN~K$L3M{5}%T0z5Uhjk@d`P$i9A zevZMO{%XnK+vpi6D@(lC!EZbgbwmQ&+E3d-PSbKwm(!l!ArSCkMdfm|HmNrqL677O z=S*Rn%@y5ozqD7dtNP10`N4c#G8f7u=rl=hdy5 zzNYB)?UsHPi9(uOQ5S8qk(|!rn)Z%x2#So{RT=|5*Z!T+=d^Y_yZg~NJ2At1cYcNr zk=M*Gr^Q@%7C!l!XX-?D@^#Jrv?PB}X89F(=)Oel9hdWxQG)Y6KaZ@=6+gMJnR_RZ zW65=s6H&pPGhh=Zj_bUiFI?L-MymQu#Ps0HITD|ULFL{oE)*Z4$XuNVlPgg=BJ1)C z`Auci_PjApw~xl<^*-`u82(do7u~2kSS#%hF=84-ac=Hw{foO-jNBMcqUV3cD9>7v zQ$pf$&;16hg(a%qM=TGyZ%d$Baz%%EkhVYmp^IKr`84p&jE3W2y3f6@eQG9tJ`GMZ z?dx;I*jmHNs5S3CXgGv^>i9S7pl{8${uo(ba>9|_vmX8Axz3s4IJIgy_dKWQs+V4C z{%Q9d#!}3BDr@l6fmPj5t*C$e+$Ey~CsF`S(Q*v-os7etXgoz5bIdHkktb_nJEb*v zA^~p{?6#nzKy{fdQ3##d zWrn3rmNz+P^rLx#2O(GQs#(23+f^2{v0o>b_L=#5FrkMCX}u4Mj7ERG;#-t#%UQ!G zGMDRV%BK<2q+~!AQd^?DaslKRzFAvBD{A?S{78yCE@}Ip${}zg)bAjac(iS)18di; zo|}W!Rx}oJmsb9c4hQK6pPT!*yYhr$ABhm2GskKUaZ6r$kQ;&|E zUe;QjP?ZpP9(h#$Gcgah~!#8O0%i9f{k_CF^o7 ztCK|0L;2ezT<5CRCqbQ2>oz3LT&y(-HsHD&l}rs5<(xG{;aq>Q4P&OKvekdNt4J2a zIQcX_lRA?WuhI(|r?j?R1Cg^GxB2D-A{a&BT$-nPbIKiJNk8zO%j8#Tv>)R*-H!~0Svk$VRQ zPy`{L20c?4T2BK%tIPul^km`1xP}@t6!MA$hPUD&B=|M^)K9qo%N{jmdBHB$`%JiB z`fDqiI?ArPUu3%U@2IDZd{&>}89Qp#<|)MDZO_Vn1Q~Xzfc;b9@VXL zY2AyuLzKAQM{lCUi`{{d?#c8(Vv`o?Xh_t3GYS zvT7=-J0z$O^OPus#y4B5L!!JeC0Mcw73OyalsSLDj~29Bv9lU8->?wn?=0Hj=8i{# zPMPPJ<2|)bq+XTU))@2JzL%!8-tvRZj(5;eV*Um$@6s>~e; zWKn-bobip=qZMHy!7f=bl)+K*m@6w!;u5ZUXA-#R4>OQqSZm!}zz%WQF4(IcbLF#S z@$reLFEc3B=hVHH<~das+takpC|m%EyhGt?NOtPKY!|3?7|GIa$RT(@rCszG!dp~Y z?1~~v>N$3mD9J6mSE*fq|E{>pkciRd+-!dk6R+QK6xOOUq6}cNii?*-tnEeNOA`Ab1N1kTmg5dF=u@jji~5~G0eoYceIaG5mH)NK??gIzXBYjI>MSYCY?ti zK0)8E@2MC9Nml-Qo|4CU|L{Igi0`~LucP05WgZ|}5C-I3LUPa8lQC}kyv-O@bbNpA z>!)B^W&1pBWVmy!k>MYe`9{8tr4lS{ zJ~k(}y8IvUi{~wG=PQpzqwm@~ybp!iDOu2J)ICQdHm+0AA$zBHFEpKHsNZ3}flH-i zc_3eINn<0-KwhZw7(?QBat)^KF0g-GzXR(2u8Jyk<&dSVuX!w&4`Wzj)z`|?bQ*8{ zrpXS9rkva0GtGU?s7Vz3UD>@}nR)6-=Bj)&Mg*hpMz(*VQ3Y->SEPr0T~$w4Y~7d% zh03$ulpT-eASJ8de%@v)j?uL2t|UiAXq7Nxl&I`K3EH4S3zJx&jLea|*FJxZ*axuK z*ZXXXH_bKJRu24{V+Lrh$DB_r5H)7U6q$YrOVB6E)2Pd7B03lpcPb&zDMhhY9kMZs zu&SPxL_Vw6KslcLSiX;jQ?1`n`N)0e7>qd|R%d_V5vwr@W;!aRYU?@o*#s8_UFr^IqT)%yfHZE3~(f zAgog_S@FtxKpi=ioo{uvt$+>?xdujUg?8k%TAhqiOMU1)Q+L+w{$?ZP>R=wrx*Wd) ztCg`%PC?f$Lw?yKy+a-k#cLq2jIA!0oeUR7%K0rAB_aCoeSb zEKMt3Gq0-Hkzu*(fLi)MQQ1olw{|Z&mezc{B5&Gbw17yzo-xYH=^5;_Se}xno1_q| zh$=NTll-?CYPPm(m(6YT2+7qMU5YcdAuDss9+o=y-d`%HYi?4cxEfO;&s1G7JWaiG zW|K%hAYd(#+#n{f4CNZ2!Jpo)vUR?Yew^o`C#{sG)m{qZnNsb>R)1RZs4?pZlfJ! zW?vMJv0?KBV|nAG*Zc53_P)`DxRN&y%ulznYd;O#H}1Ncef8SSjA*=MYmB! zpLhKTMill~&Wwd$wJ#*k`_W%P<;mQ4$-V6`XI36ox%;%PzM{61p%ozsK$zn$qF-ViJ5BU5`6glZ`c2;5>=cGAa? z5m9BDw%9pAqvj5OIdN;H_ioAp??=oHv`2QVP8NU&+Wp#Z5{{RS2}wZ>3%I$qhs@>Ixn;H%yh+Lf{#L(I{`35t3Q+{EW~7sA~QW zq-@&c16AW<$T7}U?j0uNJ6YaFZI<9<-St!-N1{%!19Vq^eP1(hv|7K7B|Y-YnF2p2 ze}}~**;c=!hC_{VO5};tryVwQ_TN^ZW(_j_=GKWG|G(FsN$SN!Wsk3y}E`sL!3qqS(@YQ|@*LjLx~CR?Ju@+K88s zbB)1$c1df09a9;O+}t6okf~6~BVWU-EDb9ygX=D}n1oHo9E=&&2sP{1fCT3^<(2HM z4}=f0=hj^fBmbkK5lTB$!1fIIlNloxBe-sfB)jWuoPF-h0HQtdF89}|M@W7-ylfp; zHU`U1?htg*I)~SastB1g+A6T{e)Y}tet`hyy77#Ej*LOx-%|N$abZXV+sJRK^X8IX z4&vGmmct!iG{%j3(@9NadhZI+biqjdHUqS$WvAdl8Z0%1zL$~@H3Qh9>>NlX;@Hd# z6u0Qw){_Fl>r~v1)Tk_J@qUpYH%V)dL>@c8>F7t9Ug&`Eez@n>RS|ve#B~?1%CEg1 zP+@t0&tXODNTWLJ%hc;8gunDHgB493aD5-tH;sT`zz#n88pGjtyi=n8Lsds96LbYv ze;E=;=Hk2}am}>eL3t=`lrwm%`s-OQn7&(r+bVHsn*Ru^=Dolxm=Ytykpab7Yi{iL zMv`fzEhErlCb^HEfePV_5=aNUx88}W+n4Hp->B?Sgf!#i+*XYPb6+EM!iisRs)%qZ zb``&aP$J`eccrOd)V$DY#M49*;V^3NkUXZ; zE?8G^?_BBlI4xgRDN+?Ym6F!_FUDJz4xuOvPh>s#dYe1ilEH$%jti|e99RNPa?mZEW(t2 zz1nt>pE~sjSoOue*6%!>tc*@RaKJWyYT^OEBl4b4+b%5MlpNCU`93bJzGc(_Ajrt~ z;hbi@nJqAoi~T#$+*w5;MDX5vzv)-n*e^&AxX#>fV(ypp-beL zY)iePP0NT+_7Vo6D( zdKxO7Df1<&kM24!boE6Ics)&c0Vvi2h@`yzA6~{ zqdzi&PPu`fFc~T=C79sN`58WV>oW2@= zElo<6tEf;)2AnRx&$%(z^PK8m(s9cNsy`5j_#H6<0ham-P;o-1^*an9LFYPicJ2+O zc>WGFYSwTVqnUSUSd90BZ#JI>bDH@d73^RrJ;o7E9M=HUYjaS)!}-xjASLe$KI@k7 zSn4dG0tO@Qr=7gR(n!c=m44Jd5c+z5c7#?nx)ve%<#fIQE~;5;7}OQYR5BLJ{HB`n zto^kmw3duY!BAn#%@1vM~)s;WR#d3_;%9J+6Q~!D`C2H0W;E3vfp9P>J zdYpN5e6Dz%az*X;j{9Tg#$3^3Y|&!#8ErFQLGxrmUTv*+aH46jTyKiiu#qs&Cu6Ml zHA#CCdZ`Ku_1thL_1x5gs~@Ym4fd$4dw-5L)aRwCPEJ%t>eE4ngaS9mfg9pClQRaN0pRW(f%EH zsLc94zjU_G)sc|C^cu{#l3VW#VxHDjXg$`9?jyhhPRM&<#=?{tLU90*pWFwtY+vy~ z$~8*+wssLDnETEGnK;r)d%`2(*RTDyEV|U^PEoGf^SiOyR`fr1*>PW zDQE$Uc{2Bo#%FM%IRjQr`hb#}9K;^O$4Ni<3HP-3>a4tyjEez@a&+=EZuo?l(w461!-9|`c51uf^ z>Zy@X7g9a>G`v#j6+Cx;RRxLKd#Xc*?5w9rgfwAN}6*{P3n;S$Y3d0IM{$=EflIimIoga|OaVhURUJbh^0H{{cC|XO~~@Trjuh zmqTr}WHcO6q)2(~9pO=TeZA?Byb{L+%pgEnXO2Wvx7GjvLq@HCP8Nxd)jc=N{~0|- zTRy6)Vyy>%qvxdrPACy7aG+xArTN$`4sretUa2LKnCugAr1Ek|cwo8K%7E|HhvPo@ z>ysargs6Y#rlL3NTys_ZhuNGEN~*^IlTN^Vm2?xewGi&DFEcjvCnjNF+|v%hmWD~7 zwDJo-EG?f;oAiWEO`%eQE1qKpS6FIT2=r#5cwv5K#^%$o8t!Egql6X(&7G*T<16n| z#qBcOxuX1%GyNZ>Ya+pUex?O{GG{F;=X=-t2&})-m%)pQ9IoFKo-Zxc5iXmvHVM%l z_O;w02%fcnC$G898k447g;;A8PURRV-ppFPFvlhvFzC#tGAK_Yh}+(8y6_}2x}uTx zv$1)D(41Rav*sDW+@u8iO-8m~!-UP6RgzbB+Za&8YgZSN+&T+~7*#{$oEu4Y>-0Nc zz-0A4Bu83y#&D8zhk$z`*Q%$f?C#p~*Y*IG%~P*`QSyg%)4nUaZ8*K+S?wik0B+)f^5l4E1z7qQR3NJ`M`(Y`hX<)$=yBj^_l;H z+(gEhR*n2ZBjeb~Y6a`dp;}TbQfuwLP)yombd^eP7YDf#;U44GOp92@R1_k0YYxeg zC=e2V#(#Znc*4t3U1ad94IN9fsR@smp z@XQ*5=vlWJswG6ywG#*BeBW~(TBs(+4E54~ zvj$j5R&_W()eD)$R^d4SX!WLV`XzIRZ;~_XOOX70;3UJwCCZjx;XR`idgKgdbd346 z-wP(F)O>@xJ-r;pn-FB4Mr2q@s%i#!n1qj8qA^3=jp{pjn>_{xMAlWmss6pXhuoEv z>FLz77Vpid2kpv{$Q7N|YsZKIvQ)o++g|C$(+%9lSarm z-;hwuIfFwgFu$qtz2*Xu5Eoy0)zeVG;xSH%n?9?f-bmfKMmYwgFr&J<$zH8cjq#$u z?kSP_xTQwY?=ZV3GBmWyNzPJ#l1Eo}kYGSfO)**vr#JOJ+-I3#2Mm`MNnLd;s5kS= z9im8W`ww!6%tVUlVyMj>0-z5FUn>e`A$XdS73ec}yc+g1y>~Sd!jSzt=LbeGbSP+4 zN{0+m_3Xl=iU#jxGV@HMM`EH;btJ&vQENRR3f}VslQ{OZqUw0u^|d;G+D(11kw`wR zflj84WkU%g$B{E20fmV#houD3cj?~I#Cg5enVW9P^>Zi6bTR|#*3=2> zs!3tZ`aYP3N{i`c0iB+IdlV|{o?hD|Ujp7*zaxSIJdzU35qY)|4S|N2u9_at0maX! z4gTw%!Gggt_W_r94eys0k}1K)m|ARlLV)i%Ye>UK z&yCBZ?_>Usjux4xRUxMVP~EhHbzjL$J`LY`Vt%Hl3bFJgNI3m}xz_3$gn06IHt5aN zJ1YE9b>$eIYi2K1Q%S(&_o4VYr#Fd?c5fo3FG^-|tzTk;8Qq`MGac!Ah)U(#QarK&qNiD4cf;^4-P&H#4tRsfA)Rrppn{5eqqAYgq z18Jdm`t{Se&XPHQc9J)P^{Y3fF0qBBM8$QYfhPQ75J5R+zpQE5X}HL!*=o#;y|A^i zJ}J0la?C(X=jzNj)>>1LbT#WVd(#iUgAZlReLVwmB?H|wV=~CB;xr!=Uw#FN&^aTG z(}FK2qq@@q;?-8#VpnC>3IY*Ta;_+VN@I&8FI~>L)*7>aUfQNu7lv={Dg_)}k3OyX zdH0P0frmJ#_Q8f)D{%oMvD)0}(BHQ$qXdJVq8Wr0$%!;xa|Uk^{d`m16W6|j<-pF2 zEWo<(=klK0;7WUSFcxg-@lWce&`j5?cNc1F3KDgUIcB6H^DH2Z=(vk4{yJ>)BSoxhp-)eSIFf zIpp~{kuzjOlYjieAs@3Ay=Dm29#she1z5jBf{ng^<~DAHYa;MSD2m!Uvm?^o`P4Ps zRf^ZFB|IB1rkqx)wk!vpjNS}KK21NcWCWY>aP-$6k~2BuW|at!SH3BXTQk4R=)t#) zD`PBWr{(tn8&p3~?=z|n)4ra0yK|yvW;7fUF!?mAlXl_^h1kr?vwXlK5t6#X$!O(Q z(3`G*E7eszNQv(?H*vW=SsP~g)Af;iXY@&V<-X?au8FCacVJ&{IRiSrzc%6(K3I)W z^LI)6ZT8`~3^|7Pp3zAW2UUzcX5zNxPSh~yOl$;<-4jwZXRu&z@Aq+`roZ4>pk!q| z&C1sryFvm0UK&>JhZ3us$-VfP(hEg-CF7WXn(w8qE%|DYVJU{l890lYwAbp44k}sg z1?Oik=6)0Dyd`E%B>V$|Bl=#IZFv@WEYHLrV2M=sm%Ddz7&F^vomIu;TI+^_l)u(s z76MHBS{L3A-Fs&rNZ>!827{3iXN5td@Gr+KDlA(fk&!hI^L&!zj{nl&Cf^jA4jXTO z&0v8<=~JSbNE6f=1I*CfHn1iM%#|gCIhPZdb0g_m5pkzSSN*Xb;b_Yenn6*YiAR#6 zbhL9{1DfA5+6vN0lIMp6M!r@D$c>Gk5(hQ2*u&LaGltJ+)X_D+!X}5@YrPHNV4ff5 z4)%806=Ubqu;)&4;V@uepO2QWE8Hj9uXVjf7 zc)MkdCyBmrwR>6J6zmaSPCh~t$sBV<0=v|yr+RVe)K?(EHBon?M!Z5JhC-=~9J5FO_0zBg^cvjGXItKj zn_j}ce#cdY{y8NO)9LN%R0i6Ale1Qr12mUUo3$UvZ#viqlFet-#Hb3Xr=i_nvUUui z5o~Mec<~E?*gSI&%$uoub<2^Bt$R+c`~xTR@|4R-Bn*_2-avKBz_kKp<;fD%?HdCZ z3997$rb_slD;XFFIxxQv7xa?#b1X4zOL?|m;8huO5IaU5+rRThL6>WPAko&`&#KhX zeC8en0q-8L3of@;dIcn?QS*I79MnnIev`*<&j@x#iCFGypqggCfpixl&ef3-KeM*a zZXbO#b8f7vtp8cwgMT!4ujIQFM?Fp1u7b^!fFESMYMB`8>C-OKR^8cgNVeq6UU)1^ zT6T*tbu+Oq@+DJi7oie=EDZHNvkvWPA0Rlh<#WFwBUxIHa*>Z@)YBD6L+0Ee65^kp zwz*4k4AY@;4vUWS-GLR!!DUO9UJ_Z#)UYV7yZhUsm`RSKR&<%=R`bqUHj%O1iQt}V zR-P>SQFaC2vX09vS7+22^{LmXvU?LPLz2EG$z#v@MidbEZ}OIZkxinRYjrR%04TNu zawNZki{zd$u4TornaHa}OAWfBen+yRyDKls_mqg`7&WHpFJQ;eK`Xz4gWZv=1($Vm z*AB^&IO1jVLRqz>^5!{b-Qlw1m${{mXY#eTyX>N!nY~=lJF^~Yb(FX8#Y^IfnfsQ( zB+Wz3F-j{E8*XKPG)&0%(O;&clg8-9nEMSkotm?pf%nNOU_KUxj9i1!cDZlo!DXE> zA@uQ**m=tUVm1%PBA0{Mqh<|QdM27-(F~<)ig8BJ6nW-Q0r#$=cIc2=QM}lrt47R? zL^r$IA(%kys(#uE*jcBMg#@@>mIIKrZ<;fZ#ki$Sv0lZ0Iy1MsD&RmCS?>e4*f|z^ z`U)7GV^+X~Tmvm-FNu)UDf)8D3@)V%>QNeYy~*t+`b>Q?Eap*jLl1~+C?$${GFQE# zh5${=F{;P112_wo<&d*R=Fmu`!6^veRKKIz>zX(Rxe`WfzK>2zfMNMGmQbQmSN-A? zBIlUL{YWi;wsIsCwB{HHv-G!F!+1`6)(oEX4%J%=X!hK;4_!TUk(RE=Glx!2=||1l z)u{DYOB9**7*U6;wbCn8SSr85U^cns`(RvL(t^Ydfm7+j(_F#1;`~pm?o+Dz0z&JM#zo8Y&HJBG2jQ3Yu|P zDD&GbBbvUOJX5ZpOls?-syPwHBu-;lC@YE`+1;8o$&^{e6}XqWsxc&c>o-hyHbRckTIIv< zh*q_Kj^{=+fA1=-xb+=8&ri$|IRhA({v81;ok?rV0)3D+EGBwAdh<;MUOwnvfr>^% zDS<*vnkRUD$nNI-gS8G_X3ct4f|T*Z^-G>9-xPuHhkF4eSSz*q9f&oNq?F9}DRB-f zo;k7Q9HUaPtqsfR7S1th{<1b{-8dP2XTh?6Em_^M?w4n?0%%S2XpaS=QdB7KpB(}( zqY+p|ptbUSc0NYmb32?xufY!4nj9*timK+6C1FM9DcR3E3$E6BSI>Lomvc3L*u9W( z%@(7j6F5Wu4kxGCeAYuWx^4esa|h=65fFmysrNZYjdY$Y+}zrWA%*D7bsx7^e=fc^XF_5YXRv8knkNLFp=z*PeP*S04GX+N10`ny>6c z_C05_w9BSCYyR*%$l%lJl=#+_v%cx(MUfcSoAQ3Tx5{?KOqw~pO()ScJ>=~=e_#dp z(ibSboJ}DQFFEIi}K z81c-=_BN{S(iZcr0Xy@{VR=&%lE0%%N?P9bfaa)m8Z~~#*PN@va9L7Q46HCqzGi?` zL#0tl^fFDYj9W#Jy5|NioJ=X3Zk?B`9&nvrU+GC;B>T|!QlE2aggo_6Q0DA^K|YvG z6!+De@=Knt{672=$g~i&C8X~#oZXdGU5Fzdjz zPaxYw9M{xN(?#%B>m@d?*QSiX>B;aqQ^Z3)T1>ydI(XjTG1~VsC*w1ZpMc( za=0Z?+}C{Tn}V4mdqQs$L`Cm^Yh?;^)=_SgT9J&ylHi@pT{Y=e)9W_Nj%5whCfNJz zy)zgk(&l51iXNv9QI`WORqKWT;z%2I1Ip5hs>Uo@kt7R+(*K8qd5)32%(^MvWJSz+ z%)$Z7dt1d0g^<64FW{Q`fM4=Vv=)FDSaj-mU4G7tu88cbFYGY~zQO!|3Jk?}=CkxZ z6|uV2`%u*vA-0U_LWH5S%QLq@3%BkabvYRg-!@Um z^z^okoz|xWNqsZFaEz`nq_sMH8KLr&fQh!fgEM>2jP$mPF=Y;U+fhnnE@x0$G|%>S z=*E@##_gE2$Vd%)tSqj7w5txNr~amgs+i1YZ9Iu)6xUho(mX#T?D*VodIkyf)moo8 zR1(p?@i9K^Dzp`Ia&vDd_Qba1&lLku?NNMwSFxm+8woI7-7-5Woh9SfUuuamZi!=b z#J2Ny_6LI2lpL3}XCN5(_nu4zT{kM7tMFgfSbpk6b7mbQbQ;nU7B3l^`^ z%3_A_@pT$WJ|G~R9%;CIn(mE?ENccg)ja8a$o->2&!?#(>Av!!KTVSnCvVYLQ&M(|!!GOG3K4&DXOwX&`;PyJZZ-r2S6 zIs42(4K_O6C38Iz(LthwBhP{gfoAeF##-k& zxoP^FXHLz~a^`I&V{`U>>Y~?ADCf4Rw0*YZG4EwLzzAtSU3UCFIlmd>(pp9KCEs+u z!pgQpleb%cY8TkNTfeFH+h^KUJMyY#m(+(*fG5{ro^es-o6e)cvS&SdOZKc++`;YlK67A7o%`4&%PHCVreF!(VQmM5oO{3F4(yJLJ7}CfGWk2QyBWXU1(naX z-?UTm8R}{4pw>!zXPv!io`rQ$s*!83VnOO1zaHR!f&H}e#TTx*DP!r{<$as5Wu|r! z445*uq5n7%uNGybMX4zX435ZmqA_QBYQ zF58-cqS>xqJNR>##7eRFbUv%^qtZ%JylxqP5_RZ_1$Stm7pKW{r1?kUG6n-hST;J zC1Kg+SHK`SXZ8h@U~~hn?}LkR&F+?%fv!i|E+mgBvzLbqi>Pz{j$M$J>fu(HG6s3@ zHN}GKY22(iZ3?h;Rb6?4^?*IompQb5ZW8y%-+8kW^K5IEpgO3=D2?q}QUO|op{Wz$ z*}Jk%{RZOhT!S}nH*Hvc9?0n{=ce8)al{8IT*c}==G7g04pirBW-pJ)tovS&={hp| za&V7vQq~OkW|t*3l6=;d@kAZ6R0`%AAaOntQ*z9h0Ml<&t4Uwyu40}vBg?UWsQ%1& zJdh3spgh6+A7x#&1|WNl>Ob(HH)rV~H+4^c;gFkZPIE@5o;11N&=M?}$B;z8B9_`; zKI@TLkps|9Zm8ZAHm~_dj}>oT+hU+Fb9!wfSs}nvzaw}IEt?V-M%KpaIi@>Oo)U=} zl~eV!T~%h=Vv^1uwEwPYUf(i*JD0N0&kmb@q^@E^2JMJGCW)23z2Rr0YxSMgY z1Jn1J{?FkstQmLF=MPIr-lqrKzpWbA(%vUn{ZDsLIZjkv=}nQmu%FfHoKJloa)+F% zqY~kDAUZ-bkWU*xhtwh1!H@JcPko>orwWC_tSNg(H!>6*rCrVoe)5cel)%~#xJk?! zAEhpHr4Lx~jGEe2V1wHK)O||wd}Jn4^bN+W?#2_=1hA&&cAegM;!~n_Ikng+NYT{; z99MUJ-53&)y6@E4K1cVtjA)WbLG>7DhCC&z#39M@eQto!y>5e{Ba!p^RJt4Un-0WU zzYnkRmiwA#_Bi|d(4yUcZ5^%@0eATr(zGHaxqEecvghlYS~T3GA0&;40xZ4G8G{^< z)9y0_Gx0o<3q=Oe+ciKBuo8i~Wr@?$?qy)-;PTVs04!Y25Rv=+D z9NDS*9ZH!lO$o;_Bd7Xk!y)z|a$?|zW%edf^f z!A$2E0HVYeof7X;Vkb#(iWKms*dk|5CuK&Bo`PA( zF;H$FcJHh>DsSh1Q_<`t5niX|1XZoMp;GI<^5?vxvPm7k-0o9y{vv|Xel9h|px?=y z5l{=($DEr!t6=CgYZBEbDbcSjk<2FpNvUm(0Tq7rSy0luCl9S~?}s=Ni7qnvJ}Vl) zjPIPv%9Q8k+?GN3)Dq-pxdsYP_Kct_#n$1u$FMpxFLTO&v3S>-!6w6!G01bnfttvK zb5r%587LB3Ip1{i4YI=W+^~-(_DiN*(}sK+;FCA1_d!tGmFl{|JkInRkq!e@mQ79q za+>>K)XTi`Zamm^i4K%RU|IFkruUjim~;3tiCGvDh^<-!9MjD#a$-4XzNb?z2Ua$p zCSQ?Uyyy9UKo6ex9LkgCnmBbJIuZ+t1O0Ji{poos%&9k3{BybDEclnRCVAkEi0?Bb zuf1wXNzmd{6qJO$Q+E~#_;cBBB)Enu>Q17*qwwS;`!jiQ9+1Ks`-WB~c|3s3Y7LmS zQ`zLkP}p@hl8hW>>?%=mG;dW6F(i+*ZZnecz~6zGh(e zB%)CNAvIWqe#<{rI^LJhkls$Ro1{vd$I|P;iu%_Ne6gC-5%wTye zt>3V`y(@Y=STOJ(q~-wgKn%YF*hA8ET zvI95?{+|ysa4%J_3$@#$ydyOQxXZojz>FECf2sMVhaRvMZ5=h@cy{t@AL5zig&G4* z(6*S)Gizo4M`hFP20p1nE_AO|YsY%X9BYEx*xt<iSE0514hynkc0;0^TPeXZ61EJCpX`AAe)FH_G>M|7Fi0b&7OVYD>MZ zl_=-?*dFq+wQe%+85 z#@suDi@u`!@-@0N_O2SWxs@$928^m$8%Q8miXUl6bX%{R>H3f^Ni7B_rR*@z&qE)M zep53O_J62v`b6NEmJs0NE0I?!pwO=sKN1OxFMXyj9M>5Sv8g3VmztZ_Z*ra~!T(lx z3b?oxYhCI$j21G_`Lxkd=}gHkQjv3`d2f~Dmqw8pO6%#06<{t5lQC+}E6YOy)>09` zA-O9os9B>6xThZsJ33+_Ic5~V<|&!R56U=dte!R`eK#^kkMtXrTVn&xFE_9H?WRPt z3)%ddfij7+V&1w`3XD}`n*>m)zYo9<<0XGbucaf;kH#u{VKn^?-qynR4#^ccLj4Y! z(SK`k11WaC>vfSg)2bk_-;`&R$azoG$EI@cBz%nYOGucIsSj2d_{tD^+BR~Y`KHP{ zGX8euGkK*P<5^XKq#gx$zcmFeH%)r$X`6n#X~zRoxPo%ldIq8C&8OkQ&4?zXF!cVO zV^j}RCdK=J9i@K?tE@#~?!=urSQuJAu73!3O?z}7l#996`vlIH_s=e0Qdk1NGx|pK z(-yUlxqFdLB8INj!I{t=KUAFj=~`p>b531KMmxPc+d`1ZRVncFdY_eDCV5|>X!Cav z$z((Z$N`=&SMI z0}|DGl&`59aE@_fRHr>N7$DvruIfV9^ z&K1rf_nQXS!t41vCqz_zIpkF^+coPi{bbXI6;O5T`f1AO^QPsTK995lzy%(?-*h(S z74+OjuAugtY>hN+ol~wEHibGr_ za9I_6kDCpj3{502q07?o`Z_9+F8dmM2#a#gKurvSikjQaF{uhMCthSdJxUhE6I)6> zP38`RVoUDXox<-tM^Glm;L5Bnjm9V;FBCk9oP5SdheY*%{?7Kn6IYE6S$~@A#y`~} zqn`G7`lPw5oJH)*Ic7pJP}=gQE=Sm|#;6^T97>5TpV>>k)C>4G#|UI)Ob8#DOjDjL zT)>JB@@eo@eSV}!9~s}V;YFNNA9&B~8va1Did#PS+o&}zJd!c+DIaEVV9-j<2OTKZ zSZ}I122GX{vAn{=iiWWHGJgXl33zc*^J$Qay*i*XdsSHKDZ&v?pB9mgbD!%bFqd_^ zo+fiw?1dya57Qb%TLF_>_M1T3W6ua69*`IFzt#ZG4&U7v9eoA! zX=ocVbBC*DgdK8>8$GQ~#b(XPjO1a}_9Znrx+!Uq{GC(9TaM9E>VH+3Mr^w{M>3wM zFCMQtPp}Yy;-H!VM!lnY9QYmJ)~eebe7|xmxz>OlD*y6#c*tp6x)V^&=ht2iVe*`{ zs-<^p*wMMRu!d;MrR)nSJ0yIW+*SPGy(&|U8R_!;rt7MJA$5qJwuyi9G?ko%Y1A4? zoVsskjdai^)LJv}kAJEW@U#bd<=k(ZK11mt3&*_A^cU2;0|VvP-e#?%S^{yCnG_@o z_^@)_c)M!+>rHn$r1g&Q!MiG4)Ga^X$s$`-pLJ%2{2S98;8NhM`U2C-F-k;=)q80Y7Tl`@}3^PRQh?}LRe?Os&$ceY(V zjfIkNu@P$RxC^cKfb7qw4aT(G2bz2znKRM>gO5@7sa8U6raW0n3 zz)qBFAO$w3CP$Fl70MzWu*az>fL#RiQd4L!Dxz4kR(}eCIkhD!Tyk|3RApD)2UqvT zG0CT4P0fs_LPf~Z+;6WF!%MyoI1;FL{f_F!Yi1(v@B&gMIR=|s#t-gq`Sq$58B{UP zS7y3~WXii9mIBf*-)HhW=}k#gKj*4ye%xn4g7mjZq&&-72mF;q$aTYtHf0>?KC6bv z7}qEt$A9ouD++-JR#_6XeOeHu1o2q*8sk3!FfQsI+`8&GEWLEyZUA92FMlNhJQ?G9z>87xHAbSiEmZ=^<(vU*En4P$ zn)l4wB$w&UwN+!pFC?W?!bnStSeA?D*iV~rjpr$Ws#((GmnqN%J<5?Kcvswmd%yPc+%d-;tC~TUh}vGa$c@hBU}c@@d-*tT83d zV&;$me(rp*8pCzR5u1{6ndJ;rtAC)>t1+l9(AK3yQDkOC_`s4jdFEE!!igt;s1;GT zl)pn8^oFSGf(3A9=Npx3UUmliL}xX!T_7(UC+V?v8t!3Jby_}CCv&{ z3brQqsU@ECX<}UIZ%d6S=E-{jWl(lPGy_&ZTXqK%vcH^SaQUg4o5~aD`IO)r%&e6X zPmXn-Iq=A?`F@~}Pfqi3pwQk_ zZ z7G(NlJnNi-3STi|)eKncs?k!S4`JR}PZ5XgWDTi>S*uqRVJQ$`{mxD9JuxLT{DpUx zW9A!*&6KQ?Dg8S;>!tMQ^M;kVpT?l*+JD(wxx>;`L(&yUx}T2qsef4ukS6QBgq0gT zD|&f=F0|Zc+HtQ%!sMvg;fu6|-`tz}XTJ#KH<}&9xSijsewFaYtFf|{$ zMLH?JDUq`Cd>VF@)H_c-@3ZR{@*S1ksl}ckdwb?wN#2^0)eOW4G*wRtuzO~$1a7rF z$*(YaFlAMY_A-z#xqk-ix@&*AfsyHTgO5ZrP_veCWmu(Tg_6lJh|iF})R+;A&YY`% z{$TSBiB`q=w2}K*Q}WgmCeNIpnAWj5hEblGF7zenNAEdCMDxS@AV^9d18jtj&o8Hn z9)h%f2j^Ae>;}o(yEW{r*I?ot^hkMk%v(YN_hzp3tZ!dh0e_+wR8{VH@%YXNJk`oS z(n=%2`X0Q%TGYbTB_C0S|vlq=|J zV>BsZ(RtW=7Xtm^lxcFVi3M% z-67&lwJ)g;^gMy1s#z-(>5R?ua04gW(e>B8JH`o7vVWPY<5BlLXP~zvYO9*ts4Hlz z<~+G(Ta05ud%Nd}%f#{iC`_YP&DwxVY38+6AjSvwX=Vw_*do48;(gP{*fQ-A~u zz?Cl}Bd-*!^fiesU#A{VfkY((+&{^)=#f=70FXLqMkNV zMrmT8H#cVLb| zPk+=mlYiE>sKyAgiP5G+OemxKDszD*>ONJI`IJP?r=4JFsg);APTI;Alv$Hc1M`06 zUH_8*k&vw!Xn-VPQ4+AuBXMbr9hDlnItb{Ftdr1M3`9S*%PjYv5$Bf*3XLmrZX@@e zdS}Kt->aiceMyV>HILpM{X6Yoztk>ZY3_KWCwQXrX@inE z?*;x(vsh9`wpHE>8&G{~WuO|=D>VZkZ<{_P@@84__R`q|S5}QVT(ya>lHL|h%zw33 z*k_a0(@xQ<)_k_8vX~rm?{35cP>;1c*WjG_X8kmLVChl5VCq#P#0=0?gL$7HB<)Qx zLU`4s`Q(MPH>;b8L?_YORin?fUjF%qdVfF>A#5@E<*v|{xet)kBfu$ZLxrar<=RzR9DKM- zNV?Cekgk3oSz964Ygd&Xg+=9{*6t+%x9l-Ww-Nz?-fSe>YWK>qG;4!Y`G$;(Lm z0kDh8x*oGV5bW3cppDI*-OMd$!^D`4T1k-hdKyC!bTB1i-kArKI7BFsn%rfAf2N)$ zV*{9$5*|i%f0JYyD3JV}5r5O|Tjnitn$eZFbJZ5{8zu{mD(5ENoB1DOM(eX2b9Nt_ z0Y1AenJ+;vqrqq17&;U-i{)D%LPQufgXw_K-%BDT{>s|ex5Ut#6-btCsQG-_Ai~Yt zc^34}X!v{dAx!L-0`_5|)bFsbxs)kU@0K~&LEq>K%rR;^5^eIv;cg%Uct2B3^%V>Hpe{CpXFCLo*x)p1#a2i zse2)>6uIQ@AaqEq;akU%rET(KeQp`IRBR?ZnqT1%L&+HNAVX;n?5#DcJ}xzD2@dUD zQZlTX)bXx4RPi~6JJ(uF$Hm59zfb*BGAc#FKFCwAAx$#?xqmU`3Q8kQmr+n#_8SQ+ zt}$caFj*ZG+M^DdeFC;3p>Kms~aJ5lAOCbV@*MongR z7h@^Qmt=kpj(?d`UHe*aa)5Da4UmR+gjQ{b^OLJ{Bg-foD_+VozbQB3@@WhfmmDK2 z!mF%Vvo)IMM;A}#PCrebL_?q2v#$I=g5xc4?MiKe2?K*XI+6P1y;@; zgWa-EFaUOU-%%arcXC&0eyp~o|j5`g8_^eC6XDxCIcaNh^z?cRlO;c-I{jq^xpYR`94DK z)49~sD1SJlA1N7}aYsrf#cM5DA@p-~Fix$B5}kB|oO{+<=RPtUE6RB99!Nui8mDGG zW1~-A4{$#GA!YAOi;fMCyh{Xxj*Q}nxIfUs)C^$EUYX;cfGQzda*T{X>uXi#jhP$G zI`1E5ZDVIfdRjQunF}RR;gT!5&?0F?%j2lj%YU7?$UJ0())>V0P1150Kr*Z^+yI@_QG zK$7)+<056F6$UkBZfSE}n_`CV!hd#@ zV?>|v2gAXorW66HM0Shj3;W@pjmW3?WGp2G=*&1D9Ec>5BAZ#8~Fr}IWbvG zv4<*~dfHQMcUq8G6+yX5yJ+b5y!74~`!GG%8F(LOP0j$^KC@%9o_UQ6Pzg@^m$j}+ zT{t9HR4Aa)+%W45hg_Y(1eGY!nScA!ebh)ka1hOmr0l~EbcJ6zv25s6KXjd(@i5)` z%ju84^eKS`x@TNjq56lcA_+Rvt-jpCFUe?;!jtDaS$a{uVxh>huwZ&k&XL*6G{HLrgs5@!C0EkZVn7AG~*Iy1dfhYU+K+2rOGIcjp;%p+ftv9x(bX@8Xdf|x%g zlIx~Y-7%@}vtcLCjDWt9D3Px@M!jVE!QwPRo&7ub^fG!pZ#XEj+Kc4Xl?}7>?Uvb> zc}F>t_)$m`?o?U<453CUDS_fm8SKqT% z+`c59VrIJBvnEn`77E4Oy?;7qtjWJKA8$$A+*M!+ng`abkCVldd*@Jl(>Ifnr86T7 zGk7GIvVKSK_?fstxSS z-~1hjf!+r?$#HaYjP9e!a2z<85qC+iz@2^JZr1NmyqC0U z7Ox|kmSe8MNVyZ`OK_a!7`-|Z9ms%$VImf{MX1*S-_5IA6yCIRu&Zq4_ExB&5UG8DaG5Wc--jSZWC+oekYT%~) z9WBtIWa@V`R?%4`B?HNv`+%A1rpqyiv0MA|z_vd1ZznEe8w&{0e#vhN@Y2k_So7?I zJi&;HJIljiQGeN;H__5wyCB@yO97*Zy@SHGY9OEeAW z+Y|)M{9>{yJ1a9X4o^IR;3dDDVCOqMqjkn(lfI_Hdw&VFTpi(}Et$I3MRi|BN=R^V zNav1b&t+hsefRrUA5I33i)f4;OHFv8vqAuHfnma3Nu~&}SbmeWf9&au~ zJ`JgC#>K=rAqsQ%ZVHamd*?dC8s>Yp!x2vXwvD;vitb|T_Z)*H5lFv&k4hS)&?!OH zl77~@JAZU-LGE&)uiS6w#P{^)RvZI!vPZ3;1kI^L;(E>#j976>k8(XeYOZs22KQOp zox8H@_*z47$$Luz)b%eve>yqJQ95{K|->>OGet_Kc4r2iJct&w}vI z)^@M2wf^kTn=M)1ufz?GzQPRbd>X)IM$B|j{=z0lDdUHzFGs>A z&VRY#3sBKiGk|hyq=o(u@GhlC^(F@kNQvGZegCM$o_vOy0g1qSOFl}6QzGpD#7X!I{d@F4Pc5c?4+C9};k9W{UVpz-y|rj?N#B8uGCJg_CRaNB3s{eL=l z;ztZJGbtO;`kaVDSn_F3wD1Pvg*3Z<4@vjO*k(3OM$AZ*qvu-B`)$wLS*{)xVp%mL z?=x%VH*f}>$7s)g z{d$Zvlj81t8aAx-kT(r2#1?AI2!G~fu3*!0c*__*KNBrz?huUC7-I818(y6JK5C#k z)3psI>DGxmLp7~IX+WIJIfKEm*85smx#PWJd_&3C@4?HqW}Hu5tZMLFYj`o)p?cae zim~%O2eT$)>#+VXr#)r>WmCK89H^KyXYhHP8Tr{vF}6cBZGZ2OW7mv6 z@5bZ6snow`w6@RR!~ao7SaU<{*fnZ{(hr&-$EZzeZF!y`19|4qpx=65lR$RXd-w}S z-;Jt#u3iJc6_!;#4Q?YjAhwHr(3YKMMjc&oq`HuDYk^EJ=VlT<+dfK4sPk!ZHnDL#wMWUmOr`o-{ zPO~;by@wIKrwt45<9W4rc1@JGte?Yh!~Mw_Jd{3WoKH_`y{Gd%qakJH0e4WtJuz9J z5$w@Ar&KT2?m9oCvO)`pTAe4JkXL?fE!K{V^QmI7rc*vm|Hj@sa(}*i`WP7eZ{3}b z1Pr8Zbm)9dG~YD?4j`CYO6ZV2b5gN9)Epy&nwWZZf+9aXx9!#VDv>-ru5%xdT$!h3 z4L=}NYi^^SH?3&g2Q2Sg1D#^vGxBLC^4ffl!c+uBHHI&P^EM@ei9Jt=e(zttoU9CQ zGoMD2_xC}1)m@LBcz;(@?rTV?t-mSn}&x{T7wYvtJHMgBUXlroC7@8jPKB{lB(stk3;iE70!lJlLv^f-_M<*vdEC+}NNJ4J#s>b{@qGTTBqM{BLrVk8oa`5w6O zj32;;NZ8~r6(YX%PP}II3u(VyA^~j)Y0cMF3hXfL4}bb;>eMq!x?kJ7z3TniHO8*r z1N3^E(+?Kic|d{3x*fQmr3hOB15vvQo`LJwfvI3~_kq*weX^y89EZ>8|Bzvn+u(u;Uam<0wt~WcV@iR4rV#yl^v1TAK zCBV}XAe~${^b6h1?m)@8_3EJc0pO|ka3p{*Qh%byTt+Ysfwb=bLo$Mp`Lt8uG&Kdh z7!$w7z_ZJXq{N3yYhBBR>B>4v9u6jqvJVba3OMNUJ&HWj&pO!Gd+(50jcK3ydAl_` z-XZ;@j=g3uN_p}IR8Gq~OHIMBYfSwyEaI#T($M17oo7fC@~5UyQl?}kXMKSk<(FGs zKYx9jt#IaP9~|p?6G^J~fHyTd;{Ym=)56K|YF#y{SXXM_isY2J#AgCVwTav(|hv4`?lN46mRq6x3&|%N!$4o_JVM zEMU;IDUJYe;JAJu(7oA{UR55lDQM#xtN6IfHXTRhhpBD_ZwAJI?jqe(-S~ zFeQ1TE0%F*D`TMw+Yi=kg6rYsjrQ$l#8K*3| zLgXAHfRL3z2;Y&LEdX*J76e2Y@jF{>aQu28>hnH^EH(=%*!>Gt;k!n$B$9|8_O@Dpn-p8Xc z+qxX#B+D;{scTQaTk@wFz zofFM)!Z3*~)T|X<;M7ZrKGOZQS2lFkj-5CL@X^=P1iWtXTWF5SSMaOHgTR37f^F9o+oyozR{6oHfD}9 zrAhp~=Efw~W*{Yy*~!EKOYtS!cgjh0MCQCs4PkP1uIr6LD`s%rUTozpB_rTmzvsFQ z?z37^x&;)ppLTwU30-nLE}ERdg*&O%%{~Niu5)_bbzn`KoPR{i?%IhYY_41#?G9bS zH8{7FUIQJ- z(|*(063cZyZ9rr)(y01W*yXAfr9zs$UC4oV*kjb(Wh9Gzf@Utq=!(-ZNL))0g}DV*ZbS4W?)?v#AJn1dN@h34Scr$*8fXMXm&(Uw`s z$zRa}DNnFKJ@|308|+!*yf5u~uqNb~{R@xTHJwU*bARt(g~lA7PaAOIe2-nw^=57b z6{ER2B#n>1WcudQt~WcjB*-1Dc1oCH=}}%tBlsUV zMlE*RJHmf+#x3!lVeQTpT{Qg2c(40PB|y$v+ln)B(H9bxu95>?QF)Rl3vGkyiu$Fi zm_x?nuTk2a2-b_Yi@Ktowqf1MnD>P~xO>T68-KRJjDnKrz1Hu!l+)%;RF~7$?Z~}! z-%0IHvLq+7VhCLp(o)5ncVv~%wd)_5wZ0efDt*vv-Ly}+_sw)jFYKvD`He?^AITqe zv-O@shqa!yWayF%j$#y(EL1-2m|#ara>CWLhCMZP&#cv@utKkgd>TncajsK_BYhc? z_kY%Uhr_LrOupw}2jurr$kQxuGB4BIYrr5~6SvOI!Z4GX;u7d<9de2LCngK8iA|NW zzSK7K{X^0fVt9q`oR)vTI@3+4C}Z9v_)F@hB|$P;9x};1;UmfS$lMiIi!tB~wGT*W zm(tfHDn;s)m@?kU$`B4ov+I-SN?kf+NPiya)9d%}+8$+77$X8$_ydxydk>JHWT~vx zkm&ajyNU!Rs&ohm>!9vn64Vt{)hukwtFDXzDaQG6#kk- zKB=;oy1v{+vf@T3d8i2q?LvY$@65UJ^p?7RjCtMVQ0r^+=d!1|G58#czlsEwpnt0M zNsiCid-Mf~S-CcB0h-cO4w+;$8V^k|BoKwUdv)>@j;LQcx}27e?r9?En`>35Y5Xm18!OOoH4xW${h{~G(+53B%110Us4iPnH6Cg5)6SoH+ZqiCKv7-?N@$n?(teUVo#I*FUw&_FbSk4Cqa8( zduJ5Z^@@Ux>{Yj`d~d+g^2`lZ_tq{NLL*$t8R(o|kznsZ=Ti~%A<>g&&8J=Owb%N? z+uY6?Gb@NMT(q8~z{kDgm7M_g=hGx2`(Bvm!HAM$#9><>aB&i)V{US|m4DYHxdxaz z-!niz`Q`qVUcbgjMDAb4Om3%q&m!(qQ4cqntVkgWNj~^g!x|*P9#|1t65W}q_GL)8 zCHZ|8Ej|nN%B8mB3&BdFt$b@2RJ>>TCB`gn^sQD@a!##!N{&0W*OH(?646Tu?NVqH z7~-)>d&~;EpF45ermSo8G=Cf&trNke0i$znFeO#j=4tNJiieO4GV9z`iUGHZCr&1I z&(0}O~sTl7~W)7b48)Nr@Tu*PIaZpuMGo_!?D&)m?RNvW+19u zEL9{9Lq&05cX0hxPJ%?8cvY2=;3+Al2NI3x@~$5eEzauqNPnn7&!=RDHmtL)eK8X$ z*P1sqr%nVC>i$`S=UZYkzqZ&{*8Ur_!P({a8Ff>I{W9j9l8>0g?OeIgAyJu{Ye4b6 zs#Ef$`N0cEY^|uC;hdwCNHZ1A!P6j_3#mjRdzl_TNi%2}vucLYzem6~V>R4}*HK7J zPgC9Ar$lzFBY$S9hV7AOt$}NME0n?DzQ(|lJLCtScT0A7)PBz;t5|j-@=ux7+*MSV z4wp6SS*#}GA=0;ZNsbyrvZs$>4AfrT+uFjxn5C}L(+Scp-=lP^aM6<>5*sO>2DX8l zx}FAAc}pt*HQsH?+nMCCRh^#y9J_I!Q|&&^zJHLXyMG*VZmJX>`Q_G)gWSJ#`@mD@ z)5Na})ne9|hKet3x^E*rmOEs#)`c=K2AbfVdsO0~qaJXeqM$wIV}7{?yPBo+8|8j< z+vumMdT2{%7c(pj6C31&Sj#ooF>_}O66yYv`&?hab&6m=B@+Zf&ic?bylP327OA<; zNEV5$n1A}fm8oQ>W^mG#RfVO{7wjl~43by&O)`dx>(vqbLJXZV&@Vb;X7|yPyzwu!%1fNcl}cAolbDv1iFU=M3~(O13iZfmx^u zWfClW>2E7@GV6K|gIIT$in4Ka(K*!b(VbmkcYl3_A%S*}ub^ACZS_SWdR+bw!<%_o zdsHGt$E*6<4{BKvN6oZGT~ik~Dha&D_^dHxWu`9x=#_Xp;D*rTrBq>5HAKBLO7|R&)E|6_geO(0tB?<3i5_ij$EnE>m~sGiDUL z<$qekr9n>A++>}z?~A9M0dlAjgc*Pkx1o>dT0x zM!HQ&q(^vS{GIVjmz;ab4(5 zlJ(K?5PaD$soGitjn_24NeOIG>Ua&5pMRgiMhvoBtQNW7R7del>ODd=T!WO1hQDPW z0E?*+>ExU8SN&bI|=}sqaU!hkNXd+o3L6t`b;j%hO zG&#swuj)1P&cZ}b?ex=5-Q#num6+m3t<_nz^Uj<0fx29qof?B8UhFg_(6wnFIDe$b z>GI2MxIEYVJ)0W(s(543I47BBV(ZYcc^Y>Zz&@w@CX$qzZ&!_8HIZfjFP4$*$9_>f zso&tMTpG1*Dt26)DVcz%TA~L;&l+CU20wPf0S4<*Xk zHQdu2tiELw-Q6>OEgvzVHLu^}%74V4TawYHxKMkTfW>_ZhfgwdCGy^emEvy3dqDT) z(Q5{7#y38<9J4-?*>|uB2_)6YVpZ|y(gu8keT}2Not*6xLo$B?vfAiT`0d=yTkK+MU zSTo>atZVLg$~rmLrcqn?O6_marq2G40_o(?_cZXC)H|wnCm_I_H3F+*u=g~ar5SUe zL2ey;a>>2UjMS5Sl8<<@JAY{9TsOCz>!fC_NN?}+Gb9-o!&akOrJuHn$JgDcHVZ*| z?p~N1#fmkz9}(YYN__8(hu8%QQ1i^`D|~Amg6zV#%lAMSryndtAPbf!Ytk7!?~>=F zlTJpmIH&4z^2eG{%a_A< z2(Fc5e4bu|5C0>hc_M7UTDf<`<2mE`9$@#(Vn6lDluD^FXr<(1Q-Wx<81=*sW}(;~ z1M5+IX~w|8R1F6S5BZr-W8CshYHkY-{fxs(i99eN`$3=`j<3JAaQhVS)J_ZFx+61L7k-Gq(%TqFg4wkB%^H`*Yb8YUKIBf3Rn^kMnas zi$x47+nt_%qpD$@19RQ><<DXOMh)!>S~=RSFojb zI2!ux8F79pCV$mfs($IUJhFS$goWe&$k-EtT84M6HDi$PT$-GOKT}^piL_H+`hWy( zy~hlml3GzQm-m`lSx*lslQq@=287w0zXw1>5VFRAXW&Fm$u6{UrbLBhMwqPH0P573 z$24hcn-X}Nj6n`$(V2H6Xds&_=cbFyJ0mhLO>DBBiGKxqK3Ui`w^7HRJ|F`9=}H^v zH8LOXej40uV$6(ru2oMfItvh$v4Gd0c1(YPnqWkh1*zAqtYXg%r^Gw=0p6FaG99=c z$*z2wEsqtsR&*>}T7yde**m4hhD14DK26xY_rVL!Jn`hO7bf(~_K~Pk==YqM8e5`D zI`cBTAAddP>jo6(6z9vc0Fm@+eK4{w{Y_!q1jcH0rUi&MXDx-GOGu7^m+qYibek;K zgOxy8S6Ozik5F_*bxCw3$XUxSbPb`daMn8a+h+mF%@vg|Y2@!q>DrvA7Vh?#UagL# zS>qrP%Bo{bjWmnH_Agad4Odz3kti1KY>5zUS${&RP8^0j^{_=#`ZBNORQ8c8x?=T6 zOqN8Xpir*$s*)x%t1qF}WIG=W%Gh&r?*RL^9S?p71d*!)zq4fxhvhE)8G3ucNM2?Net6#7uu-q0X z!GDh6IkRI}R&nU(uEM0I;yItTBCJVGuD9eTYXn~VimS5crck1-8bvWY_?iKKVNW|z z=L5lroEru5$;vHt|ILsgGWpQKE6)!wD(=gg8#_K3>^+SQo0WAWjHG_gE(n@u0a+Nf zuA0GhV_W7o1(aQ~YRRnx;Pl9+p(R-RJ%0j?8TWq;f|v9pUczOl=JGvGR__os?8(=j$0Z_@zf{bL$wEGH-=Ene3S^ymD8$&xK_2 zY11dWsT!dqrT4W|n;S0JUoh5 z$_!S~mDE*ldFNt98_W5W%da)Se?293l7)o1qHaKTw>}Sf766FmVp{ciFn@|CZbK3s z{Xnh(=D;)2GYV-yuX1iPUf)EuObTrwZ)*)^h400DiOLQiWahv$CVFUwm`}qw(lbyE zp&Y!%;H923rpl%LQtu4f^zJ^R9K_N^(Er9<$sskAbXPkfI)$3p)8>x$-eTO2&lo{RU3B6j1oX{tF_A2 z+13H3`&+fB`{`3=Je1>;E~BYc$Wv<^Y`qd z%R*`-pn$eVrN(aJ>$N(%)o7xe5(wI2mKSQ(vO6=Yg0N^YkDlxB~G0YT9`B!dd^MqzoVciyJagzGKHTk;I})i;*~7`Abn0He1YFxcRIOxlA$H z?et4@d%vxD&yi5^<$aL6y8`L`d;-_jsV5OX?xzjP`TTOCuz%UjK?N{VD0T1q>8{V% z;OLwyv|L|-XY|Rs>Nn3hyVaNhw!gdqH9LH48TF9)P(Gc%l=&uEP;-+OX+KN01V?VJ zsFG%(l6)Fgr!O-Y7_&U5>cquc^J$o46PfT9L;>ljF(Y4+5lybtTf#BNJRd?lDZz!+ z`@ljA{^S^Jvwx}m;pQdv@@%VP=_s|56g5bxLy%ZLGtP%cO;t?p0}{xmn)P^5-n8#G z6mR;p@6i)9eKYtWCU$Cs8Gfz^iMmWN($@O3Ra_Y)iFb%^JHg1Fj?s zUcu^dt)z^$PIT>CSUEco88hQ7&2zfQmba!@Q9Ng*lW;SjZ0=r_G|dZ&s9(G$&w`ro zGp)fl#wh`oTAfWgtIwQdIjnh((Q`5*C4eic6v}>MTaO~XdfHCOr`M(tJ#a$qH`$l9 zHMxNICx00-_#}!f^DIDkDN@V1U9hD&YZWe6amwOklMz32C#urM9Z~NQ+Nb+cvI&*< z3|R4rt_94au5t$G245K`A4G)B0;|0zJ1xH{d{uMYpcxuDf%-jC<+tAPsEzRqP|a?^VB*0+%dLg7F!BI z{Xm@s5zyP37&8(_tIon;kpT|RU&*z_~P%p0T{Mo*RbEtmT18gR0D3rH^Qz#!<=h&V2nx5l1r-lBm;r)#`YdHb^N^ za#mfk6uzKZO#~|j$;Xj#G59W=Q~9-@n>wRh1JK_qarm5V6+2VS`ZcI)^JxN1e4`vA zpK&*r^|!F;ryk- z9>Sfq2BU&KSq@Mg3Ge5QcavO+#AMZh&*ZG%Fgj^@!~H(t9dmA{4w8AY*yLwx7xk~r zrl3rtdtrehy+%n!%|JabPNS4aP9>w!F!0wtB^-=L#yT+=Yr|a^kt77^mjGPqi;@jvJA1 z;mO?Bi#oZqxHRDq_2?P+IepJDq2HM;cjAS`a`!I#dr4mgUG=R!BNDes?t_74%SaXi z2Em9tB}$j&U+T+gnzSUZhjJ=h<9~S;&_L~pEVXF*BIF&s&W|tqfd8{55=QMd&V*c1 zIU@;}`aK(rbK(N{WncJ1G!*>ot;Lw}&7P}yFD9G37Zf+%GAAKB=wOxA`PpWUR{m1T z+Kz=34wSR!$t9}n3 z@X`17&fiY&&}ZW$r|lv)#aONP$Uv=GKc~J%tTFWg_;=Us0-)c|{&Jj;DSa81(+kID z&TYj7-!o93m3WE|fXto|CXH28f98H09ZNHYZ;V_)?!*JsuWd2)KiL24_ne}JZFOQ` z(B3P@2rRcvZqg#yJ%&k|vwwy)TrwWQ%d>P9#ra?!>zXdS8J~OK7=RuyRy8;H#3R{A zK3ZXA7eEDsGT(jXIMp57K*+B*Yif#7O_aQ#0O()pnWUq?c`VoY)P6L6DHQP_`%Vco zYFesDEM1&?j&WlontRra1%5Nfh%cpnoAF8Dm&`F((6f?LU7e0`rGLeQM|CkPy)$b? zvZO}R$y5O8Ko-BaroPXtt2|z^nwyTLTJ5D|72D3WR#|?_yo_w4U{Q{N=hIoS-t&Zx zPkcPI&27%J;Kl+Xs&hIko9(_lSmp$La}AV(P}ns$1(qnZQUccUs#|7$K^pc>eBmI< zsG&Hp*OY#n!S))rfvM$o=4pSN0b9?E$In1a4rKkFN!4F6ap)YSH$<*AAMlkN9kY}) zI{12z{x&G2QUbEJ=Ne$?#Xpc^AR50sZPgz=Pq6Nqjnnf%L&pOAPdL89ylzkCguQ7k7o&D>l8I>v4 zj~pX%nzffRvgRve(Q>C^7^%h7(EMii-c@2cLc^&61Tkx^ZMLOVX+0~~)PauIsf0nVK$V76xc+^nh9 z+~;&t)12|qdD}-AvetiqSD=$-OOzJmif$OI(~h5qCy{xK8Qi~_NoQ?}=ghs^)?C-r z{`-suDbLU7N0}a&HFL7k4#CT&mrbn!Ubgm2=KWhwfEmTXkv8m%W=JQ`dd~qk*jns3 zRG{YfITa3PCC#iRKYLhCB%d=;h%;Egvu{ndvMQIFHOZdYq#1u-nsyE~W;EdL8~u8r z%1SMEA%yImc+KiA(xyO4aQ5E0@HA#dTBjO$=lnjGJW6YS87P>J{H3S#Y3?c+s4IQ5 z8RzfSXZyPJnynR;sTjphF$3W@MV7TXSUi#6)Gebf6**Adw98F&GOb$(TBJF3vUCg= z=F0b|&T8B({+H$^ z{T_@xd4iV*7QQ@L3o;>Qbk5+gKK&jHT4^KU(7b)}t|!r&yLRt_6-{`sW&kRD+j0h2 z3HH2cVGjmbN7`m2L({ z<=cX3dFpvN&y0(yh=gIvSx@V`Ic1@tMsvs7JJTt@kh=;iTKj;D<=iq0N1_va?zi_{ zU(%L5>BN8hJ-V)leAKLUUBMil68ZW>xh(^(mC;rbP3y`^!-@k;*R!T!)9Mrnch{%( z*C*wcSa&fOVecNJ&?u3m3zXZIxaj3Gx?rUChqi14ktiQMmMc0W=}9a?KXQ@v6;Q#y z6DPD_l9s~FG1?j?{$QDX>#V0;<_$x7&Kfb$a`b=PcI7WE!4%o|0;8{c59k6f{+4FtWfQ$O^hjXU<)p{DQi-e?YyCs$ft?w zW?g^vg5^yFtj18iOQNV2VVAQt(vDxHZ|8jw7^b$|-}G4OcvVZC`&b-pgnu<_?$^{O z_<-K;eQ@mX3~ALMa%&boors|~^UKM;oQc`i=;%2mK4j4+1v0vR&&hAhT=jx|TEq1k zGkPRuE@zS8=>7}Kg{v&%NUDO+VAPotg_VETtXZ!%o4x=sH)xj!c8nIbm*Sj9*sVP=y@{ZlYOg!9m^&SYk=FV6LlUje? z+azBQ;H#{&cu~D)5CCP}?y8nYWoVAkATYUf#4~}2^84_DwRp~_0c~e|XZS_WD`)VM zG)lCVIF?{|o-FvTC1a2)wp%canj88kNxhWtC6YsBeNpn6t6l-gfOYF>JPCo9l&GOd zyK0?g4JyjET=@&#Q=Pr_dG-0>FDQSP&ly}__`JOZ7BY9Qu(k|CJ&o-&^)FT0u;iV! zj?#wo-emz!s<{nGR(pS`vYlMr zIfm2JXAS{tv%s#yD@X>DRS58z^%x|tB{6e+da3->Auw}G;{7#Szjya|XLMZ8^-Gz= z$CvlGWfEt%B4+4VfSPKsfc$cr5-35c892h7E!XpfPR#v=>S9XkR^I_2s?-OYHqJ+` zs3bz?7ieT$ZnRSlMkNw0^h6|NbT}w zQUc+d`K&MbszSX`FK9^`)Kfqv!Ld7&hPG4vyy*wH;0vvF=v)% zJry*yMSMbUX8q54(Gz{oNsaB9|5>pD=n_)DhhK7L-QjvUrCE!xB5rau<FB2c*X9Y<|C=M6Ut3nBJL%wVAGy2w+ByMiR9q4kes}!U@tD7xUjdgk z_hB{o}je6kvZgeVt!{(>5noO1w;| zUap&}!z1td(Jx_5%$&|HbYiZ-TU;#j&gznIFyt?Fl{9;yG5#-S4K#RW_GN?CS~Jdv zVOsp4ZfBV`nTPy7Z(N9dg5SPrT2ENa^d2ayhD0}q+=-Z%walq~K+@c28fV~u=%;C} zoOiH_Vyz)kk1Bs_nA4_^kOrmA>PM#9!7xd3H1GWEM zkFjZ#+05nJav>H;4ZEmxYE7YZO>srdK<^s~vM&-b+LnJz&&(pIdztn}kNMorLH0?H}p|v`+sAzw5eV<{ct{E3|vLVJwACNGjYptPf z^%Okgm+la2%|QgSC%;{5O(H7QGq|uD_wTusuhsdX4ql9hn%l4e67>r7Do#=NDaq)! zo=>Bd6VU-{$tKQUdiQ%W{ssdAZC|^Wv(%p00GKQiDpgM`tRqkxGy8RxOYHEL7 zmw|sKa;?RETxYd9IQ&29A&VwrddTm?tm;nI*eUoQbpzr}zio-mP+g+iQ_fnm&^>c3 zx}*ErrTLKTz_#X@lg#3t)f&9)wky8^zO*?b=({eO&t&Pfr}W0l_e`Umc zGE3eiJ5#VZI-lIKUh#Qv@KjI2o3zUZ$b z)s|;lQFC|v#bu}Hp{&jU-G3(1VxJAl>=+3QUVgcGMN8K2k;%!}`mT#6mbF@gMXrCk z^|ey$FJA$Owkxi84%2JT-3w^N!)cN1>O{SRPLQs*S>+y@7+)|_a%<1v_4b49rxosq^@ zs#d;s)$u?+ou1wS`GwgwXRTT!ty`2Ml16293dkT5$Tb*sP8sioOn(a1*9>$alx1nj zdrP*LK`a3kf8;(BS9q(@s=3M7+_Qd;7k*#TzDCsoLsa_um{{wX<-uf)#WL4zI`yy5 z9go;u*-*{;jf*jFO_VTd6-!&X7LfAiT2td*l_H%lT^G@iG7j|>ZZUcP5U*>ZITe^pn;AV&|T_3Woz@;^C)`Ju64 zz6UXCvuSH5f%9ssS41=H7gCMhuX{Bz3Ar}mv+nt`ocVo${0J3F~YD*uK_5k zHZJvh)Z{brTk_u5vO^Aa5@&j$BoFpWK24=!T6PD&1njlOfD1!tv;?z!ep7zQ`Q<&p z_U}CPf1q)D#yZu?NL%Ia8RWU?H?ohgj^wO$>(nx*evj0*b!dr-mDDa9Hr3X>!^h|y zulY}Rb2!kb;VP*a2>5nha}=tBKIIsE4!v%p)n8hjh^<&@Jp+-`%pD%Pe$1`;cCE15 z7TZw-Cf}eqG`M5#kYnVXEBeLo9?eW^4Fq9je{)hIDAaR1gjdq5#@?tARqiT)1!=u{ zk2VH6N2Ek;Y(|f91@M2KIR;EM^D;=ppqO%Q2$dRpeBcYO2YH3cR)2GdYtJ#;8}tZfBg_v-jHH%nkS&%&kiOZtsKd+fygKFs)|_1lHdCsCEh ze>E7+QpaDSt(jFkE|{!DxshOXs;A)+Qms<^jYA1~Rp&Gk3F+VR{FChK16Ro z4C(oOBt^I^H3Rs>C1V>ZRTN>BMq>H9HOsP-LI#4*)p7sv>~jW_rbYP`=-2Li2D3r^ z=ZeZrsi~^>7{EnN$>-J;i8@`d((*Ju>5w&NjrN5Nm+wJRnDtC225uEvHD=g#e;K{5U0Fl zpcd(|)K##C-Ir8{H*K7A_iEa(e`HNDZoKkcueKk@X|*H#pYlQJcrC%&bW@X!;( zMDMxld(5VpcT1EtryqRIQbrlGI~DNh8(wo`-ZRQmGCC^d-f?LQ808ox{^?Df^M)fg zb;x`?zTAy?3A*3=iHu6C@0x)IA3zp3oKXy4dC&3DyP{WLA{J!s9c89hM$k{}cxu7w z_pA^iX+@uYXm@fum4Y|+i$s(wcNGbpP&43f-!ksP-n)yZI|^TFSn1MF&2y zPcVt9?|cup;LNq&0e|~;f0mznX08DEOnFJJ!L9>eMnUnFYMz^#kE9VQ#%Q{jr%|>K zps#)@P{||fF-`%|@Ji*}&L_UIcfAMY)zv!@*PfO=IfhG_@#_;|e_S(H4EpPLBD_xQ z5VwrtoD4p_O=1Q=`rG7LxL|?S%)aQv$d0eCEgqz$#8L0jQ3=?vC6HXTI&9lP&Yfd` z*^*u5QiavgW7xAN=Dd8G0;JUb(8>=NXO5wKGp2eurd_q9b39Wy*8ug+JtOGq-GC$N z%v}SUmmHthW3<^Wf4y^!qFsbyE=$Dh$lkPIEf9L$A8X&Db>&ZFUa;-^@ zK3U4d?Vg&O#-uVp2n^DjE$=o3cZsFV^ikY^IY}5VXNIeFO zE9(LAN8$!53q{v6DgJ)irrfyfUT9biDf7#T%c&l&6;%!*O_~x(*W}|89tA_pFNbar z1UsLGIW{8;f7h&XH#1!%*aPz{sE*oOlkl5z$-;mlgG)DVNf1S8P;S zGjusTU1fSfA#NG<&=JQSm|tNP#BY7D2_vPIri5MpL-?Harm8G$|7&A;XQdN~ubrA) zSu^tVTAgi>KBgAi7`LqtHZ`k>3WF+DhTQLAqh%!P;!SCgk#kdmlt`G1H`RR+my9z3 zD1X;oS_V2iPa~*D`}OLDFleQ|R{C=E$vOsOXlly?5k}&bFUcPy`t?gCwC2qJ7^B5Z z?hp&TW@O=V0g4pVdxTph=vwmHvI3T+ez&c147R0=>Ru=Ez~pVchTGQrTJ8{bBi}<) zq(^yOBHnHD$>~Wn)zdC^XQ9u4ROKNnUw<+>32FQiJ8?*wv5iEjeASzg$d*^tAM%~) zeyiJgNL~<0|Ni%ojIOq^ZY1!lr4vcuHp=@L5@X^tl0bA+JvxaPXt9wD$tUAgB!|B8 zanmAi)J>?o4-(YnRntYnXR0$tqSJYyDu)CURNPEMGA)JQ84|rs;{5!pq`Wo~*MD<) z{3M$$3%RQv@B*cGpzNeVi=*&|WG$pD396&Yys}Vdf6uW8PX5rGHjNDd;+@ zb<<3OQJfMSOP=AciSh&s3z(iqOL7bVV;Kfzv_R6gzm}jGyKzv zlN+NpwKcgOy-J~L*23rSV�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 delta 143066 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 z�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 z zw^%XOj_w;A?OKRhFYsTX01EnkCSvr>@EzHvjkj!n?^bvee=3%{1YdO4H&hR9-?HTs zcFJ}K%}vwr1Poas?b7h>vJ0IQiQn2Zd$q3mUPSv%y6F&qVv&AEUml%UxJrsmiZW+i zoF|ifKlWqz9IFP{-#g5RXt?JcFTv8{4-S^&eXf+(jeA)V_M>KVB;_auj3DCuD zc^%hRE?RGUtj;iJU#R9^spKiTN6wg->k6G|y^opCU_D7wcx#!(teni*HOnT`IWe14Z zZOEc8%F73$fVcDp0z$b3Kxk28J`hF-o+oP82OzZnCH#vh`N zuNR%``wE5hhsfaX7>qd>qB8vK zurK5;$}|8%4$<^MIR@Ys=I(>a34jPP&E}7uBWpk)`WzzAZP5P?FbIx2IY8|MK;$9M z-BEmjxG_2laCj@JDe1xC;gFQFZ`C a7Lrkp$^{@&;9k^E0K!d>?+?K}tzJ-G}`I&*2aO8 z3FUivh9DMp)B$JwM0!X&tAGN zh)p>PPc3h3lzpQI5ENZZ4L>N^e?yJV#Yy%7IQa&~0k7fNHTHho<1ha&IJ0=vu{$`a z&=X^f;{0#3Gmh_^>$Q>*;}^&MA^H6k(M!Q{{0lkmN!KqA#jldBe%2XVZt84NR&BN` zDwffzt`>AnDXVv!%#}E1d;s<4b-au#&Re|1l(hH+P)h>@6aWAK2mpsp2jW1y*F#lP zli2|vf5RXYh2Ks54-M}v(9P+ZmL+QT(x7)sD!g2yzW_}d%6Y5(ViUO97W6`HDj(-8NZEyYnB-3PBmV_nxtJ?Ue# z`6+%~Jv{YKjg{&CN&sTH6n(o)IN$+f)B>_&yOZ)Vxw~I45lacZipfn(r)!dC>2*fP zXj_g?uHk+MJhH4~A5G{CW8Dp-4hH|DoibCe79^9c{Ii@CapdaByy1B4qhN$i{{~RzB&pk&W|Lvwugr>v}FK%_k|8Lj>al@yR+Z;rN9E z7vA#d{)%ihKik=QcN)EJk$u8XK_^|`=HRW0%c_cT49O-fVT2=tmh=HHk5AXEXE8k2&3`5Wd6`{_L~hlS9STw;scNxmwd?`On_mI*A+n>?3&CBN(~=dB3r$x85NKGOUa{ ze~=&ClllJxO1-81gYh1EKgT8qs#z>i&2lX7H3uhBr=A0qsHV&a0l?s>$llbkd1roq z)`z4$ny#?h)$cZ_VOK5UXrv+J*=B`$0OCs}8$b3$9m(iIz)&_54;S*LIt#Ks9GOBRTz4R)OZOR|XTWRL*+MW{iG+U8_u{FLH#O1GWr;*qQ@8_3!jOSy4nGwW|ip z+?-Kgce2fs>qD}pZKk@X0^m7n&ekcl8jSOwjwXqGsGVCk>@11B5uX^UK6~%$r;NMw zEX*T!AY&iAZ;vH?b|l7~XW=DRvd@oYL#t6M$3?xQ4LFY^fy~yIfrVHkM<9QHkK?j_ zhYPZ6azdQK-Ig9gqBzkrdy{38IB#~IG~^zE3%1X~KvQHa6x#-hft)u09_K#CW?yII zVSb-q{8d6Z$X0W|!Ntk$tKVTdcaEp56Vcc_3m`50``Mf73w^sxqX;;5n!ouaDZYAt`v{Vzh9cVdIg)2VZV4kJUnUnqb4c2`w`O%BxvMT& zV>9f|k)Bbt2!myt?T*B&B@aeZNvIS{T8A@Ei!&_==x?`WzD&&hGd*TA>S>6i8iAwu zOwYF5IpiJPW`UyGvNw37eoJs60t{yxxfO{Hgq-;ZMphf-H@LoAg6$}O-ydXlOQKpJ zcmaFzOE=zt-fuorE1}R~u{Z$BNKs)oyF?Gc} z>wC^s<&2yIRa?crvyE(jmE?PxPa0qHy3gnJCBI}I)h*YYYeWLg<}-8DHzG>4D?t1l zHFDO@xSp@=hNh#w6c1pdP2fqqsC5=(CeetiH@qUBwsvVW^3Jo(U2UR_ql+&1|NF#3Tm$~L3=Xz2%w z-2WwSSd!7Y`IMG_nQeyJn`1*k@k#&nGFSl;4J7vzY9d#GuH4+Hv@O?vj$i;gQ|DX2 zDlr?@_kc+5>G^@1#IMr7Bbbwz1(E94l>RqtD99a4KR`()M=j5fM1WUXyNm1_)E@Oc zv|9sDiK=kD<2j$2)fV;H?K9=rDA-?iFO?W)XN_RSu9BL6-6CJ+Oy3jQaCCAx0_6Ho zr}aDXSoVCK7Y^0V{#@w2Q^xq0<&++q`+(1zH=stKI?_F3ZJh4!x!2THIi;<+tY);o zR89&8wi*Eg?CSe^1FubsWx-=+D`s!Ixz1JCq(fvxZE=OQmta9r^~lU15*BjqUIfBR zR<2zXf?rdAkCz4TrM3zQi@UU%WykN*xAJ~K_~t9KOZ@14fO$+rsb=&*WzaX@al_P= zx(k(4&UN<2rJ4x51&kOYaJGS0&X~A=eJNRxZRD)>i+RrFXE5G&Mx zj<@Oz*_#Z3^uw-#!L7fo%1SYSsy76vM@CZMnAHTxFBMj8>kxKSQNy|uSIC~mSFKOz zz(j?AkuY;|6;$kz4qo4bpQ%qU>r^&&u7U+!d$obQn=@P1@F+S`Bd|Cauu~$vBT?fk zHvIFR-^0^+OATL950USB=Qx-oF6G|Aat&UaW0Rki+4}NZzU^z8KQ%ggLn4`33U~y# zF!pN0=Y3?300wd(qIzY-mH{|(4&D=j^c)+1wrGSkH3IZmXoJ2;@c5?$qgKJ$_3tQ^nQxXj!5|II5#Y2<9SK@Y z@!C8K+%dO|FRULp{KW697^k+>6BV9O@+x-~2}Qa_OU%&I*kCDfPxQUBdDGL2vu^tx z5+!?6hbp}u>vr5aKbS;%N$#rQ!_QhI>vq}*d5e)8U&ba2xc81CYNGu0J;Mx6d=<(B z5w&jPW$d|@v2&!IwPGH_&XXfh_belXt9nLrzqGiY@5xc9%ImAS86Mq z*I;VQ*X(+KyDcy1{qzN_Y6ejha|CSn^e3*@%4*9Kd_n5=PP|Tep{c1}%(m22H)N_Z z0%L63Sc9~76-&D{9~Vv>x@xU|98C;kb)EW6T{@BU90AXA?nDt5Nvqu({>F^CZiqLh zjJfj5;SjEQgMR?{ua}8L;#Pj?oj#iH+=iF5tLoyDQ0*zd2cCV))y5wGI5SGBB*434 zp*Sq%zT~K_HBO0I1w7JUzErV-J#!u~2SN+ii?K<2M0--d1E?hGni5EVzqAfVDyf2L z*=9h9@_T;C{cp+pv84xnQ!e1jI4uAxt1b5q1ksi`5A;W5L%G_xk^vFxdw8Cje-xrb zCTFfGDd2keZk|Hpvxfg<^AoatFE_dPt&Fq$ z9h})2V-X?c{OY;B_$~8G!8X>!7Rh##l;3SoJ*1YVjHiT%Jli;b2A0IsZ-7Ea?>A)l zS85I$APO*Z%??`=(N0SMUcN|x>85G}K13r;339y5A>0swfD&h$!4;Wzh`{D2eZ(94 z6k%ufcFB3jxn?&CJXf3bfgLqp3~tcQE08(hb?n~c<)lWutr!b>-f%M8ay2%HDCxN^ zkz0{7iba_#Hrv2|C1k$L=7YZ6@v<)37Y$K45}xaKfS=EdFG$pYo5$8hc_MIqGW4rREkg4(Ij#mR#kUdA>4oMFalNJgwSB|7>^lp+ny0X@GaQ*bW9Sh4S zUo%j9?(iD*u=En|vQaI?cdN|_0?`^5gHkQgY%}A#%{gFyn`hs#&fgxlTi3WIp}*yqittMw&ap{J%$I40KwlE0 z2?HW>mcIkJA|J1QN0Hvn&q9>1j9Rx5N6(wjbuIFp-$T+lL*NHM3-vmaAO*BpnGr|k<%m^$!IR^55qZv)gMV8R z?YM)S^1Rm^z*&HRr$nqRc|An1S@yYd+!WAx)f;n;`JNIr)zfa=Rd{QjMr^ka6!z7d z2VHV(N<6fQZIz|*gow>H(;Y!;OFn3SQzGR$^M9O0Y}Pr~ayXC}S8uYaudEb?bKkzs z-TUY>O(xXy>_p(<`3``nFwt*Z;+iYLB zzrIK$@~1_)gN0EP>vw=ky2^qYgl~3JwV|yyO9)>Ty*GE2K>C*#eFY6q%XOC!DPo=@ zfP(M0o`C`9oNX=?ec2m#>z?_53P>vMlDmq38G7Dwhp-o}-fx@Q;Qi8~#=Fvog4g76 zrfo(d`hKr3rJ`JkCD;{oLY1FwIB}Aj&g0Ds7bD%Qa<5h+EaX9ej;_AE>;ErZ?LF+MV4SK9rV! zpuu2OR&T@l==QcW!|AHR@kbZhJ~lD)qcc ztdLNYZDu-tp3`f^7mzp7C2c9=3p?(!rC)S(@Ave!?htr;vO@0{{XY2y@x5Dx+6RnX zR4w&A$4wQN^uK|1s!UgJ2?=j_?Hz}I@pEJy0WA4yDA&BH8_4fpD~FRn0ib#TMXGOG zMurYCqh}&=6=9O?mA#23Ju<6Vn+J-s*dd2pqBT9iG(PK-v!g2Ll{+5xP2zj$A*u%> zw98e1B)Dbv^l{$+$#Sl3wkvNWwNRu@)jNm4Udhn9cSr_5QO(Xn%4+H%$Ad3_En{sY z*jaNQkjTu*-&tjU)*Ua3KiS*aMl2`25l{|tII=hPoD{z54fw#TkrG-}Vwj{5$|K3| z5$SThWN%VQ^WBzj_x^IWpLS{H#(HN#%yQJMsX60-hg}WlR%4?iB7#lHbl(#%Cg&Un zc+Mz~!;;ttJCq{QqlR|rn*x7-%%Kv<85L0j+Rok# zVd)XL6?=B1Pj7u+&&Q-TcKwbdPdhFpO!V||9TM9V;K?>VCwrLwasN! zBaq(M*{niFkIrvAq+73v`H?4br~l{gT#AV04$;7ERc!_bcv^>l$KkC{)cE0w6*$Y@ zMA+M6Ik55eTR&{)ewo=bKqn~VdG?LjyxsPOy)#f#4e&cX@oawKECYR+? zCyOWV3j)G6V58^v$WeQKk+QFjX!s_mS757#bp-#QSc<<_b10PAV z$`N1y%ILB&J0YFONBW8*Ub% z(A)<|CvlU1=I`(yBumxFBoOAwHu4uzBW6hn%jC*Q8M1w#x zlE2v-KH^02(&C{5^OWGIVp(Tzyvkoj&C{12nG+3vZ0A+u6`^tEK9IVM1EEHMv{af+ zO74*B-J5W5zcRCo-o&y|P%x9`jE)Sx%!NA@0$vl3bj}+9M82o;qf zJxZ~ETNA${$p^eD?*qxPPy@AhR!E%8KsuFmY&(ktt|n(kLencVHBQMq?fD@Q<l zbO~-)qc*f>pE=10jUUB`CWSDyG(07;FY|Zass!hnB8u#4HRq-x%a>7qxL5jn=8+(r zBan@kSe(;y-W+%*DtH0M>P_%nKq)0V9Wr-+h>)kNBHNsxQn^PlW6ynlSfMQY>TT4{ z?GdP*drM5o>9RgrOFOVy^zFj6uq6Wggx-9oO?$F6yIv@X3h8-YGXjCl>q}kMd-^uc z6S^tUfnc2g2)RcozFm1!8{gAy)ZR=))Ojia-nyk4z3rJh1sl6k%ZWR1OT^7NKIqGT z_s|E=+;699w>_gAr}w@Ol&^pGo8^MV3{dL>DchbO1E9a9RYRcb{ah9iEP7X4k zx+w+=`Ym7Q>jveP`VJosH$mN1*Qn)xkkt=JUPt<(-J;r*4afs}YXlJ{QAR=C*T4*{ znc7vr47aYLd5NsHeoZ1bsWdwTo6xm&wg=3+BOI67QTMHGBrI7sp~za(hx(0~D{`^k zoBx311$2|Wo$vL_@5rM`P4yaSu4!i}fQP#xcRVdok)0ZW%EGtQ{f8y9C7zFegl^ft zW3JO?QvaKmI(Nv^`AIIfOKcaNPLBG7hs_!Fo^NRf!*nA1>o!v56VY+0^(1|uMj+u0 zGN2`pka>Pa-Smt*V@hV1bZ>A0>3_Sh-z=$z&@Azklum&u%*y3Hkn81(@_YFC(nowr zL*CLC0CWTgpT9GvEp_rsrDjooff|7%BcO$pjFXyQD#o+--jS%-S+jCn-PgHtpy6A_ znJ%e{`xnU!^^@;{x>l`^4$Z$a>*SQFU6|)bsmdec=t@|!F>>B$uybY;nHkzf?gQzS zAS$&At|M!g68GCzNwfK=Gwc1yc~fudmHz7sOFTeojX*GV%Ni~hI8w8J(c^9UQZeD0 zA$v0Gg5*nv@->)w`i>uD)~z`#a+=fUfc4Uh=F7z5e}iZY6KfEPNFxj4Pv@)qzxNZTD#XaN(<-i z-FPn3dY9kH0^4hBgA?P?wD zfVz~}qJ58Yf_62#i&26-y?PUv0pMxL;Py=kTxlZXt`i!ycNLSr8P4G8UreC<9np{U zoL;BcLwcAHn8-lN_XkoIBV_%KW$T<2I4PwsU;k|zm%-rtjoBf8k#1IFBcTn}yFdci zQ;Y>9IMplWIwbFBdC*Bt_4Hz2-wm1}9&=3s7F|&*5@b|mwGD~ja?XKTvr};<+(Ck; zsp6U>yx|pzBw0VUNUg$CeY4uv3>mDP6`LByHll@`9d3%Fumq#c8);6C0RL%WrL+;# zE58egjI;8bl89S>6<-Yro3fCYL((-8?{q}<&EjPufiUjhflJ6dFl{j87B>(HI8t$v z4awuEyJ|>AU8$PU7yos|(X|=Dskkjku#8q_5Q+Lsy?gQGqm0fG$i6B3f!^eNS8h3p zJEZ4eRJ$!}%2~WCoe{S(iERDyf|5u<+Tukg+3v{{Ny0*ZFU?^{6r#$r08WU5u4d=$ zH7hiO2=>VC$QdO$Dr0oCQ3Wu+M?zI1f3-oiS6B~{<%ScoMlGKT45TIa0&*vgtiOst z`JL^Br73$mp8_K(;TbER(5Pi(vGZ1jeU@}kz2VrQUZ&)ATTAoyJJ{&^djQ$?et#6l zdsbwXenhu_EsK&wP`tDNlEHePtALFJHBWud%yC)KieDx`J;-W<3go?oouv(=XILX2+$QcDD&pab-;5o|EsHm`*_%mN;u)*a^n-{Yr&(DD^;7c1BL*+3u z0=i)9mLfw(>xn0`u{=L_#;MuKy+e%`hpS!1k%hJ)CCI4y=7T~Mea|+(@X4jbyIrhK z_=oO)&2~=WsV^&(sL;U^oE*l}*m`z2*>VETZPikgo8`fbV z!2Qk#k65kGFBf)2FSXg+6t!|THmMpe~kt5n{ zPoCu(8%m9=hGIeyI+VYc1WA1A2V&?`R=3nf6|wT556OfvCdWosFT{;D@U?sHgSX&+ z-j?#MKcDh2fh(XQEKfZNC-JM^ZFy*r2|1(qG4^6WwGl@!Cr_iFSt{nL4ToYOI!Jhb z6RVN|iJ0g8tQi&beWx!#97RHH?nJC?8TFN~s=ip-KX-MLK848D2LE+oCrO}!QzIT3 z98!_%duHg`icO8mNcVSfc#+7jf8>|S3=*Bn-@#i^m`1(vm=y;E34C$B!FRAy;GX&& zkcDKdb`WJk7tbll4EdYq$7LW%Eq@0C8-1a(Ut)vHF z8qb5ev3W{hfzI^I0bU7p)t&hCW=g)S)qcC-fBSn#u3qgoJb7h48ZnOCKHKh=HMMmq z91tCOyG-7n%HZ;wWEYW!3h#UMDm)8J3|}(yvnT@6+sc$=e+}Fu_mqt;m9X>SM;W`N$Ri| zkUotCeJ(pX)7(2Ou=X0d{6EQ}ECWlze@wrPt0dEmZ$C$!q4d>oA~6B)wRcuJZ2Aub zr1|l)jcZ3G&FXEtLrA_-0$$s<^2lK?recBbjpwvSu-}r~Q5&qkX;nj6+?Kv!caf=# zA=^?)W#)S-A02w6z7)hDt5c}3pb}$7eFvSYqNUZFbkRNIS#Y3g^yVrcFBCe}`?D(`~R+Wfc1*K6qYx z_NK;Yq5}s!9`j_iL2Bs#q-4F%XYB)=1VHs`w%NJ>k3HSHe#hnO*tO)fre}`DrVx96scn_jxZF8-|MP8h8!_N>hX~35 z_}19iS&csP!Z7G^U%xIH40+~WyvJ#yOYQ)u$k`ECMFLS{lfNJgmJ%WMj1aO;e;5v{8k_Q-S(N}}j>3~~Fo}w;dG8>l5o@&JMDrN8fMMhFALiUy|`4l5%X`=Cn)X`LZ$cWQqSI zm(KkKFP1eMNK`55leLMg7H1El32#gyEqn~mSl%w%xUh2-wwL_vyn7KNzzo#v;ENV* zONn?|-{fLO2L7cDfA+qV92Cghz3L`4vgd^_I;%9gz&7f2{tk=f>`@~L>1>EWaFZNF zcVriwT(9~bYW$Zo$IP13YxokDQPwbf!za|QvmEIwF+bcF43^a2DCDoSPX!l7G%`nU zeDQ{30~^M3wsBJ>Vj9iqh%i?h5=S*9BS#?D6qToKnr&t|f9$!d(2gae1TgnC@)WAK zflKQVT%1gabC3bd+nHZ_S?fd$j0>JZm?M}}8qe8LQC8ukY_sr`=Pf3;{A_JqJS%x< zAv2h+Q}xE>eOuGJ!sU$-x#r+~TabU&-WifD^98K1A9SXi@HKzWuehQKedW&#M*|iHx_zXp*=O@@!8MGS-%;8=h9%8%}At=XBE$NuGa_$Jc_`Q{3j zkx{)tmP#*d2~cIOkD+A+2-yf ze?a-wyH@q36uYxEJB~R%z-)sdF!f&awBk(pJ%H|Tui2Y8Q^xo?o*?7$e&Z&=SDC%h z{L^Db6~siCFCefZ1F?F;aHhCdN^qJNBQnCpw-ol=Z<}ndj7_}}%kPO(RjgW!GFL(L z@=VN+gp}Ky*e}E{$bj=pk!fc|bEpw9f7jmEJDho9=HB}Ca(;kA zl-A1Lb}{kX*J7?&1565u&%$qQMB z!yyGROHZS6A5sf)u7&FrG^%-{aJBCV01(uB%{CIqTPIggY3n^IwH^F7d!tzzyM`9YOd>DY9H3E3p zXJ)Iw19!Cmxy~vW?|Bxk<)(UV{?7V^u>j2P*{D}H)i6+_x9RqBU)Q{md^%P=!SJfL zl)bIkE^5?(pz?{z)PtzmfT!f~m=ieyJ<1NP-79+9%<{%&+-YNA^;K)BN3c(7Ugg*hwejlJoS}wJ>EV->o_p#srw@h7Ig%`^w_k`-a#sy}ex7>%KbeoY-_TlpiWd}}f5W0CXWfbF zl+ikSY(ss@{q~gfkhlLxQEQ~^#Cx4JLTD$`LqV>Z9SJtKVzAc+M^s|-NRZa$sh8i_ zdDZm$$KI>0?#z*hLX3X0N%NF&z#%rQ@4*ztN%}>yB`O)8xvDt1e4770COkzoosaIQF zt0T1<$5#?m&W>31`lZbq1$T~ZVCj-+2#x@qLjTVE_@qCPQuXNk63mh?;JFV-8lNb6 zdpa|t>K94cC6f%xBdzL5iCzWYYgegWrMOm0;MQ}sXFrtrbCQ4Fe@M8qw~IxYGr9;P zq_sPWQY!^gy)FDc{Vu3rJg2TaiF`8)vbPa%%ohU;6RA?Rxj1CHH`wRCuh+o}koPru znLSwnrd1M2VpkMrl9iI{qk{34nP}6B9jR}MRYkuoZ@zWZx!Y?FR4~3}&Z?u$*_kUh zauw4PY+%%ioSkiifB*CRY*6rNiBBY16W~q)pWffIsTSR%1|V(S1?|`)y&jX=#*fV5 zP+ANpW_~FWb$BMQnf9DOt_=|pUxZl#VAl=Qg zkoTz4pEywKdsw@+X-ZfOeSS_@g4WjA!5zz)6z&7J&)?y5NKf!|O3TbxH3_$S?q20k zgvIN3M&vsqtBO+yrR3~L^*Z`Sy4c&#{GRKezSL@Spo1GeVr=Mcfq&1GaL1=T$4?`b zv+fXChgjC?e_f!2aI^IYPO+|<13f+PUDViEhZOmga02FBv-jnN*2I)7Q5QS!(QzFuc`MUxpLh~$ zY(i>#YIf>vA&1MID13XQ%_JF+TdH&l604m%aX7FOc_rgc;%wb6B$Tu~3+hKU@0Yt0 zAS%~Krr>#{#3j;Maunsyn)!_k34XrrZ6w3x_Xq+?)u{Ec38WjR1X3zBJC8P~Y_7Iy z)$af5e@zIXb0R+oDUqdQ8&`a4>k7C$vX-fgB_(ZBzZPypqo1S3g{T--jsTwU%h3}WsQ8vfAYi0C%>b{CcBX5B_#vjlry^S5&`l{ zRn1R>j?@amUI=`)40vW-e0t&3d>6{j!yqlnEdHDWo)w=;DY z`$Gixh!H^N(~)X@xYFDdSGHMX-_%<&f6Hp~pKNpB^RC+kG7wTVe+P${gI~RI47T?R zZ#wXPou3(MP?RHkTe?~r_LB9vB-@3E9yeR9DG5hTkKlv?$uAu*W3Q{rqM+pLh~+4+ zTwf|J2JvJ{w z*OsW3QGn>3+<`L)m6{ec>cz@swujc*Y+Y&!zE{D+huU)ncHMMWZwI{!4G9*bw)7F zn5a1r;n>rfV(c>Ly3OQ5f5_R9dI`Cgzr%^r`+CR9+2;qzY1a{$cmAD>8O?_ff5uPk zPZbyQPE;0~f2Bq(hmdD1C6J|kD~o+J_Zg(4IvjcPiAg*Y-#ecWM1A+36w-_x4&o$L z8*0?2=u2h}&!_ll#?44xd*YE~4MWxE>@bYx%pIGRXm1a#jAmZle_WqY+&FE(nS?%A zUwX-ePLG+>D;Y0m2Po~#`~}}4={sL0M&p$+BO!6mPmPTP2Cz>3FJbiLvSv4P26S)i z@MPIRY$Z{!P9urTkGfrOOMcPcR4;iQnc=dyTYzC=6-bav)=hz0%OjKDGjOFDvEddQ zr334C9)d5K&8n34f2Yw5^b;C(=~c@EFI;-rSeoy~aY_9jRTpb)PkByxlP}DD?{l`9 z5p&jlTSgvOM)FBO!*fPCDLQLb{yJqn=Rp3EWRV&h9|6X)FA|Z>l+5x9a%@NwuJpQ# z5@ROK-c&j5dal?4Fu&w}lb^Ns`B7CwaJNS7Rge}_60k52e?v+jRnrC>JVSeG4ysxq zoiBY9Gq{`L%-?}QOdC*^prXh1%8+%Jlh8kWby@QgPAAy^&w82 z7$%z+8-3nvzz-3r?lPzHaU5 z-0nOdf7xc|hs^VXS#i!f#SZX;2+y^e-x)bG8qxGmAFOP>U|)-f(fJ6bV#3fcifGfDxM+uoP za}C49oar_n6fY@($@=m;Y`yf^K|$j4?y;?-Kt=wJjKoCFug?#FM!hAh<7a1)@Es^8 zo;&0T7oBmyLHh-9Sz{YagsI&QccLOU*=A&=!O7=!_r53<(DkUY)0v2ZpP4zv4H=@s}ToJ+VY{Sw^y$b%q z!;q^z;mb@5Y{huE^z4wRZC@jplyglq>N>F~Gm=m81xYp}irnPysE3@)r0SZ8q~u() z&EA=Zyei9p);xa)E+Aw4{MxuP_G;sie^CiAC5nJ2dQ)ZN2e!&=gAuY%f)SN@i@@ z8Dm+6IF5YL@k1eM%(K8@1&~x@6L8%UnY}J*!eoS<#A(dgVS+IO>vx1m+jlF8f8=&% zw*Cr}wWob5y#$&d*HjjXa^5)tRkG5?5U}Bk&hK$mHG?n&)stmXzk{QFPOqWrgldT8 zTd$^V<2qNcD_P3Rst=ar~1=*TZofB7L{zSpRa`7!s4A?t#pJlmYAnB`n6Qhc@Edp;yz z=8P(I#9>vxqX?j=QA)&@`+L;R{W7C!VV&vOUe8S_!qi<(HQh5yL6#sbAlLL_W~DEH z!Ou6Ct8hW}r#Ei}ZCW$Ob48QV*kc-!QXF;fY&TlkQKKe#qR)-FR%Bc3f1yUb0gEZk zoo&=-%A1^5%>6c18|*uP0WDFSwQh2G71)hyC&F$%kRxPo9~g-K9murIMG*5HN%`5^ z2KUszbG(5hv(0(m5?_TkB7&7FbQ zo_$(3()JXS&ukSEoU)~Dh<0KC>QRgJr49?_Ei0yUB!2nltkwJ zm;EMPzdcOACTz`|>xrK{ecrs}9CP*3jw&{vv`g6MJg0fKL8*^kZEOzhF;in3I} zk)GMC8&uf7<-Q(SQ+?(@+UJZ6;WwM)f7U9<4(?h@_}%B3>pPS1zvcP}8ZD{SsQ2g|%^f0JWlaz5w(JV#WSiAlOg#~jd+Pe9o3ysB7BD0j z5Nh6pke|tzBkf(pCU?l{l%|b=@sXz5ZDh^1CbZI#($BYne@Au>2a^eNMQTE@Y-jrL zMNz)6&62=?ziM_ik?$`Oe(EdtwZTmp|Jm4cfGGJpvRN~~1g|hIx4f%1v9_${uj1;k&1Kf1YL@3(nLC-mWa-(up zZ^!UO=gDHVe>K{Elj3~%` z{Vun!zXwwHnO>L%aS0=5-vO%*mdden9fzN2jO#GqBT3ytqiwaPY-FnN!9 zVeZYRe>(h`$}v`NXouCiZ3*t>mZ%h#p3@x`bx%b5j*%IcXa0`dr1X^R2qC4(Wt(p` z5_fba^6U; zK3Sp_jh>PH1J<9nn0mXP)DL!ggLqEOjxuUnf3G&iYUxqghW(Rvy&U9Gpd#Dw*`?P5 zo{@7fXNSvu$!O9J5G(vrzk`oUg}{`|Xjk%_;^Tr8$~G&ml>VKe;pfR(M)q{h0f-7P zTm25Ay(>8rb|L9AG3fismdObFzN)m82$fw_q%A$UW`d!)tJIF_TFn$Y^$+r0;KF!k ze++qd;CQ2J4j36qrlmv`jP$zi7@j%3s}1)xcz8Ua2#A8Xq6w1ZKHDSn3pX?M*Io#uWfe;fVK zc0ew(Hw%~fng_P#&zIf?iGH1|Lx#VUs{EZ3Uv#!X-PEj)ip*ictsO6_su+BoU|$L7 zS9h;y78dfH19l0}X^k5BPTPR0#!B_g^?{k|3?!__{JlA9$?XPLBcP%+XWRjW&z{LP zDzcjM}s?XjAyKw)G z{HWB354k+ew?U%JLA{zJupYTbF$v7copHzv;v&saFQ}zZGoZ9UnH>vpsNj}G%r{sOoRP%SH!Mc@q;-Kl>at>r; z02T+=qgkBjmt z_s&8i&-{f$WnoFh^`*;x14(MhgUQm8FIA@UZzkhH)HSsLz%(S&H3Ix% z_p}bNZ$Ga-3&1!_+CPf6PHQ4DkKs;C79_egCuoihsXAaljau1De_UNDnQ=eoP86|e zui+ssqr6J?2EEdAAne`f+Cx}m?R~&iFNGn0=R!}HJ7hp3TC;pT`1RZJW?qg)Zk zJ7;HyM@l}s122KVZ;e`RlC1cW9M3Nnzl0r-lAMEaA+%0@@GK<$;9vu`5AqP+ZZ9>8 z0fh|m1VgMzajEZ7fBS~MUXtsHF(>bMHEEXg$Qbk&!~o33_p7|~fBaIplIMD5Z-RY^BvX3_ zm@U5tYEL9Edz%CvdenHgGLCVw+BzGL1Ve0p&v4q+`8n|`D}t0`qeG_;QXVv;Eq4{v z9f3oDfp_AZn%@N>Y%;<|qo3b>e`=2bmwfBxvT%GqJCNBZCv>FoS-}2Ny z`BqZz<$gnekTVK6+4VwC*-?%6A9=Ru*J^gyKV4UGxcQ{{WEvu%J8a;D5S7+MWSgB#q^Lvnd z;<~HfafMyUE;#@lk^!=f^3JIvor8fPbFIX26rt_04U;l&OZ9TPegL>YN5Alier-zT zWg3lhS~|tKP=5mwDf^4dJM~dmBs>c_2Mdm>^pEmyiOc8tS*&-T1(>-hBatV}9NnQ- zVMzK7Mt1Q`v?C5pDSWx#SZ!k8`8#7q^F?35n-Yg|uI{5mfzUx-n8fOLHbk0feVkH! zI{I>g*LJ1o^t8j2V^(t@$ zH%G2=p>Q>M8buY?#BCrs@Y3aKgX1>x_Y?NA-$(*iJY0EV&FlkfFpBx(l`N+H1J0gLu=6Xmvdrc<9 zZOt<$3@9tJPL?{!$gE3qxF}W4&MF&&_EhTw*CS1@_NY3DVnems{Ms+HXtCNjC~kA& z6E93*%)@Lmvd&wgj!wS8_-V0w)%vgu-4u1|hkvBk^t#i%lLJDw0e?unX7Yx4w#zai z0doG*Mld$#nwiy}Mv+*ic>j)ks?7DhaQHuZY*c7$h_wn(dymxLRHzq|$hn39MDUWm z@dPK^l6=G`;?!=V%xazOYeb;ZFNWHY#gH?~#*q_Jzw?60%Bb)4+HWFc*#@TM%Lv5y z^MCfg;FNfHsy7urVcJt78!xquOSPJ=m_Q<#DA(tGiEQQwCf?(GX>p#sQGeCgKwjbc zQ}V)up8G&@2fZ`fU@?2;T=Rj_DzXhrIMH-G)bD2^ZbrH4EipeZEi{Mx9yrV+>u~TL zKU^aj9A(F5c<7xE1zNORVZopzT-Jp zI?i;V5AKRr=(vznd93w4hdk4?>n{PVD?J#HCM=fx9`USC zvd!A{n%*MWrE`W})!eH-j%%&ob1a7|q4hrK-9S4PXPi+^38o&`PK zyPhiv5~AE84!1Ot{GJ`yFwfjY=d0?ygRlqH-s`{ZZAh?P#C{tR;rbXG31YY}zvDTr zInZX5O^O$g1YE1WXGorVAuUKe=!MQ88MS9(Cz8nEs|Xays2?1f1Br8595(<95bc!< zM{?(=f7V>%+M7%3)J7&;y?Tt+pBJ6l6AyVa%>|*EB2c<67>pc z!JcIQRCJl-p$@=nfG;5 z_#J+Np3#9qDJ?+k@_{uj=lU%Zx;z-#sASr!K;xUsKGg>EWJT^s&VM`orM{F~Ebl5f zSvc>?P5MQW)ow{9FH>l$B-r_SMrr=Ycynwk+LOF@CO)Bx@%tSmIx6p-L{4VkZ`N(< z*%?KYOY3Bqxem(jKTI}g)ZA70-_}C)YjfEmdGCDeszPFpI5n24{2i|KsrRU8(x-GJ zy`i`%YnOyK;+6NojDH%Tu+-YDeE9j6Fbyqgt@bQysyrAEIH|krhH4|HYw8<`o%Jew zh~DI>mp_rj^z=SJ@%%2Isy4z1y{{Jt^wPyRRNV+YZ&>Rn^7W+%zyXq4GG+bX;kd=z z*KJlQ*SS8b2`PY(zr*QWo-CP#&V6}ghUAl3J|wE27Cw>W&42fkqed+(j9p_>GAN@6 zdYiq$`7UgWqL|$q2FJ>m(VJ2_eJeAW(lUBrbb84rtx*g4zRFjl4PQX%*CdO|GkGVn zj1)+!-x1}31Zjyal5=oyJ{2SKph>X`-5XBk9^0XYO6x8xFyst5HvY^$!5H;WN>m## zkS}K&wCG(P=YNs#04bCsxZsOh=VO=5h4pwSs(7QL)Y!O-wz7=0!5h?P?sB`7CrcZ( zuv$mDb_XcW50mm;R*v4FCUS?csj(2%?qx`f8inzt42kKeS_%(_1b=Vouq4fBq>ZG% zipvZMi?ZgL_wObKlw*^NkaHk_{OQ;E?mw#bRBxh5SAY4DaCr*|I@;g$g%CJO6AJkg>Vav%3hIXR2gC4;!o-_ZCyfAuefh;mE~a?Bv`ln# z8~HnL8KV{7h7d&2Zh$h+u* zD_c@=$09abVIG@Lmx@}g#eQSdJ0jFY$l~Vvkm`SVOPL2k-=Atl0=oezC+ek#!jy3sy299 zMhZ_uESKIpoQAK;pin%^BU7;t5{zIyYWYme&6)#hqD+aD%*{9GcUI{#x!Ty|+H=ao zh7~i{XM(Xx4q-E` z>CK}#acz|S<5gl9WN+e3nHT!F15a{_)Vzrdsj1Wwe#3l&Wk>CVTU2r+)`f z8_?q(fz10pbJvQbxAq%P4IRJkgAovD>rfa$Ft)Toj%D^t-Mv(DXAq8XV6x z*F*O%+>_iWn<^t}L-ZY0o=kAd7m`Z@AmSuIP>TAZ=&J6^~}#Zxe({ zT5WjTrZfG@!Zm&-M?I~upe@0*R0urC);muAJXusr!QEN~4-;)UC5(*91n@fwt)~9= z5Hrf`c5M#+ubej^#4|k$5`Vg0$!912HNgesS(ts$E5CG}dD(I&lFY?B>33F9#hlTZ zUX^hsu{k-o{iTQ0u{>EE&hPZ|K^KGJcN>1#ckU3#xI}NN0*{$At!l+2n40}N$ZPwK zm+VZDuD!!#+lx8rp`ai-u3R}B5Vk`0<{Hb$!(#=uuY4K5<8>~+4Sy0rtJJGV)UoNY z;dM_7?15M~`B3~0uVwG+6(3fyM`@!LeR`PCcuI%J+1V%}{bor9T+?b(&JRE(Z~sk3 ze!nuTsjQm!c%U7IbE}mj$y!*W%~LtzZiAN~Z=_u;r>f@Z4efD8d47@f_lQ8fdhhJ8 z5rwV=?@|S@_W_Q=tv1JW2JQBfb1fDWMo0MR(>D$s~13%6-Soe?oQVE{VjPavHYfL>Q4Y5`0iHiS-t=0%o zASE;D!2c=Wm1hqAE$g3Zg9V~00}Y9YXK87$f$&JBtqU)3h=12A04nj>?eRUFAzg!F zV7Szf%r?^ZvWAN`gCsFWz{>gL9t9dybH3XEPo^Fs_hv>VHv>k_oxm;y-8VmWmnOQN-4$ zWfNr{zia~l&h!!t$x^s=ZInsryUI>F9}*&7bl9yRuXclyO}%qjkv zXPZv0{C`gU4rnbeQ%V+YwjA3kDA7AnvCJ)T4$KIdyLoEcQ23-hUIMYhRx0$ zzhnH!2*(rqKvve0N~BKlm)Y3`r+N-J%8TQ3{C_>_v#myrE1OiziowJPhJMDB9FW=Nrxd8qR<6!OoP zHtH8A4j=ZK11{IcRi3=m6n~u6i4A`}vB~vWU>AY<)r^XYd|6ZEM2dH08_#KCari>K z!MPJ(IN#F?%8A7DUv~(kAs_0 zQ@sfld>NZX$Ql%4jiQZd@oS-$&zZj?tsu2q4_xpElW zI_uAd=W5I~<+R+>_k@lT&bu_b*ME$5C9xiy5fswAcSK*-j8P)+dNs0?#4gPbQ}6Xk9r*x_Swd% zf9C8gD~qK^4J-9!-ga2oHGc)wVfwc~ii@ zA%V!=)KbW(yo7wD4LyQ`zc;l(o0_YneusT}Bo612<{NwtXTD~GXf8d@3Ucx_W*bx>9aS93)1602 zaYepFK6cRdw5hk2MR45 z1Vo)+2(t&>uGZ(dx-jdNK`zEARPVOrg=tRgzC;?Fhq*&sIub)`1TXe+#)EOvs7{eP zM0{P{?&{6Po>C(gXXB#H?-5N(Ry5uNtPxd%4;Q|0aQeI<(0^}pqD|CKxp^~c)ZCVH zYN~H62k*SARN^Ab8D;6MX(200isCGH6}ke(YmRLLB5ufkj zg-y>KL;QVa)OTcODNUEZ^HD7=Zwj88InigTsCi`e?2Yo0IbA5#A^I649i*-{!%~mN&(W$t``+gJhw#+aXb>s=jAf zdPnY^g>$m^s92k#LD`!CcSfYgv$Q0SjA{vkesu}KzY{OC0 znyRSX<4UfULDZjY+RO-yM#YUvGC*NHg7q!Mq-Ips(%dh`PTNQe>lMDb4b7P`vMc{`|Xm`)n{Q~=Jp)hpz=)rflVOUIA1gTZ|&oHgA?v)eY^)5 zV&-(c;q261iB*`~6VF8HAcC?!rELfpec?kPQGe^NZVJ(o$C>)5*r}T8wL{=^yLQyW zee~rP8#k4>Z+$7^h&6pR3Yk8Rd@)p7l4R4p!G)zxK2e^Y#Xl-X0s=67Lf}ZW!CW8N zFX#*FdvG(T`r8spS4;RQ(n}y8@h(pwdt06QdYNop?(lkL6pjKRY6;v%o~&WJABm4A z`G0iww0+3dtNTrQ82o-qM9$JemLdK2Lf0Iy=DzHZCv0n?n0+M-CAUbNSJ31Dj z^qgx~@0K{oiI)$%RgDdMFTTH&j53}%JAWdCwEt=|F2(eZPNU{=Rj#Eu4UA0Afl$sn zy#$jD$4Jc)h-#*%ksk{oSe`67P|`B9H(9`$pT+a!OLHdzc{^O$8wY9MA!ukj>I)zV z3X^lq;n0ytA-K=G&-MUkq}B;$!HJV|@KG8yV-hk_Si-sEKT^9BovuEWS_b*fk$-r# zYTi8OTdxAf`HsSkcuiJYAG8(2kyF1TiSo-%oB;;XqEs&1Yf?Jjgzaxhosa46WaW-$ zg<^lHv0?6Oq>_Tnua0kzg3QgmDI~5INxshP#zsGL(>ruI>SgT;5E2sIKu^}ePa zKdmy}k_Bm6X=&+oCxM*Lowy##5`W}rMAkg@yI{~DFSQCIqLyeNY}H?KR!Ls%tC@g9 zTz&aFvrNu>%}~)p?`NA;u%IOycCTEyOJhVsG0j6mvO4p70I)W z{-6;z%G_~1<;g<1*uENMrcgiqJF*n2Dgmh2ihn2P8gm7+w&q&t>pguaB7d=x=yMeg zv`QJ_K(yL?>yoM;pGWK0B7|B0N1K;oPx)?R)qnx7?@>GI%YKvXh3_ca?4mDu=8mhY z@5q@Ng`0AATw(5{`W@x$D6uJ#58q=uRi|iePywy1v&t*SPm#G5NHFB2qy~AZ2$M() zZ!?9sPKhUT@Y=@rAkXE0tACw{mK1+ftpb)tSvIxff!4VRYOV*IeM$VzM`kSBD95Ja zNxo*Ek-d;-8+#RKLftz!9|yoGf9HacNr?xrJ?N4<)JfT@w>uV$L?sVL{gN6AfS0XP zt1a(-+VV8Q-o;Z|2Nrrzj+rZ4_jekT@9zmmQGrbk; zOo{ku>dHz52tDNNU?|Lb1rOw-T$j1yNnn|41kc&|$uFe~&gm2S47T%(<$(1de#|d@ zx(|By;v2j&KF3WDCR+EX^dElmdb8vW%WTLIymwWQ{5A&|9_QjSW|s|Ui))NtUJ`NYcXeM*r2Ib$vPb5Ks5sH#JRs`Oim)& zMXX*+ueN-*J+1eTAj^BrJ&Hg6^W}F&4tsy;F3l(31>0jzj2WE8-Ky3caI-0UpAr$h z^b)XIQFi7|WN+g|%iczbsBR-qu=kD#ZpT1$^W;HdhPcXBio(sfyDssguJmsp*$@ zqR6Twj+$$c)y|_7b4GiWyO%`vN%jV8*z<-+r*qUk+vS$eyBD*_nWz@9($}1Mlu8kE zKIN!)*(9f1{|;zG@&vn(Fj#e)9ZyH@kR8^eS6h^{acRoh!%pUm;wh6Wp(}qo#th9i zSe$!CmCWvl&BsFm4w}8~)c-9d2ZEKHxAVk+nrH6hjcDCP(aElcBCi4`OpXAqQ(&>i zcHy(j_f%F6P;$+i7D5m8J+t)wHJJqPfmxp#8|#z`TQB;^Z^=r@IB{mF>UBy;7|3;7 zVnLsl#2WIGJhGCg-%+hIPcT89>Zxp9%&0W}FWK!Q!CzuQw!sCQ>}ybvIDG33CP6Hf z>%&WaE;$Fjv+G*TkgZgq8XFp!)>JVIv%zv7fF)q$lNO>V17;N~lR=^_8|NEIeC{1_ zyJiWQSzyf&IJ3a~x7PHHU@V!SlZm1se+nUITD!gzY9Z%s!w0$nCmm}`B(1V zX=BgjjMBtfzn(bN>Lb%DT<<0ig=6+N2i!xL*ikb*TU`pIBy$aL@3SqUGU+>P+ z9%S^5)>5YHaU_Omo&^Ha-k#OzT6+%g)Vr2zY_2!%$(FzpTb_%oRcN^KSllOH`s1k)uW+)$8grhgqINm~BLC(ic7N4Ew~@%;?1T z#FNjg4`(%hN42SBM&R^#q64lr2mL-Vn%XETm8-x-4CI`>4Hri4gJV_5lk=k^e<(J^ zs=gHYPS-?}2j?_)8#tZ5cPw0U+t27_Zi%}ULw~83oMT(OfqCjrIdYj5qcRf5cJ6r0 zFU>?atD(H5pKri69vQit9iBb?Z=7swz`Xrs$*HqlUwW-lYFmPxDD$&se2|S)THuGy zWDQ#68z}P@BaqogL#eqY8TEIve+{KCeQ666^*vDoGk%({L*Gpe;hU2@cU=<61vOX zn>&%?3Di7$qa&pyE@w)sJi*v}uH@rd<`H+!5hw%lN=7iGG@N-`jcvH4lG|~avEwBg zb@2#yr6ZCrRS6d5B#zX@NJf%ajcwt}O0UO4!n=`e)T+rSDGrR+k%l*=>Dv55TE6XDV&d43I4p(Eob1Uw^UTu#lFiwpPB6sdH zM}3nPnQaivBtm6D1%fXo+d#7=dS+1<8&z?(k&mAC&$6vk*OOSV>@;qD8CjW`N4aba zt-eRO|C%jx8FdkQY&$B%zFi=4yB6bu0%Fg|&_ao)UDoVyf7GA7cO25Kb&4GmVfr8! z(M#UJ{GEf{n78GQurqDi<+yQd=P5Z5h@=k%LR5Nio;g%U&HN%m`?e&8X%XsMGp}Gs z_I?*cJdb3DSa=B_H)?hc+0%Vn@*lkW%*itS^qD({`#SIIlOMMAYZ41oV-tMgqfLnn zsLViGP6+43f9jI(Q{)|j0SFUp{tmxS<~MR^LO%G0v4i7#$;kw?Q&fx81f{2{fdleOOD zVyAUT@@_q3m9u*0?Lwl?LhT)rr(j!sj}&(QO^LW-fBIB0&8lHpdqHt0Fj#)6 zF}iXUJ#)3!$E6Z_&b1s*bt7ujicnw|`67|cnG!}*##~n=2|lUskN_U#T&pyJay@?s zW-cqnt+2XB#^<0paLVTTa2>x>ufjHn60_UL^v(ANGmxC`-0{fIwv2FqadErkmjZZg z8Aq4tO-1D@9ch(EDetc4jsA!}HzlYm@=nCIF?F33j0xC@as<++yXqwD8vtC6&6c{- z`dBA*)Dp9>DrU51jRVAre2}^0C*F;Wz6_s7S4WfDs51mqv$9T;5vdviox77QsWSqy zeUoCTR07ntlenoQ12Ilvli#T`0@U1-6skE2$+IMY%xChPD(sV2s!wD^LGycX>1^p? z(&mF_v__z0og9~xh=p!BJ9ni~Gv>;27JIL~BVu&>GHM7-jcNp#H(OKP9-{_q-SHc+ zW#{@1$tQKojsHUaK#o9#-n0tfaFE00jEd<&p;vE!FkS!0W2R1%3ag?5by1V9tD*u{ zO0!a|Yyklsv%jrkAAc{iTGLqob-e=pj6{DS2Uo zs(WV?#R2llHfmI*zgM{&=5v0jz=t%F>Wx{F)oxiB6v+M^)>*UkvP!;qCr8NY?7f3| zrnAm18!hQkqm~sT1vDjs%lXoNULRq-+;2RC>X2t|t3Yke8-G@Hf$VI<4Vo{yvL>>c z>rO=FCPk}max2Ob{~`e<%Uw0yF?#2ynMNq=Yt$fs%@nDi5-#g*gXXQr21xMeTa0ze z(Uv1Pv1R6(es0`V*=Ae_J%SGpaUxhhxb?HzIwX*2aC!+ypu$Q+`FxOSWSkb2+!yXm zh$9Svc~jtKSbs9oMXi%OkZbx;Njjt0AC!xd?rN@Qex&sG%3GE=oM&N%8qbIglW7qA z=kMUsNd^XmGNn9s8+@wi50UohR_gB=4(D8-VdbPZ9K;PGH*c32y>aUPxB^~E`{tLP zZ;D7sxT24~~zXA}p75_Gjb z#~U+S?)ZZbJu~<|@|m_C!GY&HJ?N^<^Z34M1U{6Ck`jTT-n}O^KJ&N1%wL_$L*iY? zFZIX(gXRcuB_{&HMTKHIS3$YxtIxt9e#zJ_?|=Dp_Dz9rT{=RIZ4?zu3;A=gOVZyf zheZjOJU=8?YlDK@RIVJs^@a5jrIJ^sR-5DtPa~G?fpd%BnMV!f#P`mU#LrwgT%AxL zwWjm!zztL@HzW8z@|==5_B}Q=j5FFdD?itKX~?5QfU-9dfTWs(`y#$jy7D|wPsxGj z*MC1}+KrSN*&R6tj$Gp$#G|`5-c!XqSt)h9{36MC@ch`Yywy90(-sV{?q2Nis8Nra z9XRtNUrlahfR4Id<|piaX5Oof0ef5;7YV<6-SH}NV&Km8!CWh&wMPB)0HrlGkEbMk zorBdwp_1y2{{kE*CHPhH)Xy);G#TN*8h<_#BC@x^R+cM=E_6y%KNd4})OytG3*Bq} z4o7T8v1eK0OYf?e8V8w~I&(S5pswF}tFoOp-~5KDPhEKyAe0K0y}hus=iX7g1ZX?k zfZ+9605X#Slx^7CSFW}!2~p&1gGZp}8utxdq}qTCuqIMsCuaOqlFuk3mTe%w6Mro% ze-Lyf?`v+CMmNneQqHtb$E-D<>O43g61VP+!Of6!fXC*Zadh<`AQW@dAM8;Xk)D}{ z&7?Nd(T+Zi6nO*@HKRBins*XP73X5^9efhaa5jJNU}W?~_L0)HxvNOFL`X4Rq<6skFxy?=~-`_HS4m7IeaS8~6aC;^UVS$c|?@nGa#wG6W{ ze`f*S?Avm|@RC-J;@1P>TVJ|B(55anFJ|Y<@8J2#tn+yRr%PQqRiBA% zC2=3*4ngK~%M3ojWok%%>9%TeKf%{JD;O za2npb^2~52zA~CbA{{RGDC@m>sa0s?OUu-ZKc`eyC8o~Y^G)hN>p}TO2jqW z(vv@@*m$+M9=B#LpVb6F*PLx6LT5yJW=gfiKeOvQVl#8gL1Evi6`yYjh|F_O#2SbUb+mRb2|!e7oy%>5M=i~PMCF2)FqY#Z#}W~I|PvJ zNIiZL$$2GOSlwFD!(1Qv*3UE76lrO5Gsp`9CCGivf3Rg1$uhVdGgh#mV`-G=g5K*) zpTja}kRCasa*3MPeX$52H?<0ATpHKOr!1eg+o;QvRw$-QS$|k{Tf%gzz@4igYf6Z{ z#wMlLlb#Y@kBsRd6qj(2Cks4eNu1EafsZRCe}~1CcDiC`^~^5R14&zjN-1 z&${N9ve`PT8EW0y<)|mj2+3cyIP-Jw1Gr9EZ#4%Ta6Eb`aj-HPYo0MH)?2@*Z)TTP zZ;M4p9Llnc%6}%gLntBEE_)kf9Nk9NN569moNDHlFL*s1hy0y&dS@=_vRp_{a)-cM z!c+%5PLKo%k6{?o9 zQ)AoZ1EzO!81Gy90@%%rj9j@LVxU)HA3)WdH?hM{da@R3m68@U>O(qUW{64gL~EEk zQSxUq+2Hu04Cb44h$p30upkM(`c7p3>^*O+92sZzJzUgle<_xDj;UMtr(1siF}gxVdr^l=gZo(&1JAtWjUE&#et!%(gFW?2ybQ{l&A9-c~>h zEZ4QB=2=~yI;Tc_^R+Q*5^Rj+og~4fR<|Wx@bSpJ4-#4QwMW$re4gnG5HErj?l$-f zlf%nJ4kudsjpTl&9|_+t7hujCpls(N;L#b>eSbA?D%Q2{76Rjomm22@>|~BW0wLw4 zeh07Nk++K{i+l8uZ6H`PPj6L9XH6{{%Qoj=_qOqE z?tdNr7%ud>T~wy{z~a{k2CHGla@G-_+jDFfKd@0%Z?yF*J?JZt=q=gx*Y^Mcp4r>( zk;yL|o#o4fs0XC4_O#^+=;tob$$ga3)v38h>}w zk~R|w=KbysBXZ^gt~eJP1+V&p(Dzy2Be*Rbnv#b-pL2j#WKRw}@KL_O+=*!ayP_=L zfr^wp0{2*-V8CMto*ean;N?D$YOK;wwNd@LtLCjkk`^+F&~Bb!5^?POoxysQGYZi7 zIl8xB3Xf%PUfR}#JXp^u&*`pKbAQIOR$Tocc=bCd{qA3S<00-dxAUQY>5cB6HoCG1 z6yjVT6nxlcYHZ3tsixBsNR+%o4*u4RF0ZFW=ovj7tjx+>PiMRDDh&4Q-5Q(v&U@w} zm>HFla}_Wv%5luzkbL$zmBHuft~Pk;n{jFtGeSO-ZQgJj`90`98sW8Gn@x=PJPRs# zA+(F%fi;0GszU*6p(4b?5D@5%4QCV-DCl++OV}5(l_@8kgSwdja-U?t> z8yuEUW-ZZM?l(EjjmT9a5^}zO2VyScX0$qynL4K%Hg7EUIW~`Q+Dx+RxdwaGn@hQW z=j2$GHX&q~>-=tW75A zB-B*jGxGE@`mdq~i1U?ggzkE-k+o2{vW;MQW{6>U!=0Y%gKVO!)Qg^e(FUEK$DEcP zJpH4QFd#oDl1k@8@}~ZFlf2m)4ZXOGqvJqVTJcqFaI}--*(84#qD8F{uoq-Kqy&j& zzgY{LDfPr{S>DZ%zAbPlnYpzsC$hWTA;aODeppoyk&Wl6=Rn|utnXnwH|_~J1XA0a zgAEN*=7DV}m74vNL}E^kP3b5gyc*jtF_zr%AkGR7W*dI2jPXNVDP)#+FZ7vEWcG$d zIb#Le&I{V_!j4#dEptVLnPk}K90>Y0D}d5ouZ}Z8RPs9HO-_sM8e*^%U$DB{ai9*& z*&*4Jm1a9Gwprfs$Hk=0HC1o-%dP@CS~6mzh?&{_S#&J@Y2NB(0{$S=ufQFoLDsNNnsCXSrz zQExZjIk8|FV%gisV#zoYwwfDPNsT}OVVKX9xOdV+yNfBdon=pfZ(iBk_9e<=M_~@i z5xm|XT6y)RdX+4wl&A%qUbdaZ0w{sTX{V=tf6)^&#sbUzrEV+~ zKBsrye-vUOkd-xpH>gG0GCZJn#nZEm_a~7SyXXsUglfZLL4KK%=WWY8@f}q7ObqQV zmNTaw?`@_H=BTleG-{lF;>oJ}dN*r(Vw^=a?{lKlflX9)%>4#Bxuw42{PJja8yVmI zE)2qrNA6xajaX#OHIDXX64)7SXEN@JVLY4pe;*KrF_rsmhHg#UY?rR`=(B(V=}JWI zuHMv=KFA$+pm1n?slZ* zM*n+j+pg4I&KpY3IsM8zW%-jh2i1%DzfwQ&T!25< zs99jId+r0=8GEAX)U@J~$?w6Pv8PW}l8*>f-XViJFg1KgE#!qcJ3F*+dg}L)XOwom z3{zm7JdHa|C~*Nh3ycf9=IsFNY+dZwe}+1kZIBcux@i!8AOfs5fLHjRQ=NP!ghDm;pa-q$sq(%y-N6xi+yWEB~0`||B)kf;EB%{QRhJ)#t zz2R-m`+$j#!KCJTt{PD3kSpN;7*~ zDbZ(2WWA>y%+vV=F@Ue_##vImJ?`&E@-(WbL6-A|E~hL0Vo#i;ljiTp8cN$t927Nb z&b5o`oj$ump|Y+}NWy=dI}zzUe`sfo?fIUNwxxvPnmCWpB%ej{G1W)3$8T+8Ysz}yt;D|HIgCF;SnIOj|CnfFrgALlu z%ZK>SyT6B8_sA&e@j)n_@9BX&P>Owx4F`k>T}n;_eck57yI-&K@i~<(&ppa&`y>i} z0Q8r%gB7@u$eFhbcoh<_e;PG2_?F(uLk5zx{A?pLbjr5`p~KZ$0N#kJ@0}T|VR|PI z67l~W!LDd{-mvrjTGIYGX26=n?;JBfY;vqA40LPWaG?S)(Y$wnYHn$39?K}=oTo(G z?9ubKOs}ioM#N{$GJ0UH04}O|TNZ3(WxZq9R5P`|XG723y|KU6e>@A4Qh|KCxLK&KEqVb>MwTs~T~|qw@ieW4){9lfR=5ReISD6{h#rm9h9M|Czn1M3s@^ z19Js_uWF-kh76pPKnx^%`*EsJnAxny39HmM?7725=SzF4e{z>BV)Ub_E3h7y7=QYA z4mNuGAO(HhA^8R?zx_;4y`Zl=tlS|I#E?DIyoon9-txFkSodm!ri2H(cF1{C12(h0 ze#!7mALJ>fIOUle-nVCF9LScD<5{zF-f&N6Ea&8Sx+emhL~yKD`?LnC^v1kl#X&XE zZB#!f2m2?o4nLS%F@**-tBB7W|ZegJx-E3B_wKiWpB2d+9vfoI3Qlh!ly2( zvhsB+lOU_C6Fel?FY|ZaBONa#YHMXg;N&9cTlpO5__P;rj8bBAUyFsV>2tuj#oW%Z zJ=NVz%N1aHAUo@O_yU?e3U1NF)f-F`#28Tb=t+y8e^T2Rl4Z};eh!NCTp#=6%6!1{ z$-k4gKkiTLCOtOmaL-eMqqni)C+AxuSV{0Ku6hfK^eO-{cg1WRRe0TVUt`Oh zGs1rIf2cAgYHVt8iGQTT{zx0+6o;JC8-BuWZdvC+DbvT2+LMF>fsEWC((Of9!r68wQ|^@|+^lds-~W%8)iZYYt{5 zy!xg9I9>WZokx|dyhmB@d-}=M`IAeUrv$)Q$=@0qTKTRTaW2?I(@!A-*!$DH3HSAV zzz&wgS0ezR?HYXNicO)3|29JoY< zf350ET}T|EDVY)F=Lr@=e)Ue=P&lUMeQx+ITf0TJ-po8B*oS7c#wL)``6X^~SlwJx z@QfoZWVIWgvMlp=&bvu1iA*#~c}kci8AE0=F}HIS4z7j75}b^5n3wz=*(K@qI8OvK z$=;63Td|s)o$<`1r|~=il3Mdtui#4ie^m8V;K}?_)vuS{qn7SS)a%K8L1V8uU~BS+ zm*f%%Oz-3gDf{aCjRZ?!_J)Wsqhp}D9L_nTBQ+_}wFa%X+}CKwx~AZX=nf5Qj?HbE z5%%-KV3Iz3et<7b52yMI+QsjP0?Kc!8|k{K=8(QYHNFRAEqn7erdGpdyNUBue;XN| z+g2J1STxd}me3qhkH4VO1V-|A7jI3e>Iq1$E#k=A!$^lL$9P@&W@PtlJ6-bkVO8v#S~o; z+|Axh^w#^pEsBD)=8b`&L}Xy=0PNyUP*4ny2>*Qdbh=S#8jMt@)a{lm!d&f6Pgm0?)|a z;NrHH@U!J>c45i~*UjFZ%U@|^L%!1%7&+p>q15>wIN5~rpQdri#he~b4o$zm@9g6 zlnHr<(67JTNa~xNiHp82_4LYS8cfM|yc+-Q_mIG$R3~fAXU$AA{t0CkxW+ruH=GVvX7iY~}gkKSu;uOadf2EZ-B!My-k+ zG9*tQR3m_pRKT$$>ISZL_tId|l$6~_!Z51+Mgmt_?;MGEXW3>X92JFI|3#ACR&>mY ze>B-U?>~CR*6b|a;J(F{`-gIuZJ1`2fBL$i!n&7rI3)0> z@z#?}3XbggI|G8(qlQy0?6KaC2L|`-Z4_|{?N%FcjMA@B_%oS$)O1({;OcjNp<~QZ zBQ{*#d9q|~DKnS7QTnPng|Y3;NJ+xt?>)MDx67mXf4Xf?+3h(tlnrQ=YHVscajUlE zp8f;BqaI4(o`wW3b?%T&orl6FYNI;EJI@bEGWTh7a+T!SrdU#Z>wAQfloLwHg0CiZ z3b1*ewgGuf;4(~+4>uqp>bZ->- zzT*MLe-e?aH*Z;a7U=yW1t}~&60Yd-{0s^9>747+3GR1J6oEs&)(7O3r!OT3)KTuy z^L!n}SYT}4`toQF2|Y3OH}2!C&c~WWLDat^fSb`vZNL-D{uz=1KCUm7JGS==$Pk{( zuGiZMQIYe8av1$g{0{fhUKYepra2^rPiq1G|N@^?lWfBB+c-fW)B z9JQFlJ@pWfJr8%iwD&tArk-oJLEp;CP@!F^lcm1e>nv25QJ)jHYRxsA-BkEQnYl)n zf7Zt@34D3OqDYkdpI^$ilI&}KXKDW%$svZEEB83$tk%sZCeM7XyH{*ZMVLGb^3akI z3?fSyp>Q=MvV5+3(c!UJuDKIOC57_u=xswElILgO(#rd#4a>Fogv3!)l{a$QsvzabQknHutaZ?Qz9?TakbW5yd45D+xVCEq%84i1#P6sP z)$fAH`&C$KZLoY6){tb>H_JKj`aBA|51lBQl$t6D*LKbu{*dLFtH8=~xM~i>e|+1f zrCi&i`ToEqO!?L;XaR?kH-*ww(iLk2z^KS7TQYoBDPaQ^Is=h{WQfYf8H5PIl)bhZ!rj#uh6aqGqg-MZ$jjN%O$ZjOLOS%?m$(uO*k_bBw43%h#z zrDR;5ddA0@K8O2)Njj|$$aEaWf4O(i2s|pnp>8fNgJP*7(OK&uD_>_t1hi4YxGH#& zY#6z6MpxOvd(IAH>YlzQ$ubIsrPe9LpL_syK#IQ(NERliF;`oGj;-SL+RU7jxu%

_fpWuKloCPls`_OFvVVVC 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 Date: Tue, 4 Mar 2025 13:49:31 +0800 Subject: [PATCH 29/33] update:configure file --- XEngine_Release/XEngine_Config/XEngine_Config.json | 2 +- XEngine_Release/XEngine_Config/XEngine_VersionConfig.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index 95269fb..ce771e8 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -50,7 +50,7 @@ "st_MulitLogin":{ "bSecond":true, "bTime":true, - "bDay":false, + "bDay":true, "bCustom":false } }, diff --git a/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json b/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json index d3e31e5..b4cebf3 100644 --- a/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json +++ b/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json @@ -1,5 +1,6 @@ { "XVer":[ + "V3.17.0.1001 Build20250304", "V3.16.0.1001 Build20250113", "V3.15.0.1001 Build20241121", "V3.14.0.1001 Build20240920", -- Gitee From c1906f029fa4cdea26d238376c16f878fce95b2f Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 5 Mar 2025 10:26:11 +0800 Subject: [PATCH 30/33] added:new ci release system supported --- .github/workflows/RockyArm64_build.yml | 76 +++++++++++++++++++ .../{rockybuild.yml => RockyX86_64_build.yml} | 4 +- .github/workflows/UbuntuArm64_build.yml | 72 ++++++++++++++++++ ...ubuntubuild.yml => UbuntuX86_64_build.yml} | 4 +- .github/workflows/macbuild.yml | 2 +- .github/workflows/msbuild.yml | 38 +++++++++- .github/workflows/release.yml | 31 +++++++- XEngine_Source/VSCopy_Arm64.bat | 20 +++++ 8 files changed, 236 insertions(+), 11 deletions(-) create mode 100644 .github/workflows/RockyArm64_build.yml rename .github/workflows/{rockybuild.yml => RockyX86_64_build.yml} (96%) create mode 100644 .github/workflows/UbuntuArm64_build.yml rename .github/workflows/{ubuntubuild.yml => UbuntuX86_64_build.yml} (96%) create mode 100644 XEngine_Source/VSCopy_Arm64.bat diff --git a/.github/workflows/RockyArm64_build.yml b/.github/workflows/RockyArm64_build.yml new file mode 100644 index 0000000..02d5a6f --- /dev/null +++ b/.github/workflows/RockyArm64_build.yml @@ -0,0 +1,76 @@ +name: rocky Arm64 build workflows + +on: + push: + branches: + - 'develop' + paths: + - 'XEngine_Source/**' + - 'XEngine_Release/**' + - '.github/**' + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-24.04 + env: + IMAGE_NAME: rockylinux/rockylinux:9.5 + + strategy: + fail-fast: false + matrix: + arch: [linux/arm64] + + steps: + # 检出您的主仓库代码 + - name: Checkout main repository code + uses: actions/checkout@v4 + with: + ref: 'develop' + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Build ${{ matrix.arch }} + run: | + docker run --platform ${{ matrix.arch }} --rm \ + -v ${{ github.workspace }}:/workspace \ + -w /workspace ${{ env.IMAGE_NAME }} /bin/sh -c ' + set -e + dnf update -y + dnf install --allowerasing git make g++ wget curl jq unzip -y + + git config --global --add safe.directory /workspace + git submodule init + git submodule update + + latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_RockyLinux_9_Arm64.zip + unzip ./XEngine_RockyLinux_9_Arm64.zip -d ./XEngine_RockyLinux_9_Arm64 + cd XEngine_RockyLinux_9_Arm64 + + chmod 777 ./XEngine_LINEnv.sh + ./XEngine_LINEnv.sh -i 0 + + cp -rf ./XEngine_Include /usr/local/include + find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; + ldconfig + cd .. + + cd XEngine_Source + make ARCH=Arm64 RELEASE=1 + make FLAGS=InstallAll + make FLAGS=CleanAll + cd .. + + cd XEngine_Release + ./XEngine_AuthorizeService -t ' + + - name: Upload folder as artifact with RockyLinux + uses: actions/upload-artifact@v4 + with: + name: XEngine_AuthorizeService-RockyLinux-9-Arm64 + path: XEngine_Release/ + retention-days: 1 diff --git a/.github/workflows/rockybuild.yml b/.github/workflows/RockyX86_64_build.yml similarity index 96% rename from .github/workflows/rockybuild.yml rename to .github/workflows/RockyX86_64_build.yml index 40f5eb6..0110fdf 100644 --- a/.github/workflows/rockybuild.yml +++ b/.github/workflows/RockyX86_64_build.yml @@ -1,4 +1,4 @@ -name: rocky build workflows +name: rocky x86_64 build workflows on: push: @@ -78,6 +78,6 @@ jobs: - name: Upload folder as artifact with RockyLinux uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-x86_64-RockyLinux-9 + name: XEngine_AuthorizeService-RockyLinux-9-x86_64 path: XEngine_Release/ retention-days: 1 diff --git a/.github/workflows/UbuntuArm64_build.yml b/.github/workflows/UbuntuArm64_build.yml new file mode 100644 index 0000000..92fcb78 --- /dev/null +++ b/.github/workflows/UbuntuArm64_build.yml @@ -0,0 +1,72 @@ +name: ubuntu Arm64 build workflows + +on: + push: + branches: + - 'develop' + paths: + - 'XEngine_Source/**' + - 'XEngine_Release/**' + - '.github/**' + +jobs: + build: + runs-on: ubuntu-24.04 + env: + IMAGE_NAME: ubuntu:24.04 + + strategy: + fail-fast: false + matrix: + arch: [linux/arm64] + + steps: + - name: Checkout main repository code + uses: actions/checkout@v4 + with: + ref: 'develop' + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Build ${{ matrix.arch }} + run: | + docker run --platform ${{ matrix.arch }} --rm \ + -v ${{ github.workspace }}:/workspace \ + -w /workspace ${{ env.IMAGE_NAME }} /bin/sh -c ' + set -e + apt update -y + apt install git make g++ wget curl jq unzip -y + + git config --global --add safe.directory /workspace + git submodule init + git submodule update + + latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_UBuntu_24.04_Arm64.zip + unzip ./XEngine_UBuntu_24.04_Arm64.zip -d ./XEngine_UBuntu_24.04_Arm64 + cd XEngine_UBuntu_24.04_Arm64 + + chmod 777 ./XEngine_LINEnv.sh + ./XEngine_LINEnv.sh -i 0 + + cp -rf ./XEngine_Include /usr/local/include + find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; + ldconfig + cd .. + + cd XEngine_Source + make ARCH=Arm64 RELEASE=1 + make FLAGS=InstallAll + make FLAGS=CleanAll + cd .. + + cd XEngine_Release + ./XEngine_AuthorizeService -t ' + + - name: Upload folder as artifact with ubuntu Arm64 + uses: actions/upload-artifact@v4 + with: + name: XEngine_AuthorizeService-Ubuntu-24.04-Arm64 + path: XEngine_Release/ + retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/ubuntubuild.yml b/.github/workflows/UbuntuX86_64_build.yml similarity index 96% rename from .github/workflows/ubuntubuild.yml rename to .github/workflows/UbuntuX86_64_build.yml index 2407f97..308c771 100644 --- a/.github/workflows/ubuntubuild.yml +++ b/.github/workflows/UbuntuX86_64_build.yml @@ -1,4 +1,4 @@ -name: ubuntu build workflows +name: ubuntu x86_64 build workflows on: push: @@ -86,6 +86,6 @@ jobs: if: matrix.os == 'ubuntu-24.04' uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-x86_64-Ubuntu-24.04 + name: XEngine_AuthorizeService-Ubuntu-24.04-x86_64 path: XEngine_Release/ retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index 53c12ef..1af2a40 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -91,6 +91,6 @@ jobs: if: matrix.os == 'macos-14' uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-Arm64-Mac + name: XEngine_AuthorizeService-Mac-Arm64 path: XEngine_Release/ retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index 5cee66f..a88d1b8 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -15,7 +15,7 @@ jobs: fail-fast: false matrix: configuration: [Debug ,Release] - platform: [x86 ,x64] + platform: [x86 ,x64 ,ARM64] runs-on: windows-latest # 最新的 Windows 环境 @@ -59,7 +59,21 @@ jobs: echo "XENGINE_INCLUDE=${{ github.workspace }}/XEngine_Windows" | Out-File -FilePath $env:GITHUB_ENV -Append echo "XENGINE_LIB32=${{ github.workspace }}/XEngine_Windows/XEngine_Windows" | Out-File -FilePath $env:GITHUB_ENV -Append shell: pwsh - + - name: Set up Dependency ARM64 Environment + if: matrix.platform == 'ARM64' + run: | + $response = Invoke-RestMethod -Uri "https://api.github.com/repos/libxengine/libxengine/releases/latest" -Headers @{"Accept"="application/vnd.github.v3+json"} + $latest_tag = $response.tag_name + Write-Host "Latest Tag: $latest_tag" + + $url = "https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_Windows_Arm64.zip" + Invoke-WebRequest -Uri $url -OutFile "XEngine_Windows_Arm64.zip" + Expand-Archive -Path ./XEngine_Windows_Arm64.zip -DestinationPath ./XEngine_Windows -Force + + echo "XENGINE_INCLUDE=${{ github.workspace }}/XEngine_Windows" | Out-File -FilePath $env:GITHUB_ENV -Append + echo "XENGINE_LibArm64=${{ github.workspace }}/XEngine_Windows/XEngine_Windows" | Out-File -FilePath $env:GITHUB_ENV -Append + shell: pwsh + - name: Setup MSBuild uses: microsoft/setup-msbuild@v2 @@ -85,18 +99,34 @@ jobs: cd XEngine_Release ./VSCopy_x64.bat shell: pwsh + - name: Conditional Step for Arm64 Release + if: matrix.configuration == 'Release' && matrix.platform == 'Arm64' + run: | + cp -r XEngine_Source/ARM64/Release/*.dll XEngine_Release/ + cp -r XEngine_Source/ARM64/Release/*.exe XEngine_Release/ + cp -r XEngine_Source/VSCopy_Arm64.bat XEngine_Release/ + cd XEngine_Release + ./VSCopy_Arm64.bat + shell: pwsh - name: Upload folder as artifact with x86 if: matrix.configuration == 'Release' && matrix.platform == 'x86' uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-x86_32-Windows + name: XEngine_AuthorizeService-Windows-x86_32 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with x64 if: matrix.configuration == 'Release' && matrix.platform == 'x64' uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-x86_64-Windows + name: XEngine_AuthorizeService-Windows-x86_64 + path: XEngine_Release/ + retention-days: 1 + - name: Upload folder as artifact with Arm64 + if: matrix.configuration == 'Release' && matrix.platform == 'Arm64' + uses: actions/upload-artifact@v4 + with: + name: XEngine_AuthorizeService-Windows-Arm64 path: XEngine_Release/ retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cc4fe30..7ca74d7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,10 +16,37 @@ jobs: with: fetch-depth: 0 - - name: Download ubuntubuild + - name: Download Ubuntu x86_64 build uses: dawidd6/action-download-artifact@v6 with: - workflow: ubuntubuild.yml + workflow: UbuntuX86_64_build.yml + workflow_conclusion: success + check_artifacts: false + skip_unpack: true + if_no_artifact_found: fail + path: ./XRelease/ + - name: Download Ubuntu Arm64 build + uses: dawidd6/action-download-artifact@v6 + with: + workflow: UbuntuArm64_build.yml + workflow_conclusion: success + check_artifacts: false + skip_unpack: true + if_no_artifact_found: fail + path: ./XRelease/ + - name: Download RockyLinux x86_64 build + uses: dawidd6/action-download-artifact@v6 + with: + workflow: RockyX86_64_build.yml + workflow_conclusion: success + check_artifacts: false + skip_unpack: true + if_no_artifact_found: fail + path: ./XRelease/ + - name: Download RockyLinux Arm64 build + uses: dawidd6/action-download-artifact@v6 + with: + workflow: RockyArm64_build.yml workflow_conclusion: success check_artifacts: false skip_unpack: true diff --git a/XEngine_Source/VSCopy_Arm64.bat b/XEngine_Source/VSCopy_Arm64.bat new file mode 100644 index 0000000..449407a --- /dev/null +++ b/XEngine_Source/VSCopy_Arm64.bat @@ -0,0 +1,20 @@ +copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_BaseLib.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_BaseSafe.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_Algorithm.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_Core\XEngine_Core.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_Core\XEngine_ManagePool.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_Core\XEngine_Cryption.dll" "./" + +copy /y "%XEngine_Lib64%\XEngine_NetHelp\NetHelp_APIHelp.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_NetHelp\NetHelp_APIAddr.dll" "./" + +copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_DataBase.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_Packets.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./" + +copy /y "%XEngine_Lib64%\XEngine_RfcComponents\RfcComponents_WSProtocol.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_RfcComponents\RfcComponents_HttpProtocol.dll" "./" + +copy /y "%XEngine_Lib64%\XEngine_Client\XClient_APIHelp.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./" \ No newline at end of file -- Gitee From 4f50fe845ef2ae101c1309e0caea6cf081ff2caf Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 5 Mar 2025 10:39:43 +0800 Subject: [PATCH 31/33] modify:vs arm64 build support --- .../AuthorizeModule_CDKey.vcxproj | 79 ++++++++++++++++ .../AuthorizeModule_Client.vcxproj | 79 ++++++++++++++++ XEngine_Source/AuthorizeModule_Client/pch.h | 13 ++- .../AuthorizeModule_Configure.vcxproj | 81 ++++++++++++++++ .../AuthorizeModule_Configure/pch.h | 12 ++- .../AuthorizeModule_Database.vcxproj | 79 ++++++++++++++++ XEngine_Source/AuthorizeModule_Database/pch.h | 16 ++-- .../AuthorizeModule_Help.vcxproj | 79 ++++++++++++++++ .../AuthorizeModule_Protocol.vcxproj | 82 ++++++++++++++++ XEngine_Source/AuthorizeModule_Protocol/pch.h | 12 ++- .../AuthorizeModule_Session.vcxproj | 79 ++++++++++++++++ XEngine_Source/XEngine.sln | 46 +++++++++ .../XEngine_AuthorizeApp.vcxproj | 94 +++++++++++++++++++ .../XEngine_AuthorizeApp/pch.h | 27 ++++-- .../XEngine_AuthorizeService/Authorize_Hdr.h | 48 ++++++---- .../XEngine_AuthorizeService.vcxproj | 71 ++++++++++++++ XEngine_Source/XEngine_Depend | 2 +- 17 files changed, 854 insertions(+), 45 deletions(-) diff --git a/XEngine_Source/AuthorizeModule_CDKey/AuthorizeModule_CDKey.vcxproj b/XEngine_Source/AuthorizeModule_CDKey/AuthorizeModule_CDKey.vcxproj index b30a87a..eca66d9 100644 --- a/XEngine_Source/AuthorizeModule_CDKey/AuthorizeModule_CDKey.vcxproj +++ b/XEngine_Source/AuthorizeModule_CDKey/AuthorizeModule_CDKey.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ v143 Unicode + + DynamicLibrary + true + v143 + Unicode + DynamicLibrary false @@ -52,6 +66,13 @@ true Unicode + + DynamicLibrary + false + v143 + true + Unicode + @@ -66,9 +87,15 @@ + + + + + + $(XEngine_Include);..\AuthorizeModule_CDKey;$(IncludePath) @@ -78,6 +105,10 @@ $(XEngine_Include);$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + $(XEngine_Include);$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + $(XEngine_Include);$(IncludePath) $(XEngine_Lib32);$(LibraryPath) @@ -86,6 +117,10 @@ $(XEngine_Include);$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + $(XEngine_Include);$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + Level3 @@ -146,6 +181,24 @@ AuthorizeModule_CDKey.def + + + Level3 + true + _DEBUG;AUTHORIZEMODULECDKEY_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + + + Windows + true + false + AuthorizeModule_CDKey.def + + Level3 @@ -170,6 +223,30 @@ AuthorizeModule_CDKey.def + + + Level3 + true + true + true + NDEBUG;AUTHORIZEMODULECDKEY_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + MultiThreadedDLL + /utf-8 %(AdditionalOptions) + + + Windows + true + true + true + false + AuthorizeModule_CDKey.def + + @@ -185,8 +262,10 @@ Create Create + Create Create Create + Create diff --git a/XEngine_Source/AuthorizeModule_Client/AuthorizeModule_Client.vcxproj b/XEngine_Source/AuthorizeModule_Client/AuthorizeModule_Client.vcxproj index 3d63672..d1255bb 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthorizeModule_Client.vcxproj +++ b/XEngine_Source/AuthorizeModule_Client/AuthorizeModule_Client.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ v143 Unicode + + DynamicLibrary + true + v143 + Unicode + DynamicLibrary false @@ -52,6 +66,13 @@ true Unicode + + DynamicLibrary + false + v143 + true + Unicode + @@ -66,9 +87,15 @@ + + + + + + $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) @@ -82,10 +109,18 @@ $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + Level3 @@ -146,6 +181,24 @@ AuthorizeModule_Client.def + + + Level3 + true + _DEBUG;AUTHORIZEMODULECLIENT_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + + + Windows + true + false + AuthorizeModule_Client.def + + Level3 @@ -170,6 +223,30 @@ AuthorizeModule_Client.def + + + Level3 + true + true + true + NDEBUG;AUTHORIZEMODULECLIENT_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + MultiThreadedDLL + /utf-8 %(AdditionalOptions) + + + Windows + true + true + true + false + AuthorizeModule_Client.def + + @@ -186,7 +263,9 @@ Create Create Create + Create Create + Create diff --git a/XEngine_Source/AuthorizeModule_Client/pch.h b/XEngine_Source/AuthorizeModule_Client/pch.h index 0c2c8c5..90f1f56 100644 --- a/XEngine_Source/AuthorizeModule_Client/pch.h +++ b/XEngine_Source/AuthorizeModule_Client/pch.h @@ -55,7 +55,6 @@ using namespace std; extern bool AuthClient_IsErrorOccur; extern XLONG AuthClient_dwErrorCode; - #ifdef _MSC_BUILD #pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib") #pragma comment(lib,"XEngine_Core/XEngine_Cryption") @@ -63,15 +62,19 @@ extern XLONG AuthClient_dwErrorCode; #pragma comment(lib,"XEngine_Client/XClient_APIHelp") #pragma comment(lib,"XEngine_SystemSdk/XEngine_SystemApi") #ifdef _DEBUG -#ifdef _WIN64 +#ifdef _M_X64 #pragma comment(lib,"../x64/Debug/jsoncpp") -#else +#elif _M_ARM64 +#pragma comment(lib,"../ARM64/Debug/jsoncpp") +#elif _M_IX86 #pragma comment(lib,"../Debug/jsoncpp") #endif #else -#ifdef _WIN64 +#ifdef _M_X64 #pragma comment(lib,"../x64/Release/jsoncpp") -#else +#elif _M_ARM64 +#pragma comment(lib,"../ARM64/Release/jsoncpp") +#elif _M_IX86 #pragma comment(lib,"../Release/jsoncpp") #endif #endif diff --git a/XEngine_Source/AuthorizeModule_Configure/AuthorizeModule_Configure.vcxproj b/XEngine_Source/AuthorizeModule_Configure/AuthorizeModule_Configure.vcxproj index 8fac758..e41937b 100644 --- a/XEngine_Source/AuthorizeModule_Configure/AuthorizeModule_Configure.vcxproj +++ b/XEngine_Source/AuthorizeModule_Configure/AuthorizeModule_Configure.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ v143 MultiByte + + DynamicLibrary + true + v143 + MultiByte + DynamicLibrary false @@ -52,6 +66,13 @@ true Unicode + + DynamicLibrary + false + v143 + true + Unicode + @@ -66,9 +87,15 @@ + + + + + + true @@ -85,11 +112,21 @@ $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + true + $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + false $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + false + $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + Level3 @@ -151,6 +188,24 @@ AuthorizeModule_Configure.def + + + Level3 + true + _DEBUG;AUTHORIZEMODULECONFIGURE_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + + + Windows + true + false + AuthorizeModule_Configure.def + + Level3 @@ -175,6 +230,30 @@ AuthorizeModule_Configure.def + + + Level3 + true + true + true + NDEBUG;AUTHORIZEMODULECONFIGURE_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + MultiThreadedDLL + stdcpp20 + stdc17 + /utf-8 %(AdditionalOptions) + + + Windows + true + true + true + false + AuthorizeModule_Configure.def + + @@ -189,7 +268,9 @@ Create Create Create + Create Create + Create diff --git a/XEngine_Source/AuthorizeModule_Configure/pch.h b/XEngine_Source/AuthorizeModule_Configure/pch.h index 002babf..7a87791 100644 --- a/XEngine_Source/AuthorizeModule_Configure/pch.h +++ b/XEngine_Source/AuthorizeModule_Configure/pch.h @@ -40,15 +40,19 @@ extern XLONG Config_dwErrorCode; #ifdef _MSC_BUILD #ifdef _DEBUG -#ifdef _WIN64 +#ifdef _M_X64 #pragma comment(lib,"../x64/Debug/jsoncpp") -#else +#elif _M_ARM64 +#pragma comment(lib,"../ARM64/Debug/jsoncpp") +#elif _M_IX86 #pragma comment(lib,"../Debug/jsoncpp") #endif #else -#ifdef _WIN64 +#ifdef _M_X64 #pragma comment(lib,"../x64/Release/jsoncpp") -#else +#elif _M_ARM64 +#pragma comment(lib,"../ARM64/Release/jsoncpp") +#elif _M_IX86 #pragma comment(lib,"../Release/jsoncpp") #endif #endif diff --git a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.vcxproj b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.vcxproj index 4c1e6d5..9fc6650 100644 --- a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.vcxproj +++ b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ v143 MultiByte + + DynamicLibrary + true + v143 + MultiByte + DynamicLibrary false @@ -52,6 +66,13 @@ true Unicode + + DynamicLibrary + false + v143 + true + Unicode + @@ -66,9 +87,15 @@ + + + + + + $(XEngine_Include);..\AuthorizeModule_Database;$(IncludePath) @@ -82,10 +109,18 @@ $(XEngine_Include);$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + $(XEngine_Include);$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + $(XEngine_Include);$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + $(XEngine_Include);$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + Level3 @@ -146,6 +181,24 @@ AuthorizeModule_Database.def + + + Level3 + true + _DEBUG;AUTHORIZEMODULEDATABASE_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + + + Windows + true + false + AuthorizeModule_Database.def + + Level3 @@ -170,6 +223,30 @@ AuthorizeModule_Database.def + + + Level3 + true + true + true + NDEBUG;AUTHORIZEMODULEDATABASE_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + MultiThreadedDLL + /utf-8 %(AdditionalOptions) + + + Windows + true + true + true + false + AuthorizeModule_Database.def + + @@ -185,8 +262,10 @@ Create Create + Create Create Create + Create diff --git a/XEngine_Source/AuthorizeModule_Database/pch.h b/XEngine_Source/AuthorizeModule_Database/pch.h index ea92281..3172cd7 100644 --- a/XEngine_Source/AuthorizeModule_Database/pch.h +++ b/XEngine_Source/AuthorizeModule_Database/pch.h @@ -49,16 +49,20 @@ extern XLONG SQLPacket_dwErrorCode; #ifdef _WINDOWS #pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib.lib") #pragma comment(lib,"XEngine_HelpComponents/HelpComponents_DataBase.lib") -#ifdef _WIN64 #ifdef _DEBUG +#ifdef _M_X64 #pragma comment(lib,"../x64/Debug/AuthorizeModule_CDKey") -#else -#pragma comment(lib,"../x64/Release/AuthorizeModule_CDKey") -#endif -#else -#ifdef _DEBUG +#elif _M_ARM64 +#pragma comment(lib,"../ARM64/Debug/AuthorizeModule_CDKey") +#elif _M_IX86 #pragma comment(lib,"../Debug/AuthorizeModule_CDKey") +#endif #else +#ifdef _M_X64 +#pragma comment(lib,"../x64/Release/AuthorizeModule_CDKey") +#elif _M_ARM64 +#pragma comment(lib,"../ARM64/Release/AuthorizeModule_CDKey") +#elif _M_IX86 #pragma comment(lib,"../Release/AuthorizeModule_CDKey") #endif #endif diff --git a/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.vcxproj b/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.vcxproj index 0257e30..a5d17b0 100644 --- a/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.vcxproj +++ b/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ v143 MultiByte + + DynamicLibrary + true + v143 + MultiByte + DynamicLibrary false @@ -52,6 +66,13 @@ true Unicode + + DynamicLibrary + false + v143 + true + Unicode + @@ -66,9 +87,15 @@ + + + + + + $(XEngine_Include);..\AuthorizeModule_Help;$(IncludePath) @@ -82,10 +109,18 @@ $(XEngine_Include);$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + $(XEngine_Include);$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + $(XEngine_Include);$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + $(XEngine_Include);$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + Level3 @@ -146,6 +181,24 @@ AuthorizeModule_Help.def + + + Level3 + true + _DEBUG;AUTHORIZEMODULEHELP_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + + + Windows + true + false + AuthorizeModule_Help.def + + Level3 @@ -170,6 +223,30 @@ AuthorizeModule_Help.def + + + Level3 + true + true + true + NDEBUG;AUTHORIZEMODULEHELP_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + MultiThreadedDLL + /utf-8 %(AdditionalOptions) + + + Windows + true + true + true + false + AuthorizeModule_Help.def + + @@ -189,8 +266,10 @@ Create Create + Create Create Create + Create diff --git a/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.vcxproj b/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.vcxproj index d8f708b..e039230 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.vcxproj +++ b/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ v143 MultiByte + + DynamicLibrary + true + v143 + MultiByte + DynamicLibrary false @@ -52,6 +66,13 @@ true Unicode + + DynamicLibrary + false + v143 + true + Unicode + @@ -66,9 +87,15 @@ + + + + + + true @@ -85,11 +112,21 @@ $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + true + $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + false $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + false + $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + false @@ -155,6 +192,24 @@ AuthorizeModule_Protocol.def + + + Level3 + true + _DEBUG;AUTHORIZEMODULEPROTOCOL_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + + + Windows + true + false + AuthorizeModule_Protocol.def + + Level3 @@ -180,6 +235,31 @@ AuthorizeModule_Protocol.def + + + Level3 + true + true + true + NDEBUG;AUTHORIZEMODULEPROTOCOL_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + MultiThreadedDLL + 4819 + stdcpp20 + stdc17 + /utf-8 %(AdditionalOptions) + + + Windows + true + true + true + false + AuthorizeModule_Protocol.def + + @@ -193,8 +273,10 @@ Create Create + Create Create Create + Create diff --git a/XEngine_Source/AuthorizeModule_Protocol/pch.h b/XEngine_Source/AuthorizeModule_Protocol/pch.h index 625c60b..7da04b0 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/pch.h +++ b/XEngine_Source/AuthorizeModule_Protocol/pch.h @@ -50,15 +50,19 @@ extern XLONG Protocol_dwErrorCode; #ifdef _MSC_BUILD #pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib") #ifdef _DEBUG -#ifdef _WIN64 +#ifdef _M_X64 #pragma comment(lib,"../x64/Debug/jsoncpp") -#else +#elif _M_ARM64 +#pragma comment(lib,"../ARM64/Debug/jsoncpp") +#elif _M_IX86 #pragma comment(lib,"../Debug/jsoncpp") #endif #else -#ifdef _WIN64 +#ifdef _M_X64 #pragma comment(lib,"../x64/Release/jsoncpp") -#else +#elif _M_ARM64 +#pragma comment(lib,"../ARM64/Release/jsoncpp") +#elif _M_IX86 #pragma comment(lib,"../Release/jsoncpp") #endif #endif diff --git a/XEngine_Source/AuthorizeModule_Session/AuthorizeModule_Session.vcxproj b/XEngine_Source/AuthorizeModule_Session/AuthorizeModule_Session.vcxproj index 145fa0e..68c2dfa 100644 --- a/XEngine_Source/AuthorizeModule_Session/AuthorizeModule_Session.vcxproj +++ b/XEngine_Source/AuthorizeModule_Session/AuthorizeModule_Session.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ v143 MultiByte + + DynamicLibrary + true + v143 + MultiByte + DynamicLibrary false @@ -52,6 +66,13 @@ true Unicode + + DynamicLibrary + false + v143 + true + Unicode + @@ -66,9 +87,15 @@ + + + + + + $(XEngine_Include);..\AuthorizeModule_Session;$(IncludePath) @@ -82,10 +109,18 @@ $(XEngine_Include);$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + $(XEngine_Include);$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + $(XEngine_Include);$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + $(XEngine_Include);$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + Level3 @@ -146,6 +181,24 @@ AuthorizeModule_Session.def + + + Level3 + true + _DEBUG;AUTHORIZEMODULESESSION_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + + + Windows + true + false + AuthorizeModule_Session.def + + Level3 @@ -170,6 +223,30 @@ AuthorizeModule_Session.def + + + Level3 + true + true + true + NDEBUG;AUTHORIZEMODULESESSION_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp20 + stdc17 + MultiThreadedDLL + /utf-8 %(AdditionalOptions) + + + Windows + true + true + true + false + AuthorizeModule_Session.def + + @@ -183,8 +260,10 @@ Create Create + Create Create Create + Create diff --git a/XEngine_Source/XEngine.sln b/XEngine_Source/XEngine.sln index 12bb0f9..7b92e0d 100644 --- a/XEngine_Source/XEngine.sln +++ b/XEngine_Source/XEngine.sln @@ -79,96 +79,142 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AuthorizeModule_CDKey", "Au EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 + Release|ARM64 = Release|ARM64 Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6B926D00-DCD2-49E3-86A9-3230C9872E65}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B926D00-DCD2-49E3-86A9-3230C9872E65}.Debug|ARM64.Build.0 = Debug|ARM64 {6B926D00-DCD2-49E3-86A9-3230C9872E65}.Debug|x64.ActiveCfg = Debug|x64 {6B926D00-DCD2-49E3-86A9-3230C9872E65}.Debug|x64.Build.0 = Debug|x64 {6B926D00-DCD2-49E3-86A9-3230C9872E65}.Debug|x86.ActiveCfg = Debug|Win32 {6B926D00-DCD2-49E3-86A9-3230C9872E65}.Debug|x86.Build.0 = Debug|Win32 + {6B926D00-DCD2-49E3-86A9-3230C9872E65}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B926D00-DCD2-49E3-86A9-3230C9872E65}.Release|ARM64.Build.0 = Release|ARM64 {6B926D00-DCD2-49E3-86A9-3230C9872E65}.Release|x64.ActiveCfg = Release|x64 {6B926D00-DCD2-49E3-86A9-3230C9872E65}.Release|x64.Build.0 = Release|x64 {6B926D00-DCD2-49E3-86A9-3230C9872E65}.Release|x86.ActiveCfg = Release|Win32 {6B926D00-DCD2-49E3-86A9-3230C9872E65}.Release|x86.Build.0 = Release|Win32 + {1391B739-713B-4A3A-9233-FEAB92E0566C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1391B739-713B-4A3A-9233-FEAB92E0566C}.Debug|ARM64.Build.0 = Debug|ARM64 {1391B739-713B-4A3A-9233-FEAB92E0566C}.Debug|x64.ActiveCfg = Debug|x64 {1391B739-713B-4A3A-9233-FEAB92E0566C}.Debug|x64.Build.0 = Debug|x64 {1391B739-713B-4A3A-9233-FEAB92E0566C}.Debug|x86.ActiveCfg = Debug|Win32 {1391B739-713B-4A3A-9233-FEAB92E0566C}.Debug|x86.Build.0 = Debug|Win32 + {1391B739-713B-4A3A-9233-FEAB92E0566C}.Release|ARM64.ActiveCfg = Release|ARM64 + {1391B739-713B-4A3A-9233-FEAB92E0566C}.Release|ARM64.Build.0 = Release|ARM64 {1391B739-713B-4A3A-9233-FEAB92E0566C}.Release|x64.ActiveCfg = Release|x64 {1391B739-713B-4A3A-9233-FEAB92E0566C}.Release|x64.Build.0 = Release|x64 {1391B739-713B-4A3A-9233-FEAB92E0566C}.Release|x86.ActiveCfg = Release|Win32 {1391B739-713B-4A3A-9233-FEAB92E0566C}.Release|x86.Build.0 = Release|Win32 + {CB9138DF-789D-459F-AD43-4095B22A487F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {CB9138DF-789D-459F-AD43-4095B22A487F}.Debug|ARM64.Build.0 = Debug|ARM64 {CB9138DF-789D-459F-AD43-4095B22A487F}.Debug|x64.ActiveCfg = Debug|x64 {CB9138DF-789D-459F-AD43-4095B22A487F}.Debug|x64.Build.0 = Debug|x64 {CB9138DF-789D-459F-AD43-4095B22A487F}.Debug|x86.ActiveCfg = Debug|Win32 {CB9138DF-789D-459F-AD43-4095B22A487F}.Debug|x86.Build.0 = Debug|Win32 + {CB9138DF-789D-459F-AD43-4095B22A487F}.Release|ARM64.ActiveCfg = Release|ARM64 + {CB9138DF-789D-459F-AD43-4095B22A487F}.Release|ARM64.Build.0 = Release|ARM64 {CB9138DF-789D-459F-AD43-4095B22A487F}.Release|x64.ActiveCfg = Release|x64 {CB9138DF-789D-459F-AD43-4095B22A487F}.Release|x64.Build.0 = Release|x64 {CB9138DF-789D-459F-AD43-4095B22A487F}.Release|x86.ActiveCfg = Release|Win32 {CB9138DF-789D-459F-AD43-4095B22A487F}.Release|x86.Build.0 = Release|Win32 + {5FA1874A-32F4-4176-9C23-4E22BE183660}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {5FA1874A-32F4-4176-9C23-4E22BE183660}.Debug|ARM64.Build.0 = Debug|ARM64 {5FA1874A-32F4-4176-9C23-4E22BE183660}.Debug|x64.ActiveCfg = Debug|x64 {5FA1874A-32F4-4176-9C23-4E22BE183660}.Debug|x64.Build.0 = Debug|x64 {5FA1874A-32F4-4176-9C23-4E22BE183660}.Debug|x86.ActiveCfg = Debug|Win32 {5FA1874A-32F4-4176-9C23-4E22BE183660}.Debug|x86.Build.0 = Debug|Win32 + {5FA1874A-32F4-4176-9C23-4E22BE183660}.Release|ARM64.ActiveCfg = Release|ARM64 + {5FA1874A-32F4-4176-9C23-4E22BE183660}.Release|ARM64.Build.0 = Release|ARM64 {5FA1874A-32F4-4176-9C23-4E22BE183660}.Release|x64.ActiveCfg = Release|x64 {5FA1874A-32F4-4176-9C23-4E22BE183660}.Release|x64.Build.0 = Release|x64 {5FA1874A-32F4-4176-9C23-4E22BE183660}.Release|x86.ActiveCfg = Release|Win32 {5FA1874A-32F4-4176-9C23-4E22BE183660}.Release|x86.Build.0 = Release|Win32 + {A29DFD8D-2818-4BE3-A2DB-07F241B4BFC9}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A29DFD8D-2818-4BE3-A2DB-07F241B4BFC9}.Debug|ARM64.Build.0 = Debug|ARM64 {A29DFD8D-2818-4BE3-A2DB-07F241B4BFC9}.Debug|x64.ActiveCfg = Debug|x64 {A29DFD8D-2818-4BE3-A2DB-07F241B4BFC9}.Debug|x64.Build.0 = Debug|x64 {A29DFD8D-2818-4BE3-A2DB-07F241B4BFC9}.Debug|x86.ActiveCfg = Debug|Win32 {A29DFD8D-2818-4BE3-A2DB-07F241B4BFC9}.Debug|x86.Build.0 = Debug|Win32 + {A29DFD8D-2818-4BE3-A2DB-07F241B4BFC9}.Release|ARM64.ActiveCfg = Release|ARM64 + {A29DFD8D-2818-4BE3-A2DB-07F241B4BFC9}.Release|ARM64.Build.0 = Release|ARM64 {A29DFD8D-2818-4BE3-A2DB-07F241B4BFC9}.Release|x64.ActiveCfg = Release|x64 {A29DFD8D-2818-4BE3-A2DB-07F241B4BFC9}.Release|x64.Build.0 = Release|x64 {A29DFD8D-2818-4BE3-A2DB-07F241B4BFC9}.Release|x86.ActiveCfg = Release|Win32 {A29DFD8D-2818-4BE3-A2DB-07F241B4BFC9}.Release|x86.Build.0 = Release|Win32 + {51DCBDC7-50CB-4A44-B10B-FCF90309914D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {51DCBDC7-50CB-4A44-B10B-FCF90309914D}.Debug|ARM64.Build.0 = Debug|ARM64 {51DCBDC7-50CB-4A44-B10B-FCF90309914D}.Debug|x64.ActiveCfg = Debug|x64 {51DCBDC7-50CB-4A44-B10B-FCF90309914D}.Debug|x64.Build.0 = Debug|x64 {51DCBDC7-50CB-4A44-B10B-FCF90309914D}.Debug|x86.ActiveCfg = Debug|Win32 {51DCBDC7-50CB-4A44-B10B-FCF90309914D}.Debug|x86.Build.0 = Debug|Win32 + {51DCBDC7-50CB-4A44-B10B-FCF90309914D}.Release|ARM64.ActiveCfg = Release|ARM64 + {51DCBDC7-50CB-4A44-B10B-FCF90309914D}.Release|ARM64.Build.0 = Release|ARM64 {51DCBDC7-50CB-4A44-B10B-FCF90309914D}.Release|x64.ActiveCfg = Release|x64 {51DCBDC7-50CB-4A44-B10B-FCF90309914D}.Release|x64.Build.0 = Release|x64 {51DCBDC7-50CB-4A44-B10B-FCF90309914D}.Release|x86.ActiveCfg = Release|Win32 {51DCBDC7-50CB-4A44-B10B-FCF90309914D}.Release|x86.Build.0 = Release|Win32 + {AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894}.Debug|ARM64.Build.0 = Debug|ARM64 {AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894}.Debug|x64.ActiveCfg = Debug|x64 {AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894}.Debug|x64.Build.0 = Debug|x64 {AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894}.Debug|x86.ActiveCfg = Debug|Win32 {AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894}.Debug|x86.Build.0 = Debug|Win32 + {AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894}.Release|ARM64.ActiveCfg = Release|ARM64 + {AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894}.Release|ARM64.Build.0 = Release|ARM64 {AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894}.Release|x64.ActiveCfg = Release|x64 {AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894}.Release|x64.Build.0 = Release|x64 {AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894}.Release|x86.ActiveCfg = Release|Win32 {AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894}.Release|x86.Build.0 = Release|Win32 + {DD8CB5F1-980F-48C3-BA2F-3CF534903B14}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {DD8CB5F1-980F-48C3-BA2F-3CF534903B14}.Debug|ARM64.Build.0 = Debug|ARM64 {DD8CB5F1-980F-48C3-BA2F-3CF534903B14}.Debug|x64.ActiveCfg = Debug|x64 {DD8CB5F1-980F-48C3-BA2F-3CF534903B14}.Debug|x64.Build.0 = Debug|x64 {DD8CB5F1-980F-48C3-BA2F-3CF534903B14}.Debug|x86.ActiveCfg = Debug|Win32 {DD8CB5F1-980F-48C3-BA2F-3CF534903B14}.Debug|x86.Build.0 = Debug|Win32 + {DD8CB5F1-980F-48C3-BA2F-3CF534903B14}.Release|ARM64.ActiveCfg = Release|ARM64 + {DD8CB5F1-980F-48C3-BA2F-3CF534903B14}.Release|ARM64.Build.0 = Release|ARM64 {DD8CB5F1-980F-48C3-BA2F-3CF534903B14}.Release|x64.ActiveCfg = Release|x64 {DD8CB5F1-980F-48C3-BA2F-3CF534903B14}.Release|x64.Build.0 = Release|x64 {DD8CB5F1-980F-48C3-BA2F-3CF534903B14}.Release|x86.ActiveCfg = Release|Win32 {DD8CB5F1-980F-48C3-BA2F-3CF534903B14}.Release|x86.Build.0 = Release|Win32 + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|ARM64.Build.0 = Debug|ARM64 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x64.ActiveCfg = Debug|x64 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x64.Build.0 = Debug|x64 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x86.ActiveCfg = Debug|Win32 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x86.Build.0 = Debug|Win32 + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|ARM64.ActiveCfg = Release|ARM64 + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|ARM64.Build.0 = Release|ARM64 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|x64.ActiveCfg = Release|x64 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|x64.Build.0 = Release|x64 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|x86.ActiveCfg = Release|Win32 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|x86.Build.0 = Release|Win32 + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|ARM64.Build.0 = Debug|ARM64 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|x64.ActiveCfg = Debug|x64 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|x64.Build.0 = Debug|x64 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|x86.ActiveCfg = Debug|Win32 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|x86.Build.0 = Debug|Win32 + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|ARM64.ActiveCfg = Release|ARM64 + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|ARM64.Build.0 = Release|ARM64 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x64.ActiveCfg = Release|x64 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x64.Build.0 = Release|x64 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x86.ActiveCfg = Release|Win32 {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x86.Build.0 = Release|Win32 + {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Debug|ARM64.Build.0 = Debug|ARM64 {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Debug|x64.ActiveCfg = Debug|x64 {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Debug|x64.Build.0 = Debug|x64 {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Debug|x86.ActiveCfg = Debug|Win32 {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Debug|x86.Build.0 = Debug|Win32 + {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Release|ARM64.ActiveCfg = Release|ARM64 + {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Release|ARM64.Build.0 = Release|ARM64 {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Release|x64.ActiveCfg = Release|x64 {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Release|x64.Build.0 = Release|x64 {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Release|x86.ActiveCfg = Release|Win32 diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj index bb38a8e..9b63435 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj @@ -1,10 +1,18 @@ + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -48,6 +56,13 @@ Unicode Static + + Application + true + v143 + Unicode + Static + Application false @@ -56,6 +71,14 @@ Unicode Static + + Application + false + v143 + true + Unicode + Static + @@ -70,9 +93,15 @@ + + + + + + true @@ -84,6 +113,11 @@ $(XEngine_Include);../../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + true + $(XEngine_Include);../../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + false $(XEngine_Include);../../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) @@ -94,6 +128,11 @@ $(XEngine_Include);../../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + false + $(XEngine_Include);../../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + Use @@ -142,6 +181,30 @@ $(IntDir);%(AdditionalIncludeDirectories) + + + Use + Level3 + false + _WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + pch.h + stdcpp20 + stdc17 + + + Windows + + + false + true + _DEBUG;%(PreprocessorDefinitions) + + + 0x0804 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + Use @@ -201,6 +264,35 @@ $(IntDir);%(AdditionalIncludeDirectories) + + + Use + Level3 + true + true + false + _WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + pch.h + stdcpp20 + stdc17 + /utf-8 %(AdditionalOptions) + + + Windows + true + true + + + false + true + NDEBUG;%(PreprocessorDefinitions) + + + 0x0804 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + @@ -233,8 +325,10 @@ Create Create + Create Create Create + Create diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h index bae0cbd..63e464f 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h @@ -49,29 +49,38 @@ extern HWND hConfigWnd; extern bool bCrypto; extern LPCTSTR lpszStuType[2]; +#ifdef _MSC_BUILD +#pragma comment(lib,"Dbghelp.lib") +#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib.lib") +#pragma comment(lib,"XEngine_Core/XEngine_Cryption.lib") +#pragma comment(lib,"XEngine_Client/XClient_APIHelp.lib") #ifdef _DEBUG -#ifdef _WIN64 +#ifdef _M_X64 #pragma comment(lib,"../../x64/Debug/jsoncpp") #pragma comment(lib,"../../x64/Debug/AuthorizeModule_Help") #pragma comment(lib,"../../x64/Debug/AuthorizeModule_CDKey") -#else +#elif _M_ARM64 +#pragma comment(lib,"../../ARM64/Debug/jsoncpp") +#pragma comment(lib,"../../ARM64/Debug/AuthorizeModule_Help") +#pragma comment(lib,"../../ARM64/Debug/AuthorizeModule_CDKey") +#elif _M_IX86 #pragma comment(lib,"../../Debug/jsoncpp") #pragma comment(lib,"../../Debug/AuthorizeModule_Help") #pragma comment(lib,"../../Debug/AuthorizeModule_CDKey") #endif #else -#ifdef _WIN64 +#ifdef _M_X64 #pragma comment(lib,"../../x64/Release/jsoncpp") #pragma comment(lib,"../../x64/Release/AuthorizeModule_Help") #pragma comment(lib,"../../x64/Release/AuthorizeModule_CDKey") -#else +#elif _M_ARM64 +#pragma comment(lib,"../../ARM64/Release/jsoncpp") +#pragma comment(lib,"../../ARM64/Release/AuthorizeModule_Help") +#pragma comment(lib,"../../ARM64/Release/AuthorizeModule_CDKey") +#elif _M_IX86 #pragma comment(lib,"../../Release/jsoncpp") #pragma comment(lib,"../../Release/AuthorizeModule_Help") #pragma comment(lib,"../../Release/AuthorizeModule_CDKey") #endif #endif - -#pragma comment(lib,"Dbghelp.lib") -#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib.lib") -#pragma comment(lib,"XEngine_Core/XEngine_Cryption.lib") -#pragma comment(lib,"XEngine_Client/XClient_APIHelp.lib") \ No newline at end of file +#endif \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h index 4adc215..16a61bb 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h @@ -108,8 +108,20 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #include "AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.h" #ifdef _MSC_BUILD +#pragma comment(lib,"Ws2_32.lib") +#pragma comment(lib,"Dbghelp.lib") +#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib.lib") +#pragma comment(lib,"XEngine_Core/XEngine_Core.lib") +#pragma comment(lib,"XEngine_Core/XEngine_ManagePool.lib") +#pragma comment(lib,"XEngine_Core/XEngine_Cryption.lib") +#pragma comment(lib,"XEngine_Client/XClient_APIHelp.lib") +#pragma comment(lib,"XEngine_NetHelp/NetHelp_APIAddr.lib") +#pragma comment(lib,"XEngine_HelpComponents/HelpComponents_XLog.lib") +#pragma comment(lib,"XEngine_HelpComponents/HelpComponents_Packets.lib") +#pragma comment(lib,"XEngine_RfcComponents/RfcComponents_WSProtocol.lib") +#pragma comment(lib,"XEngine_RfcComponents/RfcComponents_HttpProtocol.lib") #ifdef _DEBUG -#ifdef _WIN64 +#ifdef _M_X64 #pragma comment(lib,"../../x64/Debug/AuthorizeModule_Configure.lib") #pragma comment(lib,"../../x64/Debug/AuthorizeModule_Protocol.lib") #pragma comment(lib,"../../x64/Debug/AuthorizeModule_Session.lib") @@ -117,7 +129,15 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #pragma comment(lib,"../../x64/Debug/AuthorizeModule_Help.lib") #pragma comment(lib,"../../x64/Debug/AuthorizeModule_CDKey.lib") #pragma comment(lib,"../../x64/Debug/XEngine_InfoReport.lib") -#else +#elif _M_ARM64 +#pragma comment(lib,"../../ARM64/Debug/AuthorizeModule_Configure.lib") +#pragma comment(lib,"../../ARM64/Debug/AuthorizeModule_Protocol.lib") +#pragma comment(lib,"../../ARM64/Debug/AuthorizeModule_Session.lib") +#pragma comment(lib,"../../ARM64/Debug/AuthorizeModule_Database.lib") +#pragma comment(lib,"../../ARM64/Debug/AuthorizeModule_Help.lib") +#pragma comment(lib,"../../ARM64/Debug/AuthorizeModule_CDKey.lib") +#pragma comment(lib,"../../ARM64/Debug/XEngine_InfoReport.lib") +#elif _M_IX86 #pragma comment(lib,"../../Debug/AuthorizeModule_Configure.lib") #pragma comment(lib,"../../Debug/AuthorizeModule_Protocol.lib") #pragma comment(lib,"../../Debug/AuthorizeModule_Session.lib") @@ -127,7 +147,7 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #pragma comment(lib,"../../Debug/XEngine_InfoReport.lib") #endif #else -#ifdef _WIN64 +#ifdef _M_X64 #pragma comment(lib,"../../x64/Release/AuthorizeModule_Configure.lib") #pragma comment(lib,"../../x64/Release/AuthorizeModule_Protocol.lib") #pragma comment(lib,"../../x64/Release/AuthorizeModule_Session.lib") @@ -135,7 +155,15 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #pragma comment(lib,"../../x64/Release/AuthorizeModule_Help.lib") #pragma comment(lib,"../../x64/Release/AuthorizeModule_CDKey.lib") #pragma comment(lib,"../../x64/Release/XEngine_InfoReport.lib") -#else +#elif _M_ARM64 +#pragma comment(lib,"../../ARM64/Release/AuthorizeModule_Configure.lib") +#pragma comment(lib,"../../ARM64/Release/AuthorizeModule_Protocol.lib") +#pragma comment(lib,"../../ARM64/Release/AuthorizeModule_Session.lib") +#pragma comment(lib,"../../ARM64/Release/AuthorizeModule_Database.lib") +#pragma comment(lib,"../../ARM64/Release/AuthorizeModule_Help.lib") +#pragma comment(lib,"../../ARM64/Release/AuthorizeModule_CDKey.lib") +#pragma comment(lib,"../../ARM64/Release/XEngine_InfoReport.lib") +#elif _M_IX86 #pragma comment(lib,"../../Release/AuthorizeModule_Configure.lib") #pragma comment(lib,"../../Release/AuthorizeModule_Protocol.lib") #pragma comment(lib,"../../Release/AuthorizeModule_Session.lib") @@ -145,16 +173,4 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #pragma comment(lib,"../../Release/XEngine_InfoReport.lib") #endif #endif -#pragma comment(lib,"Ws2_32.lib") -#pragma comment(lib,"Dbghelp.lib") -#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib.lib") -#pragma comment(lib,"XEngine_Core/XEngine_Core.lib") -#pragma comment(lib,"XEngine_Core/XEngine_ManagePool.lib") -#pragma comment(lib,"XEngine_Core/XEngine_Cryption.lib") -#pragma comment(lib,"XEngine_Client/XClient_APIHelp.lib") -#pragma comment(lib,"XEngine_NetHelp/NetHelp_APIAddr.lib") -#pragma comment(lib,"XEngine_HelpComponents/HelpComponents_XLog.lib") -#pragma comment(lib,"XEngine_HelpComponents/HelpComponents_Packets.lib") -#pragma comment(lib,"XEngine_RfcComponents/RfcComponents_WSProtocol.lib") -#pragma comment(lib,"XEngine_RfcComponents/RfcComponents_HttpProtocol.lib") #endif \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj index fa65693..ea5d3b0 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj @@ -1,10 +1,18 @@  + + Debug + ARM64 + Debug Win32 + + Release + ARM64 + Release Win32 @@ -45,6 +53,12 @@ v143 MultiByte + + Application + true + v143 + MultiByte + Application false @@ -52,6 +66,13 @@ true Unicode + + Application + false + v143 + true + Unicode + @@ -66,9 +87,15 @@ + + + + + + true @@ -85,11 +112,21 @@ $(XEngine_Include);$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + true + $(XEngine_Include);$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + false $(XEngine_Include);$(IncludePath) $(XEngine_Lib64);$(LibraryPath) + + false + $(XEngine_Include);$(IncludePath) + $(XEngine_LibArm64);$(LibraryPath) + Level3 @@ -139,6 +176,20 @@ true + + + Level3 + false + _DEBUG;_CONSOLE;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + stdcpp20 + stdc17 + + + Console + true + + Level3 @@ -159,6 +210,26 @@ true + + + Level3 + true + true + false + NDEBUG;_CONSOLE;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + stdcpp20 + stdc17 + /utf-8 %(AdditionalOptions) + + + Console + true + true + true + + diff --git a/XEngine_Source/XEngine_Depend b/XEngine_Source/XEngine_Depend index d022f0c..fda9f7d 160000 --- a/XEngine_Source/XEngine_Depend +++ b/XEngine_Source/XEngine_Depend @@ -1 +1 @@ -Subproject commit d022f0c7d2298275d663543afd33e18243c5f25d +Subproject commit fda9f7d9140cc6a32eecb499e2acb67e8e1c7e6f -- Gitee From 6bee469ced5d1219e1e9ffb8f1878ded95411174 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 5 Mar 2025 11:06:57 +0800 Subject: [PATCH 32/33] update:configure and build fixed --- XEngine_Release/XEngine_Config/XEngine_VersionConfig.json | 2 +- .../AuthorizeModule_CDKey/Authorize_CDKey/Authorize_CDKey.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json b/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json index b4cebf3..7244c24 100644 --- a/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json +++ b/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json @@ -1,6 +1,6 @@ { "XVer":[ - "V3.17.0.1001 Build20250304", + "V3.17.0.1001 Build20250305", "V3.16.0.1001 Build20250113", "V3.15.0.1001 Build20241121", "V3.14.0.1001 Build20240920", diff --git a/XEngine_Source/AuthorizeModule_CDKey/Authorize_CDKey/Authorize_CDKey.cpp b/XEngine_Source/AuthorizeModule_CDKey/Authorize_CDKey/Authorize_CDKey.cpp index 8316ed0..370a155 100644 --- a/XEngine_Source/AuthorizeModule_CDKey/Authorize_CDKey/Authorize_CDKey.cpp +++ b/XEngine_Source/AuthorizeModule_CDKey/Authorize_CDKey/Authorize_CDKey.cpp @@ -1089,7 +1089,7 @@ bool CAuthorize_CDKey::Authorize_CDKey_WriteTime(LPCXSTR lpszFileKey, int nCount if (nCount > 0) { int nListCount = 0; - XCHAR** pptszListTime; + XCHAR** pptszListTime = NULL; //读取现有的 Authorize_CDKey_ReadTime(lpszFileKey, &pptszListTime, &nListCount); //是否大于14 >= 10 -- Gitee From 8a643c07a9a30f6d589ce5e076d7767d9d8ade54 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 5 Mar 2025 11:35:20 +0800 Subject: [PATCH 33/33] ci:permission failure and vs copy failure --- .github/workflows/RockyArm64_build.yml | 4 +++- .github/workflows/UbuntuArm64_build.yml | 4 +++- XEngine_Source/VSCopy_Arm64.bat | 32 ++++++++++++------------- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/.github/workflows/RockyArm64_build.yml b/.github/workflows/RockyArm64_build.yml index 02d5a6f..43b7db5 100644 --- a/.github/workflows/RockyArm64_build.yml +++ b/.github/workflows/RockyArm64_build.yml @@ -66,7 +66,9 @@ jobs: cd .. cd XEngine_Release - ./XEngine_AuthorizeService -t ' + ./XEngine_AuthorizeService -t + chown -R $(id -u):$(id -g) . + chmod -R a+r . ' - name: Upload folder as artifact with RockyLinux uses: actions/upload-artifact@v4 diff --git a/.github/workflows/UbuntuArm64_build.yml b/.github/workflows/UbuntuArm64_build.yml index 92fcb78..6fa5c39 100644 --- a/.github/workflows/UbuntuArm64_build.yml +++ b/.github/workflows/UbuntuArm64_build.yml @@ -62,7 +62,9 @@ jobs: cd .. cd XEngine_Release - ./XEngine_AuthorizeService -t ' + ./XEngine_AuthorizeService -t + chown -R $(id -u):$(id -g) . + chmod -R a+r . ' - name: Upload folder as artifact with ubuntu Arm64 uses: actions/upload-artifact@v4 diff --git a/XEngine_Source/VSCopy_Arm64.bat b/XEngine_Source/VSCopy_Arm64.bat index 449407a..9d58afb 100644 --- a/XEngine_Source/VSCopy_Arm64.bat +++ b/XEngine_Source/VSCopy_Arm64.bat @@ -1,20 +1,20 @@ -copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_BaseLib.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_BaseSafe.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_Algorithm.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_Core\XEngine_Core.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_Core\XEngine_ManagePool.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_Core\XEngine_Cryption.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_BaseLib\XEngine_BaseLib.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_BaseLib\XEngine_BaseSafe.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_BaseLib\XEngine_Algorithm.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_Core\XEngine_Core.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_Core\XEngine_ManagePool.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_Core\XEngine_Cryption.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_NetHelp\NetHelp_APIHelp.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_NetHelp\NetHelp_APIAddr.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_NetHelp\NetHelp_APIHelp.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_NetHelp\NetHelp_APIAddr.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_DataBase.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_Packets.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_HelpComponents\HelpComponents_DataBase.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_HelpComponents\HelpComponents_Packets.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_RfcComponents\RfcComponents_WSProtocol.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_RfcComponents\RfcComponents_HttpProtocol.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_RfcComponents\RfcComponents_WSProtocol.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_RfcComponents\RfcComponents_HttpProtocol.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_Client\XClient_APIHelp.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./" \ No newline at end of file +copy /y "%XEngine_LibArm64%\XEngine_Client\XClient_APIHelp.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./" \ No newline at end of file -- Gitee