ࡱ>  @ 0x/bjbj 0؝؝&F:{{{8{|6|}(}~~~P, Z\\\\\\$R*[ "."[[~~ϔϔϔ[:R~~Zϔ[Zϔϔ`"~} /PI{040d3h"TH$(ϔLR $$$d1^L$/^L OpenPegasus provides a tracing facility that helps in investigating the cause of a problem. For example, if requests abort, performance is reduced, or unexpected responses appear, trace can provide pointers to where and when the problem occurred. To generate a useful trace for problem determination, the trace messages are categorized in trace levels and components. The trace level defines the severity of the message and the trace component assigns the message to a specific module or several modules serving special working units of OpenPegasus and there are special purpose trace components. Writing trace messages is a OpenPegasus server functionally only. Currently it is not possible for providers to use the tracing facility. When to write trace messages? Trace statements are for debugging purpose. The information of a trace message is for a developer or service person, a person having insight into the code of OpenPegasus. Trace messages are utilizing the code to enable these people to understand the state of OpenPegasus and print execution flow relevant information like: Locations of executions Return values of functions Error conditions of functions Content of variables Conditions and its evaluation Etc. Trace messages are NOT enabled for multicultural support. Log messages are in contrast to trace messages. Log messages must give system operator/programmer information about the run-time state of OpenPegasus to enable these people to change the runtime environment to work properly. Categorize trace messages What is the right trace level? There are 5 trace levels for configuration but only trace level 1 to 4 can be used for specifying the severity of a trace message. The trace level definitions are done in Pegasus/Common/Tracer.h Trace level 0 is reserved to switch tracing off. Trace level 5 is reserved for method enter/exit statements. Both trace levels cannot be specified explicitly on a trace statement. All other levels can be specified in the tracing macros using the static variables with the definition as listed below. Level #Definition1Tracer::LEVEL12Tracer::LEVEL23Tracer::LEVEL34Tracer::LEVEL4Table  SEQ Table \* ARABIC 1 Tracer::LEVEL1 Trace level 1 should be used for severe error conditions that need to be reported to an user. For instance if the server has to discard data to be able to proceed, throws an exception, or has to close the connection. All log messages are also written to trace level 1, which means that there is no need to duplicate log messages as a trace message. As example, at the OpenSSL initialization, not enough seed data is found: PEG_TRACE((TRC_SSL, Tracer::LEVEL1, "Not enough seed data in seed file: %s", (const char*)randomFile.getCString())); Tracer::LEVEL2 Trace level 2 is for basic flow trace messages with minimal detail. These messages should also report error conditions which might cause an error visible to the end user, but dont necessarily have to. For example, after reading an HTTP request, OpenPegasus is not able to parse the content language: PEG_TRACE((TRC_HTTP, Tracer::LEVEL2, "HTTPConnection: ERROR: contentLanguages had " "parsing failure. clearing languages. error data=%s", (const char*)contentLanguagesString.getCString())); Tracer::LEVEL3 Trace level 3 is for intra-function logic flow and moderate data detail. These messages should report details of decisions made and important data of the general flow. For example, after a connection has been established, the client IP address is written: PEG_TRACE((TRC_HTTP, Tracer::LEVEL3, "Connection IP address = %s",(const char*)_ipAddress.getCString())); Tracer::LEVEL4 Trace level 4 is the highest data detail. These messages should report everything needed to be able to follow the flow. For example: PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4, "CMPIProvider has pending operations: %s", (const char*)provider->getName().getCString())); What is the right trace component? At each trace macro, a trace component ID has to be specified to pool the trace messages in domains. These domains can be one or several modules serving a dedicate purpose within OpenPegasus or a special purpose domain serving an overall purpose. The trace components IDs used for the trace macros are defined as enumeration in Pegasus/Common/Tracer.h. The TRACE_COMPONENT_LIST[] used for the configuration option is defined in Pegasus/Common/Tracer.cpp. The components to be specified at the traceComponents configuration are defined in the TRACE_COMPONENT_LIST[]. If a new trace component is needed or changed, you have to modify both lists at the same index. The table below is a first reference for component IDs for dedicated functionality of OpenPegasus. The current definitions can be found in Pegasus/Common/Tracer.h enum TraceComponentIDstatic char const* TRACE_COMPONENT_LIST[]TRC_AUTHENTICATIONAuthenticationTRC_AUTHORIZATIONAuthorizationTRC_EXP_REQUEST_DISPCIMExportRequestDispatcherTRC_CIMOM_HANDLECIMOMHandleTRC_CMPIPROVIDERCMPIProviderTRC_CMPIPROVIDERINTERFACECMPIProviderInterfaceTRC_CQLCQLTRC_CONFIGConfigTRC_CONTROLPROVIDERControlProviderTRC_DISPATCHERDispatcherTRC_EXPORT_CLIENTExportClientTRC_HTTPHttpTRC_INDICATION_GENERATIONIndicationGenerationTRC_IND_HANDLERIndicationHandlerTRC_INDICATION_RECEIPTIndicationReceiptTRC_INDICATION_SERVICEIndicationServiceTRC_L10NL10NTRC_LISTENERListenerTRC_MESSAGEQUEUESERVICEMessageQueueServiceTRC_OBJECTRESOLUTIONObjectResolutionTRC_OS_ABSTRACTIONOsAbstractionTRC_PROVIDERAGENTProviderAgentTRC_PROVIDERMANAGERProviderManagerTRC_REPOSITORYRepositoryTRC_SSLSSLTRC_SERVERServerTRC_SHUTDOWNShutdownTRC_THREADThreadTRC_USER_MANAGERUserManagerTRC_WQLWQLTRC_WSMSERVERWsmServerTRC_XMLXmlTRC_XML_IOXmlIOTable  SEQ Table \* ARABIC 2 Special purpose trace components The next table below specifies component IDs for special purpose of the OpenPegasus: Special purpose TraceComponentIDDescriptionTRC_DISCARDED_DATAIssues a trace message when information is discarded or an operation is cancelled to enable OpenPegasus to proceed. Tracer::LEVEL1 must be used for this component. TRC_LOGMSGDo not use this trace component. All messages written by the Logging Facility are automatically written with this component. TRC_XML_IOThis component specifies trace statements which belongs to the XML request/response handling and should be used only in this context. The Trace Interface There are 4 macros available to write a trace: Trace macrosDescriptionPEG_METHOD_ENTERlogs a method entry message to the trace. PEG_METHOD_EXITlogs a method exit message to the trace file.PEG_TRACE_CSTRINGThis writes a single trace message.PEG_TRACEWrites a printf()-style formatted trace message All macros automatically add file (__FILE__) and line number (__LINE__) to the trace message. You have to include to use tracing at all. Special note on using type String If you like to use a String object as parameter in a trace macro, you have to get the CString using the method getCString() cast to (const char*) For example: PEG_TRACE((TRC_HTTP, Tracer::LEVEL2, "HTTPConnection: ERROR: contentLanguages had " "parsing failure. clearing languages. error data=%s", (const char*)contentLanguagesString.getCString())); PEG_METHOD_ENTER SYNOPSIS PEG_METHOD_ENTER (, char* methodName); DESCRIPTION Refers to a trace component specified in Table 2.MethodNameThe name of the method being entered. PEG_ METHOD_ENTER() must be placed right after the entry point of a method or function and is generating a method enter trace statement with level 5. EXAMPLE PEG_METHOD_ENTER(TRC_SSL,"SSLContextManager::createSSLContext()"); PEG_METHOD_EXIT SYNOPSIS PEG_METHOD_EXIT(); DESCRIPTION PEG_ METHOD_EXIT() must be placed before any exit point of a method or function and is generating a method exit trace statement with level 5. It can only be used if the PEG_METHOD_ENTER() was used before in the same method/function. EXAMPLE void SSLContextManager::createSSLContext( ) { PEG_METHOD_ENTER(TRC_SSL,"SSLContextManager::createSSLContext()"); try { } catch() { PEG_METHOD_EXIT(); throw MyException(); } PEG_METHOD_EXIT(); return; } PEG_TRACE_CSTRING SYNOPSIS PEG_TRACE_CSTRING(,, const char* traceMessage); DESCRIPTION Refers to a trace component specified in Table 2.Refers to a trace level Tracer::LEVEL1 to Tracer::LEVEL4.traceMessageSingle trace message. This writes a single trace message at a certain trace level and component to the trace. The message must be a single character string with a trailing \0. EXAMPLE PEG_TRACE_CSTRING(TRC_HTTP, Tracer::LEVEL1, "select() timed out waiting for the socket connection to be" "established.") PEG_TRACE SYNOPSIS PEG_TRACE((,, const char* formatString,)); DESCRIPTION Refers to a trace component specified in Table 2.Refers to a trace level Tracer::LEVEL1 to Tracer::LEVEL4.formatString, The printf()-style format string and its parameters. PEG_TRACE() writes a printf()-style formatted trace message at a certain trace level and component to the trace. Note: The parameters have to be put into a single argument for PEG_TRACE() by putting them in additional parenthesis. EXAMPLE PEG_TRACE((TRC_HTTP, Tracer::LEVEL4, "Connection to server in progress. Waiting up to %u milliseconds " "for the socket to become connected.", timeoutMilliseconds)); Compiling out Trace code from Pegasus build The trace code can be optionally removed from Pegasus at build time by defining PEGASUS_REMOVE_TRACE (D option).      OpenPegasus Tracing Development Guide -  PAGE 8 - OpenPegasus Tracing Development Guide    Y   !=ou 12<CDNSUV`eghrڽڽڣ h@h@h@CJOJQJ^J"h@h@5CJOJQJ\^JhaChVh%wh@hx|hj0J`hjh1h FhMh{ h{?hDs5 h{?hnhWjh{?hDs5U8Y Z  E F _ z   *!!!!!!!!H!H!H!H!H!H!!!!!!!!!!gdMgdM & Fgd{gd{gdMgd[gd{.=/w/&124C!!!`ssusi`i $$Ifa$gd@wkd$$IfTl0 80 64 laT $IfgdC-gdMgd@CDFU|`| $$Ifa$gd@wkd$$IfTl0 80 64 laTUVXg|`| $$Ifa$gd@wkd2$$IfTl0 80 64 laTghjy|`n $$$Ifa$gdp! $$Ifa$gd@wkd$$IfTl0 80 64 laTrwyz)0RSabrv NOPQuv7<HS̼hhtE4 h@h,hs0hFrCJOJQJhFrhFrCJOJQJh,hghFrhZh FhaChMhpmHnHujhp!Uhp!h@CJOJQJ^Jh@ h@h@8yzPQu!v:!|!|!w!|!r!r!r!m!h!gdtE4gd,gdFrgd,gdZgds0wkdd$$IfTl0 80 64 laT SZ   [\dikySTÿÿÿ쿤hjhzphM hMhMhkhACJOJQJhAhkCJOJQJhuhuCJOJQJhuhtE4 h@h, h,hhtE4CJOJQJhtE4hCJOJQJh,h7h FhaCh4  0c[\k O!!!!!!!!!!!!!!!!!!!!!!!!gd7gdMgdMgdkgdAgdugds0gdtE4gd    5JLWXnrst<ACDUn*+̻ȱȭȻ}h,QCJaJh,Q5CJOJQJ\^J"h,Qh,Q5CJOJQJ\^J hw:h,Qhu<hx| hO0J`hx|hO0J`h1hOhG/ hw:hw:hx|hw:0J`hKh1E3h Fh,QhyAh7hw:hj0  XstDE*+!!Nm!!!1!!!!Nm!nsSsvekd$$IfTl{0F+ tq644 lapT $If$Ifgdw:gdu<gd1E3gd +=>LMN_`mno  %&,-.ABQRSablmn h$1h,Q hw:h,Qh,QCJaJhw:h,QPJaJ h{?h,Qhu<h,QCJPJaJhu<h,QCJaJI+>MN`nnv:S}nv:S $IfgdD4ekd$$IfTl{0F+ tq644 lapT $If$Ifno>nv:S$If $IfgdD4ekd$$IfTlO0F+ tq644 lapT>nv:S%>ekd $$IfTlO0F+ tq644 lapT$If $Ifekd$$IfTlO0F+ tq644 lapT nv:S|nv:Sekd$$IfTlh0F+ tq644 lapT$If $IfgdD4 |nv:S/|ekd$$IfTlh0F+ tq644 lapT$Ifekd$$IfTlh0F+ tq644 lapT&-.BRnv:S snv:Sekd$$IfTld0F+ tq644 lapT$If $IfgdD4RSbmn snv:S&ڋekd%$$IfTln0F+ tq644 lapT$If $IfgdD4ekd$$IfTld0F+ tq644 lapTnnv:Sڋnv:Sekd$$IfTln0F+ tq644 lapT$If $IfgdD4ڋnv:S&ekd $$IfTlj0F+ tq644 lapT$If $IfgdD4ekd- $$IfTln0F+ tq644 lapTnv:Snv:Sekd5 $$IfTlj0F+ tq644 lapT$If $IfgdD401BCDLMQRS_`hij$%&45?@AHILMNXY_`amnvwx h$1h,Q h{?h,Qhu<h,QCJPJaJhu<h,QCJaJh,QCJaJh$1h,QPJaJN1CDnv:S&uekd= $$IfTle0F+ tq644 lapT$If $IfgdD4ekd $$IfTlj0F+ tq644 lapTDMRS`inv:Sunv:Sekd $$IfTle0F+ tq644 lapT$If $IfgdD4ijunv:S&kekd $$IfTla0F+ tq644 lapT$If $IfgdD4ekdE $$IfTle0F+ tq644 lapTnv:Sknv:S $IfgdD4ekdM $$IfTla0F+ tq644 lapT$Ifanv:S&aekdU$$IfTl]0F+ tq644 lapT$If $IfgdD4ekd $$IfTl]0F+ tq644 lapT%&5@nv:Sanv:S $IfgdD4ekd$$IfTl]0F+ tq644 lapT$If@AIMN5nv:S&5ekd$$IfTlu0F+ tq644 lapT$If $IfgdD4ekd]$$IfTlu0F+ tq644 lapTNY`anwnv:S5nv:S $IfgdD4ekde$$IfTlu0F+ tq644 lapT$Ifwxpnv:S/pekdm$$IfTlc0F+ tq644 lapT$Ifekd$$IfTlc0F+ tq644 lapTnv:Snv:Sckd$$IfTl0F+ tq644 lapT$If $IfgdD4nv:S*ckd$$IfTl0F+ tq644 lapT$If $IfgdD4ckdq$$IfTl0F+ tq644 lapT    /0; F L ûûîsh]YR h@hdhu<hw:hu<PJaJhM0hu<CJaJ"h[h~55CJOJQJ\^J"h,Qhd5CJOJQJ\^Jh~55CJOJQJ\^Jhdh} !h}9hpmHnHujhx|Uhx|h$1h,QPJaJhu<h,QCJaJh,QCJaJ h$1h,Q h{?h,Qhu<h,QCJPJaJ nv:Snv:S $$Ifgdx|ckdq$$IfTl0F+ tq644 lapT$If $IfgdD40!v:!!!!|N s|N s|s$& #$/Ifb$gddgd}9gddckd$$IfTl0F+ tq644 lapT > o {S gN v:gg$& #$/Ifb$gddkdq$$IfTl 0 X &  6 0 64 lae4TL n p z { !!!!!!!!!!!!("*"9":"g"h"i"r"t"~wjc\wThCCJaJ h&VZhC h&VZh&VZhChCCJPJaJ h{?hChx|hChCPJaJhChCCJaJ"h[hC5CJOJQJ\^JhC5CJOJQJ\^JhCh} !hDs5 hhu<hM0hu<hM0CJaJhu<h$1hu<PJaJhM0hu<CJaJ h{?hu<hdo p { {4 gN v:g$& #$/Ifb$gddkd$$$IfTl 0 X &  6 0 64 lae4T !!{gN v:g$& #$/Ifb$gddkd$$IfTl 0 X &  6 0 64 lae4T!!!!!!!!!{vqv!v!v!]N s]s$& #$/Ifb$gdS/)gdCgdCkd$$IfTl 0 X &  6 0 64 lae4T!!!(")"{S gN v:^g $Ifgdx|$& #$/Ifb$gdD4kdO$$IfTl 0 X &  6 0 64 lae4T)"*":"h"{YgN v:g$& #$/Ifb$gdD4kd$$IfTl 0 X &  6 0 64 lae4Th"i"{""{gN v:g$& #$/Ifb$gdD4kd$$IfTl 0 X &  6 0 64 lae4Tt"u"z"{""""""""""""""""##$#9#:#<#P#_#d#e#h########E$$ɶ߮~zvzihtE4hCJOJQJhdLQhh5CJOJQJ\^J"hhf5CJOJQJ\^Jh%w hx|hx|hx|h&VZh3hE)hrhChCCJaJ h{?hC hhChD4hIf)hChChCCJPJaJhCCJaJh FCJaJ&""""{gN v:g$& #$/Ifb$gdD4kdz$$IfTl 0 X &  6 0 64 lae4T""":#;###### $6${vv!v!q!v!v!sl!l!d!d! & Fgdgdgdx|gdE)kd3$$IfTl 0 X &  6 0 64 lae4T 6$7$D$E$j$$$%%&%'%0%1%h%i%u%v%w%%%!!!!!!!!!!!s!s!!!s!! { $Ifgdx| $IfgdE)gdx|gdE)gdE)gd$$%%%'%/%0%1%C%D%R%S%h%i%t%u%w%x%%%%%%%%%%%%&&&&&&&&&&&&ȹȬȹڗړڏڋȹ{uoᓛ hx|0J` hDs50J`hx|hx|0J` hE)hrhrhp!hx|hE) hE)hx|h&VZCJOJQJhE)hE)CJOJQJhE)5CJOJQJ\^J"hE)hE)5CJOJQJ\^J hE)hE)h&VZhhtE4hCJOJQJhCJOJQJ)%%%%%%&&& {TO!O!J!J!gdE)gdrPkdJ$$Ifl0m !m S644 lal $IfgdE)Pkd$$Ifl0m !m S644 lal&&&&&&&&&''''''(( ( (9(;(((((((!s!!1!1!!!s!s!!!s!!!!!!s!!1!1!1!1!1!1!1!1gd} !gd&VZgdx|gdx|gdE)&&&&&'''''''''( ( ( (3(?((((((((((()))) )#)%)߽ߧzvrvk hE)hD4hrhD4 h10J` hx|0J`hx|hx|0J`hx|h} !0J` h} !0J`h} !h} !0J` hE)h} !h&VZhE) h&VZh&VZhx| hE)hx|hx|CJOJQJhE)hx|CJOJQJhx|5CJOJQJ\^J"hE)hx|5CJOJQJ\^J$(((((())))$)%).)/){)|)))))!1!1!1!1!1!1!1!1!1!!!s!s!!!s!  $IfgdD4gdD4gdD4gd} !gdx|%)-).)/)A)Q)y){)|))))))))))))))))**8*:*;*********-+V+f+g+p+r+z+ջߴߟs"hE)h&VZ5CJOJQJ\^J hE)h&VZh&VZ hx|0J`hD4hD40J` hD40J`haC hD4hD4hD4 hE)hD4hE)hD4CJOJQJhp!hD4CJOJQJhD4CJOJQJhD45CJOJQJ\^J"hE)hD45CJOJQJ\^J+))))**#*9* TY Pkd$$Ifl0\ !\ d644 lal $IfgdD4Pkd$$Ifl0\ !\ d644 lal9*:*;***** +N+f+g+q+r+{+|++++!!!!s!1!1!1!1!1!!!s!s!!!sgdrgd&VZgd&VZgdx|gdD4Pkdd$$Ifl0\ !\ d644 lalz+{+|+++++++++++++++++++,,,,,%,&,`,b,p,t,u,x,,,,,,- -%-Ⱦ՝񖒋||xihG/5CJOJQJ\^JhG/hA.hE) hrhr hE)hrhr hE)h&VZhE)h&VZCJOJQJhD4CJOJQJhrCJOJQJhp!CJOJQJhp!hp!CJOJQJh&VZCJOJQJ"hE)h&VZ5CJOJQJ\^Jh&VZ5CJOJQJ\^J)+++,,&,?,a,b,u,!  OY Pkd $$Ifl0\ !\ d644 lalPkd$$Ifl0\ !\ d644 lal $IfgdD4gd&VZ u,,,,- -&------ .>.Y..!!!!s!!!s!!1!1!1!1!gdgdgdA.^gdG/gdrgd&VZPkd~$$Ifl0\ !\ d644 lal $IfgdD4%-*-5-9-R-[-k-v-~---------<.B.X.Y.Z.........../////+/̽zthhl CJOJQJ^J hl CJjhl CJUmHnHuhl jhl U hhh h&VZ0J` hA.0J`hA.hA.0J` hE)h&VZh&VZ5CJOJQJ\^J"hE)h&VZ5CJOJQJ\^J hE)hrh&VZ hrhrhA.hrhrhG/%.......////;//?/@/A/B/C/D/E/F/G/H/I/J/K/!!j!jgdngd+/.///5/6/7/8/:/;/Q@r> Body Text 3xCJaJPM@QP Body Text First Indent ``N@1` Body Text First Indent 2hx^h`RR@R Body Text Indent 2hdx^hTS@T Body Text Indent 3hx^hCJaJ@"@@ Caption xx5CJ\aJ2?@2 Closing ^<<  Comment TextCJaJ$L@$ DateRYR  Document Map -D M OJQJ^J<[@< E-mail Signature!<+"<  Endnote Text"CJaJh$@2h Envelope Address!#@ &+D/^@ OJQJ^JN%@BN Envelope Return$CJOJQJ^JaJ>R>  Footnote Text%CJaJ:`@b: HTML Address&6]Re@rR HTML Preformatted'CJOJQJ^JaJ: : Index 1(^`: : Index 2)^`: : Index 3*^`: : Index 4+^`:: Index 5,^`:: Index 6-^`:: Index 7.^`:: Index 8/^`:: Index 90p^p`H!H  Index Heading15OJQJ\^J4/@"4 List2h^h`82@28 List 23^`83@B8 List 348^8`84@R8 List 45^`85@b8 List 56^`:0@r: List Bullet 7 & F>6@> List Bullet 2 8 & F>7@> List Bullet 3 9 & F>8@> List Bullet 4 : & F>9@> List Bullet 5 ; & FBD@B List Continue<hx^hFE@F List Continue 2=x^FF@F List Continue 3>8x^8FG@F List Continue 4?x^FH@F List Continue 5@x^:1@: List Number A & F >:@"> List Number 2 B & F >;@2> List Number 3 C & F ><@B> List Number 4 D & F >=@R> List Number 5 E & F l-bl  Macro Text"F  ` @ OJQJ^J_HmH sH tH I@r Message HeadergG8$d%d&d'd-DM NOPQ^8` OJQJ^J4^@4 Normal (Web)H>@> Normal Indent I^4O@4 Note HeadingJDZ@D Plain TextKCJOJQJ^JaJ0K@0 SalutationL6@@6 Signature M^FJ@F SubtitleN$<@&a$ OJQJ^JT,T Table of AuthoritiesO^`L#L Table of FiguresP ^` V>@V TitleQ$<@&a$5CJ KHOJQJ\^JaJ H.H  TOA HeadingRx5OJQJ\^J&& TOC 1S.. TOC 2 T^.. TOC 3 U^.. TOC 4 V^.. TOC 5 W^.. TOC 6 X^.. TOC 7 Y^.. TOC 8 Z^.. TOC 9 [^O >/Style (Latin) Courier New (Complex) Courier NewCJOJQJ^JHH 94 Balloon Text]CJOJQJ^JaJB'B MN`no &-.BRSbmn1CDMRS`ij%&5@AIMNY`anwx0>op{()*:hi{:; 67DEj&'01hiuvw  9 ; !!!!$!%!.!/!{!|!!!!!!!!""#"9":";""""" #N#f#g#q#r#{#|######$$&$?$a$b$u$$$$% %&%%%%%% &>&Y&&&&&&&&'''';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'Z'b't'u'v'y'00000 000 0 0 0 0 0 00000 0 00 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 ( 0  0000000( 0  0 0 0 0 0 0 0 0 ( 0  0 0 0 0 0 0 ( 0  0\0\0\0\0\0\0\ 0000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 00000 0 0 0 00 0 0 0 0 0 0 0 0 00000 0 0 0 00 0 0 0 0 0 0 0 0 0 0 00000000 0 000000000 0000000000 0 0 0 0 0 00000000 0000000000000000000000000000000 00!0!0!0!0!0!0!0! 0! 0! 0! 0!0! 0! 0! 0! 0! 0!0!0!0!0!0!0!0!0! 00g#0g#0g#0g#0g#0g#0g#0g# 0g# 0g# 0g# 0g#0g# 0g# 0g# 0g# 0g# 0g#0g#0g#0g#0g#0g#0g#0g#0g#0g#0g#0g# 0000000000(00@000H0000000000000000000000YZEF_z *&124CDFUVXghjyz  P Q u 0 c [\k O  XstDE*+>MN`no &-.BRSbmn1CDMRS`ij%&5@AIMNY`anwx0>op{()*:hi{:; 67DEj&'01hiuvw  9 ; !!!!$!%!.!/!{!|!!!!!!!!""#"9":";""""" #N#f#g#q#r#{#|######$$&$?$a$b$u$$$$% %&%%%%%% &>&Y&&&&&&&&'''';'='M'N'Z'b't'y'00000 000 0 0 0 0 0 00000 0 0110K0K0K0K0K0K0K0K 0K 0K 0K 0K 0K 0K 0K 0K 0K 0K 0K 0K 0K 0K 0K( 0KK0000000( 0KK0 0 0 0 0 0 0 0 ( 0KK0 0 0 0 0 0 ( 0KK0000000 011000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0@0 0110[0[0[0[ 0[ 0[ 0[ 0[0[ 0[ 0[ 0[ 0[ 0[ 0[ 0[ 0[ 00000 0 0 0 00 0 0 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0@0 @0 @0 @0  0 0000000000 0 0 0 0 0 00000000 0000000000000000000000000000000 00r0r0r0r0r0r0r0r 0r 0r 0r 0r0r 0r 0r 0r 0r 0r0r0r0r0r0r0r0r0r 0dd00000000 0 0 0 00 0 0 0 0 0X@0M10000000000 0X@00X@00X@00X@00X@00X@00X@00X@00@0Z@00X@00hX@00X j6X@00X@00A0X@000  EEEHrS+L t"$&%)z+%-+/x/!#%0<@GKNPSVXCUgy+n RnDi@Nwo !!)"h"""6$%&()9*+u,.K/x/ "$&'()*+,-./123456789:;=>?ABCDEFHIJLMOQRTUWYw/  x'  7>@H!@  @ (  NB  S DjJ\(  f"  s *t t jJ B S  ?x'&X ^14 H6!65 _Toc520023339 _Toc520023340 _Toc520023429 _Toc520023430 _Toc12263614y'%y'IL L ,|!   f##<#L&&& L  L    L k L   |lf,fDLd$4 Li\"!!",!ܙ!T,"LL ]  "  C%O<}"Q \  +No.SnDSj&ANaxp*iEP1? P /!""g#|#$%%y'      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHT _   .Qr1VqGVm)DQd{s-l HS4B S 2!""j##$%%y'  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH?I*urn:schemas-microsoft-com:office:smarttags stockticker IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 5 C L \ AU%1jqt~ gq &,BQ1B$_go}DR[ex 3 P | B!P!S!]!l!x!!!!!"""########$$$b$n$y$$$$B&U&&''='y'tu?E  U [   ] b m t ~ 24_h!&:>IO$  J P !! !9!A!""##W#b###b$n$y$$$$c%i%%%%%% &&&B&U&&='y'::::::::::::::::::::::::::::::::::::::::::::::::::::::F 12 0 c \kXt+/p{i{ 67D/w!%!!!!!";"""N#r#|####$&$b$u$>&X&&'.'8':'='N's'y'LLnn&%&%&&&&&&&&&'''''<'='y'|.lDE} 6: D~<&]C`BB ;ܶ: H9q*8`BAQ7z_CHMz\9MMt[[-5Zt[[_Q`98jY l DN QO]AWW1g3u} !j"G"bt#S/)If)wB+,#q,C-u-p/L/M0121E3D4tE4*5Ds5}9u<={?p!Mrxu @8OV`76!$pB30jTFryyA_f$1s0tNf[,NOBCkg_dC~5]8.dn3n{ #A.KK* {E)w:G/x|94&124CDFUVXghjyz*+>MN`no &-.BRSbmn1CDMRS`ij%&5@AIMNY`anwxop{)*:hi{w!!!!!""#"9":"##$$&$a$b$u$$$y'@Dx'P@UnknownGz Times New Roman5Symbol3& z Arial?5 z Courier NewG5  hMS Mincho-3 fg5& zaTahoma;Wingdings"qh#F#FʪfE!gE!g!24d%% 3QZ Ds5h                  Oh+'0t  $ 0 < HT\dl Normal.dot4Microsoft Word 10.0@F#@T @)PI@)PIE!՜.+,0 px  g%  Title  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\]^_`abcdefghiklmnopqrstuvwxyz{|}~Root Entry Fh/PIData [1TablejoWordDocument0SummaryInformation(DocumentSummaryInformation8CompObjj  FMicrosoft Word Document MSWordDocWord.Document.89q