????ࡱ> 5@ R bjbj222(XX"rUUUU$UVVVVVsWsWsW$޿R0NsWsWsWsWsWVV}}}sW$LVV}sW}}VV h4U0~W~~sWsW}sWsWsWsWsWSTs TDelphi vmo`_j6Rmc \Osavetime savetime2k@yahoo.com 2004.1.9 b_St^ 12 g NeYI{_Ng}v 0Inside VCL 00bvuBfvku/f (W,gfvc\ NmeQx[ Delphi00RN 12 g^ fl gQO b NXQI{ Y VCL nNx0(W[ TObject0TPersistant T TComponent vNxKN_ b|vs/f NnZi Delphi irN0R^/f`#juR^v0e/fbg w Delphi ubvY_}Nx B}et㉆NirNuR^vte PN z(ψyr%Ra book523 vk^R)0 dk_b1\Yx[ Delphi VCL vmo`Ut_j6R0ꁞ_b[ N 0DelphivirN_j6Rmc 0 Nck}YN Pfg b_NW,g Nb Delphi VCL vmo`UtFhg[N0bvx[el1\/fnNx NYkq _O}"}8onpfwO0(Wdkb] \ Delphi VCL mo`_j6Rvt NO OeN_v_ _Nf}Rx[ Delphi bl gBf VCL nNxv gSS(buzl g~^ P z_+^Pb#j gBf :)01uex[Bfw N[g g/ ˊ'Y[cck0 b(WRg VCL mo`_j6RvN z-N W,g NSgN N P^ TObject0TControl T TWinControl0֖6qbl g Nd\^(Y TForm)vNx FObpN/f[sv0}{0bvO VCL mo`|q}-Ngܕuvqg(W N P^-N0} v5_ ccWy^vmo`UtelKN_QvQN^vmo`UtN z1\[f_YN0 `a,ge gNOMnp w Win32 mo`WTzN z W,gw TObject0TControl T TWinControl [svgQ[ q` Delphi \av͑ YKa cMnp q` Win32 SDK } z q` Delphi virN_j6R q` Delphi gQL]D}T c 0Delphi vSP[NLu 0 http://www.codelphi.com/ 0VCLzQxe;Q_j6RxvzKb |QMFCk 0 http://www.delphibbs.com/delphibbs/dispq.asp?lid=584889 0DelphivirN_j6Rmc 0 http://www.delphibbs.com/delphibbs/dispq.asp?LID=2390131 ,gecHr nil then TProcedure(InitProc); [code] _N1\/fYg(u6b`(Wa(u z_vWLMRKLN Pyr[vN z SN-n InitProc cTrN z0(pN(u6b N(W Application.Initialize KNMRb(WUCQv Initliazation k-NvcKL Pyr[vN zbTN PSvT{Hh/fYgCQN- ^g(Wa(u z_vNxWLKNMRWLN PN z &NN PN z_(WvQNUCQv Initialization WL[bKN_WL[kY Application irN_uR^] GRSO(u PN zcjO[s0) 6q_/f Project1 v,{ 2 S Application.CreateForm(TForm1, Form1); Sv;N\O(u/fuR^ TForm1 \a 6q_b Application.MainForm -np TForm10 g_/f Project1 v,{ 3 S Application.Run; TApplication.Run (u TApplication.HandleMessage Utmo`0Application.HandleMessage vNx_NS gNL [code] if not ProcessMessage(Msg) then Idle(Msg); [/code] TApplication.ProcessMessage MbwckY^zmo`W0ProcessMessage O(u PeekMessage API Nf GetMessage rsSmo`GOR-Nvmo`0O(u PeekMessage v}YU/f PeekMessage |vsmo`GOR-Nl gmo`BfgzsSԏV #j1\p HandleMessage QxeWL Idle(Msg) cONOd0 ProcessMessage (WUtmo`WvBfPyr%RUtN HintMsg0MDIMsg0KeyMsg0DlgMsg I{yrkmo` @bN(W Delphi -N_\Q w0R} Win32 SDK } z-Nv@SR Dialog Window0MDI Window vUt N\݈0R TForm -NSN(vQ[ Win32 SDK -Nv Dialog _N/fS/f Microsoft \[NN PzN zTND}QxeeO(u6bNbv- vQgQK\ON zN Pnfz!qpu)0 [code] function TApplication.ProcessMessage(var Msg: TMsg): Boolean; var Handled: Boolean; begin Result := False; if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then // _mo`GORrsSmo` begin Result := True; if Msg.Message <> WM_QUIT then begin Handled := False; // Handled h:y Application.OnMessage /f&T]}UtN // vuMRmo`0 // Yg(u6b-nNApplication.OnMessage NNc6Rx // GRHQ(u Application.OnMessage if Assigned(FOnMessage) then FOnMessage(Msg, Handled); if not IsHintMsg(Msg) and not Handled and not IsMDIMsg(Msg) and not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then // `not Handled pN N>e(WgMR begin TranslateMessage(Msg); // UtW[CQIc DispatchMessage(Msg); // (u WndClass.lpfnWndProc end; end else FTerminate := True; // 6e0R WM_QUIT Bfa(u z_B}bk // (ψS/f-nN PB}bkj) end; end; [/code] _ NbvNxO w Delphi a(u z_vmo`W_j6Rjn Win32 C a(u z_] NY0S/f Delphi pNeO(u6bvO(u-nN_YdU\zz vQoR\O(u/fmo`Utgk} C Win32 API (uHesNONN0 =============================================================================== " TWinControl.Create0;QzN zTuR^z =============================================================================== Nb!|U֊NN P Application v^z0Rb_bmo`WvN z s(WvOUL/f Delphi c6R/fYUO\݈uR^zNN zv0VpS g^zNz mo`WMb ga0 bPHQVg Delphi VCL-N~^ P;N^v|~bgFh TObject @b girNvW^ TPersistent @b gwQ gAmyr'`irNvW^ TComponent @b g>e(W Delphi Form Designer NvirNvW^ TControl @b gSvirNvW^ TWinControl @b gwQ gzc6RxvirNW^ Delphi /f_ TWinControl Y[szvܕvCQN0@bz \e z_-O 1\/fN Pzc6Rx HWND0TWinControl gN P FHandle y gbTNhvuMRirNvzc6Rx N TWinControl.Handle l\'`O*OU0 b,{N!kߍd TWinControl.Create N zBf z6ql g|vs CreateWindow API (u f TWinControl &N N/f(WirNuR^Bf1\^z Windows z0Yg(u6bO(u TWinControl.Create(Application) N_ zsSO(u Handle *OUzgQsN`lbT T{Hh(W TWinControl.GetHandle -N Handle /fN P/Uvzc6Rx [code] property TWinControl.Handle: HWnd read GetHandle; [/code] TWinControl.GetHandle NxvgQ[/fNe(u6b*OU FHandle bT TWinControl.HandleNeeded 1\g(u0HandleNeeded HQ$Re TWinControl.FHandle /f&T/fI{e 0 (_UNUOirN(ui QxeN_@b girNbTvaԚn)0Yg FHandle NI{e 0 GRvcԏV FHandleYg FHandle I{e 0 GRfzl guR^ Bf HandleNeeded R(u TWinControl.CreateHandle OuR^N P Handle0FO CreateHandle S/f PS݈Qxe [HQ(u TWinControl.CreateWnd OuR^z 6q_ubNN}w VCL Control KLvSxe(bl0} w)0CreateWnd /fN P͑vN z [HQ(u TWinControl.CreateParams -nuR^zvSxe0(CreateParams /f P[el _N1\/f z_+^SN͑  PQxe [_^zvl\'`0) CreateWnd 6q_(u TWinControl.CreateWindowHandle0CreateWindowHandle Mb/fwck(u CreateWindowEx API uR^zvQxe0 Yiq'T bPSNb(` Borland pNbN`__ܖ FOgB} ^g Borland #j- g[vSt0 Nbv֊SN=~P}p TWinControl pNpNn\|q}njnvTO(uQϑcr^zz S(Wg Pel(u0Rc6Rvzc6RxBfMbwckuR^z08^|vu(Wzo:yvBfP0N Pz/f&To:y8^8^|vu(W \ Parent l\'` ((WTControl -N[) emo`UtN z-N|vupu8^Bfvnjn)mo &N(u؞vpu8^UtN z0pu8^UtS WWv/f WindowProc(Message)0WindowProc /f TControl( N/f TWinControl) vN Pl\'`(property) [code] property WindowProc: TWndMethod read FWindowProc write FWindowProc; [/code] WindowProc v^W/f TWndMethod @bN[/fN PirNvܕvmo`UtQxecj(ˊSMRb TWndMethod vN9})0(W TControl.Create -N FWindowProc **4,6,..p/0123334456t78X8899V;X;d<f<==>>CChgnHtHhgnHo(tH^ 8vx6 8  V X t ,.<dXbdr r r r r r e#r r  r r r r r r r r r r r r r r r r r gdg dv& Nx@z4jr r r r r r r r r r r r r r r r r r r r r r r r r r gdgj fFRT  PR < r r r r r r r r r r r r r r r r r r r r r r r r gdg H!F#H#$$z%|%%%&`&n&B(D((8):))>*L****4,6,. ..r r r  r r r  r r r r r r r r r r r r r r r r r r r gdg......p////000P11:222333$44444v55v666r r r r r r r r r r r r r r r r r r r r r r r r r gdg66t7v78X88999":d::;V;X;d<f<==> >>>>CCFF&Gr r  r r r r r r r r r r r r  r r  r r r r r r r @!r r r gdgCFF&G(GGGHHHH>II~JJKKLLNL|P~PPPSSTTUUUVXX^XXNYxYZZ[\_J`:aabLbbddnee8f:gg,iink~kklllmmn2oo"pqqqrstvvDwFwfxyyylz{r{t{{"NUhgnHtHhgnHo(tH]&G(GGGHHHH>ILIIII~JJKKLLNL|P~PPPSSTT.UUUr r r r r r r r r r r r r r r r r r r r K)r r  r r r r gdgUUVLVxVV"WWXX^XXXNYPYxYY|ZZZ[[[[ \R\\\\^]r r r r r r r r r r r r r r r r r r r r r r r r r gdg^]]\^^^__`J``:aabLbbJcxccccd,dXddddddnee8fr r r r r r r r r r r r r r r r r r r r r r r r gdg8f:gHgggg,i:iFi~iijjknk|k~kkkllllllmmnn2or  r r r r  r r r r r r r r r r r r r r r r r r r  r r gdg2oo"pqqqqZrfrrrrrss t8tbttttttvvDwFwfxtxyr r  r r r r r r r r r  r r r r r r r r r r r r r r  r r gdgyyyyylzzzz{{r{t{"N أڣr r r r r r r r r r r r r r r r r  r r r r  r r r r  r r gdgwProc OX[2Q P WndProc Qxe Nvc(u WndProc bTbs`S/fWeHesvna0_ Nb TWndMethod v֊UN P TWndMethod xeSN TControl.Create -> TWinControl.Create0 mo`UtQxe WndProc GR/fHQUt]`vmo` 6q_ w`l/f&T^N0R6r^v WndProc -NUt0@bNmo`vUtN z/f TWinControl.WndProc -> TControl.WndProc0 Vdk YgRgmo`vUtN z ar_P[^v WndProc N zY 6q_Mb/f6r^v WndProc N z01ue TWinControl /f,{N P/eczuR^v^ @bN[v WndProc /f_͑v [[sNgW,gv VCL mo`Ut0 TWinControl.WndProc ;N/fUtNNuv0n 0z&qޞmo` \e N_Vavmo` TWinControl.WndProc vcԏV &TGRbmo`P^ TControl.WndProc Ut0 _ TWinControl.WndProc XdbNk w w [code] WM_KEYFIRST..WM_KEYLAST: if Dragging then Exit; // laO(u Exit vcԏV [/code] kNxva`/fYgvuMRCQNckUeb>erKa GRNh@b guvmo`0 [code] Q wNk WM_MOUSEFIRST..WM_MOUSELAST: if IsControlMouseMsg(TWMMouse(Message)) then begin { Check HandleAllocated because IsControlMouseMsg might have freed the window if user code executed something like Parent := nil. } if (Message.Result = 0) and HandleAllocated then DefWindowProc(Handle, Message.Msg, Message.wParam, Message.lParam); // DefWindowProc /f Win32 API -N:wUtmo`vQxe Exit; end; [/code] ψv IsControlMouseMsg _ܕu0bPVaN NTControl ^virN&Nl guR^ Windows z [/f`#jc6e0Rn T͑j~I{mo`vbTSONmo`1\/f1u[v Parent z|vv0 (W NbvNx-N TWinControl.IsControlMouseMsg $Ren MO@W/f&T=(W TControl ^c6R N Yg N/f1\ԏV&TeUt (u TControl.MouseWheelHandler [sn n*mo` O(u TObject.Dispatch (u DMT mo`Utel TControl.WndProc v \k!|U (WdkSONJNJ,{Nh0`O/f&T gN#jvO(u}W(W`O_ٖdg PߎԚv Button Bf Sb_bN!k Click NN0@bNYg`O-N P N{(u6b(uY_v^ޞd ub T#jޞd!kxe Click NNv cBf 1\S TControl.WndProc Utn mo`vN zN0 TControl.WndProc g_NLNx/f Dispatch(Message) _N1\/fYgg Pmo`l g TControl N_vNUO^Ut mo`g Dispatch Ut0 TObject.Dispatch /f Delphi VCL mo`Ԛ|-N^8^ܕuvel0 =============================================================================== " TObject.Dispatch =============================================================================== TObject.Dispatch /f P[Qxe [vrfY N [code] procedure TObject.Dispatch(var Message); virtual; [/code] ˊla[vSxe֖6q MainWndProc T WndProc vSxeveGR/fؚMOMOCQCQD}X[>e(WؚMO@W NOMOCQCQMOCQD}X[>e(WNOMO@W @bN Dispatch v Message Sxev,{N PaԚMOCQD}1\/f LoWord(Message.Msg)0 NW/f MessageSxevaԚX[>ee_c [code] | | + Memory |--------| | HiWord | |--------| | LoWord | <-- [EDX] |--------| | | |--------| | | |--------| - Memory [ W:yInteger ^Wv MsgID (WaԚ-NvRM( Dispatch Y_}Nx) ] (pN!|Uw b(u Word paԚUMO N/f Byte ^g Nef wa) [/code] s(WSNY TObject.Dispatch vY_}NxN( NaY_}lܕO _bgN9}wQԚvR) [code] procedure TObject.Dispatch(var Message); virtual; asm PUSH ESI ; OX[ ESI MOV SI,[EDX] ; b MsgID yeQ SI (2 bytes) ; Yg MsgID /fInteger ^W [EDX] = LoWord(MsgID) ; NW OR SI,SI JE @@default ; Yg SI = 0 (u DefaultHanlder CMP SI,0C000H JAE @@default ; Yg SI >= $C000 (u DefaultHandler (laψ) PUSH EAX ; OX[ \avcj MOV EAX,[EAX] ; ~b0R \av VMT cj CALL GetDynaMethod ; (uirNvRKael; Yg~b0RNRKael ZF = 0 ; l~b0R ZF = 1 ; lGetDynaMethod /f System.pas -Nvrs_RKael0W ; @WvY_}Qxe POP EAX ; b`_ EAX p \avcj JE @@default ; Ygl~b0RvܕvRKael (u DefaultHandler MOV ECX,ESI ; b~b0RvRKaelcjX[eQ ECX POP ESI ; b`_ ESI JMP ECX ; (uirNvRKael @@default: POP ESI ; b`_ ESI MOV ECX,[EAX] ; birNv VMT cjX[eQ ECX N(u DefaultHandler JMP DWORD PTR [ECX] + VMTOFFSET TObject.DefaultHandler end; TObject.Dispatch vWLN z/f b MsgID X[eQ SI \OpRKaelv"}_

= $C000 GR(u DefaultHandler(_N1\/f@b g RegisterWindowMessage ubvmo`ID gvc|v0R DefaultHandler -N _bgN P[O) jg/f&T gv \avRKael ~b0RNRKael GRWLrel l~b0RRKael GR(u DefaultHandler SON message ܕuW[[virNel1\/fRKael O_ TWinControl -Nb~^ Pmo`UtQxeQO procedure WMSize(var Message: TWMSize); message WM_SIZE; procedure WMMove(var Message: TWMMove); message WM_MOVE; [/code] 0Rs(WB}ef}v WM_SIZE0WM_PAINT elvUtN zN'T0 NFO/f Windows mo` # Delphi ][vmo`_N/fN T#jve_Utv [code] procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED; procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED; [/code] @bNYg`O]ݑ \g Pc6R[NN Pmo` `O_NSN(u message ܕuW[[UtrelvQxe VCL vmo`|q}gR(u0R`O[vQxe0 1ue Dispatch vSxeSNgMR 2 PMOCQCQD}p"}_ &NN MainWndProc 0R WndProc 0R Dispatch /fN_(u(P^MOCQ@W)ve_OP^mo`gQ[ `OSN\mo`vP}i-npNUOP}i uSNS g MsgID   S`O(WUtmo`vQxe-Nckx0W*OUNSxe1\L0 gܕuv Dispatch elJTNk= s(WbP w w DefaultHandler ZPNNN =============================================================================== " TWinControl.DefaultHandler =============================================================================== DispatchHandler /f_ TObject 1\YX[(Wv [vrfY N [code] procedure TObject.DefaultHandler(var Message); virtual; [/code] _ TW[_NSN wQrQxev'YivvgB}vmo`UtQxe0(W TObject v[-N DefaultHandler &Nl gNx DefaultHandler /f(WUtmo`v^(TControl)KN_͑ v0 _ Nbv֊-N]}wS DefaultHandler /f1u TObject.Dispatch (uv @bN DefaultHandler T Dispatch vSxe^WN#j/f!q^Wv var Message0 1ue DefaultHandler /f P[el @bNWLAm z/f_P[^0R6r^0(W TWinControl T TControl v DefaultHandler -N N6qu_ WndProc vWLGR _N1\/f TWinControl lUtvmo` QO(u inherited (u TControl.DefaultHandler OUt0 (W TWinControl.DefaultHandler -NHQ/fUtNNN N*Y͑vWindows mo` YWM_CONTEXTMENU0WM_CTLCOLORMSGBOXI{06q_ZPNiQNk͑v]\O10Ut RM_GetObjectInstance mo`20 \@b g*gUtvzmo`(u TWinControl.FDefWndProc0 NR%R֊0 RM_GetObjectInstance /fa(u z__URBfRO(u RegisterWindowMessage API ;Qv Windows |q}}mo`ID _N1\/f Pmo`0RT Dispatch _g!qhN0WP^f} DefaultHandler( Dispatch vRg)0TWinControl.DefaultHandler |vs Pmo`1\b Self cj-npԏV$?$n$o$%%N&U&&&&&'&'<'R''' ( (/(M(g(((((>)w)x)))))*)*A*Z*n***.+o+++ ,%,c,,,-&-q------..,.E.M.N.f.g...//////000001W11111112 2A2H2P2Q222H3I33344444-535J5O5W5X5556616F6\6c6k6l6I7J77738:88888869=9{99999;;d;z;;<<==.=/===D>E>>>*?+?I?P?m????????/@;@@@ AXAAAAAABBBBCCDCCC D&DE?EuEvEEE)FDFeFFFFFGGGG#H$HPHQHHHI#I*I^IfIgIIIJJBJCJ#K$KKK!L(L`LLLMFMGMxMMMMMiNpNqNNNNNNN OO/OKOOOOOOOO2P6PZPPPPQJQ`QQQQ/RWRRRR+SYS}SSSSSTUTZT[TtTTTUU+UJUKUUUUV V VYV`VVVWWPWQWWWXXkXXXY YCYKYLYYY"Z#ZZZz[[[]]]]]^^^^d_e___m`n`````Faqaaaa~bbbbbc c/cZcbcccccccce e"e5eIe[eqeeeeeeeLfff%g-g.geglgggghhhLhhhOjPjjjkjjjjjjjj-k4k5kkkqkkkkkk lll$lKlvlllllmmmmmnTn{n|nnnnnno?oioooooo1ppppppLqqr$r000000000000000000 0000000000 0000000000000000000000000000000 00 00 0 0 0 00(0 00000000000000000000000000p000000000000000000000000000000000000000000000000000000000000 000000 0 0000000000000000000 000 0 0 0 0 0 0 0 0 00 0 0 000 0 0 0 0 0 0 0 00 0 0 0 0 0 000(0(00(0(000(0(0(00(0(0(0(0(0(0(0(000 0 0 0 0 0 0 0 000000 0 00(0(0(0(0(0(00(00(0(000(0(0(0(0(000000000000000 00 00 00 00 0p00000000000000000000000000000000000000000000000000p0000080808000808000808080808080808080808080800808080808080800808008080008080808080@0@0@0@0@0@0@0@0@000 0 0@0@0@0@0@0@0@00@0@0@0@0@0@0@000@0@00@000000 0@0 0 0 0 0 0 0 0 0p0@000H0H000H0H000H0H0H0H0H0H0H0H0H0H0H0H0H00H000 0H0H0H0H0H0H0H00H0H0H0H0H0H0H000H0H0H0H0H0H0H0H0H00 0P0 0 0 0 0 0 00(00 0 0P0P0P0P0P0P00P00P0P0P0P000P0P0P000P0P0P0P00P00 0P0 0P0 0P0 0 0 0 0p0P0P0X0X0X000X0X000X0X0X0X0X0X0X0X0X0X0X0X0X0X0X00X0X0X0X00X0X000`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0`0 0`0`0`0`0`0`000`0`0`0`0`0`0`0000`0`0`0`0`0`0`0`0 0 0000 00h0h0h0h00000h0h000h0h0h0h0h0h0h0h0h0h0h0h0h00h00000000 00p0h0h0h0h0h0h00h0h0h0h0h0h0h000h0h0h0h0p0p0p0p0p00 0 pLqqr$r@0M90<M90M90M90M90Cj >Fdj .6&GU^]8f2oyHj4L ?ABCDEGHIJKL @8@0(  B S  ?<@DOYovy} $0>D\h #$+,4567BMNOPUVkp "$/168@EJLTZ\afgnt2:?NRei&'().89;<=BHI`acdefyz{| mnpq59D^acn )27FHKWXY\]bcny  + @ B H I S T u v    ( * + , 6 7 F O S ] ^ ` f   . 5 H I V \ _ g q z }   6 I X h i s t u     * + 8 H P Q h i |  )*123FGWYkx $%-7WX`aghop"%/146;Qbltz{/=>AMP\wx)*:;BCIJPQWXaip{01458:>JM%'(=>Ebg  *347QYZ]owx{ )*-CEFZ}IRYgp|   +|%14>FKahks}*+139:LMWXdiop{|-/39BMbcqryz}  )*67;<TUZacdpq~&(1267UVhiop~19;=>FGJLT\`rsxy  01>?OPhioq  " [ g l q s !!!!!!1!2!>!@!R!S!!!!!!!!!!!!!!!!!!!""""%"'"*"E"F"Z"["f"g"k"l"""""""""""""""""" # #####-#.#:#;#A#B#M#N#_#j#k#p#y###################### $$$$$$)$*$,$-$8$9$;$<$=$?$B$]$^$m$o$t$u$$$$$$$$$$$$$$$$$$$$$$ %%,%4%A%G%N%V%]%^%p%r%s%~%%%%%%%%%%%%%%%%%%%%%&&&&&&2&3&K&L&M&U&d&f&i&q&&&&&&&&&&&&&&&&d'l'|'}'''''''''''' ( ( (!(%(+(-(4(I(^(f(s(v(w((((((((((((((((((((()))+)6)7)8)J)M)N)X)h)k)l)v)x)))))))))))))))))))) **** *#*%*(*M*P*Q*T*V*Y*************+++ ++$+*+-+>+D+X+Z+[+c+d+e+m+n++++++++++++,1,4,5,8,:,=,O,Q,Z,b,,,,,,,,,,,,,,,,---7-<-=-@-B-E-P-R-S-j-----..8.;.<.?.A.D.N.e......../*/+/=/>/I/K/[/\/n/s/t/~/////////////// 000010A0C0M0N0l0m0r0|0000000000000011117181?1F1G1Q1R1U11111111111111111111 22.2;2<2@2Q2Z2[2e2f2h2o2w2x222222222222223 33-3.38393G333333333444$4%47484J4K4L4M4b4c4r4w444444444444444444444555"5*555?5X5o5p5s5t5}5~55555555555555555555555555555 6 6 6&6(6/656;6=6D6R6Y6l6t6u6666666666666666666667777777777#7$7*71767?7H7J7L7M7X7Y7e7f7q7r7y7z777777777777777788888888 8"8'81828E8O8Q8[8a8l8s8~888888888888888888888888888899999999192959I9Y9Z9]9g9o99999999999999999999999999::::!:":,:-:j:k:r:s:::::::::::::::::::::::::::::;d;e;f;y;;;;;;;;<<(<)<3<4<9<:<D<E<N<O<V<W<f<g<n<o<r<w<<<<<<<<<<<<<<<<<<<<<<<==-=/=B=M==================>> > >>>.>2>B>C>E>[>\>c>d>p>r>y>z>>>>>>>>>>>>>>>>????%?&?)?+?,?-?@?A?H?????????@@@@K@Z@c@t@@@@AA!A*A5A7AEAGAUAeArAsAtAAAAAAAAAAAAA BBBB!B>B?BIBJBRBSBcBnBoBrBsBBBBBBBBBBBBBBBBBBBBBCCCC&C'C*C:C;CBCDCFCGCRCSCYCZCaCbClCwCCCCCCCCCCCCCCCCCD DD-D8DqD~DDDDDDDDDD E EE$E+E?EDEEEUE\E]EmEnEtEEEEE)F9F:FCFHFKFZF]F^FcFiFFFFFFFFFFFFFFFFFFFFGGGGGG.G/GYGaGhGoGGGGGGGGGGGGGGGHHHH"H$H4H5H6HBHOHHHHHIII"I6IFIGIJIgIqIrI}I~IIIIIIIIIIIIIIIIIIIIIIIIIJJJJAJCJSJTJaJbJmJnJxJyJJJJJJJJJJJJJJJJJJJJJJJJKK KKKK"K$K5K:K;KTTT[TkTlTsTxTyTzTTTTTTTTTTTTTTTTTTTTTTTU UUU*U/U:U;UIUKUNUWUkUlUwUxUUUUUUUUUUUUUU VVVV#V0V9V=VEVXVnV~VVVVVVVVVVVW"W+W9W=WOWQWSW]WdWgWsWtWWWWWWWWWWWWWWWWWWWWWXXXXXkXlXmXXXXXXXXXYY+Y,Y/YLYhYiYpYqYuYvYYYYYYYYYYYYYYYYYYYYYYYYYZZZZ Z!Z#Z%Z&Z4Z5ZJZKZVZWZXZYZaZbZcZdZrZsZyZzZZZZZZZZZZZZZZZZZZZZ[[[[$[4[5[8[9[M[N[Q[R[`[a[x[y[z[[[[[[[[[[[[[[[[[[\\ \\\\*\+\3\9\C\D\P\Q\V\W\e\f\o\p\{\|\\\\\\\\\\\\]]] ]!]"]#]6]7]9]<]C]D]R]W]Y]Z]q]r]w]]]]]]]]]]]]^^&^'^-^.^F^G^T^`^a^b^c^w^x^{^^^^^^^^^^^^^^^^^^^^_____&_1_2_7_:_>_C_K_P_S_T_c_e___________________````&`'`+`0`1`2`:`;`K`L`Q`R`X`Y`a`b`l`n````````````````````FaGaHaXaYaZa[apaaaaaaaabbbbb*b+b3b4b;boooooooooooopp pppp0p1pApBpPpYpqprpppppppqq q;qCqKqqqrrrr$r:<"16EJZ\aft2:?eh&';<cdyzmq5 27ny@ B ( *  7 Z ] h s WY157 "ab $(*\  JMbgjs}E_g#%knZadjmrv};>I +|14hk13 Moq" [ q s >!@!!!%"'"=$?$m$o$%%M&O&S&U&&&&&&''''2'6'H'L'^''''' ( (.(/(3(Y(](s((((&)=)J)v)x))))))* ***<*@*M*P*z*****-+6+n+{++++++ ,$,1,b,,,,,,-2-p--------...".%.8.;.N.e...///////00000000141V1|111111111122 2@2C2F2Q222G33344444444-52555@5J5M5X5555^6a6l6H7J777284888<8D88885979;9?9H9999;d;y;;<<==-=/===C>E>>>)?+?H?J?N?_?a?s??????????@@5@:@C@J@@@@@A"AbAAAAABBBBBCDCCCCCC D%D(D,DMDODcDhDqDDDDDDDDDDDDDDDEE#E?EtEEE)FCFHFdFiFFFFFFFFFGGGG"H$HOHHHI"I$I(I,I5IgIIIJJAJCJ"K$KKK L"L&L*L_LbLLLLLM MEMIMMMMMMhNjNnNSOOOOOOOOOP2P5P:PYP^PPPPPPQ QQIQXQ_QdQQQQQQQ.RJRVRrRRRRRRR*S/SXS]S|SSSSSSTUTXT[TsTxTTTTTU UUU*U/UIUKUUUUUU VXVZV^VdVmVVVWOWQWWWXkXXXYYY YYLYYY!Z#ZZZy[z[[[]]]]]]]^^^c_e___l`n````Fapaaaa}bbbbbbcc c cc1c8ccccccccceeeeeeeLffffff.gdgfgjgpgrgggggghhKhLhhhNjPjijkjjjjjjjjjjjjjk/k2k5k@kkkpksk|kkkkkkkkk lll#l&lB:GuDveE U+O \ j1W82P&bbS`r O")$"-##K#u#G6%6%k%^&xM'((p(0)2[+vi+\?,Vz,l-+/A/CW/^0_c0Nb1*2v284*5si5S7r7|7%8q8Pe96v9 ::;`;|;<-< 4<D<M<|<t$=P=>,6? @?NG@#=ANAD,B(C+Cc>DMDE.E2tFHCGEGItJKs)KRLM]LRMMiiMKsM2N]N?SOEQ!RUR2ST.THDTWTXTznTzTLUOUPU3GVwWXAgX/Y-UYMfY_uY[e\2l\>B]t^_&^x^S_ b;b6Xb(8e"Lfggz h,h jJEjHl+lMl&n_dn o;o]o<p@pYpqrSrvr$as "t1>u;juwuPRvlcwy|6|\|}v|D~(M\`y6 8KDVpBFfVvw<7DR}gYr@z#2[ ]V?sn`Sw0Od)Lx !0] />ss%Y,\90I.wQ*odELPa2Zr"KT#]#[z%0P[7,[-?%IJ< RwC]l)EMeNbep@~zb7"Wr33lm*_@AY$OxC.Ys{}<UqBMH]e 9Q%Q(6ilsg@TRfb%dm^qx-<y1S;N^>3X~?KBS$c(9 B^SmV!={)VY_.;HPN\ >Qge\IE9Eat pN*IstNU>z rJSZ@!r!r<2x!r!r '*,./24569"r &0268V\`dflprtUnknownGz Times New Roman5Symbol3& z Arial;[SOSimSun 1hkFBlFta:a:!-!),.:;?]}    & 6"0000 0 0 00000 =@\]^([{  0 0 00000;[2qq3H)?DDelphi vmo`_j6RmcyuyuOh+'0t  0 < HT\dlDelphi ϢCƜ\̽1elpyupupup Normal.dotyum1mMicrosoft Word 10.0@{4@@4Ua՜.+,0 X`px TianAni:qA   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     Root Entry F >HData 1Table~WordDocument2(SummaryInformation(DocumentSummaryInformation8CompObjf  FMicrosoft Word ĵ MSWordDocWord.Document.89q