1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
MZ@ !L!This program cannot be run in DOS mode. $K˿v 6슈v v .v v /v Xv Zv RichPEdS " &>@   C `4 `M  `) hp H.text `fothk `.rdatayz@@.data`M0  @.pdata $ @@.rsrc`M ND @@.reloc  @B@AT_{1@1@G>J@6! _|_C |5*_o^J@6__aTȐ5_OMJ@6|_|_aT|Ȑ5_O=J@p6__5_֯,J@p6!_|_|5_֯!R@kTP@@1jHRrkTPR_ R_ґ0JPB8B8^T 7a0JZJ9 Q @s/3CT_t1@?@?T_H$BH'>H/:H"6H%2HA&.H(*H)&H+"HA,H,H-H0HA1H2 H3#{"( R0yH7{#_H5HA6H7H9HA:H;#{ ( R0y!H<{#_#{ H)@?H>{#_#{ @~ @R{#__!_#{@}@~R{#_#{ Rzl{f*< RS4yVR 5_TINSH4WNw5{A#_Rl>#{MR{#_#{6L{#_#S { RS 4RC9{ShDq@ Th5(RhHAH`4R@HH!HRh5RC9*&h@hS4h@AR6"?h@Sh4`@@@,*S(4U5R R* * S4C@9H5*{¨ @S¨#_RR**>#{{#_  #{H hA6{A#_#S{P4@`Tb@R{S#_ R#{5(R(9Sh5RS5R} R{#_#S{hbS9*h5qT4t5p5l4R  %  % (Rhb9 R{S#_֠Rx>#{IR h@y kTh=@j( RH@ k!TH1@y-qT H)@y aI @y +!  @T @A*T @) A)ThR %@h6R RRR{¨#_#{S45aҍ{A#_#{R9S)SH45** R{A#_#{(UBaT q`{A#_#{Z{#_  C@R`>C_#{R{#_C@`>C_#{4`{A#_@T^E >#{0 {¨#_a#S[{ҿC9@T ?s(RC9{Ĩ@[ASè#_#S[{C9Ѵs˳ ?(RC9{Ĩ[AS¨#_#S[{ҿ@Ts˳ ?֔{Ĩ@[ASè#_#S{h@XTH@?@ H@? @ |@( H@? @ |@c( H@?@@ @)C( @?Xh( !{èS#_ 2-+3-+ R_ R_ R_ A$H}@#{i @(h@{#_(a3_(A3_`>_   #{Hu@?֠@yIR k!T<@ R (H@ kaTH1@y-qTH@9qTH@qR{#_Hy@#S{@Ih@ kaTh@qTj"@hIK? q(DHzTR{S#_ֽ@>csm @#S{H aH(!3!Th@?CT{S#_#S{H H(!3!Th@?CT{S#_M@q_#{ChCz>PFBPBBP>BP:BP*BP&BP"BPBPBPBPBPBPAPAPAPAPAP2BP*AP.AP2AP6AP:APBAPFAPJAPNAPRAPVAPZAP^APbAPvAPAPAPAPAPAPAPAPA#S {<@{ @S¨#_#S {%@{ @SŨ#_#S[{@@zqZ{[AS¨#_#S {@W{ @S¨#_#S {@@{ @SŨ#_#S[{@,qZ{@[ASè#_#S{@qZ{S#_|  b  #S{H!Oha""p @H!*? _#S {Th@T`@VxT{ @S¨#_#{h@T`@ӭ"y{A#_#S[{@3@TubҨ@T`@ӐxT@ @{~ {@[ASè#_#{ @94@HyA?{#_A{n#S[{ !!!A(@j&A( ?T6 v ?ITu@"Ӡ 7z6xBOҐ=~@@B y{[AS¨#_#S[{)yi4 -x5j&A ( TV?v ITu@ bz6xaAdAO=~qB@B"y{[AS¨#_#S[ck{u @HTx@ @? THXT X?4!?HT ӀwRTw@"z4x"z4xv{kCcB[ASĨ#_>#S[ck{Op=~T @?T ?)H1?HT ``uRqmz5x{kCcB[ASĨ#_>#{H!Oha" !p< H!h{A#_#{H!Oha" !p__ _yH@T@s@5 Ո @f @#T@@@h@h@g H!0A@@T@T@@@^y@@B\yH_@T@S@__ _CyH@T@@ @f @T@@@h@h@/ HA0A@Th@T`@^yB@qB^yHo@T@c@__ _yH@T@@ ..?(@y qH q0H0!@RR@HmA?H!1 R.%e94h@h@0@4h@h@(@(@034(@(@ @@A0&4@@H1 Ru@HyA? yR]3R*` +@kDcC[BSA{ƨ#_ֿ>#S {h&@9qT qH A5H5!Ha5HmAR?H=A?@qZ u&@9h"@94`@HyA?(Rth"9Ru&9{ @S¨#_+w HTJKIiihx4 y !! ?yAy_zW#S[c{iyi4 -x5A&@95R48R@`ZuxA?" kTkT(=A?@qZ @(A~@A?@6!TR{cB[ASè#__T(@yqAT)(     @T R _x_q T_qDIzT T  @T _x_qDIzT AT _#{CThC>#{(5]h>#S[c{@TIT@bӓ i z3x'Ti @?TVT V?5!?hT ӀjbӓVF z3xT@]{cB[ASè#_֪> @IT@_@_#S[c{tVA*BTh ITs@hyy0H˨ @? THU˿T U?1?hT ӀwZiTv@yy yyx{@cB[ASĨ#_QZ>#S[c{ @HTy@) @? THXT X?5!?T ӀҙVb T@zSRhz(x zSRhz(x{@cB[ASĨ#_ >#S[{Op=~4 AIT6@ ThTt =p= @? T ?)H1?HT `~҈`tVZ{[AS¨#_>#S {R(|@@R4R@lYhx)qT4 QjYjx_5qT@_IT@iY3xs@_IT@lY3x@s kT{ @S¨#_ @ RR4 @iYhx?)qT4 QiYix?5q@T kT@ _h @?kT 1@9?q@(_#S[{a1hD6  @ h @?kaT @RLR ȾA?h @h @  s@ R{[AS¨#_(6 RR#{S[ck+0OPQL_c_y8Sq_Gh!%_P+=_ R ,T(A ?h !( @ R(@(A9Rg!@  O_#P=_yi D &Y[b@9)%4{{#a @@> @@U(:@QHC@JI7@R{ @H (1:(mA3?@*@94HC@I@RH7@(a:@ C0%= S(:@9 C04i)!( @c(@(A;(;bhRLC@!@H(AR?iRL9(-Fs _Th @C@!@#Hh@H)(A?t@RR*i@ @ kT@@h@7RAC#EIH#@x4 R@(@RR?  uh@( h@*h=e9H4@RtnA)(!<***Yh@s@9C(u"%-FT@[@ W9u@ i@ @ k T@@@ AC#EIH#@x4 R@(@RR?C@!*"5Hy;SHy(A@?H@7BT(A~@?ր~@HC#EIH#@x4 R@(@*R?(AC@~@!C?H@y{ !)(AC@!@S?ֵ@s@Su"%W@9@94(A@@?*@R!(<**(yA@@?HC@IH7@4(@?\H/@@V@T@#@u_O_yHC@T@7@l__y @9(4@94i)!( @(@(a6(a8A0(A?qH+@kDcC[BSA{ƨ#_HC@I RX@H7@(A9;(A?(yAHC@I RH7@(1)(A? H/@T@#@_y_OHC@)T@7@\#{S[ck+C0OPSL_#_KyRq_;h!%_{P#=_ "Th!@M O_'P=_yhDT b@94x# @@ @@(:@H#@JI@R @H (1:(mA4?X h@94H#@I@RH@P(a: @ C0%= S(:=h@9 C04i)!( @(@(A;0(;+ЈRL!H(A@R?։RL.F9(4_ @!@Hs@H)(A?֓@RRR*@h @ kT@`@Q@5R5ySu *s@*h=e9H4@RnA)(!<***@@9C(ss"%.F[@tU9@UYC7Љ@ @ kT@@ACH3@!@=S5HCy(RHGy(A?I#F!H+@"A?HC@y{ !)(A!@#?ֵ@U@ss"%U@9h@94(A?*@R(<**Z(yA?H#@IH@4(@?@VT @I7@?T@+@(_y_#H#@T@@h @9(4h@94i)!( @(@(a6(a8A0]qC+@kDcC[BSA{ƨ#_H#@I RH@(1 H7@T@+@Ӻ_y_#H#@T@@ӰR#S[c{ @@h @t(a=yi4 -x5As8 @yA?ր4s S@ł @* R(A7{cB[ASè#_#{@Cf6(=A?@qZR{#_#S{ @ (T @IT @?y3x @a ( ?T?IT@"xS R.z3xJ{S#_#S[{ hT҈Tbӓ z3xi @? T ?)H1?T ӀҖbVz3x{@[ASè#_]f>#S[{hf95b @s@@T@^Byhf94{@[ASè#_#S[{00 @d@d95%RS4@;;@d9h4=hd9=5bxS4@ Tҵ O=|B@@"y=L0y>Nfe(R"9{Ũ[AS¨#_>#{@`Ҋ{#_#S[{h@@f95҂ @t@@T@oZByjf94`@e{[AS¨#_#S{@sh@T`@Q"By@`J{S#_  J AITB@) AIT!@_ H1-ˬibxK$@x kTh? TR  k(R%Zh6iT(RR9S_#{S[ 0s `@y 4(A?ր5h@y}q Tt @y@45ШA?ր5@y}q T.@x 5Oiy~ =i4 -x5AЄF@ ‚aSh4c@c@hd94d95Sh5@T@F!TOiy~=i4 -x5A " .@T"@Ӵ[BSA{è#_(A?(>{(>w>#S[ck#{a2%@ T @@p((0b @h%%h@9x4(!(/@0h ! @( @0hA @Hh@9*/@q( *(+h@9q( ,(a-!( @ @(@h@9q( )()!@R(!.0 F(A@R?" kT(=A?F(A@R?" kT(=A?kkA%i@h!i@ @) @? kh1@i6!8i @ @?kaT @y @YhK@@R@(a.**[*c/ RTs@ @ii4{#@kCcB[ASŨ#_#S[c{h!h$S@R5h@h@n(a0+Rh@h@c(1 R`h%%w4h&h8RDq THq` TLqTPqTTq@ThqTlqATRG qaTRCqTiyi4 -x5Ah![R3 qTR/qA ThIAqaT9M)qaT9I2@ R(a2BN9m$R qA TRqA TR!RR  q TRqTRb R qa TRqaTbR"RcS4R qTRq!Tiyi4 -x5A@@. R@5@94(a4.@0 R{cB[ASè#_(32@(2 2@(!32@(a1 R"G2@(1#S[ck{_(A? R(a5 ~5R~RuRy4h%ha&yvZR qTTqTXqT\qT`q! TR~ qTRzqT&` -Rr qT@BRk qT@SH45R7R_ q!TR[qT@hj)qTRRq T@hV)5s&9&` RF5Z@(a7 RS@(1dqT(8‚&h@5s&9 @5H @qTI @h @( h b @_@@qT(7 R3@0 @H @9 *I@*BB6*(1%v b @0(A%(&*('Ҡ0S(4i@y R @ @(6(!6 RY(A?R{kCcB[ASĨ#_#S[ck#{ RyR@"402h%8dq TR qAT@ Sh4(A?@ @29h y yi4 -x5A_x)qT(9`4(iAb;?4(;(iAB?45&@95h@y4hDR@(@R?*?qT(A @?hD*@(@R?q T((/N(A?(!0Diyi4 -x5 Ah@A(!@ TIh@Z  hKi4?kT(A= R [w% @+w% @h@5@IB @bbC @(:5(1;5(A;Iyi4-x5 Ah@Z ( h2!h1e9_y4h@H4 QZix)qTiE)ITZ)xh"@y(A@?B6v R36R5(#S{RqT R(h&(hD RR{S#_#S[ck#{R8S*R 4h=%vq TqaT{`&Rt q! TRpq TRԚIkq!TRgq!T`&5(R(79kT*(A?qd @TRLqT2SyhI(@?֠4(@9(4@R{@;(a**R75R{#@kCcB[ASŨ#_(!>* R(?*(>(2 R(?(šI( R(w hT %@xj4)ѩ?*  )  JJ K J Lihx4 y )k) ?y*_ Wz#S {)w?T!y3RZ7 cTT5z3x*{ @SĨ#_Wz#S {h!@R(=h@Rc@R(2^RCHC>#S[c{i(AA9h 4?A9Fh%% @94(A⎀(AX҈0I(aBDh%( @(sb @@9c@q^s@(a-@sb @@9c@qMs@( b@9h4(A `0h ( @`0(@h-@(#2{cB[ASè#_#{S[ck&@9(5!@(A~@?@5` T(=A?@qZEq#T:RiJh8)[(x hJi8[)x)hJi8Z)x)hJi8Z)x(qaT@@HAA?TQqsT54RvrTnJh8Y(xhJn8Y.xhJn8hY.xhJn8HY.x kaTkTjJh8*Y(xkTAR9kDcC[BSA{Ũ#_ (@J ? aT *R j`95# @? T #@? ATn@a9.RH5K@h@ @ T @(a94l @_ !T@ h @(e9H5*h@ @(@_aT,i@(@_aT,, LH@a9H@@a9H@ @l@ @h @(e9H5+h@ @(@aT,i@( @aT, , D(a9(5na9.a9H@@a9H@ @;l@_ !T @ H @(e9H5*h@ @(@_aT,i@( @_aT, , LH@a9H@@a9H@ @l @@h @(e9H5+h@ @(@aT,i@(@aT,, lH@a94@Na9_#{(AK[>#S[c{R8&@xA?֠4ATzvxq*{cB[ASè#_#S[c{a20&@  E( E T @ EhI?T (I % T`{ӳ;ҳ Oa@=|)yi4 -x5A&@  T T aOP=_}A@QAlx T T aOP=_}A@QA?+xT@  T aO=__C@A/x T{Ĩ@@cB[ASĨ#_%:>#S[{T@Ttb҈@T`@xT{[AS¨#_#S[c{@*S8gA`?4s@3yi4 -x5AhV(A?( Rh@kT(Rvw b9 Y)a a9a@ {cB[ASè#_h &H@yK LR RqTH@yqT RR qT RmRqTLR-RH @yKK R4RRR  )=S?%qhT Q   )=S?qhT Q  )=S?qhT ]Q? k Tm5J% H!  *h%@x5h R_#S {u4fA&`?ր4s@S(Rhb9{ @S¨#_#S{iyi4 -x5A(A?( R  {S#_#{S[c(@S RCRRR?֨ RqHzT( AC@R?|@ӕ4(A?(A*RC@R?֠4(( A#?@RqIzT@( @4@y}S=S(A?@RJ((A?85@RA(a***@R9((A?cC[BSA{Ĩ#_#{S[c#C((mAR?(=A?@@R@(*!(uA R?aR (A!C?G@9C@9 CTqT?qTS5RK#TqT?qaTK@9qTURRs3O9jx8(A?4AT(@#*C?4uRaACSRRC9jx8(A?֠4ATjx8q(yA?T4a2`@ TO@=|)yi4 -x5Ah@hC #@cC[BSA{Ũ#_H!@@)yi4 -x5AdH @R(BuA R?>#S[ck{@@TubҨ@T`@xT@ @{" {kCcB[ASĨ#_#{(!}X>( !!$_#{S[cky*i4 -x5AWA?5R)7R:Y*Bcc>3D` @cfA?4s@Sc]b9 TqkDcC[BSA{Ũ#_HZ>#S[{Op=~Thy+HA ThTt ,z4x @? T ?)H1?T Ӏ6wtZz4x{@[ASè#_|>#{Op=~0=>Nf{A#_#S[ck#{_h4R _x R?q$HzATRG@C@:R(@yqATR @?! @IT@3s#4 @(@yhyHRhysu4 Ry @"4Ry C@@z8xUR{è#@kCcB[ASŨ#_ #S {u@ T{ @S¨#_#S {@T҈@T^ӆbџyZTX{џ9럂xAT{ @S¨#_#S[c{20l&@  D( D Th @w DHI?T  (I% T|Ө EҨ0==a"@aTh@B `@h @|+t"h {è@cB[ASĨ#_^s>#S[c{0l&@  C( C Th @w CHI?T (I% T}Ө Ҩ(@a"@aTh@" `@h @}t"h {è@cB[ASĨ#_ >#S[c{0l&@  C( C Th @w CHI?T (I% T}Ө ҿ "(@?z;h&@ !T @K T @*Ti@"@  Tu@5{@@W jT`@h @}ct"h {Ĩ@@cB[ASĨ#_֕> @k@+| @++@ge9G5'R+O(A_ITH@n)Cl_ITl@1 Mihx %@x kT)iTR k$Zj6T*R86?k @'+k@je9*4_(d9H5+$C(?IT(@J$A?ITB@ i1 Nihx %@x kT)i_ TR k(R%Zh6iT(Rh87 RR_#S[{0@i"@  6C _ T@}h@ ҿ a@ Ք@`@h @}u"h {è[AS¨#_ >#{0  @?@ @? {¨A#_#{`@@?{A#__ O=_#{ @ @@ @?{#_#{0 @i@@ @ @r? {¨#_#{@@?{#_#{0 @@ @V?{¨#_#{@; N{A#_#{`@h @}>~ {A#_#S[{@s@u@ &T@ @}~ {[AS¨#_#S{h.@T`"@ Ryh@T`@RBy`@@a@e`@h @z~ {S#_#{@7@?{#_#{@y4@?{#__  @_@_  # _  @#{S[ck+C0OP_HDP =_CyR_#(a> -x5A@ @@aO:(>K @A+  }K`j}SJuSJ K  K(xh}S5B+@2VYoEHT#@U+C񁂈H?T(HH@_I" I UI @(?y(x@][/@T#@Th_!R@@ @yi4 -x5B#CI @H@O@_P=   DQCB~2 b9BOTV="@y2ObA_@P= C^ H/@T@#@ (Rb9a@?T4h@_!hB#JU@zV @7H@T@@C+@kDcC[BSA{ƨ#_ #{ @ @IT @( _xR?qq$Hz`T R{#_#S[{**7+!j!R }|,ij? kT qATh@y@Rq(a<J(=jJ1HIh85@R5ikv@y?(a<q(<@R5h@yq(a<-(a= &(=**{[AS¨#_#{S[ckuO0P_#P=_y@?1! T@?qT8WC@H3@CTH7@*#<H+@Ȧ@?kTQ@C|@@C54@R!@HT*~@@IT@H7@ICH+@@?*kTQ@IT@H7@IC*H+@@?*qVzT~@iyI4 -x5 7iyi4 -x5Aq H7@T@+@kDcC[BSA{Ũ#_ R@H@*@#H@#>#{(RC9RC9C@9{¨#_#{SC( %0Ґ( A&(҉( A(҉@ i@" ?*(*a Չ@  @@ @?ր@ yi4 -x5 +ARb= >NT-A f  hlx%@xkTm3R@?*CSA{¨#_A Ta#S[c{0[+c0 ը@y#y9RRR4@@@ @OC=/y=C=Q?*@@?4($^h )" )*A0 %@@ @0?֨@@OC= @?y=)@K= ?*@@ @? ճ7#y4 մ@O'=@#y@@O(! հ'=@S=O?*#@@?֓7@O+/=@cy 9A@_/=[= ?*($@#y#(@@w @OC7=oy7=c=?*'@@? 7#yh4@@ @? ՠ@@ @? {@@@cB[ASĨ#_i @R1(! VH @R$( *HH|cJ @R(!(#*4Hh@R( *'H[> #S{0@?`(R@{ŨS#_!H9> #S{0(R(/(A,@R?֩@*i@@ @ @? (*`@R@@?*({ĨS#_a#{S[ck++C0P@CRJO_OP=_yO_OP=_yyi4 -x5A@H@IW@_CHG@H;@y(  -x5 A( -x50 N a=fAdAPN@=X?e94HG@I RH;@F(HG@IRRH;@BCR@?THG@I@RH;@+(AvTP=5P=H7@IC_3H+@yI{yHi4 -x5P=I  !`=&AE=dA@CkH7@ICRH+@(mA?_9hAR@ ?Bb@ ?4RT@9yA?t4H=e94H7@IC@RH+@(H7@ICH+@\S5H7@IC@RH+@(@AC?֠5@?*JqT@R(a*r@? H7@T@+@_O_yHG@T@;@R++@kDcC[BSA{ƨ#_#S{0(R(/(,@R?֩@*i@@ @ @? (A*{ĨS#_a#S {0 cH c*6H=e9h4@RL(*++EI?!Tc**6@R;(+EI)CR42@Ys @?TP=0=@A&@'Es*TRc*{Ǩ @S¨#_#{CWTC{#_#{S[ck+` O0@9PoBPO=_cy_ch@ITi@H!% @9?yqha2@T5[@T7@IT@@R?TI) ( @@R(@(?I)! ( @@R(@(?{__ACk@ JJ! H @I) ( @@#(@H @H@ @g@@ @? H+@)@94I)! ( @@(@*g(@ @?IT@__# @ )EIkI?H[TAC@[#@WWC(@? T)@?IT*@J?T*AB#@AC9?TW@I)! ( @DC@(@C*TY+Y[9 (@@#x@(@+ A'@ @'@@ @? ATY+@[@h}6@ S @IU@@v TH@}<yi4 -x5A@A#OAHH! T"A@@9qH!; AIT!@&A(Th @?b I5I@h?y(x=a6@9h4@ R@(aH'K9R(CH@@ 9@O@6@R(r @ S @3;U@@ TJS@HA%_T@ T@hA95hc@1`TA}H@"jc@ |Py@h @_kT` @ @_ kT@h@TJS@ @(e9(4@ (@  @ T@ e9I4(@ e94 h0H@ "@94yA?ր4=A?@"9@H @f Tb"AITa@ @H@9 4H !$ @f @c1T( @(@h@ITe@@ R@FQK_c_yQAC@HTH@T@@z_c_cyp=PO=p=PS=byH@T@@k_c_cyHAT@ Ab "ALK'T@ H@?  TK& ˇijxO%@xkTkk%H !$ @&T( @@C(@@@ R@CQL_c_#yQA@CHTH@T@@&_c_cyp=PO=p=PS=byH@T@@_c_yH'AT@A I@H@w F @ @T@@C @@@< !0AC @HTh@T`@byB@qBbyHAT@@Q?b_yH7AT@+Ah@B0h@o4h@ Rh@1 @E S @U@@ T'I@H@A+@J?@(V!H/@ @y 4OR_cPW=_y__; -x5A/@@C(AH'K@X@(C8H'KR))C)YsR@ ..@CA @C2"@C/H[@I3@@Ysb&J*v7H@ICH@H[@YsH3@`"I*5H'Ks*CT@R#*` @' H@T@@M4@Ҏ @C H@T@@?R@Î @C H@T@@0 R %+@kDcC[BSA{ƨ#_ք@R(Ai R@#(@# R po>#{(,@$R?qaTRt(,@$R?q T(-@$R?q T(A-@$R?q T(-@$R?qT(-@$R?q@T(.@$R?qT(a.@$R?qT(.@$R?q T(.@$R?qT(!/@$R?q`T`R@R R{A#_#S[ck#{P@TՂS@IT@_ @IT@HDm<Sh@k`Ts@s*I(D (R`9H1e9H5 LR<Sh @~A9h29A?H1e951> HKmx4kTA= R'hb@9h4&qaT` @eA?ր5a=h *ch@wHH@hS@T@z{è#@kCcB[ASŨ#_#S {s "4"@4a"4"u2R{ @S¨#_ @@#S {jA_ TR RH A"*BTT Kh @~@ h@A4hRR`@U{¨ @S¨#_ #S{`"*5"h*{S#_b4_qT_q`T@  @ @! @? iT@Rc@h_ W@CHRO) @R cA =C@1@CA1@=0=C_#S{*7{èS#_@R**C(C0>#S[{0 Ո@@f X ?* ՠ| ՠ)M@%@b?֠AS@-@?֠9c@1@?֠1C@@?֨@) kAT@R~!;!'@S54a=@Ri%4a=@R@Y!**@z(> #{S[ck+ 0P_4 R0y@+h@@AA*8 @O@PG=HRH#y3- PG=B@PS=OP?*a4, @;@@? @?@@?_h@A@@.@ @_?* 4  @C@@? I@iH@@ @ @I? @@_#A@!@@?*A5H#@5h@A@@t0@# @)?* 4 @G@@? I@iH@@ @ @? 5@ 5@ OQ ?"P=_y8a=VO_0y@ __'V@A@C@%@,?*"6 I@iH@@ @ @? X@J@A#@@2@Cm @?*6p @K@@? I@iH@@ @ @? _#_7B@ T'@A@@%@?*7@ I@iH@@ @ @? T#@:@@_#@@_@ @v? Bab/o?*I{@iH@@ @ @c? *b7T@@@HAy4@@?A7@BP?*7T@@@HAy4@@c?A3@Bc>?*#8L @VȆAx!q,T_yj4 -x5A T*-x_qaT h A ?A @ e95&R @ ?IT @@i"  ikxm%@x kT)iTR k$Zi6T)R)?qmT @@ e94He95H@IITI@N@h" +imx*%@x kThTR k(R%Zh6 T(RH 86 -x5A@ :Q 8*@HTH;H3AI _bz(x@ H?AI @H3AN _X@A#@c@@A@?*8J I@iH@@ @ @? @@ S( 4T @HCH WWO =~FR 2yA@C)@=YS4@T@n"Byh I@ #T_W>Nf@C% @@@ @N? uT@A#@@@A@@?*a9 I@iH@@ @ @0? @@YSH4@@@ @#? JT+@HCH !S_OA`p =~tRt 2ybA @Cb@=S4h@T`@"ByI/@ T__>Nf@C@RA(A&BO@%:6 @@@ @? @@@?L @HTB@ @@@ @? @#@@ @?  4 RB@ @@@ @? @#@@ @? @'@@ @? @@@ @? @C H'@ @( @~?@@@ @w? @CH/@H?AT@3Ar_yQ ?"@3@@? @7@@? @@@ @T? @C N+@kDcC[BSA{ƨ#_֡R@#(@#7 շ յ>#{+ F>A}6A|2Az.#{S[ck+C0P3@*AR?*T 6@R *^O_9_9P;=_y_9_9_9_9_ 9__O__ P3=_yO__ P+=_CyO_9RPPP+A?(.))  ( @(@? ))! y( @(@? y(RHS9HK9  -x5A@9H_@IHS@H'h QqTHA/4% R ҀbRA Ҁb"R BRb bRbA "R" -x5 A(.x5! A(! -x5  A -x5  A.x5!   A))!( @(@? ))!y( @(@? yHa2U@@Tb@T@JxTI)a2(@((!%(.?9?9R?9?9?9JC@9Kc@9Lg@9sQ_4Ԏ@R@yqIz TR =SqT.@x*4A*?<S Q_q[T (Y3( @@9 RH_@T@S@__ _CyHo@T@c@__ _yH@T@s@ T @qT(RH9(9(RH9(R(9AiAb?!`qBH_9iA? 4H_@9 5eA! ?5"sQS4@A!@?HH+ @R*I8R -x5 )  HqiAB?ր5(RH[9N@eA ?ր5sQS4Վ@ S_ q!T@R8R6H %09Jo9HR_q H e09H 09+@R* ? R( <sQs4(RHC9HW9Ȏ@Ha-x5!`  A@R*8RH_@9 C4 (R(9(9sQ4@)y4-x55е"A @ T@@@yq?T@R@R*a!iAb?@5,RLg9(RKc@9*RH9JC9iA? 5sQ4@)y4-x5AiT@RM3RH_@T@S@__ _CyHo@T@c@__ _yH@T@s@ T @4-x5A@AH_@IHS@H'@R*\8RiAb?@05+RLg@9*RKc9(RJC9H9sQ4@)y4-x55Р"A"oiAB?,5( RLg@9H#yKc@9 *RwAiAb?֠5 RH'yTsQs4@qA?(.@)5@R@ a*@AeA?֠5(RH9B6(R(93(R(90sQ4Ž@Iy4-x5AAiT@R3RH_@T@S@N__ _CyHo@T@c@E__ _yH@T@s@< T @ABq!T@#?H#H@?HHsQ34@)y4-x55еA)"A  @zjsQ4@)y4-x5A@l@ZsQ34Վ@y4-x5A@\@@?1@T` 7@Rv33RH_@T@S@__ _CyHo@T@c@__ _yH@T@s@ T @@R*RaQiAB?ր5Lg@9 qT(RH9zqiAB?(59(RH9H 9O)R 9(RH9g(R(9d@y QR?jTsQ4@^qT    "Qw!RШ~|iwhgA?֠4 qT@R8RH1)R I58y4-x5A +sQS4@)y4-x55РAc(R(9(R(9sQ4@)y4-x5 A.@R*8RLg@9Kc@9JC@9H{@/HO@9H4*5@RAyLg@98RKc@9HG@94HW@9h5H@94@RkLg@98RKc@9HW@9h4K5 4@R_HW@98R(4H@94@RA U8RH@9(4H@94@R!!K8RH@9(4H@94@R!"A8RH @94@R{!#98RH@9(4H @94@Rq!$/8R))!( @HHa2!@?T(M@(! T" AIT!@  19))! " @b8R3(RHk9( @(@H@94(. @qAT( @@R(@;%(. @ qT( @@R(@-&8R  @))!"!A(@(@((@94@R(4@@9~3RH_@T@S@z__ _CyHo@T@c@q__ _yH@T@s@h T @(@9H4))" @"))!"!A@(@AHA(! ( @(@(!t"A  h@$A(˟Th@?hz(x$   R(.(@)RR- S RO__PC=_y 4Ha2%@ aTHk@9h4Ho@ICBCHc@S4S4H@95(A9(4H@IH@S H@IA@9H@ S4(Kh5R3R4%&AyA?(y&2!`R H@T@@___yH_@T@S@__ _CyHo@T@c@__ _yH@T@s@Ӻ T @p))" @ -x5! A(!  ( @(@(! h@Ih@H@Hs@2%@((4@RA RH_@T@S@~__ _CyHo@T@c@u__ _yH@T@s@l T @"Rc3RH_@T@S@___ _CyHo@T@c@V__ _yH@T@s@M T @T @3R7@?*C9+@kDcC[BSA{ƨ#_ag999999999999999999999999999999999%)9O9999Ohw9)#S[c{{@?*T N @@R*R*?*qT@?4qT <R **2~@@**R*?qT@?4qT <R **RR @ _(T@=IT@ ?i*8A|**{cB[ASè#_@#S[{T?uAv_T`^h_ ך}y>T{@[ASè#_#S{lsT{S#_#S {@T@҈@T^NbџyXTWCBџV8xAT{ @S¨#_#S[c{0l&@Ҋ X  Ԛ( Ԛ @Th @y ԚHI?T  (I% hT}  Ҩ=V= @ a"@aTh@b `@h @ Ԛ}(Wu"hh {è@@cB[ASĨ#_!6>Ԫ #S[{hf95b @s@@T@^ Byhf94{@[ASè#_#S{t @ !_(Th@=ITi@j ?i*8A)hb@=ITs@`{S#_#S[c{0  H Ti"@ Bh @ BHI?T`t5I"T~p (Tҿ ҿCB5~RF  h@(Ga"@6 `@h @~J v"h {è@@cB[ASĨ#_}>#S[c{0X (T"@  Ӛ @ ӚHI?T  (IBT }   TҿZ  A)__im*@S Th! @ ?. mi(a, !)a +T#'V ՗@@`T?ҸW"A8@sT^(@ ՚}?9cTWAҀ@ @ Ӛ}Z" {ƨ@@cB[ASĨ#_>Ԫ #S[c{0  H T"@ E @ EHI?T  (I"T {   Tҳ˳'s#.@? T*aO=}1A@A_L?x? Tp{Ũ@cB[ASĨ#_֖>#{C @IT @?yyi4 -x5 Ah@yj4 -x5 N C @Aaa=0NP=C{#_#S[c{0 HE@w@d95%RS4@33@d9h4hd95bSh4@X T ҴJ1C@B(@2N 2y@(R"9{Ĩ@cB[ASĨ#_K> vb'vb'vO= 9_#{@` {#_#S[{h@@f95҂ @@@T@ӭZ Byf94`@ ң{[AS¨#_#{@94H/{#_#S[c{\@T"?ғA@sT^@ ؚ}w~bT{cB[ASè#_#{h@=T`@`"9{A#_֔  #{`@h @~J~ {A#_#{`@ h @  ɚ} 6~ {A#_#S[c{@t@T"?ғA@ sT^@ ٚ}~bT@  @ ɚ} ~ {@cB[ASĨ#_#S{`@a@`@ h@ ɚ} ~`@h@~h@T`@R`"By2h@T`@yh@T`@yh@T`@ӽRyh@T`@Ӵyh@T`v@ӫyhr@T`f@Ӣ yhJ@T`>@әyh:@T`.@Ӑyh*@T`@Ӈryh@T`@~2y{S#_#S{hZ@T`N@k 2yhJ@T`>@ayh:@T`.@Xyh"A94`"@yA?h@94`@yA?h@94`@yA?hb@94` @yA?h"@94`@yA?{S#_@ _#{S[ck+/BҰs/{a .5@BIT @c$$2@6@B T*@@BIT @c$fD94(bYZHq9cqa=(Ad((s&@?҂B( ך@IT @(f9(A94RcHq9q(AW Hq9q( L(!&TR))C 7A> *Yu @IT@n$@y Yui4 -x5 I!AITJ@?aTIJ ijx %@x kT)i@aYu s`4"Rc;@Yuh @ITc@Hq9q(&T*˿T @?9(&@R)) ךi);)6@#c1)Ys)E9I5i"(@(@9aiT9 @ $AAyac$#c1Hq9q(&@s)) ך?A3T9Hq9(5(A94(#(A:ҔHq95($($(A%c&@R)) ך @)Ys)E95v"#c1ȎB91q@@biT@ BAyac$#c1NAy*V@ǖB9ƒB9ĊB9BAy&@s)) ך?A3hT9(A94(a'"M Rc((m&@R)) ך@e"`B9"Ys(5HE95(A95A4"S5c$L5&@s)) ך?A3T(6@A@R?R! kT=A?RHEF@Ay@R=(A2* HEF@R3(?@R/Bs/+@kDcC[BSA{ƨ#_#{S[ck+| s/;@ +Xl# @HRS: 5i7R7RRs![RYs[RT@cIT@4@6'@yqT m (@+aIT+ @c!j c!:X+Kihx4 y )) ?y 6'@y(2c!64#@y@(6qcT R'@ @ i$(@+aIT+ @cj c4X+Kihx4 y )) ?y(2c@yq T@(Teqh$T*.IY I 64c4c!@cH9c!cc!JH~#@@@6Hct<H #@@Z4H *c!c!c!e-HA`(5@HAXHRq#H5@HAKHRq#H5@HA>HRq#HA!5@HA1HRq#H#v4(EF@R-H%cH(@*5@HAHRq#HA.5@HAHRq#H0v4(EF@RH2csH5v4(EF@RH2ceH;OOO@OO3#H4HA?c!chc!q@HR$chc!cc!q5@HAq@HR$hc`qTqTq`TqTqTv4(EF@RH+c@HA.w?5@HAoHRq#HA@cf/5@HA^HRq#H4H3cR @H7*CK@ @y%R@?Yq$HzH 0H%H<87R@R+@9 s/+@kDcC[BSA{ƨ#_֐ t"/<J #{S[ck+j s/0DC@SC!@b)T@BAya@C! !A9׮@H5W @ A> yk4L-x5L@_IT@?T kikx %@x kT)i(EF@RA,; R_IT@Aq)TJ@IT>@(EF@R $RR4@CڟR  @y? qT( =S qiT?MqT S5?qT!?kT(q9{c=q9@z5@A R?R! k T=A?hA_ [_ QA4A[)Y{c=S_*@ (@3aIT3 @ @iv6E@  q`@ycC!8bQ5Y@S_AV@ Q)}@I)(@;aIT; @Z @I@ii6@ I@K I @ )l)a=q`@y#!BqAT@(@yqTA94(@#aIT# @(@&aT& @#aA94$b &Bҩ64J@IT>@AC  K!)JCk *X HC, ikx4 y )) ?yOIy_HCP=i4 -x5IC AAC@ D@*@  H'@T@@A9RqR")v4*DCQ4YS @ (@3aIT3 @(@6"x!c6tc{Q5S @Y@@ QI%(@;aIT; @(@6"_a6ZA9h 57BCQQ4@ (@9aIT9 @(@6"@ac6<csQ5@ QI%(@5aIT5 @(@6")a6%>+-BA95.>bR s/w+@kDcC[BSA{ƨ#_<SqTTeqT)*I8* @H0:H17H14H11H1.H!2+Ha2(H2%H2"(!H3! Q?%qTHI8H H0HA1 H!3 H0H4Ha3_#{@yqTq UzT*II8I qT@7Sh4 RR{#_#{S[ck+O&҄s/CC/0E PGDhA9q5(q94s4(EF@Ri(@R3@BIT @AC 9(q95&@B)?# Ț@IT @(AEO_oP?=_y2@(6@B?IT*@BHT"@?IT!@@IyXC HC i4 -x5IC  AAC @(a@Nq4X RHC H R( Oa=_ P'=Hj4 -x5A@@CAC A@@C1(q975R@C (@CH@I H{@O_ P/= yi4 -x5A@ 4 yi4 -x5A@(A @(q95R@C( @CHg@I H[@B#PI@H{@A9H4(q95( fD94O_#PW=_C9bD9h4@BIT @@#R@CW@hҀhRqq?qiRR(H  ==S(A w(HJ#VKCI@=HC( 7 T$Vc!Sc9;@8_pqaT_qTaB*HSyqT!LDCSB|aFTSc@99Vc@҈bD9q( Aa="(5hҀ4(BD9>D9:D96D92D9.D9K*D9C(&D9;"D93D9+D9#D9D9 D9 D9D9 4(B@9>@9:@96@92@9.@9K*@9C(&@9A;"@93@9+@9#@9@9 @9 @9@9( H@=IT@@V(!(XR (Ch ;V75B@Ys @I @?IT@@ Ys(@"#@yIT"@!#@ YsH@y4I@B?ITB@H($ )@ -@? T!@ @?IT@@aYs@y@Ys@y(4H(zXs)TV@9҈RR))C!V7YsA9h4(q945"" 3@Ys @i !@?IT@@ Ys(!@"#@9IT"@a#H @?IT@w@Ysh @d@9ITc@ 6Rs*cTV@҈UR))C!V7YsA9h4(q945Bb!@Ys @i !@?IT@F@ Ys(!@"#@9IT"@a# @?IT@4@Ysh @d@9ITc@!Us*cTV@҈&TR))C 7A>[@VyYs @IT@@y Ysi4 -x5 I!AITJ@?T JLihx %@x kT)i(q945("@Ysh@h @`IT`@@ Ys(!@"#A@yIT"@(! h @d@@yITc@(!#@!Ys@4(q94¢@C@YsH @ITB@($&Ts*T[V@9Ј&WR))C7VYsA9h4(q9(45B%>@Ys@("@ۢIT@@Ys@(A&U@IT@@Ys@('E&Ws*TV@H@@TH@XbHh@T@Өx{TI@9X@(@(O_oPg=_#y&@BC@@)?! Ț H@T@@Ӌ"@?aT(q95(!(&@R* ?I ɚi)3(W@Uc@ @)y`)E9i4@H,x5H`Ao ?5#bB9h4@( *=b> >  ! *>A *@IT@@@((YO_#P_=_y@XC+@biT@B9ҩNAy@C+V@B9B9B9 BAy C@ yi4 -x5A@NAy[@V@B9B9B9AB9BAyBAy@)@ HT@T@QK_yBH@T@@H@H&@9* ?I ɚ?A9TUc@ҡ@A@R?R! kT=A?(q9d4HB": &@R)? ȚA?Hg@T@[@ǽ_o _cyHW@T@K@Ӿ_o _#yH@T@{@ӵR_C___+H @ ]@_`T  H+&@)?! Ț ?TH @I  #IT@ @@ ?TB(˂_@HkH@5~RnuShH@ H@HH @*@RJ ?I ɚJ(8?A(T*@?RH  Uc[ @?AC@K@hJw8(5J J ՚*_A7T %&B9ɑB9? k!TU@U@? Ti@9Y()RiJ(8*@J J ՚_A(T&O? (U@P=P;YcH7(B9H9TP=H;@0=(!`A'B@AD9*@H  ՚A7(TUc@A?W#@y 4){(Q}S+BC .*BC H'@RH ӚY+T ;Vc*^#0@C4BTa0P?C4TT @Vc@Y+@0*BC mI@R( Ӛ((Y+ ӚT Vc*;^2A@9YC4BTa0%?C4TT @Vc@Y+@2b3>O_oP7=_y A9i5(r9494?q4 55$)a=6HC 6GC FC * )a=599H@ yi4-x5A@@CAA@@C&:@C"Hw@ICHk@:(r9c`=q q?? )5c?EBA94(B>ңHg@IB@c`=F@fD9H[@B F( w ("((!F@D @fD9(af (-{Hw@ICJCHk@HW@IK@HC"(#(@fHW@JCIK@B @HC#(#$Hw@ICHk@B @(A.z4(Q}S(6rB@(6mO_oPG=_#yfD9H4( 7 -x5  (A9 ( A; -x5  (_o _cyHW@T@K@5_o _#yH@T@{@,*#{S[ck+0Ҫs/(@* #@HRSRc1R9  R:Bc:*4@6&@yqTBc: 6&@y2@4"@y@6qcT R1Bc:2 @(:b@@y *qhT TeqHT$jYk j @494(A< @@ H(A B4(@(44( ( 4(@(AHRqR?HRqRHRqRHRqRHRqR!HRqR{HRqRsHRqRkHRq(A( HRq(HRq(@4(' y(+7A9H5(EF@R(,7F4(- j(.qTqTqTq@TqT(!/+4(a ((FHRqR(AHRqRA?(a s0HRqR!4%R?Yq$Hz( (#(A Z($V@y%R@?Yq$Hz( ($(A%F@2"R0s/+@kDcC[BSA{ƨ#_+ky cRL#{,@i|@<S Sh44rT$$@y% @y$ @y%$@y ab   6 6% @y$$@y ( @y+$@yd} A4a  6$$@y    {#_#{S[ck+60PS__/ _ 8( R0y@KCR @JeD95 T7R h@h@(/ACI`sR=(RH9i@9(j@9 29h @9i@99( 19i@9( 19h@9)*19j.C)*Ej@9)*19j"@9)*19j&@9)*19j*@9h9h@9)*19)+5j @9(19j *9j"@j *5j@j)*94x@(// R@C @#*+@kDcC[BSA{ƨ#_i.@9HR__9?qH9__#9I'9O_W_9PC=OI9__PK=O_9I9PS=_y_g_C9IG9_o_9I9_w_9I9_#_y_#_Cy_#_dBB@t *t4(EF@R-*(q94H)A3H!A" A9H 5HAH)B/(q94A94HHA  @A3HB"A9XH5"b BB`A9 5(r94HAbȁҮHAmHqA2- HA;HyAÀHA…HA¯HA"ғHBc҃HaA"~)yHQA=tHA…o*BjA/eHIAG`H9A[2VHAA"ƀQHYAbLH1ATHA"DC BB`?$b-:HBc5HAB0HA"F+)&HA…!*BHAHA¥w4HAf HAB+" HA⪀HAs,A954/HAHHBBC@#(C(q95(q94@ $*t5! (9@@H*t5@@XCR))CIS Yw(QD94hA94(q9H4(@"AIT" @:@I'@Yw&"*86hA94<*(EF@Rʸ=*@@(q95__G__;__H'@EC"YwDC"%* 5(q9(q9C54@GCFE@YwH'@"*t5@ @H@~__@f @cH'@"Yw"*t 5q944A@A@R?R! kT=A?֨@@YwH'@"0 *C*cTS@q94(q9H4*5A95*5S@@ @H@~˵__@# @ &*5?b(q95NS@@@ A?*v4T5EF@R4*"RH#@94@@yA?4=A?@qZR_#9_v4T5EF@R*"R`@@?1T(6x`@@?ִ4`@@?hA9@4 H#@94@@yA? H@94@@yA? /Ҫ| H#@94@@yA? H@94@@yA? /ҕRfa#{S[ck+,!Ƴs/0A@CBWHyAT"@qIT@H@ y2@6@BT*@?qHh@Hh@tbITt@A@/-hB9iNAyjV@@"gB9fB9eB9 dBAy omj'@ R) , ˚@ }' @TG @9@@9k TA(T@R@@9jA*uAR?[ii1 T*OA94C@* E$@R4b@ RS5 >S4 0S5!?kCTbBAyA&'H @ @A9I5I) @ A> yk4G-x5LJ@K @ITJ@?T Jijx%@xkT)iEF@R A,R!s/m+@kDcC[BSA{ƨ#_'9FB?TT 9F*y j4-x5 A?q)T`EF@RضA.NuAR?r9i Rq R%A9)a=@q0$q9q!0A0IcyHi4-x5J R94RUoVS*W X A*h@"(@ aIT @h@G7aK"65yi4-x5A kTW @VSBUoCIcyHi4-x5I@@ AAWOIcy_HP=i4-x5I AA@C C@*@C H7@T@+@ҳr9qA94 i@ @&(@4aIT4 @hJ@vITv>@EF@RE1@@9G@ @IT@F@`=9RC9#99`A9h4G@ @IT@W@a3C9#99JA9h45@3@/r9C99qD#915@!4@C9#99D@A@R?R! kT=A?4 A9C@#@q 68!R#S[ck#{9@VA7RCB94R~#B945BvRp4cg*H@i(@5aIT5 @5Ba[J@R` S5hjj7` S4!#usbQ5gAcBCB9b=B95"6 5WR5 4A#B94 r9q aa=#/)4H@jH@YaITY @ $S5H@7 .S4c sbQ54 @A R?R! kT=A?{è#@kCcB[ASŨ#_#{S[c#Q h@R@h@ T@ȒA9h 5ȖA9( 5ȚA9h4q94*@7RH.@b@IT"@a7@˂IT@k ˊ X , lihx4 y )) ?yAB?`H)yi4 -x5A( _x?qTTyb@ @ e94@ @ T@ e9I4@@ e944@A@R?R! kT=A? #@cC[BSA{Ũ#_#{S[ck+!@A@R?R" kT=A?H AHAE@@f9h*5@IT@J@R4( 1(!(" J@R"@8 4R qbT@i"(@6aIT6 @ (@S6!@AR?# kT=A?( @`"Sh4Z5!@AR?# kT=A?ֈ@k" F)a=q`@y#( J@skT@(J@h4($*(A%|J@ R R49#*@9 @h4(QZ3J@skT?kATR4R Yx7 @# :Rh@#@y[)(4*h@ #)a=H@yCaMq($H@ITC @(>SbJ@kT) @ @"# @yH@y?kTZt7?Mq)a=(%H@DaITD @(*bbY:ZJ@kT@)!@A R?R! kT=A?(5Ѓ)*HR4)F@(*e)[u*7[5kCT@@)sJ@kT(6)vS"4vS3)*aQQ65(8b(9"n @ e94@ @ T@ e9I4@@ e94EF2@@R(o R6R!@@RA?" kT=A?H@¨(q!bR@+@kDcC[BSA{ƨ#_#{S[ck+&HA9E@@a=f9H*5@IT@J@R4( (a s(! nJ@R"@4 RqT@j"H@VaITV @ S4 SH5H@6@AR?# kT=A?( n@AR?# kT=A?ֈ@k" q`@y#`( TJ@skT@( J@4(A*C("J@ R R49#*@9 @h4(QH[3J@skT?kTR4R Yw7 @ #:Rh@"@y)(* h@ ")a=H@yCaMq($H@ITC @(>SbJ@kT) @ @"" @yH@y?kT([t7?Mq)a=(%H@DaITD @(*b־Y:ZJ@kT@)@A R?R! kT=A?(Ѓ)*R4)F@(*e)Zu*9Z5?kCT@@)sJ@kT9c=()vS4vS3)*aQQ65(A(AU @ e94@ @ T@ e9I4@@ e94EF2@@Rk( R6.A94(q!b&R+@kDcC[BSA{ƨ#_#{(Sq :A:,a= ;:(#/<'{#_#{S[ck+A9"q ;a=4HB;E@@f9N5@IT@2@A<(A9))q(!(A r9(4a@AR?R! kT=A?(BA9(5a@AR?R! kT=A?(!bJ@R"@&4q&Ta:* @ t@ S4a@AR?R! kT=A?(@ S(59Hit7@ S(4a@AR?R! kT=A?xa@AR?R! kT=A?">"@@ it z!@yb%@yj@yg S5RH =SqDNz`T_Mq TQ S48*L@ @y?q T@ T?Uq T9HY H < S4 46:*_q)T!;*_AqaT HRjT_9qT7_qT;6A9 69@ S46!:_qTa:*a@A R?R! kaT=A?֯(QqiTR@7 S(4CR@?q TT?eqH T0HYH HRj4 )!5"PHRja5 )5?FCB@=!:741B6. )6Sq6!7"78B4?qT?qT?q`T?qT?qTB6 B@ A?!B`5J@{kT@@?qbT "O! *sq94 AA94@A c J@4A \-*J@R4*J@{kT@(Kk!TA95r9 )q)"6A95J@r9?q)(4A$q9 )!qa"%A$q9 )!qa"!r9@ )q(#q9 )!qa"A9h5#b6r9 )!H4q9qa"* q9qa"0ڻ1q941J@4A2Ż6b ҖA8b9 @ e94@ e9)5 @ T@ e9I4@ e9i5@ e94EF2@@REF2@@RA R(BBYR+@kDcC[BSA{ƨ#_(+.(1(<Sq(TTeqTII8I 0512A1/1,1)1&!2#a2 2!q`T Q?qTqTq 00  a300_#{H(@9M<@9L8@9K4@9J0@9I,@9+G$@9#F @9E @yD@y C@ {A#_#{H(@9!|@M<@9L8@9K4@9J0@9I,@9+G$@9#F @9E @yD@y C@ {A#_#{S[ck+C0P@GO_#P=_y5*@y)4)@y)4 -x5A@4Y#G˫4@R#q95q9h5q9$4yi4 -x5A@J'GT3@HA( T[H+C4OP=_y_# AI -x5 AHP =fA=a=@H?@IH3@h 4H?@I@RH3@G H?@T@3@ӭ_y_#H?@T@3@Ӣq9h5q94bA`bHA`A)yi4 -x5A`bq9h5q94 @.H/@IH#@`4H/@I@RH#@  @H/@I`BH#@`4H/@I@RH#@ {@H/@I`H#@H/@IH#@4@RЬAd_+y a -x5 A -x50 N fA@PN=a=H/@I`H#@ó`4H/@I@RH#@6q9(4H/@I_+H#@y  -x5 A5Fyk4 -x50 N fA@PN=a=H/@I`H#@4H/@I@RH#@l H/@T@#@ҩR H/@T@#@ɩR R+@kDcC[BSA{ƨ#_#{S[ck+7B9h&WR*JCJ YuB@_T(hCA5Rh&W+˿#T! Ba J@ ?RI)@J J ˚ %B95_A(hT ebh&TR))C X;A>U@S#T+@Yw @IVjyj4 -x5 @IT@?aTiTJLihx %@x kT)iB@@h~O_ yP#=i4-x5A@5A2@ó2@T մ6H_@zTT@S@[_Cy_# T6HO@zTT@C@N*@ ?A?@R@3@RJ J ̚jK;@%ͭ@ϝU?M !ITƥ@ AT hmx%@xkTo5ΉB93RNyR Rs4ljB9FXmxkTkcT/RqT5ΉB9MY3xs_A(TRD4WST+@IT@H¢YxxR@# H?@BITB3@*~@H"@¢iT@EF@Ry# RR@IT@D#*`(5@"@ۢ T@@IT@EF@RPAƪH#@R@3@ !Z CH-YY@yH GTyS)4Yw?ҩ*@;RRRJ J ؚJI'[9H'@W;[@W@yTt"B9kATA4HIT>@L@!AIT@ T  ˎijxM%@x kTkk@JU?J "IT@ T  ˎijxM%@x kATkkJ@95v5B@ITB@@@A#*6RB9!%@@IG@3@B9_9*@sJJ ؚ_A3T[[@9W;@T@ 5v5@IT@@@%*ɶqS@)RR"a'q RhR"'H G@3@*@?8RRJ J K @JX9X@W;?[Ykxa&)B9 kA T)A 4-H)_IT)<@.AIT@_ T  miix,%@x kTJj)@I*U_I , IT,@_T  miix,%@x kATJj(@(@#`IT# @C $@AyC#/aCC#@#/H@9RC@@@qR"!(^H G_9@3@*@sJ J ך_A3TXX@9W;@X5qV@)RR"(H(B@IT@yAH@ @ !@? T@ @?IT@C @)@@yB*%"@ ?@3@ R ̚H GE@!)-A4'H/IT/<@AIT@AT˦iox%@xkTn-@ M_'U& IT&@T˦inx%@xkTgT@EbH G@3@)A)TEJ#@I)ZK cTYyYAS@)T@yHG*@?RJ J ۚ X V&ɊB9 kTA5ɮ@iʮU?I "IȚ@_!T  miix,%@x kaTJj@@biT@ BAyaC#@#/X#/˻ÖB9*H@ @ !@? T@ @?IT@C @-*HG@3@*@J J ۚ_A7(TV@X @kCT{C>T+@WS@?T(I#@(%T*T!@A@R?R! kT=A? EF@R^9ըR7s/+@kDcC[BSA{ƨ#_#S[ck#{AR8Ru 4qT@ "@@y5@Yv>~5@bIT@EF@R%.Bq(T@6J@IT>@EF@RA2"@yqT@yR  )=S?qNzTRШ@*bIT@*4@bIT@@y*b6ݴ"@ykcT@@@*bIT@A7ʴ&@@a@(QqiTEF@RƧ=*<)a99? q"9@R(F*jjYz @ @? T@ A@?IT5@:(FZ*j_A:HT@))C _ @ @? T@ A@?IT5@a:z@);a@ qA;"9n(FR*jYwA;A@c(F*j_A7T))C _A@A<SqhT TeqhT*I8* @a.+a(%"!a! Q?%q(TJHI8H !  !>_#{(@yqHTTQqTTqT=qTAq@TMqT!ҏ{#_aaUq TYq`T]qTbB Q_%qT(I8( aaB! !  B! "R R4l@ MR*1H@yIqhT%7H@H7 jTH!@yqT)?k#T R_ @#S[ck{h&@R))C Yw @@T@IT@74FR))CYvh@h @d@@ITc@@IT@A8F*T@T@!c9h&@*T{kCcB[ASĨ#_ @yqT@h7R R_@yIR  )=S?qYzTڟR =SqRHT R_#{H@yR  )=S?q TMqTS4 R  S4I@HR?jR{#_#S {`@y 4 RA?@5uy`.@x`5{ @S¨#_#S[{@yH4vT@y A?`4@y Rhy@ys H5y{@[ASè#_#{E*@@ Sh4@@d94d95Sh5(RR5ȁ+E@!=I@?IT=@#C{Ũ#_#{)|@RO+@yS Rq T Teqh TY  RkiScgRiSi * $qRiSM RkiScUX RkiSc1T RkiScP RkiScEL RkiSc%H RkiScaD RkiSc@ RkiSc< RkiScQ8RiS  RkiSc)0 RkiSc5, RkiSce( RkiSc9$ RkiSc] q`TqTqTq Tq`T R RkiSc- RkiScA  RkiSc  RkiSc! RkiSc 4(@$ @y r b *{A#_48 0,<*#S[c{ubA˟Th ?ITh@Rj482 HT)@? T HXhTX?1yZ?Tv@˵R͵j98Rµj98w{@cB[ASĨ#_/>ʡA~ơA|?A| A|#S[{0 jV@ ?bTVT҈@T@Ӡ^xTvTh @ ?T4˵4Tu{è@[ASè#_#S[c{V@ Ҩ ʚ? bT8, T?ғA_lsT^_ ٚ}]>TT @  ʚ?T( B??hC {è@cB[ASĨ#_#S[{hf95b @s@2@T&@ ߒy"@T@ Ryhf94{@[ASè#_#S[c{10 @@ e95 @y*R A@y kT @;;@ e94=d9=5 @y@@y?kcTR)@HX T Ҷա@yOҠchByhp<B@AOh"&yp<BAA&ByuVu 2y=>Nf(R"9{ŨcB[ASè#_>vb'vb'v#S[c{0 @v@d95%RRS4@33@d9h4hd95bCS4@ TҴxͫO 3y@5(R"9{ĨcB[ASè#_ӷ>#S{O0Op="yOp ="By)yi4 -x5Ayi4 -x5A` {¨S#_#S {@h2@T`&@&yh"@T`@Ry@` { @S¨#_#{@]B?{#_#S{h@T`@RByh@T`@Ry{S#_#S[c{@7(!RSҗRHT*@RrB*?ր7B6sB6S *}S{cB[ASè#_#S[ck#{h&@ R)) ؚRi 9"(@yqVzT(@65(0#**!2h&@*J ؚ_A7T4)) ؚRRI:a=)9A4;"@yqVzAT@ 6@aIT @!@y*!H@IaITI @YqFaIT @CaITC @**3*a4h&@)) ؚ?A6T*{#@kCcB[ASŨ#_#S[{&@R))Ci7Ys®&@s*T(A&@(CQu7~}7@#bjhQs"56@A@R?R! kT=A?R{@[ASè#_#{S[c#00q9(a(&@R))C)68 Ys(QD95(5@#AIT#)@(u@"AIT"i@j74@ #YsA6 ( #(@)#(@@ Ys(u@"AIT"i@Q (@T @Þ&@s*cT(ҠR#@cC[BSA{Ũ#_#S[{((&@R))Ci7Ys"&@s*T("(a#R{@[ASè#_#{S[ck+h)s/C0C9F__D9E@ RK@2RGv@BITj@iyi4 -x5AQIR4*j&@x_qTx?T)! A B@##A#AiG8IkTS@TɆV B@#S@6@BIT*@A @BIT @A2CR(;bZwaBCT('beYR7Tb@' T@RA??# kaTh?A?V @(aY@BIH@94R@*AC gB A#B/*34@@H@}՝*E D#B2~*5((ҀB!V @H@9H24(B2C(ҀS@8T@"3(A%B .7Tb@('(!)B "()BҀ(*B _cvfF!Hg_iBR@?@7A@"3@@eBR?S@HgaBRR@(`BhZ@bbITbN@(`(S`ʱh"@("B`ñR{A#_#S[ck#{a.תA 4R 4@ "@bIT@J#FH@ e9i5@y A@y kbT @@ e9 4hf95@yhB@y?kBT ac/#R@ Rb"rHR#h2@ITb&@!.AQkT@AR?R! kT=A?Ak#T/bY@A@R?R! kT=A?R{#@kCcB[ASŨ#_#S[ck#{!-_Ah4R(4@ Ҵ"@bIT@J#FH@ e9i5@y A@y kbT @@ e9 4hf95@yhB@y?kBT R‚@ RbrHR#h"@ITb@!.'AQkTBaAkT-B@A@R?R! kT=A?R{#@kCcB[ASŨ#_#S[ck#{(A"Ű&@R))CiYtA)&@*˟T(ةAr ( 4Rr 4@"@cIT@J#FH@ e9i5 @y A@y kbT @@ e9 4hf95 @yhB@y?kBT (ACR‚@ Rb"rHR#h2@ITb&@.AQkT@AR?R! kT=A?Ak#TAr@A R?R! kT=A?aBJ‚,Rh@R(4@a")@y?q$Vz T(@#`IT# @?=qT(@h7RRNC@QkTB@skT@-B4a;bR44*;+kCTAR{è#@kCcB[ASŨ#_#{(@6( @y I@ % (@"a5IT" @IT" @A" @y_q)T q! ҃5!įR{#_#S[ck#{(ըA 4R4kgS@ "@bIT@J#FH@ e9i5@y A@y kbT @@ e9 4hf95@yhB@y?kBT Ba|R‚@ RbrHR#h"@ITb@!.AkTkAgBSC-B]2"XBF@5{Ĩ#@kCcB[ASŨ#_#S[ck#{h&@?*ˈ&@( ך T(3B '&@B( ך(4J(6B(8@@T@a)7&@( ך(8/gRu@@*7@T@7@ T@RHA??# kaTh?A?֢F@:s(gA?ޮ(:!)Ӯ@@Tb@a)&@( ך(A?RR{¨#@kCcB[ASŨ#_#{S[D (0@(4@*@T*(@ h@h@tbTt@hB9_kV@CiNAygB9fB9eB9 dBAy ܭH5( @[BSA{Ĩ#_#S[c{(#^@T@bIT@@5bb @hb TBҡKh@ITa@5sb(b=2"8(A\@b@BT)@IT@5bb-(R{cB[ASè#_#S[ck#{( +AH 4R 4@ "@bIT@J#FH@ e9i5@y A@y kbT @@ e9 4hf95@yhB@y?kBT @AR?R! kT=A?֢ac/ͭ#R@ Rb"rHR#h2@ITb&@!.AkT/bR{#@kCcB[ASŨ#_#S[ck#{0@4@@T(@!)'@R))C Yv!)'@*T @( A 5@A R?R! kT=A?ֹrZRrR 4*@W#@bIT@ !FH@ e9i5@y A@y kbT @@ e9 4hf95@yhB@y?kBT @AR?" kT=A?A-CR:@ Rb"rHR#h2@ITb&@!.DAZ_kTArB@A R?" kT=A?aB()($(AR(@R47Ш@j"I@y?q$Vz TH@CaITC @?=qTH@h7RR BϬ@Ca"J(@skT@-B4a;bR64*;ݥkCTAR{Ĩ#@kCcB[ASŨ#_#{S[ck+,H{@0B P#_H*( R0y@h&@?*˨&@( ٚ_`TR(.B(A0p@@T@!)&@?( ٚ0bVcR[s@c@*@T@ T@RA?" kaTh?A?h@ITb@!2gs([@Vc@?2E@C @* 5&@)) ٚiVcT @*S@i@~@*yx"HE9(5H E95(aB95h@A#@c @94"@  ٚh@ @IT@B@&Ch@ @IT@@~@">5&@)) ٚ?A6TVc@*O y_P=i4 -x5A@F (@3H?@IH3@H?@IH3@ H?@T@3@c_y_#@cإ*S+@kDcC[BSA{ƨ#_*a#{S[ck+6 &@?)) ךR @*YuIE9)5I E9 5")aB9 5"2@6@BT*@ h@h@xbTx@hB9_@lV@iNAygB9fB9eB9c dBAy & 5A$d&d Cw C!) DH'@R))C*Ywa) cH'@*T?@)e Q@!+@ J&@)) ך?A5T@= eR +@kDcC[BSA{ƨ#_#{S[A09Ry" .@T"@Ӊ@߂yNT@y"l .@T"@l@N߂yT@cRy"Q .@T"@Q@N߂yT@HRy"4 .@T"@4@N߂yT@+B(Ry" .@T"@@N߂yT@BRy" .@T"@@N߂yT@AHRy" .@T"@ߓ@N߂yT@֓sRy" .@T"@Ó@N߂yT@Ӻ2VRy" .@T"@Ӧ@N߂yT@ӝa2!9hRy" .@T"@Ӊ@N߂yT@ӀAARy"m .@T"@m@N߂yT@dbb(Ry"Q .@T"@Q@N߂yT@HbbRy"6 .@T"@6@N߂yT@-#[BSA{è#_#{(@7(@yYq(@T#`T# @"`<"`IT" @> b@*h@h{A#_#S{`@y4hA?<Sc oR R{S#_#S[ck#{ARRH4xb@ "h@ucITu@@" @7!@yq(THR?jT !Fh@ e9j5j@y A@y kbT @@ e9 4(e95j@y(A@y_kBT ? Th:@ R{bIT{.@@R)Axbk#T*{#@kCcB[ASŨ#_h:@tbITt.@@R  R@IT@@R #S[ck{h&@R))CYu QD95 q@ u@?ATi@#AITi@@yhA?4yz@y(A?@4@y@y kT.@x HA?ր5@yhA?`5@yhA?5h&@*˿TR{kCcB[ASĨ#_h@ Yu(u@5AIT5i@:@bIT.@@RA% @A?IT @:@bIT.@@R# R<S Q?QqTHI8H ?<!963A 0 -!*a!'!$!"!""A##$a$$ a% %!&&_־<S Q?uq T HI8H A'W'T(QA(N(K!)H)E*B*?*<A+9+6,3a,0,-!-*-'%$!&!.A...A//A0 0 !1a11_֦#{S[, RēA;ۓ Ru @9t@y\>**ғh@aRp RN(œ RH(!a@OC =*5R@[BSA{Ĩ#_*EF@R)**#S[c{w@h @95`@y` @y R 2h@y(6 Rt2@y4*xh 6h2@yO@C=%*5 R@5dh@y(6 Rv6@yA6*[h6h6@yO@C=%*5 RВ@7Gh @95h.@qTn@O= @(4q`TR\ @?kaT @C3@ 5@?kHT"qSQS4 R @7 a83h  qATn@O=@?kT @C5 @c R8h@yR4h @OC"=#R5CUh@ykT9 RnR{Ũ@cB[ASĨ#_*EF@R_*Ւ*BMAPVMAPQUER#{S_bRe RD:h@R4h@OC" = 5 h@kT R':R@_BSA{Ĩ#_*EF@R**#{S[ck+h 0Pc^D9_7_R_g@U?___Q#?~________@/*4 qa1T@+R F+@kDcC[BSA{ƨ#_H@R @A(AXW;T9SH@k"Tu5T;@I@ ?8R7R(%@R)) ˚I@y ?l"AAy kTm" @9RB9 kTs?A3TRO@P PW=GGA4R*@cSh'4OKA4R*@cSh&4NOA4R*@cSh%4MSA4R *@cSh$4QS,@),4k#TuS@cS#4PO=HCAI@P =H35_;A'[o5_#(A/H#n5_'(A.H'm5_+(A-H+L[5_3!A!A3H_Ah5_7(A(H7 4OBC@P7=@4EF@RB:C@B@@o@a44EF@R@y)H@9E*q((A@LW4 @9@R@yEFH@9q((A**FOB@PCP+=P[*5H@E@ @?h&AkT?F@h&AkT?g&RE4NO@FSO8CA@PPG=*5@ Ҋ HAyI@y k! TX@ yi4 -x5 IBKaITK @?T j ijx %@x kT)ikTS@F@H@ @?i&(AkT(Ak`T @9@R@yEFH@9q((ADEF @9@R@yH@9F**qAo @9@R@yEFH@9q s @9@R@yEFxH@9qH@ @?h&A4 @9@R@yEFdH@9qAF**ӐREF@RRD?@*!ǐ @*k#{h!Oha" !p#{CC>#{~`~~~~~2`{A#_#{!@RSh5R =@! A!H%@)(}`H @A @{#_#{5RRSh4=@ A!j@_qTH  @?A(*THAhyhx5hR{#_#{@ kT%A) khTi4?kT( @uSS4Sh4IR _kDIzTR2S4)Ri,=@ A!, h (Rh9@y06@y@y(=3Rh( @yhy @yi5  @y*@ kTJK? khT) @% h@yb rh 9@yh0y@yh4y@=R{#_ QUERVMAPBMAP#S{`҈.5=Rp@ -A!@ kA*T @k)T  `uSS(4o<h@h(a_R`S'4h>@)A!@ k&T @()?kh&T(qS KuS1`Sh%4o h @$a_R`S($4h>@&A!@ ka#T @k#T  `uSS"4o h@!a_R`yS 4h>@I#A!@ k T @ kTmS1`jS4oh@ha_R``S4h>@I A!@ kT @?khT( `mSAOS4oh@a_R`ESH4h>@)A!@ kT @ k(TmS1`6Sh4oh@a_R`,S(4h>@)A!@ kaT @ kT uS`SH4oh"@a_R`S4h>@)A!@ kAT @?kT( `qS1S4o"h&@ha_R`S4h>@ A!@ kT @ kT uS`S4o&kh*@Ha_R`S 4h>@ A!@ k T @k2?kH T(mS`S 4o*Qh@ a_R`SH 4h>@ A!@ k T @H ?k T( `qS1S(4o6h.@a_R`S4h>@ A!@ k!T @kTqS1`S4o.h2@a_R`S4h>@A!@ kT @kTqS1`S4o2kIT @kTR{S#_֠RHc4Ni TUULEVLTASKH$ OPCOKEYWEVNTTUUCHANMAPSTTBLfffQTABFLTREVTF EVTAPRVA#S[{h@`@h]@?`@h@th`@uha@?u`@thU@?`@hU@?u"@v5hA@?hi@R?"~{[AS¨#_#S {h@?&hQ@R?3h@?**@hM@?ր@@hm@?ր`4@h@?րR{ @S¨#_#S{h@h@a R25`4*#k@AqTj@ jH@ k!TI @(=A@qiTtWR?kbTTWRH@ khTI @)}@?T? khTRRS*R{S#_ CRIM#{he@RdR"RR?`Th@?h=@RRBR?``h9@RRR?`@`@hE@?`1@TR{A#_#S[c{{ 5i@h@A)CTARy@(@kTx@VTPThT@B?kTh@?kTG5C4h RiB(@kTR!@=*t4 R}R@*{è@@cB[ASĨ#_ @@IK? k#T+ kTH@ kR_#{ @? CT@@(A(?T! KSR{#_#{(@  kAT(@(@(TT@ @?kT"qSSh4RR{#_WEVT#S[{ h1@RR?֓@Ti @?Ts@aTh-@?5h!@?**{@[ASè#_h@6R5RQhH5j@H@Ti@(@!T*I` @h!@?hA@*?hi@R?`R`>#S[{ h1@?֓@TvȒ@$R`r?q Ts@Tyi4 -x5AhA@?hI@rR?Rh@hs @2h@ R?h@?*h-@?6hA@?hi@R?h5@*?Ar6(R @H@ `T`R`>Ԉ*Vh-@?{@[ASè#_#{@T$*{#_#S[c{0c|@**5c  Rc Rc c+ ##  Rsyc )9RC9@K@@@?֢+@_k)TC@T$ h%@9h4@܇@R>@~~~$iC@T$ʇ h%@9h4@‡R$`@ P  ՠC@T$ h%@94@ R5 R@{ͨ@cB[ASĨ#_@_ @_ #{@T${#_#S{*@_9qT(Yi( {ĨS#_!@%R7!R\RC9`@"RC -!@s!@)yi4 -x5A!@y!@!@>!@)yi4 -x5A(@VjR@}S'y4h@ @(Ij82(I*8hA95i"C?Ti@(R(8`@"RC@hRRC9 `@BRK 44C9(@=S}S{ @?T(@H6(e@9 qT @УR$Rd~RRc !c J"D#S{*jN@*5i"C?T _h@ @(Ij82(I*8`@@hJ@ h@ @(Ij82(I*8`@"RC@hNRC99 s@ @@?R"+ @y@yS& ha=BR! {ĨS#_֨ @?T(@H6(e@9 qT @УR$RORRc !cw>#S {jR@V4h@ @(Ij82(I*8hA95i"C?T(R(8`@"RC@hRRC9 BRt@S @yS {¨ @S¨#_#{'yjR@V4h@ @(Ij82(I*8hA95i"C?T(R(8`@"RC@hRRC9 `@BRK {¨A#_#S {4S 9C9*hN@(4`@aJ@@KQ@& `@RS `@* Jt4 `@"RC {¨ @S¨#_#S {k*C ThA9)RqhR) _4 I!ik(TaR@A4hV@4 `T(_85`@ kV@1Th@R @HIk8 HI+8*`@*@K Q@ `@RCM `@* {Ĩ @S¨#_ֈ @?T(@H6(e@9 qT @R$aR#ARRc !c @?T(@H6(e@9 qT @R$AR @RRc !c>#{C9`@"RC i@ @!@@@|?{¨A#_#S{jR@V4h@ @(Ij82(I*8hA95i"C?T(R(8`@"RC@hR(RC9 s@ @@Q?R" @y@yS Ha=BR {¨S#_#S[c{4RhA9t95`@R"RC9C `@"R% `@"R% `@"RKK9 t9`@@h&C T _8h4(RRs9$"R hA94`@RBR'yK `@@ `@ @a@@?t@R"r @y@ySm Ha=BRh iC? T@(h@!h{Ũ@cB[ASĨ#_i@cc H CIB(} ! 1_2HHT$}څ Ta"C}`"CCT$`tfu"i*CH BT7@H @?T(@H6(e@9 qT @R$RLRR !>#S{hA9*H5i"C? T _?kHTh@@ A)(@9qT( @9qAT"xjR@'yV4h@ @(Ij82(I*8hA95i"C?T(R(8`@"RC@hRRC9 `@BRK 4`@"RCC9 {ĨS#_ֈ @?T(@H6(e@9 qT @R$!Rc#S {@hR"RC9C @BRS @yS {¨ @S¨#_#S{hA95`@R"RC9Co `@"R%j `@"R%e `@"RGG9` (Rh9`@HR"RK9KX s@ @@ʥ?R"J @y@ySE Ha=BR@ {¨S#_#S[c{0 N:0 c#@ҩ'# $[PN*'=`TCHa=K9RRVR(R9# S# jQ_9qT F(Y( ֠csc8RJ@qmT!RRAiC9C@"RaG9GcTc}cKcV5"C?TA95@_8h5 X T %@xqhTK%˚K7A9h5K@9)R? T(@yqT,  R RTRR @y =SqFzT  T BT @yQ(qT2QiqBT)SAqT_ k 痟 k $J *KS* #T?T;4;=;;=1 R RTRR @y =SqGzT  T "T @yQ)qTN _ k㗟  _kn$ *kS CTO T#K#4K= K=_A@q=T[=[=S>4 @? T(@6(e@9 qT @,*Y cc) ը@9h5@>qAT;@T${ͨ@@cB[ASĨ#_ &#S[ck#{zSR6RTbˀby_T,xBqaT@AThT(@yq T?@zmTi?IT >hˁ "!( R RTR R@y =SqāLzT  T T @yqT-RLR R   T @yQ(qT' ? k嗟  ?k$ *S CT@@zT?kHT KI J + (TqT_q R) R#)jQ.@ib@_k" T(+ _i86A95HA *H2Cjhh zC [){Ũ#@kCcB[ASŨ#_ֈ @?T(@H6(e@9 qT @ R$R1R R! @?T(@H6(e@9 qT @CR$aRRAR! @?T(@H6(e@9 qT @ R$ARCR R!} @?T(@H6(e@9 qT @ R$!R#R R!e @?T(@H6(e@9 qT @ R$RR R}!M> ՙ#S { X T %@xqhTK%˚K7R i"C4R? ThA95h@_84 (RuR@C#) 4qZhV{¨ @S¨#_ &#S{jR@V4h@ @(Ij82(I*8hA95i"C?T(R(8`@"RC@hRRC92@9`@"RGG9`@{¨S#_#S{* @j87_q(T (I8( "RBRRR(@BR4@Ca@yS (@BR4@CV@!@RP{ĨS#_ֈ @?T(@H6(e@9 qT @CR$aR*RARc!c @?T(@H6(e@9 qT @R$ARRRc!c̴̲ȿ#{#<SCaRH @?{¨#_#{CEi(@RaRG9SH9SCy?H $H @?C{¨#_ @?1T?|_ @ $@_A)BT >@KA)A, E)!* _ A- R+Rh K}H * L}~imx! kiTKQiox?! k TI? kMT % RRh K}H * L}~imx! kiTKQiox?! kBTI? kMT - RKRh K}H * L}~imx! kiTKQiox?! kTI? kMT ' R Rh K}H * L}~imx! kiTKQiox?! kBTI? kMT !% RKRh K}H * L}~imx! kiTKQiox?! kTI? kMTR_ R_ A- R+Rh K}H * L}~imx! kiTKQiox?! kBTI? kMT - RKRh K}H * L}~imx! kiTKQiox?! kTI? kMTR_ R_#{@(R#@%RR(@n(@9e4)@(@A)aTR(@Yix((@yR@y_kTR?k T kFR?k TJS_ q(T) (I8( LqT?Rr%7kbT(R2qTR =Seq)ThR =SqT) X(%ȚH6(R!*#SqTR =SqTiX(%Ț(7qT(R*yS qT(%ǚh6(RR5(@( k JzHTf6( @1T(@Q( ($@($76@9)@(K(%R@9(@9@5/6{#_֣ ??C#{0@9h5@,{#_#S[{t<SHa=q5`@*h2@9h5A(Ruh29vyty{[AS¨#_#{RR R T( JeSKK %@xd C<S<S{#_#{ @?T{Ĩ#_ֈ @?T(@H6(e@9 qT @TRaRDcRTRC!C>#{$@ T( +$@xBkJh} )_ kT{Ĩ#_ֈ @?T(@H6(e@9 qT @TRRRTRC!C @?T(@H6(e@9 qT @TRRRTRC!Cy> ŝ#S {bSjQ_9qh%TI.(Y( ֈF@qAT*{Ũ @S¨#_ֈF@5(RF q%TB@CbB@feB@QB5HRCb@|@q!T@q`TCb'A(X   `T %@xqHTK%˚ 6@qT@q TCb  -x5  'A?TAA  NilxM%@x kTkk J l-x5l ?TAA  NilxM%@x kTkk J! l-x5l ?TAA,  NilxM%@x kTkk JA l-x5l ?TAA  NilxM%@x kTkkn J l-x5k ?TiAkAk LihxK%@x kT)i[@ qA TW @?T(@H6(e@9 qT @TRR"CRTRh! @?T(@H6(e@9 qT @TRaR RTRh! @?T(@H6(e@9 qT @TRR RTRh!n @?T(@H6(e@9 qT @TRR#RTRh!V @?T(@H6(e@9 qT @TRRRTRnh!> @?T(@H6(e@9 qT @TR!RcRTRVh!& @?T(@H6(e@9 qT @TRARRTR>h! @?T(@H6(e@9 qT @TRRzRTR&h!/&:61OK &#S[c{H ) *$@xBJJH} i@? T(h@h{Ĩ@cB[ASĨ#_i@CC H BIB(} ! 1_2HHT$~}  Ta"@~`"@B T$`|uft i*@H BT7@H @?T(@H6(e@9 qT @RARcRRch!c|>ŝBS ) @9 LS+Dhi8y( @i8y)@9(Di8y( @i8 y)@9(Di8y( @i8y)@9(Di8y( @i8yR y+@9iD)i8 $yi @)i8 (y+@9iD)i8 ,yi @)i84y 0y+@9iD)i8 8yi @)i8 <y+@9iD)i8 @yi @)i8Hy Dy+ @9iD)i8 Lyi @)i8 Py+$@9iD)i8 Tyi @)i8\y Xy)(@9(Di8`y( @i8dy),@9(Di8hy( @i8ly)0@9(Di8py( @i8ty)4@9(Di8xy( @i8|y)8@9(Di8y( @i8y)<@9(Di8y( @i8yL4y_#{H%Rh~(R hb9z{A#_#{H%`@9h4@{{#_#S{H%*hhb@9h4`@{6{{S#_#S{h@* ?k#T@*`"{ĨS#_ֈ @?T(@H6(e@9 qT @RaRcRRCh!C~> @@A)_@_   #S{* @kT{S#_>#S {i@? kTR?kT)yS?k( b@a@Ohb@9h4`@i{(Ruhb9t{Ĩ @S¨#_ֈ @?T(@H6(e@9 qT @RRRRChh!C8~>#S {h@T|@ ?kTi@h@A)h@ h{Ĩ @S¨#_ֈ @?T(@H6(e@9 qT @RAR# RRC2h!C~>#S{a~ `@@ @?*`@@@?t`{S#_#S{h@*kTkTt{S#_`@a@@@ל?`@*@@М?`@@ @ʜ?*`@@@Ü?t``@@ @?h@khT`>#S {`@a@*@@?`@*@@?`@@ @?*`@@@?t``@@ @?h@kT`{ @S¨#_>#S{j@T|@R_HzTi"B) KkT@A)Sh@ h*{S#_#{S[NHaB*RR0R ? *kT)HmBR#R3 ?*7@HA@?HI@R?t )@HaBRR ?*7a@HqBRR?*s7@HqBR*?*S7@HYBRR?q@H]B?4HA@?Hi@R?`2 7 =R=@9  R(*9@[BSA{Ĩ#_ #| ) _#{@HA?{#_#{@ R*IzHT A) K?kT( {#_>#S{j@T|@R_HzTi"A) KkhTAA)h @ h {S#_>#{ @?T(@H6(e@9 qT @RARRRCh!Cz|>P=1= >N,>N f !(*fN iix*%@x kTh TR  k(R%Zh6iT(RR9S_* @_IT,@.@J,@ T `T . ˉijxH%@x'Qhq-QQ-!iq Q!kTkAT RR_(  jibxI$@x_ kTh?TR _ k(R%Zh6iT RR_#{S[c0yFb&4h@H*A CO @ Cj@$Rb&@#R = @ ? @=T @yClR([A !!%@HS5<@ !%HS4=>NfnS5@94@95HnjcC[BSA{Ĩ#_=@m\#{ * H ɚ"A = >N !+fhlx%@xkTkkTRk-R%Zm6T-R86 ˨ѠT T=>NT( f)+ibxJ$@x kTh{è#_CދCSq(@x>#S[ck#{?NSh4(CQWAA&2HS4R!U@A&"HS4W(Rh9%YSH5{¨#@kCcB[ASŨ#_#S[ck#{MS(4{CQWA!&GS4@9'@UacGS4B_S(RH9XSh5{¨#@kCcB[ASŨ#_#S { @!ډ@IT@*j`}k@9 lDӈi8Hyh @i8Hyk @9hDi8H yh @i8H yk@9hDi8Hyh @i8Hyk@9hDi8Hyh @i8HyRH!yl@9Dki8K%y @ki8K)yl@9Dki8K-y @ki8H5yK1yl@9Dki8K9y @ki8K=yl@9Dki8KAy @ki8HIyKEyl"@9Dki8KMy @ki8KQyl&@9Dki8KUy @ki8H]yKYyk*@9hDi8Hayh @i8Heyk.@9hDi8Hiyh @i8Hmyk2@9hDi8Hqyh @i8Huyk6@9hDi8Hyyh @i8H}yk:@9hDi8Hyh @i8Hyk>@9hDi8Hyh @i8Hy_yR{ @S¨#_#S[ck{vbA˟Th ?ITs@w.j482 HT@? T HXhTX?11xwV?Tw@ j58wj58yR{kCcB[ASĨ#_m>#S[{@ @TTA?iT(Aw2v~ wҨV Ɗ@T@sh{@[ASè#_>#S {@T҈@T^ӲvbџyYTXӧvџV9xAT{ @S¨#_#S {u@)vT{ @S¨#_#S {u@)IxvT{ @S¨#_#S {u@/+2bvT{ @S¨#_#S {u@+LvT{ @S¨#_#S[{Tu@+)@T@0vZy+vT{[AS¨#_#S {u@y+vT{ @S¨#_#S {u@+uT{ @S¨#_#S {u@M+uT{ @S¨#_#S[{@Tu@@T@uZyu!T{[AS¨#_#S{(s"T{S#_#S {u@S,uT{ @S¨#_@*@ a 0@<*` A<O<QA@1AO)??0y<1A@)`qAO a??py<1A@)qAO ??y<1A@qA !??y)`B9 a90(=)=)@ 0@<) A<O< 1A@)qAO ? ?y<1A@ !qAO !??y0=) 1A@ qAO??y0=)1A@  !qAO !??Py0=) 1A@ qAO ??y0=)1A@qAO??y,@?)X?  i=}1@MA ?(?@y+@?*$\?| % *A *A +@?*$^?| % @J _#S[c{0 3&@ KX  ؚ( ؚ T @' ؚhI?T (I % T}uҨ^(#_ @^O@ H@HH!P<_q@@AOH$yP<_qB@A&y"@T@Th@a""#  a Ք"s"-Th@a""# a Ք"s"3#@ T@"`"#h ` s"" ՠ@ @@ @ ؚ}mt'@H]"h {Ǩ@@cB[ASĨ#_֞~> Վ88#S[c{0m&@k X  Ԛ( Ԛ Th @ ԚhI?T  (I % T} )uҨ@Z@@IT @@(@ @j@9IT)@1 N( @ NNpNB9a"@aTh@ `@h @ Ԛ}s@HYv"hh {Ĩ@@cB[ASĨ#_*?~> UUUUUUU#S[c{0m&@k X  Ԛ( Ԛ Th @ ԚhI?T  (I % T} tҨ@Z@@IT @@(@ @j@yIT)@1 N( @ NNpNBRya"@aTwh@r `@h @ Ԛ}s@HYv"hh {Ĩ@@cB[ASĨ#_ֶ}> UUUUUUU#S[c{0m&@+ X  Ԛ( Ԛ Th @ ԚhI?T  (I % T} AtҨ@V@@IT @@(@ @j@IT)@1 N( @ NNpNB*a"@aTh@ `@h @ Ԛ}s@HUu"hh {Ĩ@@cB[ASĨ#_CX}>UUUUUUU#S[c{0+m&@ ҧX(  ՚( ՚ `Th @' ՚hI?T# (I %? h T }sҿ [@^ @9#J @ ( @IT+@@@* @@IT@@.@ @@IT%@@n@& @g@9ITo@ Nn @ N#@NNB Np NQNPNA"9 )R9a"@aTuh@bp `@h @ ՚}r'@H]w"@h {ƨ@@cB[ASĨ#_ֳ|>Ժ袋.#S[c{0m&@  F( F Th @ FhI?T (I % TzӨAsҨ q=O=">N~!fOҷ  =~C@B#y`@Ta@  `@a@`@h @zr@ u"(h {Ĩ@@cB[ASĨ#_DY|>#S[c{0l&@  B( B Th @w BHI?T `x (I% T~Ө rҨ(@ a"@aT˭h@˨ `@h @~q t"h {è@cB[ASĨ#_|>#S[c{0l&@  D( D Th @w DHI?T  (I% (T|Ө rҨ(@9"9a"@aTVh@BQ `@h @|eqt"h {è@@cB[ASĨ#_֗{>#S[c{0&@  E( E T @ EhI?T (I %  T`{ӳ*rҳ O=|p=>Nf߀.@  T T aO0=?}A@1A_Lx T T aO0=?}A@1A_KxT@  T aO=??C@A/x T{Ĩ@@cB[ASĨ#_.{>#S[c{0m&@+ X  Ԛ( Ԛ Th @ ԚhI?T  (I % T} qҨ@V1=h@yP=FBya"@aTzh@u `@h @ Ԛ}p@HUu"h {Ĩ@@cB[ASĨ#_ֹz>fffffff#S[c{0 m&@k X  Ԛ( Ԛ Th @ ԚhI?T  (I % T} EqҨ@Zq=IT @ B @P=h@=P Nb0NEa"@aTh@  `@h @ Ԛ}p@HYv"(h {Ĩ@@cB[ASĨ#_Mbz>Ԓ$I$I#S[c{0m&@ X  Ԛ( Ԛ Th @ ԚhI?T  (I % T} pҨ(@yVp="y=a"@aT˯h@b˪ `@h @ Ԛ}o@HUu"h {è@@cB[ASĨ#_z> ժ #S[c{0l&@  C( C Th @w CHI?T (I% T}Ө }pҿ "(@?z;h&@ !T @K T @*Ti@"@  Tu@5{@@"LoT`@h @}Eot"h {Ĩ@@cB[ASĨ#_wy>#S[c{0l&@  C( C Th @w CHI?T (I% T}Ө  pҿ "(@?z;h&@ !T @K T @*Ti@"@  Tu@5{@@]"InT`@h @}nt"h {Ĩ@@cB[ASĨ#_y>#S[c{0l&@  C( C Th @w CHI?T (I% T}Ө oҿ "(@?z;h&@ !T @K T @*Ti@"@  Tu@5{@@1#2dnT`@h @}]nt"h {Ĩ@@cB[ASĨ#_֏x>#S[c{0l&@  C( C Th @w CHI?T (I% T}Ө !oҿ "(@?z;h&@ !T @K T @*Ti@"@  Tu@5{@@'#mT`@h @}mt"h {Ĩ@@cB[ASĨ#_0x>#S[c{0l&@  C( C @ Th @x CHI?T (I% h T}Ө nҿ "h@z9h&@ !T @K T @*Ti@"@  Tu@y@TҶ@p @T@umnypmT@`@h @}hmt"h {Ĩ@@cB[ASĨ#_֚w>#S[c{0l&@  C( C Th @w CHI?T (I% T}Ө +nҿ "(@?z;h&@ !T @K T @*Ti@"@  Tu@5{@@_"lT`@h @}lt"h {Ĩ@@cB[ASĨ#_%:w>#S[c{0l&@  C( C Th @w CHI?T (I% T}Ө mҿ "(@?z;h&@ !T @K T @*Ti@"@  Tu@5{@@C"lT`@h @}lt"h {Ĩ@@cB[ASĨ#_ֱv>#S[c{0l&@  C( C Th @w CHI?T (I% T}Ө Cmҿ "(@?z;h&@ !T @K T @*Ti@"@  Tu@5{@@w!lT`@h @} lt"h {Ĩ@@cB[ASĨ#_=Rv>#S[c{0l&@  C( C Th @x CHI?T (I% ( T}Ө lҿ "h@z9h&@ !T @K T @*Ti@"@  Tu@y@TҶ@@T@әknyk!T@`@h @}kt"h {Ĩ@@cB[ASĨ#_־u>#S[c{0l&@  C( C Th @w CHI?T (I% H T}Ө Olҿ "h@z9h&@ !T @K T @*Ti@"@  Tu@y@k"T`@h @}kt"h {Ĩ@@cB[ASĨ#_Mbu>#S[c{0l&@  C( C Th @w CHI?T (I% T}Ө kҿ "(@?z;h&@ !T @K T @*Ti@"@  Tu@5{@@_!jT`@h @}jt"h {Ĩ@@cB[ASĨ#_لt>#S { b @s@҆jhf94{ @S¨#_#S { b @s@njhf94{ @S¨#_#S { b @s@Vjhf94{ @S¨#_#S[{b @s@@% 8j5jhf94{@[ASè#_#S { b @s@jhf94{ @S¨#_#{@d94(@&Ae95( @|S 4@} (@TpSH 4(R})iS(4@d9H4@ e9*5 @ T@  e9m4e9_q&@ e94DS4@e94} `(R})4S 4@d94@d9(5@ T@ d9)4@@ e94d95€Sh5@&R@  S4@@d9h4d95Sh5(RR(4HR})A9Qx]9==@e9h4}(R}A9Qx]9{è#_H @Cm T C(!A9 xl|K!A9kbT x, xli`H!A9+!A9kBTi x, @+!A9H!A9kbT x, . )@@+!A9H!A9kbT*)xl*@+!A9H!A9kBT*x,)@+!A9H!A9kbT*H N @ @-!A9K!A9 kbT  @I@M!A9+!A9 kBTJ @+!A9M!A9 kbT  xl*@-!A9K!A9 kbT) x, @*@+!A9M!A9 k"T ) xl-!A9h!A9kBT+ x,,@(!A9!A9kbT) ,@K@!A9m!A9kBTL+ @m!A9!A9kbT, _H @Cm T C(@ xl|K@bT x, xli`H@+@BTi x, @+@H@bT x, . )@@+@H@bT*)xl*@+@H@BT*x,)@+@H@bT*H N @ @-@K@ bT  @I@M@+@ BTJ @+@M@ bT  xl*@-@K@ bT) x, @*@+@M@ "T ) xl-@h@BT+ x,,@(@@bT) ,@K@@m@BTL+ @m@@bT, _H @Cm T C(@9 xl|K@9kbT x, xli`H@9+@9kBTi x, @+@9H@9kbT x, . )@@+@9H@9kbT*)xl*@+@9H@9kBT*x,)@+@9H@9kbT*H N @ @-@9K@9 kbT  @I@M@9+@9 kBTJ @+@9M@9 kbT  xl*@-@9K@9 kbT) x, @*@+@9M@9 k"T ) xl-@9h@9kBT+ x,,@(@9@9kbT) ,@K@@9m@9kBTL+ @m@9@9kbT, _H @Cm T C(Q@y xl|KQ@ykbT x, xli`HQ@y+Q@ykBTi x, @+Q@yHQ@ykbT x, . )@@+Q@yHQ@ykbT*)xl*@+Q@yHQ@ykBT*x,)@+Q@yHQ@ykbT*H N @ @-Q@yKQ@y kbT  @I@MQ@y+Q@y kBTJ @+Q@yMQ@y kbT  xl*@-Q@yKQ@y kbT) x, @*@+Q@yMQ@y k"T ) xl-Q@yhQ@ykBT+ x,,@(Q@yQ@ykbT) ,@K@Q@ymQ@ykBTL+ @mQ@yQ@ykbT, _#S[c{04#) @@8@S(T h˿ T)hIJ?T(I !9hҳˢ {VaT@ @ {@{  @( @g@ 4#( {Ũ@@cB[ASĨ#_˿BTzbˈz zzz +>#{@ @P1|S(4A@)@AA3==A@AAAA==)@@)3@AAA==) @@31|S4@@(@@A3==A@@AA@==)@@(3@AAA==) @@1|S(4A@AAAA==)@@)3@AAA==){Ǩ#_#{S4A@@@@A@@@@SH4@@@A@@@@@AS(4@@A@@@@{Ĩ#_#{S4A@ ==@@A= =@@==SH4@@==A@@ ==@A= =S(4@@A= =@@=={Ĩ#_#{S(4== @=@ =S4==@= @= wS4==@ ={#_#S{3y`{S#_#S[c{ h ԚubA ԚmTC`  @z%0|S5Œz@ 0|S5`џT  @@0|S(5 @@0|S5aT ' @@0|S(5 @@0|S5 TA@)@CAA;C==@@A@AA==(@)CA;@@CB@==(a`#TTa @@/|S(5 @@/|S5` T@@(@C@A;C==@@@@A@==(@CA(;@@CB@==(aџ`TTT T@@(@C@A;C==A@@AA@==)@CA(;@ACBA==)@@(@C@A;C==@@@@A@==(@(`aT` TA@)@CAA;C==@@A@AA==(@CA);@@CB@==(@@a(@C@A;C==A@@AA@==)@CA(;@ACBA==)k@@(@C@A;C==A@@AA@==)@CA(;@ACBA==)Q @8{ȨcB[ASè#_#S[c{҈ ՚AM ՚mTC NN N S5S5T S(5S5T S5Sh5T@@@Cq@@#@h@CA#@q@hcT TĠS5S5ѿT@@@C@@#@@CA#@@Ơ넠уTaTTT@@@C@@#@@CA#@@@@@Cq@@#@h@ƠTT@@@C@@#@@CA#@@@@Ѩ@C@@#@@CA#@@q@@h@C@@#q@@CAh#@@ @{Ũ@cB[ASĨ#_#S[c{҈ ՚AM ՚mTC NNnjeN_ *S5%S5T S(5S5T  S5Sh5T@@C==q@@@p==CAq@=p=cT TS5S5ѿT@@C==@@@==CA@==уTaTTT@@C==@@@==CA@==@@C==q@@@p==TѥT@@C==@@@==CA@==@@C==@==CA@==q@@Cp==q@=p=CA@== @{Ũ@cB[ASĨ#_#S[ck{҈ ֚bAM ֚mTCNNN` `PS5`KS5`T BS(5=S5`T2S(5-S5 Tp==@=h@q=i`c`#TT`S(5S5`џ T==@= @= `aTT`T T==@=@=p==@=h@`T`ф`ѿ T==@=@=Ќ<=@=@=Ժ袋.#S[{0@i"@  7 ԚX_ (T@}(ah@ ҿ a@t յ@`@h @ Ԛ}`Zv"Zh {è@[ASè#_bj>fffffff#S[{0@i"@  7 ԚX_ (T@}`h@ ҿ a@s յ@`@h @ Ԛ}_Zv"Zh {è@[ASè#_,j>UUUUUUU#S[{0@i"@  6D _ T@|`h@ ҿ a@s Ք@`@h @|_u"h {è[AS¨#_i>#S[{0@i"@  7 ԚX_ (T@}`h@ ҿ a@is յ@`@h @ Ԛ}{_Zv"Zh {è@[ASè#_i>Ԓ$I$I#S[{0@i"@  7 ԚX_ (T@}V`h@ ҿ a@3s յ@`@h @ Ԛ}E_Zv"Zh {è@[ASè#_֐i>Ԫ #S[{0  Ti"@ h @  HI?T (I2 `ҿRra"@r `@h @_t"h {è@[ASè#_;y>#S[{0  HTi"@ Ch @ CHI?T (IBT } _  Tҿˀ}Rra"@˩r `@h @}^t"h {è@[ASè#_xi>#S[{0  T"@ E @ EHI?T 3IT `{_  Tҿ)O)=)xI.@? T*aO=}1A@A_L?x? Tvx{Ĩ[AS¨#_֞xh>#S[c{0J X h Ti"@?  Ԛh @ ԚHI?T  (IBT } 4_  TҿVb@'_T!?Tw@y@T`@h @ Ԛ}^Vu"h {Ũ@cB[ASĨ#_BxWh> Ղ  #S[c{0*X HTi"@   ՚h @ ՚HI?T  (IBT } ^  TҿRˠO )PAPAP=PQO<Ox<Y<xTj.@_ TILEO a ,A]_ A,]x x,]x x,]x x,]x x,^x x,!^x !x,a<?A@,!AO !???x<A@aA??y)aaT& `@ a@!`@h @ ՚}y]Rt"h {ĨcB[ASè#_֮wg> պ袋.#S[c{*˿TDa*"8 T(@_!A9I!A9?k!IzT" TbT@!A9 @)!A9?k!IzT##T@ @K!A9!A9_ kTCTT @  #!#T?T*!M@@!A9k!A9 kTcT" T@K)! J!T?T TT @@ @# @ T)!"?T@+@* _@  @*_ +A  }} *Tzu}lTTu"`Th@@!A9"A9_kT`"pw2DTg*_CC p T*}A T* !(_CC @([ }?AjT" _"A9K!A9 kT*7"T{¨cB[ASè#_#S[c{*˿TDa*"8 T(@_@I@?!IT" TbT@@ @)@?!IT##T@ @K@@_ TCTT @  #!#T?T*!M@@@k@ TcT" T@K)! J!T?T TT @@ @# @ T)!"?T@+@* _@  @*_ +A  }} *Tzu}lTTu"`Th@@@@_T`"ow2DTg*_CC T*}A T* !(_CC @( }?AjT" _@K@ T*7"T{¨cB[ASè#_#S[c{*˿TDa*"58 T(@_@9I@9?k!IzT" TbT@@9 @)@9?k!IzT##T@ @K@9@9_ kTCTT @  #!#T?T*!M@@@9k@9 kTcT" T@K)! J!T?T TT @@ @# @ T)!"?T@+@* _@  @*_ +A  }} *Tzu}lTTu"`Th@@@9@9_kT`"nw2DTg*_CC T*}A T* !(_CC @( }?AjT" _@9K@9 kT*7"T{¨cB[ASè#_#S[c{*˿TDa*"8 T(@_Q@yIQ@y?k!IzT" TbT@Q@y @)Q@y?k!IzT##T@ @KQ@yQ@y_ kTCTT @  #!#T?T*!M@@Q@ykQ@y kTcT" T@K)! J!T?T TT @@ @# @ T)!"?T@+@* _@  @*_ +A  }} *Tzu}lTTu"`Th@@Q@yR@y_kT`"nw2DTg*_CC Z T*}A T* !(_CC @(E }?AjT" _R@yKQ@y kT*7"T{¨cB[ASè#_#S[ck#{a-* T ҿ T*CcAA * ٚ ٚ Ta-jT`TubTbB@*@b@CBAB;C==$|S( 4mCA;@qBCBqB=p=h*V[ٚwATNbѱB@Ѩ*@*CBA;C==T TbHٚ TB@**@CBA;C==qB@BqBABp==h*@* ٚbшa_JT[Z#|Sh4@@@@A@==(@(CA;@@CB@==(bcaT{Ȩ#@kCcB[ASŨ#_#S[ck{*T*CqgAA * ؚ ؚ TjT Tu TzѱB@@C#}S(4`lCA#@qBhDYؚ5A TNB@@*C#lT? KTHؚ TB@*@CqB@#Bh@ ؚш_CJTB@S4BQ@@@H@B5S5CA#@@֢T{ŨkCcB[ASĨ#_#S[ck{*T*CgAA * ؚ ؚ TjT Tu TzѱB@C ==S4`PlCAqB=p =CYؚ5ATN*C ==YT? KTHؚ TB@ ؚ*C ==qB@Bp = =Bш_JTBS4BQ@@@P==BѢS5CA@==T{ŨkCcB[ASĨ#_#S[ck{*T*CgAA * ؚ ؚ Ta jT Tub` TxbѰ= @=#VS4`bk=p=w BYؚ5ATN<* @=# T? +TbHؚ T=* @=p=#=h @  ؚbшa_JTS4P==H@B`S5 ==bb!T{ŨkCcB[ASĨ#_#{sk+4@ (@jO A Ti   @T.R%@xqTS/8 ATH1ڈ @y?qT )ik8I4 `T H1ڈ@y  jy?@T-x)_'kaT T  A8k{#_#{@TiBkO p=?}A@ aqBO=x0  xTr{A#_#S[{ ҂>R`jObsB<OѰ<O?x<Oy<ORy<Oy9=OB<O<O 2y<O ry<Oy<Oy=O2y=Ory^=Zy~~~{[AS¨#_#S[{5Z`6t"qT|@w @ Z|qA(h @_(Th@=ITi@j ?i*8AoR*{@[ASè#_ W#S[{0 @v@ e95@*R @ kT @33@ e94d95@@?kcTR@ TҴTW @@L0ym(R"9{Ĩ@[ASè#_ֲm>#S[c{0 @@hf95;R`rj6s @33s@hf9h4(g9(5!si7R@X `Tҵ W =@<P0yl(R"9{Ĩ@@cB[ASĨ#_em> UUUUUUU#S[{0 @v@d95%RQS4@33@d94hd95bAS4@X @TҴV =@=L0y}l(R"9{Ĩ@[ASè#_m> UUUUUUU#S[c{0 @{@T@if95;RjB@hIT >?(@"_@$R?qTs @3@3s@if94@ e9"5a@ B@(IT >?@"_$R@?qT@R@@(X T@ҶQV հ=@=P0yl(R"9{Ĩ@@cB[ASĨ#_֭l> UUUUUUU#S{-VO@9 @=O(y=O(@y=O(y 9 9<Oy< 0y\`{¨S#_#{IVOO @O O y =O `y=O y=O y$=O  y,=O `y4=O y0y||||||||||||||}}}} `{¨A#_#S{#U@9O =O y=O @y=O y=O yy<O yPy,= `y @9 y|`{¨S#_(,@ RR iT @yq`TqTqR/R IR !@y _qT 5@yq1T I@yqa1T ]@yq1T),  c0T @y+Q)qT)2)Q?q+)CT R @yIQ?)qTI2)Q?q))CT R- * 9 @y+Q)qT)2)Q?q+)CT R @yIQ?)qTI2)Q?q))CT R) *. * 9 @y+Q)qT)2)Q?q+)CT R @yIQ?)qTI2)Q?q))CT R) * 1 9@y+* Q_)qT2Qq )CT R@y(Q)qT(2Qq)CT R *  * 9h@y Q_)qT2Qq )CT Ri@y(Q)qT(2Qq)CT R *m *9@y Q_)qT2Qq )CT R@y(Q)qT(2Qq)CT R * * 9h@y Q_)qT2Qq )CT Ri@y(Q)qT(2Qq)CT R *m *9@y Q_)qT2Qq )CT R@y(Q)qT(2Qq)CT R * * 9h@y Q_)qT2Qq )CT Ri@y(Q)qT(2Qq)CT R *m * 9@y Q_)qT2Qq )CT R@y(Q)qT(2Qq)CT R *  *$9@y Q_)qT2Qq )CT R@y(Q)qT(2Qq)CT R *  *(9 @y Q_)qT2Qq )CT R @y(Q)qT(2Qq)CT R *  *,9@y Q_)qT2Qq )CT R@y(Q)qT(2Qq)CT R *  *09@y Q_)qT2Qq )CT R@y(Q)qT(2Qq)CT R *  *49!@y Q_)qT2Qq )CT R%@y(Q)qT(2Qq)CT R *  *89)@y Q_)qT2Qq )CT R-@y(Q)qT(2Qq)CT R  *aSH * <94,@y/kT) q#_#S[c{0 @v@d95%RLS4@33@d94hd95b<S4@X TҴS =@=@L0yvi(R"9{ĨcB[ASè#_j>Ԓ$I$I#S[c{0 @v@ e95@*R !@ kT @33@ e94d95@ @?kcTR@X `TҴmS @@ @L0y*i(R"9{ĨcB[ASè#_i> UUUUUUU#S[{0 1@9h4@i@X @Tw@ҳ7S հ=B=@\0yh{Ĩ@[ASè#_֕i> Ւ$I$I#{S[ f0 NR~O~"hp<B@AҟV`yh*@IT`@e@RDR"RR?`Th@h@T@QVye[BSA{è#_`\@?qT <R *R>#S{ AC? 7 @h(h*R9F&{¨S#_agR>#{Se0OBB=*~Ya ҐR@@@y`e@SA{è#_#S { A0tbOi"B9~nR5 R0ytҴ~dR0y&{è @S¨#_O(<O`<1@@A? ?9 )@_#S_{!O0Oa"h"pTv=p<@? T?Y1`R`vd:@h:>@h>B@hB{¨@_ASè#_][>#S {OҐ=~qB@BVy9h@T`@PVy{ @S¨#_#S {0Sҟ~Q5 R0yBҳ~Q0y`ҳ~Q0y`ҳ~Q0y`{è @S¨#_#S{0O~~~~~~~:tҴ~Q( R0yh"     }{èS#_#{1 NBp NC&)_QNN@ NN=)T(=<>N!>N f, ,+f` Ki`xM%@x kTl?TR k$Zk6T+RK86)?CT3ҟiTo`@Eu|SH4sT))T=<>N%>N f *,f midxl%@x kTJjTR k$Zj6 T*R86)?CT <N)_ITf=<>N%>N f +-f ˎidx%@x kTkkTR k$Zk6)T+R86)? CT*<N)_IT(f=<>N/>N f!+-f ˅idx%@x kTkkTR k$Zk6IT+R 86)? CTJ<N)_ITHf=<>N/>N f!+-f ˅idx%@x kTkkTR k$Zk6)T+R86)? CTj<N)_IThf=< >N.>N f!+/f ˅idx%@xkTkk TRk$Zk6IT+R 86)? CT{èA#_CDS(C\RC>S(CVRC8S(CPRC2S(CJRC,S(CDRC&S(C>RC S(C8R>#S {OҐ=~qB@BVyByh@T`@0OVy{ @S¨#_#{@` O{#_#{@`O{#_#{@` O{#_#{@`O{#_#S[{h@@ @@@l NNf94`@N{[AS¨#_@ #S{h@@  @M@Nf94`@N{S#_#S{h@@  @K@ҭNf94`@ҨN{S#_  #S{h@@  @@ҏNf94`@ҊN{S#_#S{h@@  @M@uNf94`@pN{S#_#{@ `N{A#_#{@PN{A#_#{@I@N{A#_#{@20N{A#_#{@W N{A#_#{@`h@T`@ N"yN{A#_#{@[M{A#_#{@M{A#_#{@;M{A#_#{@h@T`@M"yM{A#_#{@#M{A#_#{@OM{A#_#S[{@s@u@MT@ @}M~ {[AS¨#_#S[{@@Tғ@`\h@T`@aM^y\MT@ @}UM~ {@[ASè#_#S[{@s@u@@ӡLyh.@T`"@ӘLRyh@T`@ӏLRByh@T`@ӆLRy{S#_#S[{A"A}sL}"AAu@"eLTAA}^Lb}AAu@ PLTA A}IL} @s@u@;LT@@}4L@s@u@^'LT@@} L~@s@u@2LT@@} L@s@u@KT@@}K~@s@u@8KT@@}K@s@u@<KT@@}K~@s@u@(KT@@}K@s@u@KT@@}K~@s@u@KT@@}Kv@Tj@ӋKҟNyf@TZ@ӁKN byV@TJ@xKN "yF@T:@oKNy6@T*@fKNy&@T@]KNby@T @TKN"y{[AS¨#_#{`@a @`@ h@ ɚ} =K{A#_#S{`@h@},K`Oh@T`@!Kyh@T`v@Kyhr@T`f@K yhb@T`V@K RyhR@T`F@J yhB@T`6@Jyh2@T`&@Jyh"@T`@JRyh@T`@Jy{S#_  #S{hB@T`6@Jyh2@T`&@ӷJyh@T`@ӮJRByh@T`@ӥJRy{S#_#S{h2@T`&@ӓJyh"@T`@ӉJRyh@T`@ӀJRy{S#_#S[{@s"@u@IhJT@&@}aJ&@@ b @s@TJhf94@OJbO{[AS¨#_#S[{t6@tv:@@m6JT`6@h>@}/J>h.@T`"@&JRyh@T`@JRByh@T`@JRy{[AS¨#_<  #{h@=T`@I`"!b9hL{A#_#S {tn@ur@+"T`n@hv@}I vhf@T`Z@IR byhR@T`F@I yh>@T`2@ӿIRyh.@T`"@ӶIRyh@T`@ӭIRByh@T`@ӤIRy{ @S¨#_#S{@@ b @s@ҍIhf94@҈I@@ b @s@}Ihf94@xI @@ b @BBs@mIhf94 @hI@@ b @s@]Ihf94@XI{S#_#S {`B@hJ@HI~Jt6@u:@"T`6@h>@}8I>h.@T`"@/IRyh@T`@%IRByh@T`@IRy{ @S¨#_#S[{`@h@| I~`@ h@  ɚ} H`@ h@  ɚ} H~`@h@ Ԛ}H`@h@ Ԛ}H~`@h@ Ԛ}H`@h@ Ԛ}H~`v@ h~@  ɚ} H~`j@ hr@  ɚ} H~ r`^@ab@`^@ hf@ ɚ} H f``"1`t2@tv6@@HT`2@h:@}H~:t&@tv*@@HT`&@h.@}H.t@tv@@tHT`@h"@}mH~"t@tv@@`HT`@h@}YHt@tv@@LHT`@h @}EH~ {[AS¨#_#{0 `@@ @(j? `"J `@@ @j? {¨A#_#{@3A@?i@R?{A#_#S[{0 @u@d9(5%RpS4@33@d94hd95b`S4@X TҴH =0@=L0y^`{Ĩ[AS¨#_=_> Ւ$I$I#S[{0 @u@d9(5%R*S4@33@d94hd95bS4@X TҴH =@=L0yU^`{Ĩ[AS¨#_^> Ւ$I$I#S[{0 @u@ e95@*R @ T @33@ e94d95@@?bT@(X TҴTH @@|L0y^{Ĩ[AS¨#_ֶ^>UUUUUUUP=.R1= >N,>N f !(*fO iix*%@x kTh TR k%Zh6iT(R )@H@?aTR?R!9S_#S{h@*=T`@ G!b9`"hI6 G{S#_#{S[ZC0@G h@ITi@h @i suTu0y@@d95'RbKS4@**@d9h4d95€a<S4@ X `T@]hB@y"B0B@9(4h@h"@iITi@h@"ɢȢ@94O` =|Z4bZȢ@94CZ[BSA{è#_"Ra9QFF0QF ] (QaB@yF`"Q F> Ւ$I$I#S[c{0SYS@@@IT@@'#@@hd95%RaS4c@KKc@hd9h4d95SH4@(X Tҷ,G հ ='@=@X0y\4  Փ@d F{ƨ@cB[ASĨ#_~]>dPsF> Ւ$I$I#{S[YCO0@~=sSU FA*BZby"C?T @!@h@T`@EZyE CY@[BSA{Ĩ#_D #S[c{0X Ti.A@ITn@EIT!@ AT ifx%@xkTmH@{è@cB[ASĨ#_J@ITn@MA ITG@ aT ifx%@xkTm aT(RCC9c2 ո@Tb"AITa@OhbiB T@"@ITa@O(@IT@" @J."Y?T9@!c"@_@y,EO`E>#S[c{0*W? TK0A(@ITN@ AIT@ T hnx%@xkATm{ĨcB[ASè#_? TH`@ITJ@oI@ 8RN=P N0N=0= >N f 1  ˚#AbL  P=>N?/1/f ˆhnx%@xkTo TR k'Zn6iT.RR86ST1 @ Tp=>N T( f) ,ijxK%@x kThҧEO =O"y<ORy<yj9: p=>NfNp=>NfNh@"R9@@a@<W?T5@!C @@_hDiCWCSq(@D>#S[c{0R? TK0A(@ITN@ AIT@ T hnx%@xkATm{ĨcB[ASè#_? TH`@ITJ@oI@ 8RN=P N0N=0= >N f 1  ˚#AbL  P=>N?/1/f ˆhnx%@xkTo TR k'Zn6iT.RR86ST1 @ Tp=>N T( f) ,ijxK%@x kThDO =O"y9<ORy<yj9: p=>Nf2Np=>Nf-Nh@9"BR9!9@@9a@;"S?T5@!CV @@_CiCVCSq(@C>#{@ R !@ C,4AHYiIT/@CIT@ Tiex%@xkTnH{#_)A)T @(@ Rj-@k kC- @ @HYiIT/@CIT@ ATiex%@xkTn)A)(T(@ @ Rj-@k kCk- @ @HYiIT/@CIT@ ATniex%@xkTn)A)(TMC> #S[c{0U R? TL4A(@ITO@AIT@ Thox%@xkTnA@TfRe? TH`{ĨcB[ASè#_RH`@ITJ@oI@ 8RN=P N0N=0= >N f 1  ˚#AbL  P=>N?/1/f ˆhnx%@xkTo TR k'Zn6iT.RR86ST1 ` Tp=>N T( f) ,ijxK%@x k ThҙCO =O"y9<ORy<y9n9 p=>NfLp=>NfLh@9""R99@@9a@:"V?T5@!Cb @@_YBnCUCSq(@B> Ն#{S[ck3V0P @j@*IT@F@ @@I B#aSh4c@c@hd94d95A#SH5T@h@(b@94@IT@a@# H@I#j @RRA=H@ c? H@=T@@Ab@1Tq`T(RV9*UkDcC[BSA{Ũ#_֟"qVzTLBBB>Ԩ@#S[c{0 @IT@@@@? Ca+Sh4c@c@hd94d9h5CS5T@YIT@ғBO p=O"yByp<ORyp<Oyp<zB =>NfK=`>NfKS@yg"fcBy@@bR9T?T3@ҿ !C @@ _H @ ITI@H @d GA{ŨcB[ASè#_#{ @IT@G@@@# CSh4@@d94d95CS5T@h{¨#_K`A>#S[{0  @@@ e95jb@+R !@ kT @33@ e94(e95jb@(!@_kBT@X TҵA բ@hb@ P0yW{Ĩ[AS¨#_FXab@?A> UUUUUUUI#S[{ b@95j@_ITi@h @_)ITh@ bT R @yqAT -@xqaT k k=S%qT  CT6R@@TO=~^POҰ =~qB@B"y@Cb9{¨[AS¨#_#{S[mTA0 -x5OA~B=0P gA%R@@@ya"I?T hJ@!hJ`"}@D@T@I@RyD@ -x5OA~B=O 3A%R@@@ya"I?T hJ@!hJ`"I@@T@@Ry@ -x5OA~B=O A%R@@@ya"I?T hJ@!hJ`"@@T@?Ry? -x5OA~B=O @&R@@@ya"I?T hJ@!hJ`"  -x5A#&R a"I?T@(hJ@!hJ`"  -x5AC&R hA' -x5ARa"I?T@(hJ@!hJ`" ^ -x5Ac&R  -x5ARg -x5AR^a"I?T@(hJ@!hJ`"w 2 -x5A&R h!& -x5A#R:a"I?T@(hJ@!hJ`"S a -x5A&Rx h, -x5A#Ra"I?T@(hJ@!hJ`"/  -x5A&RT  -x5A#Ra"I?T@(hJ@!hJ`"  R[BSA{è#_#S{@=@c`*R?ր9@RRAR?ր{S#_րgI@?qT <R *ah?XI@?qT <R *Y?>#S {h @i@)h@(hT` @fRh @h { @S¨#_#S[c{5T&@x?q`T?qT?q`TIc"BDT{cB[ASè#_ $@R R/ CoRLYm@yk!TqT) +C R NYi@ykT)A)HTy=S $@+ ˿ T_=SqT R#S[{0ҿ?OҠ=O y=O @y= HRy`hRSq#T&cA!T k ikx %@x kAT)i @=AT LiixK%@x kTh#@=>NfAHS5@@ S40Cbc@b Sh4c@. "G?T@(:@!:^ ՠ@=S5@F Tb {ƨ@[ASè#_a >;#{S[c#sQ400?w>O HR=OXy=OX@y@<Oy<yHhR(RS 4!#h@tSYq@TqTqT!|R@ !`5+  @A8R*!h=@>NfG!!#_!c @= @T@T@=ZyB@BZy(;@T /@=S55' @@a" P#@cC[BSA{Ũ#_aW>#{@RRI)@? T+@ TlYD9l4lUD9L4!? T?@qHT_0qHT)(I8( RcAh\2h2=SiR *i<Rh< 2 \ i\R*_q@T`*`{#_@R=3$@R=H#S[c{0##R^S(4cC@!4Q SH 4(RCC9c>2#%#|@S q@Teq@TqTc@= =@@=>NfFSh5@ @#aO @@? T(@!cz#@@a SH4& Ձ@?T@(@!n ՠ@[<S5{ɨ@@cB[ASĨ#_ >#{S[ck+OCT0P__99RYRgSh4!544A@SYqT T( 4 q T!qTAq!TA#C@_-T) +ibihx%@x_kT)i@e_T)6+bihx%@x_kT)i(R_T)6*Dihx%@xkT)iHR@(e!7 A#@@9Ac@=A@=aAA @@?T(@T @i;?#?yqC@1C#yHk@i T@_@[;feq Tq` TqTq TA#@@S(yTAcuCA_T˩mihx %@x kT)i@a1_-Tibihx%@x_kT)i(R_!T bihx%@x_kT)iHR_T)a*˩Dihx%@xkT)ihR@(a5A` 8RAc1@=A*=@>Nf]ES5@ @# 5' CN+@kDcC[BSA{ƨ#_aW>#S {0G&@(C!(Tҿ;3 R0y'ҿ;0yҿ;0yҿ;0yR@TRj@H-@IITI!@H)@cC# @94h@@ykTC  @94j@H@H@IITI@H@ @9(4j@H @ ITI@H @c @9 4T@@hf95b @ccs@b:hf94@]: ՠ@@hf95b @s@P:hf94@K: ՠ@@hf95b @s@>:hf94@9: ՠ'@@hf95b @##s@,:hf94'@':{ͨ @S¨#_`"TXD:NXDJXD`: q@XD`v: 9XD5X@y@l:0XD,XDa:> #S[{0Gҿ:3 R0yҿ:0y ҿ:0y^@@ Tj@H @ ITI@H @C# @94 @?v@@ e95@+R @ T @{{@ e94He95@H@?" T@X TCҨ: @?@/P0yCSPj@H@H!@IITI@H@# @9 4!T@@hf95b @s@m9hf94@h9 ՠ @@hf95b @CC3s@[9hf94 @V9 ՠ@@hf95b @s@I9hf94@D9{˨@[ASè#_֯PoWC@9iWCeW@@9`"`WC`"\WC9> fffffff456#S{07ҿ:3 R0yҿ:0yҿ:0yR@`Tj@H @ ITI@H @# @9 4h@C@9b @9 4j@H@H!@IITI@H@cCc @9h 4T@@hf95b @ccLs@8hf94@8 ՠ@@hf95b @"s@Ҵ8hf94@ү8 ՠ@@hf95b @(s@Ң8hf94@ҝ8{ʨS#_VFCV@9 8V=C8`"ѼV6C8>    #S[c{0Gҿo93 R0yҿg90y ҿ`90yb@@T/4RRu@@ҿ3P93@IT@ @i B@hvXv0y@'@ bS4@KK@d9h4d95€aS4@HX T3'@Nu@C @Ҩ9;@9 B@X0y @'A@ !@ k!T @ @ aT R  k"86 @KK@ e9K4He95 @H!@?k!T @H@?aTR??k" 86@X ` T;'@CNj@H@H!@IITI@H@C @9 4T@@hf95b @Es@ҿ7hf94@Һ7 ՠ @@hf95b @CC3s@ҭ7hf94 @Ҩ7 ՠ@@hf95b @9s@қ7hf94@Җ7{ʨcB[ASè#_O N 7U6B@7ҁ7U.BU@97`"ѪU$B@7> Ւ$I$IUUUUUUU#{S[PK0:~V83 R0y~N80y~G80y ~@80y@Y@`T@H@IAITI @H@"@ @9(4@"B @94@H5@IAITI)@H1@Bb", @9H4@Xj@HA95H @ ITI@H @"c @9( 4TT@@hf95b @{s@6hf94@6  @@hf95b @BBis@6hf94 @6 @@hf95b @Ws@6hf94@6 @@hf95b @Es@ҿ6hf94@Һ6J@[BSA{Ĩ#_T"R$T@XA7T@PA  7`"TJA7T@CA6> #{H`@)0@HL@ ˌCR )yh5GIM ITMD@.A IT/@aT ˧ifx%@xkTn-AC9 5-AyQqh T%- 6-Ay 5-QAy 5-@M -@ Hy*RI5G8LMITMX@.A IT/@aT ˧ifx%@xkTn-AC9m 5-AyQq T% 6-AyM5-QAy 5-@-@Hy+RI (=S)4@  cT44{#_@ @@ 6@@@ }6@ @@ t6@ @@ k6@ @@ b6@@@ Y6@@@ P6@@@ G6> P!"qp#sr$#{`@a@?`@U@?i @Rh@S`@( @?`@@?`@U@?h*@`IT`@@?*1`TH(6i*@`?IT`@y@?{¨A#_?bT? ҡ ˨ibx Q_iq Q !H$@x Qiq Q!?kTkAT?k5Z_#{S[ck+XIC0P_G__ _ _g_______;@C+`4*dXO@HG@@ K&@4K K@@A4$I@@)A44)Q*@QJ *5@H@R @1*@*** * * *kT`52GG@g@y G@@@#@R@0ҌkTl5@WG@w@y @@ @ R @0 kTm5)1VG@v  @v @L@ R @1 kTn5JqTG@t˔  @t @J@ RI @M1 kTo5 kANG@n   @n  @J3@ RI @LA kTg5 B@MG@m ˭ 5A)n m 5)@K@k Rj @kAGG@ kTh5 !m,@ 4@l GG@,@4@l GG@,@4@l GG@, @4!@l !GG@,,@4-@l -GG@,$@4)@l ).$@,A, R4E@ .$@kCT@H+@R @1kbTe5 h@R@#a@(S4  h@4 hGG@A( Rh @4HAGEAxqT_g4 EA) g @?kcTGG@@H'@h R @1  i4 E@)Qk MA+  @k 5GG@@H/@ R @ 1kTf5 @R@#ªSh4@!  H%A))  H%)GG@R@CŦ*CG+@kDcC[BSA{ƨ#_#S[c{0ҿ@HjhF))CҊjhHAC9h4RHAyIAyi5I@i2?T(DC_ChF")˿T@(@Bh.@aITa"@`*@gbSR* U?*q`aTjH@ ? THhFThJ@ ?T`N" RXgGxFe"Hai.@gb@hB?Ta"@hBgb@S* dU?*`5~c3{ĨcB[ASè#_ > >`3>l#{S[ck+:GO0P_#P=_#yh@CR8@h@C8@IT@)yi4 -x5A@CAR@C=F(!Th]R@C=FR))Ci i8Ai7i6i9A YsI @ ?ITH@I @?-AT* ijx %@x kT)i5R254 -x5cc=%6@Ysh@C9(4h @ITc@iyi4 -x5,x5h @ITc@iyi4 -x5,x5AeA@CFs*i~@? Th@Cu8HCT@T@Ӵ2Q@_#y_'BI@(Rb?T@ @(ӥ2F+@kDcC[BSA{ƨ#_#S {e@RdR"RR?aT@?q-T <R *h$ҏ3@(R&RU@?{ @S¨#_ @@a*@@  I!@?kbTJ @ J@Ie9 4 e95 !@ kBT _ T    !@? kbT @@ e9 4He95H!@k_#S[ck#{u[ ThAhh6R@@ E95@(A94 -x5AcS5 -x5AS5 -x5A#S4h[ T@ @l@_ kTk@9@9 kT T@q@C@ R" @E94~@H69vZ9!Tu[@Ȏ@HȦ@@9"@y@Rp"qE9h56aT{Ũ#@kCcB[ASŨ#_#{S[ck+EC0PR*RNf ; @=@ # @=c@ "@NNSh5@ @h#A@@5A{˨ @S¨#_a>#S[{00S4v Bң@b:&SH4C Ձ@?T@(@!} ՠ @250S(5{è@[ASè#_#S {_AT( iex$@x_ kTBb@Cc@5@R?֠7@@B)aT+ihx %@x kTss RR{¨ @S¨#_ֈa*/>#{S[C0B @i6hA95hF@H7iFu@u/ * @Bb&@*@*= @Q? @=T @/C[BSA{ƨ#_ *@**BU! 2>#{S[/CO0* =9"" @@t6hA95hF@H7tFv@v*@b&@***=@iQ? @=T@i/_C@[BSA{ƨ#_****! B2>#{S[c#9C4002?=0O  9<Oy<OPy<Oy<Oy<O y<O Py<O y<Oy=yy9hR(RS(4!# @Sqq T Tq T q TEqTMq`TYqTeqTmqT! @.@9! @=!>NfD9!# !# @@!T@T@.VyB@BVy(@ T @ӻ.a!c@=!@¢@6)R!@=!!#@=!c@=!q`Tq@Tq TqTqTq!T!@>@9(!@@8R!#@=!!c@=!@=!@@ 9"SH55h'^EB#@cC[BSA{Ũ#_a>#{S[ck+BO0P_[ P#=_yRROR_c P+=_CyP'=SP =P#=P=h4A.@:SYqTqTqATA#B@9R*)Ac9=@>Nfl8 A0A @HTT@C@-B@byQ>NQCHo@T@c@-4RS55h'5ha"A"AW?TQ@( 7_yAQCE_CyA @! DC"SO@I_@?T@S@(ӵ- T@C@hӮ-AkDcC[BSA{Ũ#_>#S[{i@? T(v  T`"@Kh @Ka@?`@U@?h@Th@ h @i?ITi g'{[AS¨#_`8h'.> #S[{`b*T"AIT@7h@ @ @ Ayh@2hAyi"y@Ayh&yh@2h)RAy4h&yAy9qTR =SqTh@2Ay RqTT Q_IqHTi(I8( ֋R  R KRqTqT R+Rk&yBC9H4h@2hMvy(IShyAy`hyAyhyT" AIT!@d7h&@ @ @4h@2h@h{[AS¨#_#S[{0S4v>Bң@SH4C! Ձ@?T@(@!m ՠ @, S(5{è@[ASè#_#{S[c#@400?-O =OXy=OX@yy<Oy<yhR(R_!#@SYqTeq@Tq TqTqTqa T!@@9B!@@8R98!#@=! !c{@=!t=@>Nf6!!k!# @I@T@T@+,ZyB@BZy(S@T G@, S(5@ @h# 5h'@#@cC[BSA{Ũ#_a>#{ A } ƚ-TAӇ8@\|S4`lTT@!T@H`5{A#_#{0 B B+yT+-xqaT HA _  TH *  10 N PN =P N0N==>Nf   ˚"Aӣ  p=>N? -f ˇhnx%@xkTm TRk-R%Zm6T-R86 ˨`T `T=>N T( f) ,ijxK%@x kTh{Ĩ#_,X ՠ>Sq(@+>#{SL?C0  B B+yT+-xqaT HA _ TH )  1h(A   TA= >N AT ,f hmx%@xkATlC?SA{¨#_bE 5E 5+ W>@#{ >0p a > @{¨#_(_xqT_$CTD)*Lihx %@x kAT)iI$(?! M"H  H Ț `bE Ո5C+> #{o N=0 NPN = =>Nf  H ɚ"A = >N_ !+fhlx%@xkTkkTRk-R%Zm6T-R86ѠT T=>NT( f)+iax*$@x kTh{è#_C=CSq(@*>#{`@@!@mL?7q{A#_ha *)>#S {0@h@-@OL?7h@Q@HL?ր4(R Rh@C@=L?֨@q Oz@7q{¨ @S¨#_hA!*)>#{CSh5R @qaT R S{¨A#_ @?Ta=(@ IT @_#{S=Op=V9Th@=T`@)V9B@qBV9@=T@)=@SA{ƨ#_#{S= 0ONҟ p="9(R H@R?4@BRRRR?ֈ@Hh@=ITi@ ?9@)yi4 -x5AR\ @@Y@? =SA{¨#_a#{S[ck+x=0PO_WP=_yO_WP=_yiyRi4 -x5A@3H<@!/iyi4 -x5A@3H?@I S+@H3@W*WOy_P=i4 -x5A@C9AC)X2('@(DhAR @k"T(@@Y<@  K҈*= !8(@@Q41H"@.H/@I*@H#@AQ4q+ @p N  K0 NNNP=?  ) H/@T@#@)_W_yH?@T@3@( R@@<+@kDcC[BSA{ƨ#_CRIM@(ҏA=>N?!)f ˫ijxH%@xkT)iTRk(R%Zh6T(R86ˌ@T T= >N? T f *ilx%@x_kT!aˀ-SR_#{S[ck+<OA=Co<4h@>=2hpB<A`bhT" AIT!@2"`T" AIT!@2`bT" AIT!@2"`T" AIT!@2E9hb94@yhBy @99@99v5@yhBy=B`"pB<T" AIT!@2@3 yi4 -x5A`25@^@# yi4 -x5A` `T"AIT@2A9 W@9@y(WfD9h4R9@4:@ yi4 -x5A`" `"T"AIT@k2@99W(C jXSi ˟THT (@T @'?_?x?T @hTh@ ˟T`". (icOp=?7xH{t4@ҩ@#wki:@` yi4 -x5AT"AIT@2@{#W@Q(Wh@)) @9)Z 5Z @B@ yi4 -x5A`" `"T"AIT@15B@yOy@h yi4 -x5A` `T"AIT@1v5@9A99@M yi4 -x5A`1@F`(ChbAyhT!@@h@ ҩb@)*i@(*hjZ^bAy ؚ? T4(Zt%Th@  ؚ?T`2) O)PAPAP=PQO߆<Ox<]<xZvFR )C6=Sih@* XwC" @a6@YwhCC94`MRChh@ XyRC" @9a=S`M ?TF TChbAyh&H(h@i@)h@)h@)h@)h~@)hn@)h6@)h&@(%I@ :+@kDcC[BSA{ƨ#_#{0@C@U@H?֠@{¨#_#{0@C@Y@H?֠@{¨#_#S{ `@cC@9@~H? 7 @@"{¨S#_h* &>#S[ck#{&@j@?(CH ֚ T`*T^]T?T @  ֚Ta 1R@C @YzB' @ZB:}HT5{¨#@kCcB[ASŨ#_#S[{0Rҿ ҿ#[T@? T(CAC"C ՠ@#@}% @*{Ũ@[ASè#_#S{ `@cC@1@G? 7 @@"{¨S#_h*g%>#S{ `@cC@A@G? 7 @@"{¨S#_h*G%>#S{h&@(}@h@hTh@ h @i?ITi {S#_#{S[ck+~90AOP_P=_y_cRRRS4Ac@SeqTqTqTA#@7R* 6R A=@>Nf/$S5HC@H#!_5H'aY5H&SA&@QC_c_y@@y wRWRS4hAcUA@5S 4O5@R_c P'=_#ySH4A&@2SqTq!TA#<=@C>Nfo/Ac3@FSSh5HS@H)a %*@QDACQ2W@"C?T @!B#T@4@T@$by$ @HA<bSq{S55HA;#S[c{0mS 4hX[WTСBң@b/_SH 4WSh 4Cң@NSh4C4@ Ձ@?T@(@!0 ՠ @I\$@a/+S4##Dң@c"S4"S5S5TШ@)R 9S(5{ƨ@@cB[ASĨ#_#S[{0S4hVСBң@SH4C! Ձ@?T@(@! ՠ @Z#S(5{è@[ASè#_#{S[ck+7T0PS_ $O@=O\y<OPy<yh98hRH RBSH4hA/[A@SUqTYqTeq@Tq TAC@=A=@>Nf.MAAC @@!T@T@ӊ#^yC@B_yHW@)T@K@}#,A=AY#@@CP=_=A?R@ @A?I@iH @  H@ T=A?@4bc,@6RSh5@ @H#S5H!"M47+@kDcC[BSA{ƨ#_aW>#S[{0S4hVСBң@"SH4C! Ձ@?T@(@! ՠ @b"S(5{è@[ASè#_#{S[c#6400?#O =O\y9<OPy<yh98hR(RKK!#@SYq TeqTqTqaT!@n@8R91!@=!#=@>Nf -!!c! @@!T@T@Ӎ"^yB@B^y(C@T 7@Ӏ"HS5@ @H#5H'|c6#@cC[BSA{Ũ#_a>#{S[ck+H6CO0P__P=_yYS8RSH 4HE@H":S 4O_#P=_yRS4AC:H@aTH @Lihx %@x kT)iAK=@C>Nf~,7RS55S4WCVAoEBb;S4F#F**H+@qS5V֢H7@T@+@!RSH5C5+@kDcC[BSA{ƨ#_>#{0Op="y@(R{èA#_a#S[{h@ITi@ *?y5hD" ,j&A( ˟TWw ?ITu@ x5z7x&!RC,{@[ASè#_#S[c{0IS( 4hYX_C@7<Sh4C& թ @q!"@?T)hA!h`8=q"!"@?T @ (hA!hC`b ՠ @*@!C8S4c  թ@q!"@?T)hA!h` =a"_?T@(h@!hc`8 ՠ@!S5HA8H7A{Ĩ@cB[ASĨ#_<#{S[ck4O0P_[ P#=_yRROR__c P+=_CybP'=SP =P#=P=4A@SYqTqTqaTA#@f9R*W)Ac=@>Nf$+ AA @HTT@C@Ӫ B@byQ>NQCHo@T@c@ӝ 4RdS55H'5Ha"A"L?TQ@( 7_yAQCE_CyAb@!bDCjSO@I_@?T@S@(n  T@C@hg ]4kDcC[BSA{Ũ#_ >#S[ck#{RSqH#TCW@aT @jLihx %@x kT)i7RS55!?RRRSW4hC[Ac@B1S4}9Rfc@H1S4:RXc@H1S4c;RIc@H!2S4;c@H!ҹS4#.c@Ha;ҬS4# c@H/ҞS4,BHc@a"S4S5S55B15H1A5H1{è#@kCcB[ASŨ#_>;#S[c{0XS4hVWBb҃@8MSh4E'CB҃@8?SH4Cp ա@?T@(@!t ՠ @ N.S(5"@?T8Q#S5{ĨcB[ASè#_;#{`@@%@%A?7q{A#_h *>#{`@CZ`5@=q TqT R{¨A#_`7Rh!*>#S[c{0S4hVYBң@Sh4C! Ձ@?T@(@!e ՠ @0S5{ècB[ASè#_#{S[c#2C400?O =O\y9<OPy<y9l9hR(RV!#@SYqTaq TeqTqTqT!@8@8R9:!@=!#=@>Nf(*!c@@9!!! @l@!T@T@N^yB@B^y(K@T ?@A SH5@ @H#C5H'=C$2#@cC[BSA{Ũ#_a >#S[c{@0Cx*7@@ @@?@* @??*s7@'  ? qHzT@C V*37 @!AcRR?* @@ @??7@@ @??*@@ @??*S7@7{ècB[ASè#_H! *R>?n #{1p Nh A/#CPN=$'AiO A T7@   @T.R%@xqbTS'8 ATK   bT @yqbT il8 4  T?(1J(I@y?qT?q T?qT?q DATI)aL%@x+%@x kTh%K  @y  y@T,x&kaT  #T ATI)L%@x+%@x kATh T R TH-!R61{#_W#S[{ ARC? @yT'h@ITi@ ?y{¨[AS¨#_#{Op=ATH@yqTCpH0 TH.aSOp={¨A#_ W#{0Op="y(R# (_xq T(@yqA T(@yqT(@y 2hR!)kT( @y 2R!)kT(@y 2HR!)kT(@y 2( R!)kaT(@y 2 R!)kT(@y 2 R!)k!T( @yqT'h@ITj@ !(@HA( @H  R!)kT( @y 2h R!)kT(@yqT&h@ITi@(H-!{èA#_amcW#S {RNB@qbTh`5H*!`>S{ @S¨#_W#S {R0h`5H!+!*{ @S¨#_W#S {RqhTh`5H)!`S{ @S¨#_W#{ Nh A/#*0N ==A?*c@A?@*@  @ T=A?@h5(RRS9Sx_9 @{ĨA#_#S[c{0ҿOҠR=OPy=OP@y=Py`uRRP*@S)qTeq@TqTc@=#@=>Nf& c@=>Nf&8RnS5@@H#*5H*cSH4hBH@baYS 4@|O2=O"Ry =O"ByB<Oy<RyJSh4cl@xSeqTqaT#=">Nf%6R x=>Nf% S(5x>@H#*D5H'*>!#G?T4(;@ҿ!(;c ׬@zQSH5@F THa{Ȩ@@cB[ASĨ#_a>;#{S[ck+.0P__0= >Nf6U TU?T5AB#@C6AAbTS @C@9Ch TS@_9@# Ր=S@>Nf(%=`>Nf#%<`>Nf%"A9hyN@hbRA9h9R@hf@AvT@T@ӟ"y1C@B?#?yH/@T@#@ӑ<`b>Nf$#R3"Y?T_3@!B#"Ӫ V@sTSB"" ճ}f\.+@kDcC[BSA{ƨ#_#{S[ckC.0P = >Nf9QTAcr =O@~ b9p =~B@SOqBOZyp=Zyh2H;@T@/@&__y$@A#_Ohb(Rh9@1b9 ՔT@c4  ՠ@T@@?T4@_!ȪV@BBcbr~ bI @c>-kDcC[BSA{Ũ#_#{S[ck+-0P__0= >Nf7U TU?T5AB#@C5AATS @C@9C TS@OSp=OVyp<ORyp<yj9:S=>Nf#@`h=>Nf#@`At"Th2@T@ky1C@B?W?yH/@T@#@^h.@`@(c@gRa"(RZ9W?T3Ⱦ@!ȾB#T@=!TSBN ճ}2(-+@kDcC[BSA{ƨ#_#{S[ck+-0P__0= >Nf7U TU?T5AB#@C4AATS @C@9CJ TS@OSp=OVy9p<ORyp<yj9:S=>Nf?#@9`h9=>Nf8#@`At"Th2@T@y1C@B?W?yH/@T@#@Ӵh.@`@(c@9g!BRa"^(RZ9"S?T3Ț@!ȚB#DT@!TSBt ճ}~,+@kDcC[BSA{ƨ#_#{S[ck+d,0P__0= >Nf7U TU?T5AB#@C>4AATS @C@9C TS@BOSp=OVy9p<ORyp<y9n9S=>Nf"@9`h9=>Nf"@`AQt"Th2@T@y1C@B?W?yH/@T@#@ #R"V?T3Ȳ@!ȲB#bT@V!TSBbp ճ}++@kDcC[BSA{ƨ#_#{S[ck++0P__0 = >Nf7Q TT?T4AB#@C3AATS @C@9Cۼ TSҡOSp=O"yByp<ORyp<Oyp<zBS@=>Nf!_`=>Nf!_Q@yhBy_@Au"Th2@T@pyB@B"yH/@T@#@beh.@`@(cB@ygbRa" (RZ9T?T3Ȧ@!ȦB#תU@>TSB}6,++@kDcC[BSA{ƨ#_#S {h@ITa@b @L@gfRhb A9(cy@@6{ @S¨#_#S[c{0@&@"@M@(T;R  ҿ( R0y@ @(ǀҢR@Y9@RT8h@@9<q *T -@i*@#BR!yZ9T@VT a@Rba_T@U@T8h@@9_$q!T_qH!T -@ A@i)A@yB@ 2@C|@"R!OZ9!T@VW>0=  >NfK!  @Ti@*1A IT-@=>N aT.f ˧ifx%@xkT..@ @T-@.!@-IT-@=&@>NaTf ˧ifx%@xkTѮ ATa@RAT@tX@(A94_R!T`"kXR RL ˌC mYi@ym54 lC RLm@N ˬYk@ykTk CTk@kYihy!SkX)N ?  T@ҿcV~ ( R0y0+& ՠ@@hf95b @xs@hf94@@_ŢĂb Bh_"__aR__!_ ՠ@@hf95b @Ws@ҹhf94@Ҵ ՠ @TF{Ȩ@@cB[ASĨ#_!Sh4 RpM *3F 3@ 3; 35 3@*, > 465 #S[c{0KҿZ; R0y ҿR0y@a[? T+W#@C@#@o{@@ @C(@94@@` e95*R @T @@ e94(e95(@ T@ X ` TCҨ C@T0yC3+@H}@H@IITIu@H}@c @94'@aT+@ ՠ@@hf95b @os@hf94@ ՠ @@hf95b @CCs@hf94 @{˨@@cB[ASĨ#_"2u03,2@92@'> fffffff+*#S[c{07ҿ4 R0yҿ0yҿ0ytZ]T9Е@.@B"FJ@t>@A9"A9@$bRx-(RhZ9@C A9A9(3 @9h 4@H@H@IITI@H@#n @9h 4@ @ @?IT@cCc` @94T@@hf95b @ccĩs@>hf94@9 ՠ@@hf95b @s@,hf94@' ՠ@@hf95b @s@hf94@{ʨ@cB[ASĨ#_ր"@2`v:2A972A9n22g> RLK#S[c{0?ҿ( R0y b@"T9Rj@h@iBITi_+@7 a=S4c@kkc@hd9h4d95.Sh4@X TCҨ հ =7@/=@0T0yCf*h^jITj]@h^@#hd95aSh4c@c@hd94@d9 5S( 5T@b@1TȆDaBљ9bTb"@IT!@ @9H4s"`T @@ @"@a@T@ @h@f95 @CC@If94 @D{ɨ@@cB[ASĨ#_ր"*b@ > Ւ$I$IVU[I#S[c{0ҿ ( R0yb@ T @H @ ITI@H @#  @9(4@k@hBC95h@aITa@b@hC@yhyh:@hbaKhAyQq Ti(% 6h*@hh.@aITa"@b*@q @y h'A   !@9 5A Th!@yhyhAy9qThRAy5h@ @R  )=S?qSzThRAy5h@h@ raT@ @aT@@hf95b @s@җhf94@Ғ{Ũ@@cB[ASĨ#_83  .0* %  > P% o&#S[c{0 3lZ Ti@R)F+@hy? Ti@)F +@kMl@y T? Ti@(aya@"i@()@hHR(ay@@ҿ)(@IT)@( @i ytPt0y@@d95'RbS4@33@d9h4d95€a|S4@X T@(t@@ rATb@h7AT{Ĩ@@cB[ASĨ#_@M O)  0A> Ւ$I$I7#S[c{0Kҿ( R0y3a`ұ H!O= -x5Ah!%RZ ՠaJ?T hV@!hV`@Ҷ@T@ӈ^y HO= -x5A7!%R) ՠaJ?T hV@!hV`g@@T@X^ySvH@ T ʆ@I @ ?ITH@I @?E!T  ijx %@x kT)iʂ_I @ ?ITH@I @?9T* ijx %@x kaT)iۂ_#O= -x5A R ՠa#C?T h@!h` @h@T`@^yT @hj@ir@jB@)Ҫ ( Ț_T`X__TC`BDh>@@f95@ !@?@T*@%C+ )ȁ?IT@ IaM7?T-@IT!@ N)@a@q N((`N1N0== NPNAhn@=hnÁC`B= @(e94@ @ T@ e9I4(@ e94 h&F *i~@HC hv@( ֚ TUX cTTC`t^Fh T@J@bIT>@F@n@a"O KA9?뫃9T @j@9)@IT@.@ @b@IT"@L@O*@ITO@L @N@ITM@ NL@ NNN1@ N( N NNA+ 9% )*P9hz@ahz  gCD`@Th@R( ֚Fh&@tJX*i@HC h@( ך TGTC`ub@hT@(1@!!IT!%@"-@ aP@ ? TH @LITL@H @K@J@9ITI@1 NH@ NNpN1@ *9h@hCDC`Th@R( ךDhA*i@HC h@( ך T?TC`bׯuAhbT@(1@!!IT!%@"-@a"R@ ? TH @LITL@H @K@J@@yITI@1 NH@ NNpN1@ *Pyh@hCDC`b̛Thb@R( ךh&C*i@HC h@( ך Tc6TC`ubChT@(1@!!IT!%@"-@~aS@ ? TH @LITL@H @K@J@9ITI@1 NH@ NNpN1@ *9h@hCDC`Th@R( ךhD*i@HC h@( ך T-TC`"KtDh"T@(1@!!IT!%@"-@8a"U@ ?TH @LITL@HAK@ITJ@Q NH@ NNpN1@ $h@hCDC`"Th"@R( ךth&J*i@HC h@( Ԛ T&X #%TC`ubJhT@(@IT!@" @H aV? T(C@y=( y0=h@ah`#Th@R( ԚѶhH  @kB )  aTj"YxB )h@  ? T?TC`BxBhHyB*i@HC h@( ՚ TX CTC`{Hx T('@(Dh@B T @( @IT6@"@IT!@c g"VN ԚN==#= ԚTAӢ @@I86ѤaTT==(>N >N?T(f) fJ ijx %@x kT)i!@@?T(@9$( 9(@A(#T @v@ȦB)(@5C@WIT@ @ a"X?TN=B@yN1@(@yh@=h`Âj@T x@R( ՚#@eP ՚mT ךcN ךk"S ֚aM ךiQB ǚ 0 N ךNC=p NPN= NN= NN=h@@A@AA@BA==+{Ҩ@@cB[ASĨ#_7(O!Sq(@J-(,(+(*()((('(&(>Ԓ$I$I袋.UUUUUUU fffffff#S[c{0Gҿ8 R0y ҿ0yxN@ T @@ b @CCs@ү hf94Z @@ b @%s@ҟ hf94Z  @H@IITI@H@C# @9(4@F@ Tk@_j@_ qTbA@IQ?jATh@H_ q @҉)(R(agA%a#(RZ9t@@qT2@"IT&@.@C#n @9h 40 @?u@ e95B@,R @ kT @{{@ e94He95B@H@?k T@ @TCҨ4 ՈB@?@7l0yC#AT@@aT@@f95 @@ f94@  ՠ @@f95 @CCt@ f94 @ {˨@@cB[ASĨ#_j$`"*+ #%+ Z +`S N `"+@@#+D >kCDj#{S[ck+ 0AP_8RXRR:Sh4(A0(!0A@Siq T TqT1qTYq`T]q@TeqTA@=AA#@=AAcA @@T@T@~ "yC@B#yH@T@s@p AA @V@4R==tAAC @J@=A==@OP;=1 fD9q(*f9]A#y@=ASyq` T}q@Tq TqTq TAch@{@]9CA_@=A>Nf9R8A#TC@_ Tikmihx %@x kT)i@&_TMihx %@x kT)i@(R((0![A-@=A#&@=>NfXSh5@@(#5(a 5(&!S4H9;8A#8V@҃@!C1S4@!$@1S4@}@a1S4@ao@(!2qS4@a`@(!bS4@^R@(a2TS4@E@(2GS4@a7@(!3"9S4@ )@(a/+S4@@(3S4@A] @(3S4@ SH5%+@kDcC[BSA{ƨ#_a W>#S {s`"@4a"4u` R{ @S¨#_ @@#{@h@C?`5h@?qT <R *R@qSh{¨A#_#{`@@@,?7q{A#_(!*V >#S[{0h@ hAcR`"?@7@#HhAҡ?֠7@@AR@,?7@"ҁR@,?`7@"aR@},?7@@ @t,?`7`@t@ @j,? h@ @b,? i"A?@TiCuBS4@5q4C|"`@Ra@@Q@D,?ր7`@S@@;,?֠ 7@qOzAT`@@y@/,?ր 7u5h&A4˨@=qTuBAӪR@aӉ ? bTHT @ ?T7 Ra@ha=C`B@n{Ĩ@@[ASè#_($*  (!* ("* ("* (a#* (#*| (a$*w  ($*q (*l >#{0h@C@+?5@qTC@4{¨A#_#{S[c0@yFt&b4h@( C @ Cj@$Rb&@#Ra = @ +? @=T @ CH[A)!!%@TS5(<@)!%HS4=>NfS5@9H5(A&!jf`F@McC[BSA{Ĩ#_=@;\#S {0wW@s ՠ y*6 ՠ 4^*@B@9'b#c9####### #S## #s  ՠ@@H#@ Ҡ@ ɚ}  # ՠ @*{@ @S¨#_#S[c {0{*qaT@ha=@  ճh@yh49RR#% Y4# *6# ՠ |#*@B@9[bC9CCCC CWC CwN@@T@"RCC 2"R@T{@y& T@3RRkT[uC]@J?A6@#@'@ Ҡ@ ɚ} k'#S ՠ( !( = ?q!R ՠ@#@'@ Ҡ@ ɚ} L'#4 ՠ  @*{@ @@cB[ASĨ#_#S{0{@a Ո*@B@9ObC9CCCC CWC CwC@ڎ?AS6@#@@'@ Ҡ@ ɚ} ' (= ՠ@#@*'@ Ҡ@ ɚ} ' @*{ըS#_#{S[ck+C0B P4h@ITi@ ?y{@h@@ITi@D@h @@I# BCaSh4c@c@hd94@Th@ITi@h @ACI# S5@C@@ ҃OA @@?|??`90=?|@@1@O y0=? @?y(0AH+@T@@iA@_sy_fH@)R 9J@@H@IITI@H@CACI# @@6% IB @)RZ9C4+@kDcC[BSA{ƨ#_g #S{`"^*5sh&h` @hU@?*{S#_  T,X R$@xqT%Ț 7qJzT T R_R#{@ h@*C?`5h@?qT <R * @RSh{¨A#_#{S[c0#R*yj4 -x5OA =# hC#(C~ARkTh@R#Yv=D)K"= !h@YvsK/@p N '@  K0 NNNP=#˹ @*cC[BSA{Ĩ#_ CRIM#{S[c#qC0!0+4R)y! i4 -x5OA(1=0=?y?+6>N8fC ˿T7yu   R  ]"  "#GO)? 0=(3@ ! & O 0=('H"R= )K= !(K@j)C@ K*#)X(0=0= \*?@_T 3@H! 3@*C#@cC[BSA{Ũ#_CRIM#S{h@hTbh@h {S#_#{SO0"="y@@9B4H@DNfIRB<>NfA`@T?!h@hb9B ը@T @@SA{è#_#S {0h@C@'?7@ q!Th@-@'?֠7h@C@'?֠7@RqT=qaTQ h@Q@'?qh@C@|'?q @zmT@@{¨ @S¨#_#S[{BTih @y_q!T  cT{¨[AS¨#_ATBTj ILy?TL-x)џqaT i6A#Taˠ@? B!  TO=|@CۓT1>#{@ H@C?`5H@?qT <R *  @RHRO)A =CAqBCBqB=p={ǨA#_#S[ck#{@:SRRIT@ ?y@IT@ ?yaS( 4' 3B aTI  nihx %@x kT)iC? (T) ,ijxK%@x kThC@5 @@IT@ a?y @RTbS5565@IT@{Ĩ#@kCcB[ASŨ#_֔#{S[ck+fO0FP#_#P=_y[SSO_S P#=_y1Sh4ACEA!(S(4CB*OGGHE3@@񨀈H@ BaSh4c@c@hd94`T =H >N?T) fJLihx %@x kT)i(RRy44H񢀈! 'A O|`9=|P=@'=P= =O_#_y= @y0@B@C3J@H@IITI@H@CACI# @@! 4@CB@H񢀈!S5TO@T@C@ H?@T@3@+@kDcC[BSA{ƨ#_#{*%@x_q@TcT0 NPN={#_ _ TH  1( $]0>#S[{04RCC9Ǯ *c@SqTeqTqT@@#@=>Nf c@"@((S5@ @#b$S4(cA҃@B9Sh4@\ "N?T@(r@!rb ՠ@=#(S5@ M?TB9*{Ǩ@[ASè#_a >;#S[c{0S4(СiBң@Sh4C! Ձ@?T@(@!u ՠ @@S5{ècB[ASè#_#{S[ckT0P_O@=OTy@y<OPy<Oy<x@hRHR'XA#@S%qTYq TeqTqTqTA@@6RAy<A@=A#=@>Nf ,AcA @@!T@T@gVy1C@B?W?yHK@ T@?@Z AAc @@@=<S5@ @#Q5'!K S4(A#E@ң@"2S4@'S5kDcC[BSA{Ũ#_a >#S[c{0ҿ#OҠ=O y=O @y=O y`<T`ywR#Rj(@SeqTq@TqATc@=#@l@ @=>Nf* S5@ @'!S4A#4ДDA9@xS4@ Ձ"G?T@(:@!: ՠ@@9ZSh4@ Ձ"G?T@(:@!: ՠ@ }#hh@96S4V@H @ITB@cUCC9c@2ҷ#9 S4ւ#cP3@AT/@Lihx %@x kaT)i#a=@>Nf S5@z#A#B !@b @:S45J@Fn @()@hHR(a;RS5BCC9c1  -x5@AS ! -x5A`J @!!G?T3(9@ҿ!(9c Z@@!!G?T((9@!(9 K@Ӷ# ̶#{ʨ@@cB[ASĨ#_a>W#S[{0rS4(Bң@"'hSH4Cy Ձ@?T@(@!u ՠ @(wWS(5{è@[ASè#_#S[ {O0*=ҿ9W#Hq@RcR`R?4@|@ӠH@? ն@VHA@?Hi@R? @WBE#@<ꁈ.O A T(  +-R@8&8 T1 @9kl84 T _8ll85 (   BTN<+聈i*8?E#@=ˁ*O A T,R('@8'8?TI   T @9m8M4 cT_ !=V  +6v* *b*O ****p! >?#{(A9 4i "a@#(A94b "a@] >Ԅ#{0 cz J > #{*RcR >#{c>#S {*0* **c ***c! R>#{0*5 ՠ @RR*! 5>#{*C>#{S[!(Rf9Sh4  23@-ATi  nihx %@x kaT)iCC@Vb9%AT( ,ijxK%@x kTh1 @=B=Sh5[BSA{è#_#S[c{0S 4({D_Bң@;S4uG@<ҙS4Sh4ҡ%Cң@a5Sh4C @?T@(@!Ȑ մ @@T@Ӕ^yoS5"@?Tb5dS5{Ĩ@@cB[ASĨ#_ ;#{ @ (hT @IT@US4{#_   > vw#S {hS(5a@y?<q)TR) ߟR!)kTh*@H`Tb"AITa@hF@c@y@gRa(RZ9hV@HhZ@ `bIT`N@H@C!R?4 @HY@?{¨ @S¨#_y`bq> T#{S[c#t@`B"Tw@IT` @S!4OC`=@4*tBRITt @4WQZuxA*?֠4Q2(K88x4549 Q_)qT2Qq )CT R9(Q)qT(2Qq)CT R *99 Q_)qT2Qq )CT R9(Q)qT(2Qq)CT R * 99 Q_)qT2Qq )CT R9(Q)qT(2Qq)CT R *99 Q_)qT2Qq )CT R9(Q)qT(2Qq)CT R *99 Q_)qT2Qq )CT R9(Q)qT(2Qq)CT R *99 Q_)qT2Qq )CT R9(Q)qT(2Qq)CT R *99 Q_)qT2Qq )CT R9(Q)qT(2Qq)CT R *99 Q_)qT2Qq )CT R9(Q)qT(2Qq)CT R *#9R ySLA+9mQ)qTk2kQqm)CT R9Q)qT2kQqk)CT Rk *Aq+8T5h[(}`ThB@hZD9h4hR@hb@hhR@#@cC[BSA{Ũ#_֐@KH`BC`B>`B~9`By4>xy#S[ck#{G@h>@dBbMh^@?@ebbҺhN@ub@db"p) kT khTh@(@ A@U ,@A@ T @9@9 kT? ThR(ETjW bTH  Th@ T`pR}JhR5Rva i@@h@$ /h@  -x5 I!AITJ@?T J ijx %@x kT)ih@u9h@B8hT @h.@hdb"wh@a@H5h@ h@ @9S qH Thn@C@ca"ٺhE94R9hW(!a Th@9 5h@h h@Hb@_<r!T{¨#@kCcB[ASŨ#_`@ i`h@A@`"`b@ *Y`b@ Sh@A@`"`b@ *F`b@`@` |`"y`vb@0`pb@*`jb@@$`db@`^b@`Xb@``Rb@ >Ԇ)1(YZ,-/#{"@jSI?@T4_23#S{)@9jS(Sq@@z T(,@h(@@hA@y)A _q@R4R'#}@! tZ9{S#_ *> #{hS#@@yC5h4(,@@'bR! ָ(RhZ9{A#_R`>#{`@7F @*@C95*Ay*5*L@*8@* T{#_֪`b^ZS> NMPO#S[ck#{*@ (@F(CRWa@@TZ@IT@ @{T&@xqaTbT@yqaT HABRC?qYzTkT @CTT{¨#@kCcB[ASŨ#_@F@*`>t#S[{0ҿ~OҠ=O y=O @y= (Ry`hRSq#T&coA!T k ikx %@x kAT)i@=AT LiixK%@x kTh#o@=>NfS5@@<S4(Cbc@bSh4c@. "G?T@(:@!: ՠ@9S5@F Tb{ƨ@[ASè#_a >;#{S[c# 400?O (R=OXy=OX@y@<Oy<yHhR(R?S4!#@SYqTqTqT!@G@8RA*!=@>Nf!!#!c @@T@T@ӉZyB@BZy(;@T /@|DS55'@@a"x_ #@cC[BSA{Ũ#_a>#S{0S|@@ R@OB)T{èS#_#S {i"@j@H hT˓`@ h@h ITh { @S¨#_#S[c{O0?ҿ=( R0y &@5KYFR9R(C4+ @76@@Ys e95 C@ !@_ kT @kk@ e94d95 C@ @?kT@X ` TCҨ C@7@/ X0yCskT+@ @@Ti@(A@#(I@a@''ҡvh @ e94h@ @ T@ e9I4h@@ e94 @b@qT?h?3"@ K K@)=HA5= @@f95 @CC @҅f94 @Ҁ{Ȩ@@cB[ASĨ#_> UUUUUUUVMAPBMAP#S[c{0ҿ R]( R0y(@@(@T@h@h@i"ITi@h@<h@h"@wITw@@y RR4qATF)h K'isZsxh5F)h K @ e94@ @ T@ e9I4@@ e94&@5KZ&@(}@M8@W@ @@I K Ti2a"By_Bb=[h @ e94h@ @ T@ e9I4@h@@ e94?rTBb=>(@WR@(@` Tt@@9G9@y'y@h@"IT@@(RC9@Cs@H"@IT@h@y RR4qTjG) KC9@CYh[tx5jG) KC9@CHh @ e94h@ @ T@ e9I4h@@ e94@J @ K)A5K#) @(8 @@f95 @@`f94@[{Ũ@@cB[ASĨ#_EVTA#{S[ck+8 C0P@_R(@ `T @JE9_q @sKe94 @K @ T J@Ke9K4  @ J@Ke94"@ Km&@( }@a&@SW)@@@T@hE9(4Oj@kE9P=JcyP#k4H]Sh@9i@H9(A9H9(@yHUU@h@h@9H9h@hA@yHoyk4H}Sh@h@9H9hW(˨_( R0y@hW()S4h@@#;khaU9#Q5@@@`T @J@U @UIe94 @* @ T )@*e9J4  @ )@*e94@hf95b @A#@#.s@Ҩhf94@@ң(H#AY @ e94@ @ T@ e9I4}@@ e94u@ @SW@) KK)A5J#)H@(3 Cr +@kDcC[BSA{ƨ#_ EVTF#{S[ck+V C0P"@t@ K&@( }@ҁ&Fh@ST@h@TO@PP=QAj@kE9QCP=JyP#=k4H]Sh@9H9h@ha@i@Hs)(A9H9(@yH(m@T7HT7@i@(@9H9(i@Hi@(A@yHy(y@H4H}SH9i@(@9H9(m@H{h@h@HwhW( _ ( R0y@hW( @)S@(KW)4h@ix!y#Q5@@@Ti@(@!T7Qh @ e94h@ @ T@ e9I4@@h@@ e94@hf95b @Ms@hf94@@Az @ e94@ @ T@ e9I4a@@ e94Y@ @p NS@T@ K KR0 NNNPI UUUUUUULEVL#S[c{0ҿR!( R0yh'@R(C&@))CYuF(C @IT@@A&@*˿T('@R))CYvF(C @IT@@'('@*T&@6K2V@~.&@)K  uS   @@ T@ @)Kh@ h@h @ e94h@ @ T@ e9I4h@@ e94@4*h@jh&@(K("sQ5@ @k}@ R?T(@mI*@@i,( @ e94(@ @? T@ e9L4(@@ e94@J@j @ K)A6K#)@(8 @@f95 @ @kf94@f{Ũ@@cB[ASĨ#_ MAPS#S[c{0ҿRI( R0yh'@(Ch&@9Ktb@~~W4ҸS*h@khF(C @IT@@#_#Q5SA  uS  h&@(KA 4*h&@)Kh@jh h@jh"Q5@  Rk}@H@ T @mI)l@J@i, @Le94 @L @ T J@Le9L4  @ J@Le94@)i@jh @ K)A9K#)@(7 @@hf95b @ms@hf94@{ƨ@@cB[ASĨ#_ QTAB#S[c{0;ҿ+( R0y &@6K&@5K'@(C(A5R4W)@Ysh@9iC@=Si6A@y3 @3@ e95)R !@_kT @cc@ e94d95 @kT@X TCҨk  3@\0yC+) skTWF) @@Th"@w@#>@a@'' @҈@(K+n0h @ e94h@ @ T@ e9I4h@@ e94 @2;4 @@(KK??@ A6@(9 @@f95 @CC@f94 @ {Ȩ@@cB[ASĨ#_s > UUUUUUUOPCO#S[c{0Gҿ#( R0y &@;K0 @@!(KK @@!(KO(FR(C84(7@YsB@IT6@>@? @#@d95%R0xS4@{{@d9h4hd95b!xS4@ X TCҨ հ=?@7=X0yCZswk#T @@T@ @(K#h@o@ @(K'h@!gҡ1h @ e94h@ @ T@ e9I4 @h@@ e94@ @ KK#)=(A;= @@hf95b @CCs@Hhf94 @C{ɨ@@cB[ASĨ#_֬>Ԓ$I$IQUER#{S[ck+O0B9PK_ P=_RR( R0y@#[ TV_78RSU+@@h@H9R@E94@93}S33=3@9(]3]S@_?  !@?kT @_{X{@ e94d95 @kTI'@MX MTHH   B?@X0y@_W"`TV#@U+@V@S@T7@h&@(KH7h&@7KX(˩^!7I ?!T)*@I ?!CTb)*@I ?! 5&Z(!H'@I5 **Y4* H@9H4J&](!H5}}HSX @I ?! Ti@R KJ#)H @(I7h&@;Kh&@8KX(CS4r4*T[;*Y9*W3@ @jhA9qh@(KJ#)@yH^@a@H[AnJ"9CQ5Y@9W3@[;@T@i@;h @ K)A;KJ#)H@(4 i @4Ri *.@j Jj@R( KK#)~@ M4H @(i*i @i b*.@j _!Tj@ Rb( KK#)~@ M4H @(i*h @h.Zj _!Tj@R( KK#)~@ M4H @(i* h @hj@ROAP+= KI#)~@ M4H @(i*OqX9AP+=qH9h&@6K8h&@(}@M;i @j-h@A(KJ#)"BBIT @y86(a=B1X@94i @**h@A(KJ#)zҡ"H@94i @j(h@A(KJ#)kҡi@&h @b K)A6KJ#)H@JR(; h @hi@ K)M4J#)H @(I7h @hi@ K)M4_#)H @(I7h @_hj@  K(RH')H @IM6(I7h&@;Kh&@8K&T(IS҈~A8`t4*[3V;Y9*TCy*@iyB@yHsB@a@Hw[wi @h@A<(KHP< z99#rQ5Y@9V;@[3@TC@y(H#4i @h@(KKH'_'h@ A;H@(4 h @iRhj@ KI#)~@ M4H @(i*h @I'@hj@RA KI#)~@ M4H @(i*h @h4j@RA KI#)~@ M4H @(i*h @hI@94j@iRA KI#)~@ M4H @(i*h @h*]I ?!C Tj@)R KI#)~@ M4H @(i*h&@6K3&](Ch&@(}@Q94V#*@OP=jhA9HC9A9HG9F@a@HXh@i @(KHJ@h@HACw"Q75V#@kh @j@p N K KR0 N0NNPIUUUUUUUCHAN  PRVATASKFLTRWEVT#S{Oh@=#Ay;y#@y2#yhAy4;y#@y2#@yi@)Ay2?y iRAy4?yiAy?9qTR) )=S?qT2#y?yiBC94iM2#y+y7yI )IS/yi@*}S3yiC9S9iC9W9i@*}S/yj@J@42'y#y @҈@C(K#{èS#_#S[{($A#yyS?IT5@hvr`ThSc_4BCZ{¨[AS¨#_#S[ck#{h&@(C&@6K,44*3"@  K3@(@iz (@izFcAy(C"@* K)#HKyirR K"Cq"@ K~A347@*hv>S87@Qhv"M(C 5*7@RivMCHXsR!Ms T"Q5@@ @Z#@{Q< K K#)@ @<#)c@ *iA*#)A+@1A( @5@@@J @ K)A6K#)@(4 {Ǩ#@kCcB[ASŨ#_TEMPTTBL#{S[ck+>0PSH47A#E@@) S 4O_cP=_yRRRS4A7@CSeqTqTqTAK@;R<S 9R A@=@C>NfsS5H3@#* 5'*5&**@QBACQ@@?T @!T@@T@byS5+@kDcC[BSA{ƨ#_ >#{!'_> A|A|A|A|@_#S[c{u@Tw @H T @? THU˿T U?4!?T Ӏ}vRӿ)Tt@UoNxw {cB[ASè#_ֹ>#{h@ ~(ia(!J R{#_H ~(i`(!>#S[{t@@ R?j(R @?jT R{@[ASè#_0NB0 B0B0.B0RB0zBCq1@c1_q@1@c0TC_ {{_#{(@@ {#_a#{@ @?k{#_a#{p2{#_a#{C@95BA/ {#_a#{ ȱ(@c(ȱc(I@ kTC?C ߈ c((@ {A#_a csm#{@{#_#{@{#_#{@{#_#{@{#_#{@{#_#{@{#_#{@{#_#{@{#_#{@C{#_#{c{#_#{{#_#{@ @}ARR: #{ARR2 #{ARR* #{@@ @@RR #{#A@RR #{@h{#_#{H@qTH@yH@#{#_#{{#_#{"l{#_#{c{#_#{{#_#{{#_#{{#_#{m{#_#{+@qT+@y+@k{#_#{#X{#_#{@qT@y@J{#_#{@qT@y@H{#_#{C@C{#_#{C@CC{#_#{c{#_#{@{#_#{@CS{#_#{@ {#_#{@3{#_#{@# {#_#{@{#_#{@C{#_#{@C{#_#{@{#_#{@C {#_#{@C{#_#{@!{#_#{@ @?k{#_a#{{#_#{{#_#{@C{#_#{@{#_#{@{#_#{@{#_#{@}{#_#{@{#_#{@o{#_#{@#|{#_#{@u{#_#{@n{#_#{@ #{#_#{@C{#_#{@e{#_#{@C>{#_#{@7{#_#{@CD{#_#{@I{#_#{B{#_#{B@{#_#{@{#_#{@{#_#{@#"{#_#{@c{#_#{@{#_#{@{#_#{@{#_#{@{#_#{@{#_#{@{#_#{I7@@R(@*6H)H!**  0 {A#_a#{@;@@@- ?@RH*{  @ {A#_a#{@RH+l  0 {#_a#{@#%{#_#{@T{#_#{@M{#_#{A:GRR #{A.GRR #{@@[A'GRR #{A @@pRR #{{#_#{c{#_#{@{#_#{C@ C{#_#{C@CC{#_#{C@C{#_#{C@C=C{#_#{C@CC{#_#{C@C{#_#{C@JC{#_#{C@CC{#_#{C@CC{#_#{C@C{#_#{C@C{#_#{@#2{#_#{@C{#_#{@{#_#{@{#_#{{#_#{@{#_#{@{#_#{@{#_#{@C{#_#{@Ch{#_#{C@_C{#_#{C@VC{#_#{H@qTH@yH@G{#_#{H@qTH@yH@9{#_#{c{#_#{@+{#_#{@#{#_#{ #{#_#{C@#C{#_#{C@GC{#_#{C@vC{#_#{C@C{#_#{@ce{#_#{G{#_#{@uZ{#_#{g@@&{#_a#{ck{#_#{CN_{#_#{_{#_#{cBh{#_#{C{#_#{+@ @p@/@RRO #{{#_#{#@!{#_#{ARR8 #{ARR0 #{ARR( #{ @@vERR #{@ @ARR #{AWERR  #{ARR #{@ @{A#_a#{(?{#_a#{(>{#_a@#{  {#_#{ ǖ{#_#{@qT@y#@ {#_#{{#_#{H@qTH@yH@@Β{#_#{#@qT#@y#C@{#_#{{#_#{ڒ{#_#{cӒ{#_#{#@qT#@y#cŒ{#_#{CΒ{#_#{ {#_a#{{#_#{cB{#_#{{#_#{c{#_#{+{#_a#{{#_#{C"{#_#{) {#_ap#{C{#_#{g{#_#{@#F{#_#{?{#_#{8{#_#{K{#_#{#{#_#{{#_#{@{#_#{@ϐ{#_#{{#_#{H!h@T`@"y{A#_#{h 0(!@94 @yA?{#_#{Hh@T`@Ӱ"y{A#_#{H!h@T`@Ӝ"y{A#_#{h 0(!@94 @yA?{#_#{H!h@T`@x"y{A#_#{Hh@T`@d"y{A#_#{H!h@T`@P"y{A#_ha2#{H!h@T`@8"y{A#_#{Hh@T`@$"y{A#_#{h A0(!@94 @yA?{#_#{Hh@T`@"y{A#_#{H!h@T`@"y{A#_#{Hh@T`@"y{A#_#{Hh@T`@"y{A#_#{H!h@T`@Ӱ"y{A#_#{Hh@T`@Ӝ"y{A#_h0 #{2`@h @|~ {A#_#{H! h@T`@p"y{A#_#{H h@T`@\"y{A#_#{H! h@T`@H"y{A#_#{sh"Fa1`1@<`"F 4{A#_H %@(( # ' `( r( ( ' ' ' ' ' l' \' L' 6' $' ' ' & & & ( & & & & |& ( n% P% :% % % $ $ $ ~$ n$ Z$ L$ 2$ "$ # & # # # j# T# @# ( ( ( $ $ $  ( # $ # R) @) ( )  & @ R ^ j ! ! (! to locale. Unknown exceptionMessageIdTypedefSeverityNamesFacilityNamesLanguageNamesMessageIdSeverityFacilitySymbolicNameLanguageOutputBaseMessageIdTypedefMacro.mc.dbg.rc.xsdrtrt,ccs=UTF-16LEunable to open input fileunable to open output file - %lserrorwarning%ls(%u) : %hs : Out of memory reading charsexpected keyword - %lsinvalid number - %lsinvalid character (0x%02x)bad array new lengthstring too longwtwt,ccs=UTF-8wt,ccs=UTF-16LETEMP.BINOut of memory reading messagesmessage "%.*ls" (0x%04x) has no translation for language %ls (0x%04x)1 WEVT_TEMPLATE "%ls%ls" Out of memory writing to output file - %ls.binwbWriting %ls LANGUAGE 0x%x,0x%x 1 11 "%ls_%ls" 1 11 "%ls" [%08lx .. %08lx] - %lu bytes Total of %lu messages, %lu bytes DWORD%ls : error : The symbol or name cannot be empty.The symbol or name "%ls" is invalid.The symbol or name "%ls" has been used more than once.// // Values are 32 bit values laid out as follows: // // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 // +-+-+-+-+-+---------------------+-------------------------------+ // |S|R|C|N|r| Facility | Code | // +-+-+-+-+-+---------------------+-------------------------------+ // // where // // S - Severity - indicates success/fail // // 0 - Success // 1 - Fail (COERROR) // // R - reserved portion of the facility code, corresponds to NT's // second severity bit. // // C - reserved portion of the facility code, corresponds to NT's // C field. // // N - reserved portion of the facility code. Used to indicate a // mapped NT status value. // // r - reserved portion of the facility code. Reserved for internal // use. Used to indicate HRESULT values that are not status // values, but are instead message ids for display strings. // // Facility - is the facility code // // Code - is the facility's status code // // // Values are 32 bit values laid out as follows: // // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 // +---+-+-+-----------------------+-------------------------------+ // |Sev|C|R| Facility | Code | // +---+-+-+-----------------------+-------------------------------+ // // where // // Sev - is the severity code // // 00 - Success // 01 - Informational // 10 - Warning // 11 - Error // // C - is the Customer code flag // // R - is a reserved bit // // Facility - is the facility code // // Code - is the facility's status code // // // Define the facility codes // #define %-32ls %ld #define %-32ls 0x%lX // // Define the severity codes // // // This file maps message Id values in to a text string that contains // the symbolic name used for the message Id. Useful for debugging // output. // struct { %ls MessageId; char *SymbolicName; } %lsSymbolicNames[] = {// // MessageId: %ls // MessageId: 0x%08lXL (No symbolic name defined) // // MessageText: // // (%ls) %ls, (char*) "%ls",#define %-32ls %ls(%ldL)#define %-32ls %ls(0x%08lXL)#define %-32ls ((%ls)%ldL)#define %-32ls ((%ls)0x%08lXL)#define %-32ls %ldL#define %-32ls 0x%08lXL %ls%ls(%d) : error : Duplicate message ID - 0x%x (%ls and %ls) Duplicate message ID - 0x%lx// %hs// %lsMC: Unable to open %ls for input MC: Compiling %ls Symbol name must follow %ls=Equal sign must follow %lsIllegal value for %ls=Number must follow %ls=Left parenthesis name must follow %ls=Invalid message file token - '%ls' (%ls) 0xFFFFFFFF, NULL }; Out of memory parsing memory definitions.Invalid message definition - text missing.Number must follow %ls=+Symbol name must follow %ls=+Message Id value (%lx) too largeInvalid message definition token - '%ls'MC: failed to allocate memory. . No symbolic name defined for0x%08lXL // %lsLanguageId=MessageId=Unterminated message definitionMessage text too long (> %lu)Message text larger than size specified by -m %luFile name must follow =%lu:Colon must follow =%luEqual sign name must follow %lsValue is too large (> %lx)CodePage %d is invalidUsing CodePage %d for Language %04x CodePage must follow %ls=:Invalid name - %lsMissing name after %ls=map/set too longRedefining value of %lsOut of memory capturing name.Out of memory copying string.rbmc : error : errno %u trying to open file <%ls>. mc : error : More than one message file was specified. Only one message file can be compiled per invocation of mc. \Microsoft (R) Message Compiler Version %u.%u.%04u Copyright (c) Microsoft Corporation. All rights reserved. Usage: MC [-?aAbcdnouUv] [-m ] [-h ] [-e ] [-r ] [-x ] [-w ] [-W ] [-z ] [-cp ] [-km | -um | -generateProjections | -cs ] [-mof] [-p ] [-P ] [] [...] -? - Displays this message. -a - Indicates that the input .mc file is CP_ACP (default). Ignored if the .mc file has a UTF-8 or UTF-16LE BOM. -A - DEPRECATED. Encode .BIN messages using CP_ACP (ANSI). -b - .BIN filename should have .mc filename included for uniqueness. -c - Sets the Customer bit in all of the message IDs. -d - FACILITY and SEVERITY values should be printed as decimal in header file (default is hexadecimal). -e - The extension for the C include file (1-3 chars). -h - The path for the C include file. Default is: ".\" -m - Warn if any message exceeds characters. -n - NUL-terminate all message table strings. -o - Generate OLE2 header file (use HRESULT definition instead of status code definition). -r - The directory for the RC include file and the binary message resource files it includes. Default is: ".\" -s - Generate a separate binary resource per provider. Generate summary global resource MCGenResource.BIN. -t - Validate against baseline resource. -u - Indicates that the input .mc file is UTF-16LE. This flag is required when the .mc file is UTF-16LE without a BOM. Ignored if the .mc file has a UTF-8 or UTF-16LE BOM. -U - Encode .BIN messages using UTF-16LE (default). -U8 - Encode .BIN messages using UTF8. Resulting message table is supported on Windows 10 2004 (build 19041) or later. -v - Enables verbose output. -W - The path to a custom winmeta.xml file (rarely needed). -w - The path to a custom eventman.xsd file (rarely needed). -x - The path for the .dbg C include file that maps message IDs to their symbolic names. This option can only be used with a message text file. -z - The base name of the generated files. Default is the base name of the input file. - The name of a manifest file to compile. - The name of a message file to compile (no more than 1). Code Generation Options ----------------------- -cp - Generated text files will use the specified character encoding. Valid encoding names include "ansi" (default), "utf-8", and "utf-16". The UTF encodings will add a byte order mark (BOM). -um - Generate C/C++ logging macros. -km - Generate C/C++ logging macros with activity ID. -generateProjections - Generate logging interfaces projectable to JavaScript. -generateTemplateProjections - Generate logging interfaces projectable to JavaScript that reduce projection cost. -generateTemplateStubs - Override the default template wrapping stubs file from WinRTTemplateProviderStubs.js to .js. -cs - Generate C# (managed) logging class based on the .NET 3.5 Eventing class. -css - Generate static C# (managed) logging class based on the .NET 3.5 Eventing class. -co - Generate EventWrite macros that invoke an MCGEN_CALLOUT macro. Not supported (ignored) for C#. -mof - DEPRECATED. Generate downlevel (XP-compatible) functions and macros for ETW. Generate a MOF file describing the ETW events. The MOF file will be generated in the location specified by the "-h" switch. -p - Defines the macro name prefix applied to each generated logging macro. Default is: "EventWrite" -P - Specifies text at the start of each event symbol name to remove before forming the macro names. -contextSuffix - Defines the macro name suffix applied to each generated FORCONTEXT logging macro. Default is: "ForContext" Warning Suppression ----------------------- -wdEncoding - No warning for unrecognized XML encoding. -wdInsert - No warning for string with unexpected inserts. Notes: - The 'A' and 'mof' switches are deprecated and will be removed in the future. - At most one .mc file can be processed per invocation of mc.exe. - The mofcomp and rc tools do not currently support UTF-8 input. If a UTF-8 encoding is requested, the MOF and RC files will be generated as UTF-16LE. vector too longMSG0000%dMSG00001bad allocationInsertEncodingmc : error : %hs failed 0x%X CoCreate(DOMDocument60)xmlDoc.put_asyncCoCreate(XMLSchemaCache60)xmlDoc.get_parseErrormc : error : file "%ls" not found %ls : error : %ls%ls(%u,%u) : error : %lsbuilt-in.xsdmc : error : Failed to create memory stream mc : error : Failed to load "%ls" http://schemas.microsoft.com/win/2004/08/eventsmc : error : Failed to add "%ls" to the schema cache (expecting a schema for namespace "%ls") xmlDoc.putref_schemashttp://www.w3.org/2001/XMLSchemahttp://manifests.microsoft.com/win/2004/08/windows/eventshttp://schemas.microsoft.com/win/2004/08/events/tracexmlNode.get_textxmlns:evt='http://schemas.microsoft.com/win/2004/08/events' xmlns:asm='urn:schemas-microsoft-com:asm.v3'/evt:instrumentationManifest/evt:instrumentation/evt:events/evt:provider/asm:assembly/asm:instrumentation/evt:events/evt:providerevt:templates/evt:template//evt:dataSelectionNamespacesxmlDoc.setSelectionNamespacesxmlDoc.selectNodesnodeList.get_lengthinTypeoutTypeproviderList->nextNodeproviderNode.selectNodestypeList.nextNodedataNode.AsElementdataNode.GetInTypedataNode.GetOutTypenamespace::providerNode.selectSingleNodedataElement.selectSingleNode%ls : error : Invalid namespace prefix for type '%ls'. Prefix must resolve to one of the following namespaces: '%ls', '%ls', '%ls'. INCLUDEmc%ls : warning : %hs (-wd%ls) %ls : warning : %hs %ls : error : %hs %ls(%u,%u) : error : %hs $(mc.__mcId__Manifest File Name: %ls. Schema File Name: %ls. Winmeta File Name: %ls. MetadataResourceFileName: %lsMC: error : Failed creating provider resources for manifest %ls %ls : error : The generated header file for the .mc file and the manifest will not have unique names. r, ccs=UNICODEinstrumentationManParseXml: Failed HR = %d %ls MC: error : Failed creating single provider resources for manifest %ls man*Target dir is %ls No files Found in %ls File %ls Failed to parse manifest : %ls Couldn't find next file, GetLastError() = 0x%08X. Failed to create global resource file mc : error : CoInitialize failed, error = 0x%x .WinRTTemplateProviderStubsApplicationSuccessInformationalWarningErrorEnglish.\hcontextSuffixcsscsmc : error : Missing name space argument for -cs or -css switch. mc : error : Missing argument for -%ls switch. cocpmc : error : Invalid encoding argument for -cp "%ls". mc : error : Invalid argument for -e switch. mc : error : Missing argument for -%c switch. generateTemplateProjectionsgenerateTemplateStubsmc : error : generateTemplateStubs argument too large mc : error : Missing argument for -generateTemplateStubs switch. generateProjectionsmc : error : Invalid switch: %c. kmmofmc : error : Invalid argument (%ls) for -%c switch. NoVersionmc : error : Prefix too large, max size allowed 16 chars mc : error : Invalid baseline path name %ls mc : error : Missing Baseline argument for -%c switch. umu8mc : error : Invalid switch: -%ls. mc : error : Choose -um, -km or -cs option mc : error : -km is not allowed with -um, -winrt or -cs option mc : error : choose either -generateProjections or -cs option, not both mc : error : choose either -um or -cs option, not both mc : error : Both ANSI and Unicode input were specified. mc : error : Both ANSI and Unicode output were specified. mc : error : Both UTF8 and Unicode output were specified. mc : error : Both ANSI and UTF8 output were specified. mc : error : -u switch was specified but .mc file "%ls" has no BOM and does not appear to be UTF-16. mc : error : -u switch was not specified but .mc file "%ls" has no BOM and appears to be UTF-16. mc : error : -x switch cannot be used without a legacy .mc file! mc : error : ErrorCode=0x%x mc : error : ErrorCode=%u mc : error : %hs mc : error : Internal error invalid string_view positionjو_@2Qjو_@2Qansiutf8utf-8utf16utf16leutf-16utf-16leucs2ucs2leucs-2ucs-2le3)6{O>`Ȅ97EDEjޕ3)6{O>` Root element of an instrumentation manifest. Not a valid root element for an instrumentation manifest. Used when storing instrumentation data within other XML documents. An instrumentation manifest may contain MESSAGETABLE strings, ETW providers, and/or a Windows Performance Counter V2 provider. Manifests containing MESSAGETABLE strings can be compiled with mc.exe. Manifests containing ETW providers can be compiled with mc.exe, installed or uninstalled with wevtutil.exe, and used with TDH APIs or ETW tools to decode ETL traces. Manifests containing a Performance Counter V2 provider can be compiled with ctrpp.exe, installed using lodctr.exe, and uninstalled using unlodctr.exe. Note that instrumentation manifests must be uninstalled before they can be reinstalled. May contain MESSAGETABLE strings, ETW providers, and/or a Windows Performance Counter V2 provider. The events element is used for MESSAGETABLE strings and ETW providers. The counters element (defined in the counterman.xsd schema) is used for a Windows Performance Counter V2 provider. Contains MESSAGETABLE strings and ETW providers. Defines an ETW provider. A provider is a unit of organization for ETW event definitions. At runtime, the provider GUID is used when opening the ETW handle. When collecting a trace, the provider's control GUID is used to enable or disable the collection of the provider's events. Within the trace data, the provider GUID identifies the provider as the source of the event. When the trace data is processed, the provider GUID is used to match an event to the manifest that contains the event definitions needed to decode it. A manifest-based ETW provider has a decode GUID (used to locate the manifest) and a control GUID (used to enable the provider or filter events). Normally, the same GUID (the provider guid) is used for both decode and control. If distinct values are needed for the decode and control GUIDs, set the "guid" attribute to the decode GUID and set the "controlGuid" attribute to the control GUID. Note that to avoid provider name conflicts, if the controlGuid attribute is used, the provider name must end with the decode guid, e.g. guid="{54bab802-bb0b-4b4a-9ce9-7360a0120b3e}" name="MyProvider.54bab802bb0b4b4a9ce97360a0120b3e" controlGuid="{74d557d9-4a8e-4a3f-9a32-3f1a0eab71ba}" If a provider uses distinct decode and control GUIDs, the resulting traces may not decode properly when decoded on Windows versions prior to Windows 10 Fall Creators Update (2017). Note that distinct decode and control GUIDs are typically used to support tool-generated manifests and are generally unnecessary for hand-maintained manifests. Name of the executable file into which the provider's non-localized template resource is linked, usually the same as the provider's binary. Since the full install path of the provider binary is usually determined at install time, the value of this attribute is usually overridden by using wevtutil.exe's /rf:FullResourceFilePath parameter. Name of the executable file into which the provider's localizable message resource is linked, usually the same as the provider's binary. Since the full install path of the provider binary is usually determined at install time, the value of this attribute is usually overridden by using wevtutil.exe's /mf:FullMessageFilePath parameter. Deprecated. Use channels to describe the destinations for your events. Each channel you define here will show up in the Windows Event Viewer. Declares a channel that is used by events in this manifest but is not owned by this manifest. This may be used to reference well-known channels from winmeta.xml or to reference channels owned by other components that this manifest will depend upon. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Defines a channel that is used by events in this manifest and is owned by this manifest. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Default publishing session/security if not specified explicitly by the channel access attribute. Channel logging config Channel publishing config Amount of memory allocated for the session buffers (KB) Number of etl files to create across enablement Minimum number of session buffers Maximum number of session buffers Buffer flush interval (sec) Clock resolution Defines custom levels for use by this provider. Levels are used to filter events. Note that winmeta.xml provides predefined levels win:LogAlways, win:Critical, win:Error, win:Warning, win:Informational, win:Verbose. Custom levels must use values 16-255. Defines a custom level for use by this provider. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Defines custom tasks for use by this provider. A task is a localizable string label that can be applied to an event. Note that winmeta.xml provides predefined task win:None. Custom tasks must use values 1-65535. Defines a custom task for use by this provider. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Defines custom opcodes for use by this provider. An opcode is a semantic category for certain special types of event. For example, the Start opcode is used on events that trace the beginning of an activity, and the Stop opcode is used on events that trace the end. Note that winmeta.xml provides predefined opcodes win:Info, win:Start, win:Stop, win:DC_Start, win:DC_Stop, win:Extension, win:Reply, win:Resume, win:Suspend, win:Send, win:Receive. Custom opcodes must use values 10-239. Defines a custom opcode for use by this provider. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Defines custom keywords for use by this provider. A keyword is a bit (flag) that specifies a category that an event may belong to. Keywords are used to filter events. Note that winmeta.xml provides several predefined keywords. These keywords should only be used for their described purpose. The reserved keywords should not be used directly (mc.exe adds the reserved keywords to events as appropriate based on the event's channel). Custom keywords must use the low 48 bits of the keyword mask. Defines a custom keyword for use by this provider. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Each keyword must have a unique name, which is used to reference the keyword from the events section of the manifest. Mask is a 64-bit value in which only one bit is set. Mask value cannot be zero. The high 16 bits of the mask are reserved for definition by winmeta.xml. Defines custom enumerated types (maps) for use by this provider. Defines an enumeration value for use in this value map. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Defines a flag value for use in this bit map. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Defines a value for use in this pattern map. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Use templates to describe the payload logged by an event. Many events can share a template. Tags is a 28-bit user-defined metadata value applied to each event that uses this template. The event producer and consumer coordinate to define the semantics of the tags value. During event processing on Windows 10 Fall Creators Update (2017) or later, this value can be retrieved from the TRACE_EVENT_INFO Tags field. Defines the name and type of an event property (field). Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Tags is a 28-bit user-defined metadata value applied to this property. The event producer and consumer coordinate to define the semantics of the tags value. During event processing on Windows 10 Fall Creators Update (2017) or later, this value can be retrieved from the EVENT_PROPERTY_INFO Tags field. Defines the properties (fields) of an event structure. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Tags is a 28-bit user-defined metadata value applied to this property. The event producer and consumer coordinate to define the semantics of the tags value. During event processing on Windows 10 Fall Creators Update (2017) or later, this value can be retrieved from the EVENT_PROPERTY_INFO Tags field. Represents binary data in classic eventlog API Defines the events logged by this provider. Defines the event's value (ID), name, level, keywords, fields, etc. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Also referred to as the Event-Id. A manifest-based ETW event is uniquely identified by the {Provider-Guid,Event-Id,Event-Version} tuple. Non-localized event name. During event processing on Windows 10 Fall Creators Update (2017) or later, this value can be retrieved from the TRACE_EVENT_INFO EventNameOffset field. Non-localized event attributes. This should be a semicolon-delimited list of name=value attributes associated with the event. During event processing on Windows 10 Fall Creators Update (2017) or later, this value can be retrieved from the TRACE_EVENT_INFO EventAttributesOffset field. Defined attributes include: FILE=Filename of source code associated with event; LINE=Line number of source code associated with event; FUNC=Function name associated with event; MJ=Major component associated with event (component name); MN=Minor component associated with event (subcomponent name). Values containing semicolons or double-quotes should be quoted using double-quotes; double-quotes within the value should be doubled. Example: attributes='FILE=source.cpp;LINE=123;MJ="Value; ""Quoted"""' Note that most of these attributes are intended for use with tool-generated manifests and may not be appropriate for use with hand-maintained manifests. For example, the FILE ane LINE attributes are not generally appropriate for use in a hand-maintained manifest, since a single event might be emitted from multiple source code locations and the source code locations will change over time. The FILE and LINE attributes are intended for use in cases where the manifest is regenerated (with a new GUID) by a code generation tool each time the source code changes. Reference to the name of a predefined level (from winmeta.xml) or the name of a custom level (defined in the <levels> section). If not specified, the event's level will default to "LogAlways". Event level is a primary filtering attribute. All events should be assigned a meaningful level (win:Critical, win:Error, win:Warning, win:Informational, or win:Verbose) to support effective filtering during event collection. Reference to the name of a custom level defined in the <keywords> section. If not specified, the event will have no keywords set and will bypass most keyword-based event filtering. Event keyword is a primary filtering attribute. All events should be assigned at least one meaningful keyword to support effective filtering during event collection. Increment the version of an event if its template is modified. Use this to indicate that this event has been removed and will not be logged by this version of the provider. The description of the event should be retained in this manifest so that if an etl file collected from an older version of the provider on a different machine is brought to this machine, it can be correctly decoded on this machine. Use this to indicate that the template associated with this event contains valid WinRT types i.e. the event payload fields can come from arguments of projected WinRT methods. This attribute will be used if generating code for WinRT projection APIs. Defines a set of custom filters for use in this provider. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Defines a custom filter for use in this provider. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Specifies values for this provider's provider traits. The provider traits consist of a small binary blob that is registered with the ETW runtime via EventSetInformation and included with each call to EventWrite. The traits blob contains information about a provider's name, decode GUID, and group GUID. When provider traits are needed (i.e. when the provider has different values for its control GUID and its decode GUID or when the traits element is present), the MC tool's -um or -km codegen will generate a provider traits blob, will generate code to automatically register the blob as part of EventRegister, and will include the blob in each call to EventWrite. Optional. Default is false. If true, the provider's name will be included in the provider traits. If false, the provider's name will be left blank to reduce the size of the trace file. Including the provider name makes it possible to filter an event by provider name. Optional. Specifies that this provider is a member of the specified provider group. By default, the provider is not a member of any provider group. Decimal or hexadecimal message ID. Decimal should have no leading 0s. Hexadecimal requires '0x' prefix. Deprecated. Specifies an alias for this string table entry. Contains one or more resource tables, each of which contains resources for a single locale. This attribute is not used. Contains resources for a single locale. Specify the locale of the resources using a Windows locale name, e.g. "en-US". Locale name syntax is documented in MSDN topics such as "locale names" and "LocaleNameToLCID". Localized values of strings referenced in MESSAGETABLE strings and ETW providers. Defines the localized value of a string referenced by an event or a message table in this manifest. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. The stringTableId of the string reference in the ETW provider or the MESSAGETABLE string. For example, if a string is referenced as "$(string.MyString1)" then the id would be "MyString1". The localized string. Not used by Windows or mc.exe. This attribute can be used to describe the usage of the string to aid in tracking and localization. Used only by the Microsoft-provided WinMeta.xml file. WinMeta.xml uses this element to document ETW facilities that are built into the Windows operating system or are commonly used by ETW decoding tools. This includes the definitions of the property types supported by TDH APIs as well as Microsoft-defined constants for well-known event levels, opcodes, and channels. Declares an outType supported by Windows. An outType is a sub-type that extends the inType with additional semantics and presentation details for a property of an ETW event. For example, a property could have inType "AnsiString" (indicating nul-terminated CHAR8 string) and outType "Utf8" (indicating UTF-8 character encoding). Declares an inType supported by Windows. An inType is the type of a property of an ETW event. Every ETW event property declares an inType. The inType fully defines the mechanism for determining the size of a property and also gives a general idea of how the property's value should be interpreted. For example, an inType "Int16" indicates the size is 2 and the property should be interpreted as a signed 16-bit integer. Each inType has a set of outTypes that are supported for use with it. The outType adds semantics or presentation details to the inType. For example, the inType "UInt16" can be used with outType "Port" to indicate that an event property is a big-endian 16-bit Internet protocol port number. Each inType specifies one outType as "default", indicating the behavior that should be used when an ETW property uses the inType but does not specify an outType. Declares that Windows supports the use of the specified outType with this inType. Note that only the attributes of this element are significant. The text content of this element is not used by mc.exe. Deprecated. Specifies an alias for this string table entry. A globally unique identifier in Registry format, e.g. {12345678-4321-ABCD-1234-9ABCDEF012345678}. Use GUIDGen.exe or UUIDGen.exe to create a GUID. Symbol is used for code-generation. It should be a valid C Symbol or an empty string. Is used for code-generation on namespaces which should be valid C++ symbols. E.g. Namespace1._Namespace2.Namespace2 1-2 hexadecimal digits with '0x' prefix. 1-4 hexadecimal digits with '0x' prefix. 1-8 hexadecimal digits with '0x' prefix. 1-16 hexadecimal digits with '0x' prefix. 8-bit unsigned decimal or hexadecimal integer. Decimal should have no leading 0s. Hexadecimal requires '0x' prefix. 16-bit unsigned decimal or hexadecimal integer. Decimal should have no leading 0s. Hexadecimal requires '0x' prefix. 32-bit unsigned decimal or hexadecimal integer. Decimal should have no leading 0s. Hexadecimal requires '0x' prefix. 64-bit unsigned decimal or hexadecimal integer. Decimal should have no leading 0s. Hexadecimal requires '0x' prefix. For a constant-Length property, specify the value (decimal). For a variable-Length property, specify the name of the property that will have the length of this property. Length is required for "Binary" properties. It indicates the size (in bytes) of the property value. Length is optional for "UnicodeString" and "AnsiString" properties. If present, Length indicates the size (in characters) of the property value. If Length is not present, the property is assumed to be nul-terminated. Length is not used for other inTypes. Other inTypes either use a well-known constant size (e.g. Int32 length is 4) or encode the size within the value (e.g. nul-terminated strings end at the first 0 character, and "counted" values start with a 16-bit size). In the case of an array (i.e. when the property has a Count), the same Length value applies to all elements of the array. As a result, it is not generally useful to create an array of variable-Length properties. Note that some decoders only recognize Length properties that immediately precede the corresponding variable-Length property. For constant-Count array, specify the value (decimal). For variable-Count array, specify the name of the property that will have the count of this property. Note that some decoders will treat Count="0" as an error, and some decoders will treat Count="1" as non-array. Note that some decoders only recognize Count properties that immediately precede the corresponding variable-Count property. A reference to a localized string value provided elsewhere. The value of this attribute should be of the form "$(string.stringTableId)", where stringTableId is the "id" attribute of a <string> element defined in the <stringTable> section, or of the form "$(mc.mcSymbolId)", where mcSymbolId is the symbol of a message string defined in an .mc file compiled along with this manifest. A fully-qualified path to a file. Standard Windows environment variables are allowed. Typically, the file is of type .exe, .dll, or .sys. Space-separated list of keywords. To support consistent event filtering, all events should have at least one keyword assigned. @@@=@F0:s *Dw= F//**********************************************************************` //* This is an include file generated by Message Compiler. *` //* *` //* Copyright (c) Microsoft Corporation. All Rights Reserved. *` //**********************************************************************` #pragma once //***************************************************************************** // // Notes on the ETW event code generated by MC: // // - Structures and arrays of structures are treated as an opaque binary blob. // The caller is responsible for packing the data for the structure into a // single region of memory, with no padding between values. The macro will // have an extra parameter for the length of the blob. // - Arrays of nul-terminated strings must be packed by the caller into a // single binary blob containing the correct number of strings, with a nul // after each string. The size of the blob is specified in characters, and // includes the final nul. // - Arrays of SID are treated as a single binary blob. The caller is // responsible for packing the SID values into a single region of memory with // no padding. // - The length attribute on the data element in the manifest is significant // for values with intype win:UnicodeString, win:AnsiString, or win:Binary. // The length attribute must be specified for win:Binary, and is optional for // win:UnicodeString and win:AnsiString (if no length is given, the strings // are assumed to be nul-terminated). For win:UnicodeString, the length is // measured in characters, not bytes. // - For an array of win:UnicodeString, win:AnsiString, or win:Binary, the // length attribute applies to every value in the array, so every value in // the array must have the same length. The values in the array are provided // to the macro via a single pointer -- the caller is responsible for packing // all of the values into a single region of memory with no padding between // values. // - Values of type win:CountedUnicodeString, win:CountedAnsiString, and // win:CountedBinary can be generated and collected on Vista or later. // However, they may not decode properly without the Windows 10 2018 Fall // Update. // - Arrays of type win:CountedUnicodeString, win:CountedAnsiString, and // win:CountedBinary must be packed by the caller into a single region of // memory. The format for each item is a UINT16 byte-count followed by that // many bytes of data. When providing the array to the generated macro, you // must provide the total size of the packed array data, including the UINT16 // sizes for each item. In the case of win:CountedUnicodeString, the data // size is specified in WCHAR (16-bit) units. In the case of // win:CountedAnsiString and win:CountedBinary, the data size is specified in // bytes. // //***************************************************************************** // // MCGEN_DISABLE_PROVIDER_CODE_GENERATION macro: // Define this macro to have the compiler skip the generated functions in this // header. // #ifndef MCGEN_DISABLE_PROVIDER_CODE_GENERATION #endif // MCGEN_DISABLE_PROVIDER_CODE_GENERATION // // MCGEN_EVENT_ENABLED macro: // Override to control how the EventWrite[EventName] macros determine whether // an event is enabled. The default behavior is for EventWrite[EventName] to // use the EventEnabled[EventName] macros. // #ifndef MCGEN_EVENT_ENABLED #define MCGEN_EVENT_ENABLED(EventName) EventEnabled##EventName() #endif // // MCGEN_EVENT_ENABLED_FORCONTEXT macro: // Override to control how the EventWrite[EventName]_ForContext macros // determine whether an event is enabled. The default behavior is for // EventWrite[EventName]_ForContext to use the // EventEnabled[EventName]_ForContext macros. // #ifndef MCGEN_EVENT_ENABLED_FORCONTEXT #define MCGEN_EVENT_ENABLED_FORCONTEXT(pContext, EventName) EventEnabled##EventName##_ForContext(pContext) #endif #if !defined(MCGEN_TRACE_CONTEXT_DEF) #define MCGEN_TRACE_CONTEXT_DEF // This structure is for use by MC-generated code and should not be used directly. typedef struct _MCGEN_TRACE_CONTEXT { TRACEHANDLE RegistrationHandle; TRACEHANDLE Logger; // Used as pointer to provider traits. ULONGLONG MatchAnyKeyword; ULONGLONG MatchAllKeyword; ULONG Flags; ULONG IsEnabled; UCHAR Level; UCHAR Reserve; USHORT EnableBitsCount; PULONG EnableBitMask; const ULONGLONG* EnableKeyWords; const UCHAR* EnableLevel; } MCGEN_TRACE_CONTEXT, *PMCGEN_TRACE_CONTEXT; #endif // MCGEN_TRACE_CONTEXT_DEF #if !defined(MCGEN_LEVEL_KEYWORD_ENABLED_DEF) #define MCGEN_LEVEL_KEYWORD_ENABLED_DEF // // Determines whether an event with a given Level and Keyword would be // considered as enabled based on the state of the specified context. // Note that you may want to use MCGEN_ENABLE_CHECK instead of calling this // function directly. // FORCEINLINE BOOLEAN McGenLevelKeywordEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ UCHAR Level, _In_ ULONGLONG Keyword ) { // // Check if the event Level is lower than the level at which // the channel is enabled. // If the event Level is 0 or the channel is enabled at level 0, // all levels are enabled. // if ((Level <= EnableInfo->Level) || // This also covers the case of Level == 0. (EnableInfo->Level == 0)) { // // Check if Keyword is enabled // if ((Keyword == (ULONGLONG)0) || ((Keyword & EnableInfo->MatchAnyKeyword) && ((Keyword & EnableInfo->MatchAllKeyword) == EnableInfo->MatchAllKeyword))) { return TRUE; } } return FALSE; } #endif // MCGEN_LEVEL_KEYWORD_ENABLED_DEF #if !defined(MCGEN_EVENT_ENABLED_DEF) #define MCGEN_EVENT_ENABLED_DEF // // Determines whether the specified event would be considered as enabled based // on the state of the specified context. Note that you may want to use // MCGEN_ENABLE_CHECK instead of calling this function directly. // FORCEINLINE BOOLEAN McGenEventEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ PCEVENT_DESCRIPTOR EventDescriptor ) { return McGenLevelKeywordEnabled(EnableInfo, EventDescriptor->Level, EventDescriptor->Keyword); } #endif // MCGEN_EVENT_ENABLED_DEF // // MCGEN_USE_KERNEL_MODE_APIS macro: // Controls whether the generated code uses kernel-mode or user-mode APIs. // - Set to 0 to use Windows user-mode APIs such as EventRegister. // - Set to 1 to use Windows kernel-mode APIs such as EtwRegister. // Default is based on whether the _ETW_KM_ macro is defined (i.e. by wdm.h). // Note that the APIs can also be overridden directly, e.g. by setting the // MCGEN_EVENTWRITETRANSFER or MCGEN_EVENTREGISTER macros. // #ifndef MCGEN_USE_KERNEL_MODE_APIS #ifdef _ETW_KM_ #define MCGEN_USE_KERNEL_MODE_APIS 1 #else #define MCGEN_USE_KERNEL_MODE_APIS 0 #endif #endif // MCGEN_USE_KERNEL_MODE_APIS // // MCGEN_HAVE_EVENTSETINFORMATION macro: // Controls how McGenEventSetInformation uses the EventSetInformation API. // - Set to 0 to disable the use of EventSetInformation // (McGenEventSetInformation will always return an error). // - Set to 1 to directly invoke MCGEN_EVENTSETINFORMATION. // - Set to 2 to to locate EventSetInformation at runtime via GetProcAddress // (user-mode) or MmGetSystemRoutineAddress (kernel-mode). // Default is determined as follows: // - If MCGEN_EVENTSETINFORMATION has been customized, set to 1 // (i.e. use MCGEN_EVENTSETINFORMATION). // - Else if the target OS version has EventSetInformation, set to 1 // (i.e. use MCGEN_EVENTSETINFORMATION). // - Else set to 2 (i.e. try to dynamically locate EventSetInformation). // Note that an McGenEventSetInformation function will only be generated if one // or more provider in a manifest has provider traits. // #ifndef MCGEN_HAVE_EVENTSETINFORMATION #ifdef MCGEN_EVENTSETINFORMATION // if MCGEN_EVENTSETINFORMATION has been customized, #define MCGEN_HAVE_EVENTSETINFORMATION 1 // directly invoke MCGEN_EVENTSETINFORMATION(...). #elif MCGEN_USE_KERNEL_MODE_APIS // else if using kernel-mode APIs, #if NTDDI_VERSION >= 0x06040000 // if target OS is Windows 10 or later, #define MCGEN_HAVE_EVENTSETINFORMATION 1 // directly invoke MCGEN_EVENTSETINFORMATION(...). #else // else #define MCGEN_HAVE_EVENTSETINFORMATION 2 // find "EtwSetInformation" via MmGetSystemRoutineAddress. #endif // else (using user-mode APIs) #else // if target OS and SDK is Windows 8 or later, #if WINVER >= 0x0602 && defined(EVENT_FILTER_TYPE_SCHEMATIZED) #define MCGEN_HAVE_EVENTSETINFORMATION 1 // directly invoke MCGEN_EVENTSETINFORMATION(...). #else // else #define MCGEN_HAVE_EVENTSETINFORMATION 2 // find "EventSetInformation" via GetModuleHandleExW/GetProcAddress. #endif #endif #endif // MCGEN_HAVE_EVENTSETINFORMATION // // MCGEN Override Macros // // The following override macros may be defined before including this header // to control the APIs used by this header: // // - MCGEN_EVENTREGISTER // - MCGEN_EVENTUNREGISTER // - MCGEN_EVENTSETINFORMATION // - MCGEN_EVENTWRITETRANSFER // // If the the macro is undefined, the MC implementation will default to the // corresponding ETW APIs. For example, if the MCGEN_EVENTREGISTER macro is // undefined, the EventRegister[MyProviderName] macro will use EventRegister // in user mode and will use EtwRegister in kernel mode. // // To prevent issues from conflicting definitions of these macros, the value // of the override macro will be used as a suffix in certain internal function // names. Because of this, the override macros must follow certain rules: // // - The macro must be defined before any MC-generated header is included and // must not be undefined or redefined after any MC-generated header is // included. Different translation units (i.e. different .c or .cpp files) // may set the macros to different values, but within a translation unit // (within a single .c or .cpp file), the macro must be set once and not // changed. // - The override must be an object-like macro, not a function-like macro // (i.e. the override macro must not have a parameter list). // - The override macro's value must be a simple identifier, i.e. must be // something that starts with a letter or '_' and contains only letters, // numbers, and '_' characters. // - If the override macro's value is the name of a second object-like macro, // the second object-like macro must follow the same rules. (The override // macro's value can also be the name of a function-like macro, in which // case the function-like macro does not need to follow the same rules.) // // For example, the following will cause compile errors: // // #define MCGEN_EVENTWRITETRANSFER MyNamespace::MyClass::MyFunction // Value has non-identifier characters (colon). // #define MCGEN_EVENTWRITETRANSFER GetEventWriteFunctionPointer(7) // Value has non-identifier characters (parentheses). // #define MCGEN_EVENTWRITETRANSFER(h,e,a,r,c,d) EventWrite(h,e,c,d) // Override is defined as a function-like macro. // #define MY_OBJECT_LIKE_MACRO MyNamespace::MyClass::MyEventWriteFunction // #define MCGEN_EVENTWRITETRANSFER MY_OBJECT_LIKE_MACRO // Evaluates to something with non-identifier characters (colon). // // The following would be ok: // // #define MCGEN_EVENTWRITETRANSFER MyEventWriteFunction1 // OK, suffix will be "MyEventWriteFunction1". // #define MY_OBJECT_LIKE_MACRO MyEventWriteFunction2 // #define MCGEN_EVENTWRITETRANSFER MY_OBJECT_LIKE_MACRO // OK, suffix will be "MyEventWriteFunction2". // #define MY_FUNCTION_LIKE_MACRO(h,e,a,r,c,d) MyNamespace::MyClass::MyEventWriteFunction3(h,e,c,d) // #define MCGEN_EVENTWRITETRANSFER MY_FUNCTION_LIKE_MACRO // OK, suffix will be "MY_FUNCTION_LIKE_MACRO". // #ifndef MCGEN_EVENTREGISTER #if MCGEN_USE_KERNEL_MODE_APIS #define MCGEN_EVENTREGISTER EtwRegister #else #define MCGEN_EVENTREGISTER EventRegister #endif #endif // MCGEN_EVENTREGISTER #ifndef MCGEN_EVENTUNREGISTER #if MCGEN_USE_KERNEL_MODE_APIS #define MCGEN_EVENTUNREGISTER EtwUnregister #else #define MCGEN_EVENTUNREGISTER EventUnregister #endif #endif // MCGEN_EVENTUNREGISTER #ifndef MCGEN_EVENTSETINFORMATION #if MCGEN_USE_KERNEL_MODE_APIS #define MCGEN_EVENTSETINFORMATION EtwSetInformation #else #define MCGEN_EVENTSETINFORMATION EventSetInformation #endif #endif // MCGEN_EVENTSETINFORMATION #ifndef MCGEN_EVENTWRITETRANSFER #if MCGEN_USE_KERNEL_MODE_APIS #define MCGEN_EVENTWRITETRANSFER EtwWriteTransfer #else #define MCGEN_EVENTWRITETRANSFER EventWriteTransfer #endif #endif // MCGEN_EVENTWRITETRANSFER #ifndef _mcgen_EVENT_BIT_SET #if defined(_M_IX86) || defined(_M_X64) // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_EVENT_BIT_SET(EnableBits, BitPosition) ((((const unsigned char*)EnableBits)[BitPosition >> 3] & (1u << (BitPosition & 7))) != 0) #else // CPU type // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_EVENT_BIT_SET(EnableBits, BitPosition) ((EnableBits[BitPosition >> 5] & (1u << (BitPosition & 31))) != 0) #endif // CPU type #endif // _mcgen_EVENT_BIT_SET // This function is for use by MC-generated code and should not be used directly. DECLSPEC_NOINLINE __inline VOID __stdcall McGenControlCallbackV2( _In_ LPCGUID SourceId, _In_ ULONG ControlCode, _In_ UCHAR Level, _In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAllKeyword, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData, _Inout_opt_ PVOID CallbackContext ) /*++ Routine Description: This is the notification callback for Windows Vista and later. Arguments: SourceId - The GUID that identifies the session that enabled the provider. ControlCode - The parameter indicates whether the provider is being enabled or disabled. Level - The level at which the event is enabled. MatchAnyKeyword - The bitmask of keywords that the provider uses to determine the category of events that it writes. MatchAllKeyword - This bitmask additionally restricts the category of events that the provider writes. FilterData - The provider-defined data. CallbackContext - The context of the callback that is defined when the provider called EtwRegister to register itself. Remarks: ETW calls this function to notify provider of enable/disable --*/ { PMCGEN_TRACE_CONTEXT Ctx = (PMCGEN_TRACE_CONTEXT)CallbackContext; ULONG Ix; #ifndef MCGEN_PRIVATE_ENABLE_CALLBACK_V2 UNREFERENCED_PARAMETER(SourceId); UNREFERENCED_PARAMETER(FilterData); #endif if (Ctx == NULL) { return; } switch (ControlCode) { case EVENT_CONTROL_CODE_ENABLE_PROVIDER: Ctx->Level = Level; Ctx->MatchAnyKeyword = MatchAnyKeyword; Ctx->MatchAllKeyword = MatchAllKeyword; Ctx->IsEnabled = EVENT_CONTROL_CODE_ENABLE_PROVIDER; for (Ix = 0; Ix < Ctx->EnableBitsCount; Ix += 1) { if (McGenLevelKeywordEnabled(Ctx, Ctx->EnableLevel[Ix], Ctx->EnableKeyWords[Ix]) != FALSE) { Ctx->EnableBitMask[Ix >> 5] |= (1 << (Ix % 32)); } else { Ctx->EnableBitMask[Ix >> 5] &= ~(1 << (Ix % 32)); } } break; case EVENT_CONTROL_CODE_DISABLE_PROVIDER: Ctx->IsEnabled = EVENT_CONTROL_CODE_DISABLE_PROVIDER; Ctx->Level = 0; Ctx->MatchAnyKeyword = 0; Ctx->MatchAllKeyword = 0; if (Ctx->EnableBitsCount > 0) { #pragma warning(suppress: 26451) // Arithmetic overflow cannot occur, no matter the value of EnableBitCount RtlZeroMemory(Ctx->EnableBitMask, (((Ctx->EnableBitsCount - 1) / 32) + 1) * sizeof(ULONG)); } break; default: break; } #ifdef MCGEN_PRIVATE_ENABLE_CALLBACK_V2 // // Call user defined callback // MCGEN_PRIVATE_ENABLE_CALLBACK_V2( SourceId, ControlCode, Level, MatchAnyKeyword, MatchAllKeyword, FilterData, CallbackContext ); #endif // MCGEN_PRIVATE_ENABLE_CALLBACK_V2 return; } #ifndef _mcgen_PENABLECALLBACK #if MCGEN_USE_KERNEL_MODE_APIS #define _mcgen_PENABLECALLBACK PETWENABLECALLBACK #else #define _mcgen_PENABLECALLBACK PENABLECALLBACK #endif #endif // _mcgen_PENABLECALLBACK #if !defined(_mcgen_PASTE2) // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_PASTE2(a, b) _mcgen_PASTE2_imp(a, b) #define _mcgen_PASTE2_imp(a, b) a##b #endif // _mcgen_PASTE2 #if !defined(_mcgen_PASTE3) // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_PASTE3(a, b, c) _mcgen_PASTE3_imp(a, b, c) #define _mcgen_PASTE3_imp(a, b, c) a##b##_##c #endif // _mcgen_PASTE3 // // Macro validation // // Validate MCGEN_EVENTREGISTER: // Trigger an error if MCGEN_EVENTREGISTER is not an unqualified (simple) identifier: struct _mcgen_PASTE2(MCGEN_EVENTREGISTER_definition_must_be_an_unqualified_identifier_, MCGEN_EVENTREGISTER); // Trigger an error if MCGEN_EVENTREGISTER is redefined: typedef struct _mcgen_PASTE2(MCGEN_EVENTREGISTER_definition_must_be_an_unqualified_identifier_, MCGEN_EVENTREGISTER) MCGEN_EVENTREGISTER_must_not_be_redefined_between_headers; // Trigger an error if MCGEN_EVENTREGISTER is defined as a function-like macro: typedef void MCGEN_EVENTREGISTER_must_not_be_a_functionLike_macro_MCGEN_EVENTREGISTER; typedef int _mcgen_PASTE2(MCGEN_EVENTREGISTER_must_not_be_a_functionLike_macro_, MCGEN_EVENTREGISTER); // Validate MCGEN_EVENTUNREGISTER: // Trigger an error if MCGEN_EVENTUNREGISTER is not an unqualified (simple) identifier: struct _mcgen_PASTE2(MCGEN_EVENTUNREGISTER_definition_must_be_an_unqualified_identifier_, MCGEN_EVENTUNREGISTER); // Trigger an error if MCGEN_EVENTUNREGISTER is redefined: typedef struct _mcgen_PASTE2(MCGEN_EVENTUNREGISTER_definition_must_be_an_unqualified_identifier_, MCGEN_EVENTUNREGISTER) MCGEN_EVENTUNREGISTER_must_not_be_redefined_between_headers; // Trigger an error if MCGEN_EVENTUNREGISTER is defined as a function-like macro: typedef void MCGEN_EVENTUNREGISTER_must_not_be_a_functionLike_macro_MCGEN_EVENTUNREGISTER; typedef int _mcgen_PASTE2(MCGEN_EVENTUNREGISTER_must_not_be_a_functionLike_macro_, MCGEN_EVENTUNREGISTER); // Validate MCGEN_EVENTSETINFORMATION: // Trigger an error if MCGEN_EVENTSETINFORMATION is not an unqualified (simple) identifier: struct _mcgen_PASTE2(MCGEN_EVENTSETINFORMATION_definition_must_be_an_unqualified_identifier_, MCGEN_EVENTSETINFORMATION); // Trigger an error if MCGEN_EVENTSETINFORMATION is redefined: typedef struct _mcgen_PASTE2(MCGEN_EVENTSETINFORMATION_definition_must_be_an_unqualified_identifier_, MCGEN_EVENTSETINFORMATION) MCGEN_EVENTSETINFORMATION_must_not_be_redefined_between_headers; // Trigger an error if MCGEN_EVENTSETINFORMATION is defined as a function-like macro: typedef void MCGEN_EVENTSETINFORMATION_must_not_be_a_functionLike_macro_MCGEN_EVENTSETINFORMATION; typedef int _mcgen_PASTE2(MCGEN_EVENTSETINFORMATION_must_not_be_a_functionLike_macro_, MCGEN_EVENTSETINFORMATION); // Validate MCGEN_EVENTWRITETRANSFER: // Trigger an error if MCGEN_EVENTWRITETRANSFER is not an unqualified (simple) identifier: struct _mcgen_PASTE2(MCGEN_EVENTWRITETRANSFER_definition_must_be_an_unqualified_identifier_, MCGEN_EVENTWRITETRANSFER); // Trigger an error if MCGEN_EVENTWRITETRANSFER is redefined: typedef struct _mcgen_PASTE2(MCGEN_EVENTWRITETRANSFER_definition_must_be_an_unqualified_identifier_, MCGEN_EVENTWRITETRANSFER) MCGEN_EVENTWRITETRANSFER_must_not_be_redefined_between_headers;; // Trigger an error if MCGEN_EVENTWRITETRANSFER is defined as a function-like macro: typedef void MCGEN_EVENTWRITETRANSFER_must_not_be_a_functionLike_macro_MCGEN_EVENTWRITETRANSFER; typedef int _mcgen_PASTE2(MCGEN_EVENTWRITETRANSFER_must_not_be_a_functionLike_macro_, MCGEN_EVENTWRITETRANSFER); #ifndef McGenEventWrite_def #define McGenEventWrite_def // This macro is for use by MC-generated code and should not be used directly. #define McGenEventWrite _mcgen_PASTE2(McGenEventWrite_, MCGEN_EVENTWRITETRANSFER) // This function is for use by MC-generated code and should not be used directly. DECLSPEC_NOINLINE __inline ULONG __stdcall McGenEventWrite( _In_ PMCGEN_TRACE_CONTEXT Context, _In_ PCEVENT_DESCRIPTOR Descriptor, _In_opt_ LPCGUID ActivityId, _In_range_(1, 128) ULONG EventDataCount, _Pre_cap_(EventDataCount) EVENT_DATA_DESCRIPTOR* EventData ) { const USHORT UNALIGNED* Traits; // Some customized MCGEN_EVENTWRITETRANSFER macros might ignore ActivityId. UNREFERENCED_PARAMETER(ActivityId); Traits = (const USHORT UNALIGNED*)(UINT_PTR)Context->Logger; if (Traits == NULL) { EventData[0].Ptr = 0; EventData[0].Size = 0; EventData[0].Reserved = 0; } else { EventData[0].Ptr = (ULONG_PTR)Traits; EventData[0].Size = *Traits; EventData[0].Reserved = 2; // EVENT_DATA_DESCRIPTOR_TYPE_PROVIDER_METADATA } return MCGEN_EVENTWRITETRANSFER( Context->RegistrationHandle, Descriptor, ActivityId, NULL, EventDataCount, EventData); } #endif // McGenEventWrite_def #ifndef McGenEventSetInformation_def #define McGenEventSetInformation_def #if MCGEN_HAVE_EVENTSETINFORMATION == 1 // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_EVENTSETINFORMATION_SUFFIX MCGEN_EVENTSETINFORMATION #elif MCGEN_HAVE_EVENTSETINFORMATION == 2 #if MCGEN_USE_KERNEL_MODE_APIS // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_EVENTSETINFORMATION_SUFFIX 2K #else // MCGEN_USE_KERNEL_MODE_APIS // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_EVENTSETINFORMATION_SUFFIX 2U #endif // MCGEN_USE_KERNEL_MODE_APIS #else // MCGEN_HAVE_EVENTSETINFORMATION == 0 // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_EVENTSETINFORMATION_SUFFIX 0 #endif // MCGEN_HAVE_EVENTSETINFORMATION // This macro is for use by MC-generated code and should not be used directly. #define McGenEventSetInformation _mcgen_PASTE2(McGenEventSetInformation_, _mcgen_EVENTSETINFORMATION_SUFFIX) // This function is for use by MC-generated code and should not be used directly. _IRQL_requires_max_(PASSIVE_LEVEL) DECLSPEC_NOINLINE __inline ULONG __stdcall McGenEventSetInformation( _In_ REGHANDLE RegHandle, _In_ EVENT_INFO_CLASS InformationClass, _In_opt_bytecount_(InformationLength) PVOID EventInformation, _In_ ULONG InformationLength ) /*++ Routine Description: This function invokes EventSetInformation to provide additional information to the ETW runtime. Note that the implementation of this function depends on the values of the MCGEN_HAVE_EVENTSETINFORMATION and MCGEN_EVENTSETINFORMATION macros. Depending on the values of these macros, this function may call EventSetInformation directly, may dynamically-load EventSetInformation via GetProcAddress, or may call a replacement function. Arguments: RegHandle - Registration handle returned by EventRegister. InformationClass - Type of operation to be performed on the registration object. EventInformation - The input buffer. InformationLength - Size of the input buffer. --*/ { ULONG Error; #if MCGEN_HAVE_EVENTSETINFORMATION == 1 #pragma warning(suppress: 6387) // It's ok for EventInformation to be null if InformationLength is 0. Error = MCGEN_EVENTSETINFORMATION( RegHandle, InformationClass, EventInformation, InformationLength); #elif MCGEN_HAVE_EVENTSETINFORMATION == 2 #if MCGEN_USE_KERNEL_MODE_APIS typedef NTSTATUS(NTAPI* PFEtwSetInformation)( _In_ REGHANDLE regHandle, _In_ EVENT_INFO_CLASS informationClass, _In_opt_bytecount_(informationLength) PVOID eventInformation, _In_ ULONG informationLength); static UNICODE_STRING strEtwSetInformation = { sizeof(L"EtwSetInformation") - 2, sizeof(L"EtwSetInformation") - 2, L"EtwSetInformation" }; PFEtwSetInformation pfEtwSetInformation; #pragma warning(push) #pragma warning(disable: 4055) // Allow the cast from a PVOID to a PFN pfEtwSetInformation = (PFEtwSetInformation)MmGetSystemRoutineAddress(&strEtwSetInformation); #pragma warning(pop) if (pfEtwSetInformation) { Error = pfEtwSetInformation( RegHandle, InformationClass, EventInformation, InformationLength); } else { Error = (ULONG)STATUS_NOT_SUPPORTED; } #else // !MCGEN_USE_KERNEL_MODE_APIS HMODULE hEventing; Error = ERROR_NOT_SUPPORTED; if (GetModuleHandleExW(0, L"api-ms-win-eventing-provider-l1-1-0", &hEventing) || GetModuleHandleExW(0, L"advapi32", &hEventing)) { typedef ULONG(WINAPI* PFEventSetInformation)( _In_ REGHANDLE regHandle, _In_ EVENT_INFO_CLASS informationClass, _In_opt_bytecount_(informationLength) PVOID eventInformation, _In_ ULONG informationLength); PFEventSetInformation pfEventSetInformation = (PFEventSetInformation)GetProcAddress(hEventing, "EventSetInformation"); if (pfEventSetInformation) { Error = pfEventSetInformation( RegHandle, InformationClass, EventInformation, InformationLength); } FreeLibrary(hEventing); } #endif // MCGEN_USE_KERNEL_MODE_APIS #else // MCGEN_HAVE_EVENTSETINFORMATION == 0 (void)RegHandle; (void)InformationClass; (void)EventInformation; (void)InformationLength; #if MCGEN_USE_KERNEL_MODE_APIS Error = (ULONG)STATUS_NOT_SUPPORTED; #else // !MCGEN_USE_KERNEL_MODE_APIS Error = ERROR_NOT_SUPPORTED; #endif // MCGEN_USE_KERNEL_MODE_APIS #endif // MCGEN_HAVE_EVENTSETINFORMATION return Error; } #endif // McGenEventSetInformation_def #ifndef McGenEventRegisterContext_def #define McGenEventRegisterContext_def // This macro is for use by MC-generated code and should not be used directly. #define McGenEventRegisterContext _mcgen_PASTE3(McGenEventRegisterContext_, MCGEN_EVENTREGISTER, _mcgen_EVENTSETINFORMATION_SUFFIX) #pragma warning(push) #pragma warning(disable:6103) // This function is for use by MC-generated code and should not be used directly. _IRQL_requires_max_(PASSIVE_LEVEL) DECLSPEC_NOINLINE __inline ULONG __stdcall McGenEventRegisterContext( _In_ LPCGUID ProviderId, _In_opt_ _mcgen_PENABLECALLBACK EnableCallback, _In_opt_ PVOID CallbackContext, _Inout_ MCGEN_TRACE_CONTEXT* Context ) /*++ Routine Description: This function registers the provider with ETW and registers provider traits. The EventRegister[ProviderName] macro will use this function instead of McGenEventRegister if the provider has traits to be registered. Arguments: ProviderId - Provider ID to register with ETW. EnableCallback - Callback to be used. CallbackContext - Context for the callback. Context - Provider context. Remarks: Should not be called if the provider is already registered (i.e. should not be called if Context->RegistrationHandle != 0). Repeatedly registering a provider is a bug and may indicate a race condition. --*/ { ULONG Error; if (Context->RegistrationHandle != 0) { #if MCGEN_USE_KERNEL_MODE_APIS Error = (ULONG)STATUS_INVALID_PARAMETER; #else Error = ERROR_INVALID_PARAMETER; #endif } else { Error = MCGEN_EVENTREGISTER( ProviderId, EnableCallback, CallbackContext, &Context->RegistrationHandle); if (Error == 0 && Context->Logger != 0) { (void)McGenEventSetInformation( Context->RegistrationHandle, (EVENT_INFO_CLASS)2, // EventProviderSetTraits (void*)(UINT_PTR)Context->Logger, *(USHORT const UNALIGNED*)(UINT_PTR)Context->Logger); } } return Error; } #pragma warning(pop) #endif // McGenEventRegisterContext_def // This macro is for use by MC-generated code and should not be used directly. #define McGenEventRegister _mcgen_PASTE2(McGenEventRegister_, MCGEN_EVENTREGISTER) #pragma warning(push) #pragma warning(disable:6103) // This function is for use by MC-generated code and should not be used directly. DECLSPEC_NOINLINE __inline ULONG __stdcall McGenEventRegister( _In_ LPCGUID ProviderId, _In_opt_ _mcgen_PENABLECALLBACK EnableCallback, _In_opt_ PVOID CallbackContext, _Inout_ PREGHANDLE RegHandle ) /*++ Routine Description: This function registers the provider with ETW. Arguments: ProviderId - Provider ID to register with ETW. EnableCallback - Callback to be used. CallbackContext - Context for the callback. RegHandle - Pointer to registration handle. Remarks: Should not be called if the provider is already registered (i.e. should not be called if *RegHandle != 0). Repeatedly registering a provider is a bug and may indicate a race condition. However, for compatibility with previous behavior, this function will return SUCCESS in this case. --*/ { ULONG Error; if (*RegHandle != 0) { Error = 0; // ERROR_SUCCESS } else { Error = MCGEN_EVENTREGISTER(ProviderId, EnableCallback, CallbackContext, RegHandle); } return Error; } #pragma warning(pop) // This macro is for use by MC-generated code and should not be used directly. #define McGenEventUnregister _mcgen_PASTE2(McGenEventUnregister_, MCGEN_EVENTUNREGISTER) // This function is for use by MC-generated code and should not be used directly. DECLSPEC_NOINLINE __inline ULONG __stdcall McGenEventUnregister(_Inout_ PREGHANDLE RegHandle) /*++ Routine Description: Unregister from ETW and set *RegHandle = 0. Arguments: RegHandle - the pointer to the provider registration handle Remarks: If provider has not been registered (i.e. if *RegHandle == 0), return SUCCESS. It is safe to call McGenEventUnregister even if the call to McGenEventRegister returned an error. --*/ { ULONG Error; if(*RegHandle == 0) { Error = 0; // ERROR_SUCCESS } else { Error = MCGEN_EVENTUNREGISTER(*RegHandle); *RegHandle = (REGHANDLE)0; } return Error; } typedef LONG (__stdcall *PFN_WMIENTRY_CALLBACK)( _In_ UCHAR MinorFunction, _In_opt_ PVOID DataPath, _In_ ULONG BufferLength, _Inout_updates_bytes_(BufferLength) PVOID Buffer, _In_ PVOID Context, _Out_ PULONG Size ); // This function is for use by MC-generated code and should not be used directly. NTSTATUS __stdcall McGenEventTracingRegister( _In_ LPCGUID ProviderId, _In_opt_ PETWENABLECALLBACK EnableCallback, _In_opt_ PVOID CallbackContext, _Inout_ PREGHANDLE RegHandle ); // This function is for use by MC-generated code and should not be used directly. NTSTATUS __stdcall McGenControlCallback( _In_ UCHAR MinorFunction, _In_opt_ PVOID DataPath, _In_ ULONG BufferLength, _Inout_updates_bytes_(BufferLength) PVOID Buffer, _In_ PVOID Context, _Out_ PULONG Size ); // This function is for use by MC-generated code and should not be used directly. VOID __stdcall McGenControlCallbackV2( _In_ LPCGUID SourceId, _In_ ULONG ControlCode, _In_ UCHAR Level, _In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAllKeyword, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData, _Inout_opt_ PVOID CallbackContext ); typedef ULONG (__stdcall *PFN_ETW_WRITE)( _In_ REGHANDLE RegHandle, _In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_opt_ LPCGUID ActivityId, _In_ ULONG UserDataCount, _In_reads_opt_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData ); typedef NTSTATUS (__stdcall *PFN_ETW_REGISTER)( _In_ LPCGUID ProviderId, _In_opt_ PETWENABLECALLBACK EnableCallback, _In_opt_ PVOID CallbackContext, _Out_ PREGHANDLE RegHandle ); typedef NTSTATUS (__stdcall *PFN_ETW_UNREGISTER)( _In_ REGHANDLE RegHandle ); typedef BOOLEAN NTKERNELAPI (__stdcall FN_PS_GETVERSION)( _Out_opt_ PULONG MajorVersion, _Out_opt_ PULONG MinorVersion, _Out_opt_ PULONG BuildNumber, _Out_opt_ PUNICODE_STRING CSDVersion ); typedef FN_PS_GETVERSION *PFN_PS_GETVERSION; #define WMIREG_FLAG_CALLBACK 0x80000000 // not exposed in DDK #ifndef WMIREG_FLAG_TRACE_PROVIDER #define WMIREG_FLAG_TRACE_PROVIDER 0x00010000 #endif // This structure is for use by MC-generated code and should not be used directly. typedef struct _MCGEN_TRACE_CONTEXT { #pragma prefast(suppress:__WARNING_ENCODE_GLOBAL_FUNCTION_POINTER, "this pointer can not be encoded"); PFN_WMIENTRY_CALLBACK Callback; TRACEHANDLE Logger; TRACEHANDLE RegistrationHandle; ULONGLONG MatchAnyKeyword; ULONGLONG MatchAllKeyword; LPCGUID ControlGuid; #pragma prefast(suppress:__WARNING_ENCODE_GLOBAL_FUNCTION_POINTER, "this pointer can not be encoded"); PFN_ETW_WRITE PfnEtwWrite; #pragma prefast(suppress:__WARNING_ENCODE_GLOBAL_FUNCTION_POINTER, "this pointer can not be encoded"); PFN_ETW_REGISTER PfnEtwRegister; #pragma prefast(suppress:__WARNING_ENCODE_GLOBAL_FUNCTION_POINTER, "this pointer can not be encoded"); PFN_ETW_UNREGISTER PfnEtwUnregister; #pragma prefast(suppress:__WARNING_ENCODE_GLOBAL_FUNCTION_POINTER, "this pointer can not be encoded"); PFN_PS_GETVERSION pfnPsGetVersion; ULONG Flags; ULONG IsEnabled; UCHAR Level; BOOLEAN McGenPreVista; BOOLEAN McGenTracingSupportInit; USHORT EnableBitsCount; PULONG EnableBitMask; const ULONGLONG* EnableKeyWords; const UCHAR* EnableLevel; } MCGEN_TRACE_CONTEXT, *PMCGEN_TRACE_CONTEXT; BOOLEAN __stdcall McGenEventTracingEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ PCEVENT_DESCRIPTOR EventDescriptor ); BOOLEAN __stdcall McGenLevelKeywordEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ UCHAR Level, _In_ ULONGLONG Keyword ); // This function is for use by MC-generated code and should not be used directly. NTSTATUS __stdcall McGenEventTracingUnregister(_Inout_ PMCGEN_TRACE_CONTEXT Context); // This function is for use by MC-generated code and should not be used directly. NTSTATUS McGenInitTracingSupport( _In_ PMCGEN_TRACE_CONTEXT Context ); #ifdef ALLOC_PRAGMA #pragma alloc_text( PAGE, McGenEventTracingRegister) #pragma alloc_text( PAGE, McGenEventTracingUnregister) #pragma alloc_text( PAGE, McGenControlCallback) #pragma alloc_text( PAGE, McGenInitTracingSupport) #endif // ALLOC_PRAGMA FORCEINLINE BOOLEAN __stdcall McGenEventTracingEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ PCEVENT_DESCRIPTOR EventDescriptor ) { return McGenLevelKeywordEnabled(EnableInfo, EventDescriptor->Level, EventDescriptor->Keyword); } FORCEINLINE BOOLEAN __stdcall McGenLevelKeywordEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ UCHAR Level, _In_ ULONGLONG Keyword ) { if(!EnableInfo){ return FALSE; } if (EnableInfo->McGenPreVista) { return ( ((Level <= EnableInfo->Level) || (Level == 0)) && (((ULONG)(Keyword & 0xFFFFFFFF) == 0) || ((ULONG)(Keyword & 0xFFFFFFFF) & EnableInfo->Flags))); } // // Check if the event Level is lower than the level at which // the channel is enabled. // If the event Level is 0 or the channel is enabled at level 0, // all levels are enabled. // if ((Level <= EnableInfo->Level) || // This also covers the case of Level == 0. (EnableInfo->Level == 0)) { // // Check if Keyword is enabled // if ((Keyword == (ULONGLONG)0) || ((Keyword & EnableInfo->MatchAnyKeyword) && ((Keyword & EnableInfo->MatchAllKeyword) == EnableInfo->MatchAllKeyword))) { return TRUE; } } return FALSE; } // This function is for use by MC-generated code and should not be used directly. DECLSPEC_NOINLINE __inline NTSTATUS __stdcall McGenControlCallback( _In_ UCHAR MinorFunction, _In_opt_ PVOID DataPath, _In_ ULONG BufferLength, _Inout_updates_bytes_(BufferLength) PVOID Buffer, _In_ PVOID Context, _Out_ PULONG Size ) /*++ Routine Description: Called by WMI for registration/unregistration or enabled/disabled. Arguments: MinorFunction - specifies the type of callback (register, event enable/disable) DataPath - varies depending on the ActionCode BufferLength - size of the Buffer parameter Buffer - in/out buffer where we read from or write to depending on the type of callback Context - the pointer private struct MCGEN_TRACE_CONTEXT Size - output parameter to receive the amount of data written into Buffer Return Value: NTSTATUS code indicating success/failure Comments: If return value is STATUS_BUFFER_TOO_SMALL and BufferLength >= 4, then first ulong of buffer contains required size. Supports XP and W2K3, no W2K support. --*/ { PMCGEN_TRACE_CONTEXT Ctx; NTSTATUS Status = STATUS_SUCCESS; UNREFERENCED_PARAMETER(DataPath); PAGED_CODE(); McGenDebug(0,("McGenControlCallback 0x%08X %p\n", MinorFunction, Context)); *Size = 0; // // Get the context // Ctx = (PMCGEN_TRACE_CONTEXT)Context; switch (MinorFunction) { case IRP_MN_REGINFO: { PWMIREGINFOW WmiRegInfo; ULONG BufferNeeded; WmiRegInfo = (PWMIREGINFO)Buffer; // // Calculate buffer size need to hold all info. // BufferNeeded = FIELD_OFFSET(WMIREGINFOW, WmiRegGuid) + sizeof(WMIREGGUIDW); // // If the provided buffer is large enough, then fill with info. // if (BufferNeeded <= BufferLength) { RtlZeroMemory(Buffer, BufferLength); // // Fill in the WMIREGINFO // WmiRegInfo->BufferSize = BufferNeeded; WmiRegInfo->RegistryPath = 0; WmiRegInfo->GuidCount = 1; // // Fill in the WMIREGGUID // WmiRegInfo->WmiRegGuid[0].Guid = *Ctx->ControlGuid; WmiRegInfo->WmiRegGuid[0].Flags = WMIREG_FLAG_TRACE_CONTROL_GUID | WMIREG_FLAG_TRACED_GUID; McGenDebug(0,("Control GUID::%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", Ctx->ControlGuid->Data1, Ctx->ControlGuid->Data2, Ctx->ControlGuid->Data3, Ctx->ControlGuid->Data4[0], Ctx->ControlGuid->Data4[1], Ctx->ControlGuid->Data4[2], Ctx->ControlGuid->Data4[3], Ctx->ControlGuid->Data4[4], Ctx->ControlGuid->Data4[5], Ctx->ControlGuid->Data4[6], Ctx->ControlGuid->Data4[7] )); Status = STATUS_SUCCESS; *Size = BufferNeeded; } else { Status = STATUS_BUFFER_TOO_SMALL; if (BufferLength >= sizeof(ULONG)) { *((PULONG)Buffer) = BufferNeeded; *Size = sizeof(ULONG); } } break; } case IRP_MN_ENABLE_EVENTS: case IRP_MN_DISABLE_EVENTS: { PWNODE_HEADER Wnode; ULONG Level; ULONG ReturnLength; ULONG Ix; if (Context == NULL) { Status = STATUS_WMI_GUID_NOT_FOUND; break; } if (BufferLength < sizeof(WNODE_HEADER)) { Status = STATUS_INVALID_PARAMETER; break; } // // Initialize locals // Wnode = (PWNODE_HEADER)Buffer; // // Do the requested event action // if (MinorFunction == IRP_MN_DISABLE_EVENTS) { McGenDebug(0,("McGenControlCallback: DISABLE_EVENTS\n")); Ctx->IsEnabled = 0; Ctx->Level = 0; Ctx->Flags = 0; Ctx->Logger = 0; if (Ctx->EnableBitsCount > 0) { RtlZeroMemory(Ctx->EnableBitMask, (((Ctx->EnableBitsCount - 1) / 32) + 1) * sizeof(ULONG)); } } else { Ctx->Logger = (TRACEHANDLE)( Wnode->HistoricalContext); Status = WmiQueryTraceInformation(TraceEnableLevelClass, &Level, sizeof(Level), &ReturnLength, (PVOID) Wnode ); if (Status == STATUS_SUCCESS) { Ctx->Level = (UCHAR)Level; } Status = WmiQueryTraceInformation(TraceEnableFlagsClass, &Ctx->Flags, sizeof(Ctx->Flags), &ReturnLength, (PVOID) Wnode ); Ctx->IsEnabled = 1; for (Ix = 0; Ix < Ctx->EnableBitsCount; Ix += 1) { if (McGenLevelKeywordEnabled(Ctx, Ctx->EnableLevel[Ix], Ctx->EnableKeyWords[Ix]) != FALSE) { Ctx->EnableBitMask[Ix >> 5] |= (1 << (Ix % 32)); } else { Ctx->EnableBitMask[Ix >> 5] &= ~(1 << (Ix % 32)); } } McGenDebug(0,("McGenControlCallback: ENABLE_EVENTS " "LoggerId %d, Flags 0x%08X, Level 0x%02X\n", (USHORT) Ctx->Logger, Ctx->Flags, Ctx->Level)); } #ifdef MCGEN_PRIVATE_ENABLE_CALLBACK // // Notify changes to flags, level for GUID // MCGEN_PRIVATE_ENABLE_CALLBACK(Ctx->ControlGuid, Ctx->Logger, (MinorFunction != IRP_MN_DISABLE_EVENTS) ? TRUE:FALSE, Ctx->Flags, Ctx->Level ); #endif break; } case IRP_MN_ENABLE_COLLECTION: case IRP_MN_DISABLE_COLLECTION: { Status = STATUS_SUCCESS; break; } case IRP_MN_QUERY_ALL_DATA: case IRP_MN_QUERY_SINGLE_INSTANCE: case IRP_MN_CHANGE_SINGLE_INSTANCE: case IRP_MN_CHANGE_SINGLE_ITEM: case IRP_MN_EXECUTE_METHOD: { Status = STATUS_INVALID_DEVICE_REQUEST; break; } default: { Status = STATUS_INVALID_DEVICE_REQUEST; break; } } return(Status); } // This function is for use by MC-generated code and should not be used directly. DECLSPEC_NOINLINE __inline NTSTATUS __stdcall McGenEventTracingRegister( _In_ LPCGUID ProviderId, _In_opt_ PETWENABLECALLBACK EnableCallback, _In_opt_ PVOID CallbackContext, _Inout_ PREGHANDLE RegHandle ) /*++ Routine Description: This function registers the provider with ETW KERNEL mode. Arguments: ProviderId - Provider ID to be registered with ETW. EnableCallback - Callback to be used. CallbackContext - Context for this provider. RegHandle - Pointer to registration handle. Remarks: If the handle != NULL will return STATUS_SUCCESS If Windows 2000, provider will not register. --*/ { NTSTATUS Status; PMCGEN_TRACE_CONTEXT Context = (PMCGEN_TRACE_CONTEXT)CallbackContext; PAGED_CODE(); if (!Context) { return STATUS_INVALID_PARAMETER; } if (!RegHandle) { return STATUS_INVALID_PARAMETER; } if (*RegHandle) { // // already registered // return STATUS_SUCCESS; } // // Initialize Tracing funtion pointers according to OS version // Status = McGenInitTracingSupport(Context); if (Status == STATUS_INVALID_PARAMETER) { // // This means that its W2K, we will not register the provider // McGenDebug(0,("Generated code does not support Windows 2000\n")); return STATUS_SUCCESS; } // // Vista // if (!Context->McGenPreVista) { Status = Context->PfnEtwRegister(ProviderId, (EnableCallback == NULL) ? McGenControlCallbackV2 : EnableCallback, CallbackContext, RegHandle); } else { Context->Callback = (EnableCallback == NULL) ? McGenControlCallback : (PFN_WMIENTRY_CALLBACK)EnableCallback; Context->ControlGuid = ProviderId; #pragma prefast(suppress:__WARNING_BANNED_API_ARGUMENT_USAGE, "MC Generated Code Down-Level Support"); Status = IoWMIRegistrationControl((PDEVICE_OBJECT)Context, WMIREG_ACTION_REGISTER | WMIREG_FLAG_CALLBACK | WMIREG_FLAG_TRACE_PROVIDER); McGenDebug(0,("IoWMIRegistrationControl Status = %08X\n", Status)); Context->RegistrationHandle = (REGHANDLE)Context; } return Status; } // This function is for use by MC-generated code and should not be used directly. DECLSPEC_NOINLINE __inline NTSTATUS __stdcall McGenEventTracingUnregister( _Inout_ PMCGEN_TRACE_CONTEXT Context ) /*++ Routine Description: Unregister from ETW KERNEL mode. N.B. If provider has not registered, RegistrationHandle == NULL, return STATUS_SUCCESS Arguments: Context - Context for this provider Return Value: Status code. --*/ { NTSTATUS Status = STATUS_SUCCESS; PAGED_CODE(); if (!Context) { return STATUS_INVALID_PARAMETER; } if (!Context->McGenTracingSupportInit) { // // EventRegister macro has not been called // return STATUS_SUCCESS; } if (!(Context->RegistrationHandle)) { // // Provider has not been registerd // return STATUS_SUCCESS; } Context->IsEnabled = 0; if (!Context->McGenPreVista) { Status = Context->PfnEtwUnregister(Context->RegistrationHandle); } else { IoWMIRegistrationControl((PDEVICE_OBJECT)Context, WMIREG_ACTION_DEREGISTER | WMIREG_FLAG_CALLBACK ); Context->Flags = 0; Context->Level = 0; Context->Logger = 0; if (Context->EnableBitsCount > 0) { RtlZeroMemory(Context->EnableBitMask, (((Context->EnableBitsCount - 1) / 32) + 1) * sizeof(ULONG)); } } Context->RegistrationHandle = (REGHANDLE)0; return Status; } #endif // This function is for use by MC-generated code and should not be used directly. FORCEINLINE NTSTATUS McGenInitTracingSupport( _In_ PMCGEN_TRACE_CONTEXT Context ) /*++ Routine Description: This function assigns at runtime the ETW API set to be use for tracing. Arguments: Context - Provider Context Remarks: At runtime assign the functions pointers for the trace APIs to be use. Vista and later use EtwWrite, EtwRegister, otherwise use IoWMIWriteEvent, IoWMIRegistrationControl --*/ { ULONG MajorVersion = 0; ULONG MinorVersion = 0; UNICODE_STRING Name; PAGED_CODE(); if (Context->McGenTracingSupportInit) { return STATUS_SUCCESS; } RtlInitUnicodeString(&Name, L"PsGetVersion"); Context->pfnPsGetVersion = (PFN_PS_GETVERSION) (INT_PTR) MmGetSystemRoutineAddress(&Name); if (Context->pfnPsGetVersion != NULL) { Context->pfnPsGetVersion(&MajorVersion, &MinorVersion, NULL, NULL); } if (MajorVersion < 6) { // // If it's W2K return // if ((MajorVersion == 5) && (MinorVersion == 0)) { return STATUS_INVALID_PARAMETER; } // // XP or W2K3 // Context->McGenPreVista = TRUE; goto done; } RtlInitUnicodeString(&Name, L"EtwRegister"); Context->PfnEtwRegister = (PFN_ETW_REGISTER) (INT_PTR) MmGetSystemRoutineAddress(&Name); RtlInitUnicodeString(&Name, L"EtwUnregister"); Context->PfnEtwUnregister = (PFN_ETW_UNREGISTER) (INT_PTR) MmGetSystemRoutineAddress(&Name); RtlInitUnicodeString(&Name, L"EtwWrite"); Context->PfnEtwWrite = (PFN_ETW_WRITE) (INT_PTR) MmGetSystemRoutineAddress(&Name); if ((Context->PfnEtwRegister == NULL) || (Context->PfnEtwUnregister == NULL) || (Context->PfnEtwWrite == NULL)) { // // Subsitute with the generated funtions // Context->PfnEtwRegister = McGenEventTracingRegister; Context->PfnEtwUnregister = NULL; Context->McGenPreVista = TRUE; McGenDebug(0,("[McGenInitTracingSupport] : Could not load V2 ETW APIs\n")); } done: McGenDebug(1, ("[McGenInitTracingSupport] Prevista %s \n", McGenPreVista ? "TRUE" : "FALSE" )); Context->McGenTracingSupportInit = TRUE; return STATUS_SUCCESS; } //***************************************************************************** // Notes on the ETW event code generated by MC with the -mof option enabled: // // General: The -mof option is deprecated and will be removed in a future // version of MC.exe. // // Arrays : Only constant size arrays supported. The length must be specified // in the manifest. // // Strings: No support for arrays of strings. // // SID : No support for array of SIDs. The macro will take a pointer to the // SID and use appropriate GetLengthSid function to get the length. //***************************************************************************** //********************************************************************** // // Vista down-level support // //********************************************************************** #define __WARNING_BANNED_LEGACY_INSTRUMENTATION_API_USAGE 28735 typedef ULONG (__stdcall *PFN_EVENT_WRITE)( _In_ REGHANDLE RegHandle, _In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ ULONG UserDataCount, _In_reads_opt_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData ); typedef ULONG (__stdcall *PFN_EVENT_REGISTER)( _In_ LPCGUID ProviderId, _In_opt_ PENABLECALLBACK EnableCallback, _In_opt_ PVOID CallbackContext, _Out_ PREGHANDLE RegHandle ); typedef ULONG (__stdcall *PFN_EVENT_UNREGISTER)( _In_ REGHANDLE RegHandle ); // This function is for use by MC-generated code and should not be used directly. ULONG __stdcall McGenEventTracingRegister( _In_ LPCGUID ProviderId, _In_opt_ PENABLECALLBACK EnableCallback, _In_opt_ PVOID CallbackContext, _Inout_ PREGHANDLE RegHandle ); // This function is for use by MC-generated code and should not be used directly. ULONG __stdcall McGenEventTracingUnregister2( _Inout_ PMCGEN_TRACE_CONTEXT Context ); BOOLEAN __stdcall McGenEventTracingEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ PCEVENT_DESCRIPTOR EventDescriptor ); BOOLEAN __stdcall McGenLevelKeywordEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ UCHAR Level, _In_ ULONGLONG Keyword ); #if !defined(MCGEN_TRACE_GLOBALS_DEF) #define MCGEN_TRACE_GLOBALS_DEF // These variables are for use by MC-generated code and should not be used directly. __declspec(selectany) BOOLEAN McGenTracingSupportInit = FALSE; __declspec(selectany) BOOLEAN McGenPreVista = FALSE; #pragma prefast(suppress:__WARNING_ENCODE_GLOBAL_FUNCTION_POINTER, "this pointer can not be encoded"); __declspec(selectany) PFN_EVENT_WRITE PfnEventWrite = NULL; #pragma prefast(suppress:__WARNING_ENCODE_GLOBAL_FUNCTION_POINTER, "this pointer can not be encoded"); __declspec(selectany) PFN_EVENT_REGISTER PfnEventRegister = McGenEventTracingRegister; #pragma prefast(suppress:__WARNING_ENCODE_GLOBAL_FUNCTION_POINTER, "this pointer can not be encoded"); __declspec(selectany) PFN_EVENT_UNREGISTER PfnEventUnregister = NULL; #endif // MCGEN_TRACE_GLOBALS_DEF #if !defined(McGenEventEnabledCheck) #define McGenEventEnabledCheck FORCEINLINE BOOLEAN __stdcall McGenLevelKeywordEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ UCHAR Level, _In_ ULONGLONG Keyword ) { if(!EnableInfo){ return FALSE; } if(McGenPreVista){ return ( ((Level <= EnableInfo->Level) || (EnableInfo->Level == 0)) && (((ULONG)(Keyword & 0xFFFFFFFF) == 0) || ((ULONG)(Keyword & 0xFFFFFFFF) & EnableInfo->Flags))); } // // Check if the event level is lower than the level at which // the channel is enabled. // If the event level is 0 or the channel is enabled at level 0, // all levels are enabled. // if ((Level <= EnableInfo->Level) || // This also covers the case of Level == 0. (EnableInfo->Level == 0)) { // // Check if Keyword is enabled // if ((Keyword == (ULONGLONG)0) || ((Keyword & EnableInfo->MatchAnyKeyword) && ((Keyword & EnableInfo->MatchAllKeyword) == EnableInfo->MatchAllKeyword))) { return TRUE; } } return FALSE; } FORCEINLINE BOOLEAN __stdcall McGenEventTracingEnabled( _In_ PMCGEN_TRACE_CONTEXT EnableInfo, _In_ PCEVENT_DESCRIPTOR EventDescriptor ) { return McGenLevelKeywordEnabled(EnableInfo, EventDescriptor->Level, EventDescriptor->Keyword); } #endif // This function is for use by MC-generated code and should not be used directly. DECLSPEC_NOINLINE __inline ULONG __stdcall McGenControlCallback( _In_ WMIDPREQUESTCODE RequestCode, _In_ PVOID Context, _Inout_ ULONG *InOutBufferSize, _Inout_ PVOID Buffer ) /*++ Routine Description: This is the notification callback for pre-Vista support. Arguments: Remarks: ETW calls this function to notify provider of enable/disable --*/ { PMCGEN_TRACE_CONTEXT Ctx = (PMCGEN_TRACE_CONTEXT)Context; TRACEHANDLE Logger; ULONG Flags; ULONG IsEnabled = 0; UCHAR Level; ULONG Ix; *InOutBufferSize = 0; switch (RequestCode) { case WMI_ENABLE_EVENTS: { Logger = GetTraceLoggerHandle( Buffer ); Level = GetTraceEnableLevel(Logger); Flags = GetTraceEnableFlags(Logger); IsEnabled = 1; McGenDebug(1, ("[Callback] WMI_ENABLE_EVENTS Ctx %p Flags %x" " Lev %d Logger %I64x\n", Ctx, Flags, Level, Logger) ); // // 0 for flags is considered "ALL" // if (Flags == 0) { Flags = 0xFFFFFFFF; } break; } case WMI_DISABLE_EVENTS: { Logger = 0; Flags = 0; Level = 0; if (Ctx->EnableBitsCount > 0) { RtlZeroMemory(Ctx->EnableBitMask, (((Ctx->EnableBitsCount - 1) / 32) + 1) * sizeof(ULONG)); } McGenDebug(1, ("[Callback] WMI_DISABLE_EVENTS Ctx 0x%08p\n", Ctx)); break; } default: { return(ERROR_INVALID_PARAMETER); } } Ctx->Logger = Logger; Ctx->Level = Level; Ctx->Flags = Flags; Ctx->IsEnabled = IsEnabled; for (Ix = 0; Ix < Ctx->EnableBitsCount; Ix += 1) { if (McGenLevelKeywordEnabled(Ctx, Ctx->EnableLevel[Ix], Ctx->EnableKeyWords[Ix]) != FALSE) { Ctx->EnableBitMask[Ix >> 5] |= (1 << (Ix % 32)); } else { Ctx->EnableBitMask[Ix >> 5] &= ~(1 << (Ix % 32)); } } #ifdef MCGEN_PRIVATE_ENABLE_CALLBACK // // Call user defined callback down-level // MCGEN_PRIVATE_ENABLE_CALLBACK( RequestCode, Context, InOutBufferSize, Buffer ); #endif return(ERROR_SUCCESS); } // This function is for use by MC-generated code and should not be used directly. FORCEINLINE ULONG __stdcall McGenEventTracingRegister( _In_ LPCGUID ProviderId, _In_opt_ PENABLECALLBACK EnableCallback, _In_opt_ PVOID CallbackContext, _Inout_ PREGHANDLE RegHandle ) /*++ Routine Description: This function registers the provider with ETW and handles OS version. Arguments: ProviderId - Provider Id to be register with ETW EnableCallback - Callback to be used: Vista : McGenControlCallbackV2 down-level : McGenControlCallback CallbackContext - Context for this provider is PMCGEN_TRACE_CONTEXT RegHandle - down-level is a pointer to PMCGEN_TRACE_CONTEXT Remarks: Register with ETW Vista down-level, and set the RegHandle as a pointer to PMCGEN_TRACE_CONTEXT for this provider. For Vista registers the provider. --*/ { ULONG Error = ERROR_SUCCESS; if(!RegHandle) { return ERROR_INVALID_PARAMETER; } if(*RegHandle) { // // already registered, ignore this one // goto Cleanup; } // // Initialize Tracing funtion pointers according to OS version // McGenInitTracingSupport(); // // Vista // if(!McGenPreVista ){ Error = PfnEventRegister(ProviderId, (EnableCallback == NULL) ? McGenControlCallbackV2 : EnableCallback, CallbackContext, RegHandle); } else { // // down-level : XP/W2K3 // PMCGEN_TRACE_CONTEXT Context = (PMCGEN_TRACE_CONTEXT)CallbackContext; TRACE_GUID_REGISTRATION TraceRegistration; if(CallbackContext == NULL) { Error = ERROR_INVALID_PARAMETER; goto Cleanup; } *RegHandle = (REGHANDLE)CallbackContext; TraceRegistration.Guid = ProviderId; TraceRegistration.RegHandle = 0; #pragma prefast(suppress:__WARNING_BANNED_LEGACY_INSTRUMENTATION_API_USAGE, "Generated Code Down-Level Support"); Error = RegisterTraceGuids((EnableCallback == NULL) ? McGenControlCallback : (WMIDPREQUEST)EnableCallback, CallbackContext, ProviderId, 1, &TraceRegistration, 0, 0, &Context->RegistrationHandle); } Cleanup: return Error; } #if !defined(McGenEventTracingUnregister2_df) #define McGenEventTracingUnregister2_df #pragma warning(push) #pragma warning(disable:4068) // This function is for use by MC-generated code and should not be used directly. __inline ULONG __stdcall McGenEventTracingUnregister2( _Inout_ PMCGEN_TRACE_CONTEXT Context ) /*++ Routine Description: Unregister from ETW. Arguments: Context is the pointer to the provider context. --*/ { ULONG Error; if (Context == NULL) { return ERROR_INVALID_PARAMETER; } if (!McGenTracingSupportInit) { // // EventRegister macro has not been called // return ERROR_SUCCESS; } if (!Context->RegistrationHandle) { // // Provider has not registered // return ERROR_SUCCESS; } // // Vista // if (!McGenPreVista) { Error = PfnEventUnregister(Context->RegistrationHandle); } else { // // down-level : XP/W2K3 // #pragma prefast(suppress:__WARNING_BANNED_LEGACY_INSTRUMENTATION_API_USAGE, "Generated Code Down-Level Support"); Error = UnregisterTraceGuids(Context->RegistrationHandle); Context->Flags = 0; Context->Level = 0; Context->Logger = 0; if (Context->EnableBitsCount > 0) { RtlZeroMemory(Context->EnableBitMask, (((Context->EnableBitsCount - 1) / 32) + 1) * sizeof(ULONG)); } } Context->RegistrationHandle = 0; return Error; } #pragma warning(pop) #endif // McGenEventTracingUnregister2_df // This function is for use by MC-generated code and should not be used directly. FORCEINLINE ULONG __stdcall McGenEventTracingUnregister(_In_ PREGHANDLE RegHandle) /*++ Routine Description: Unregister from ETW. Arguments: RegHandle is the pointer to the provider context down-level Remarks: Unregister provider and disables provider context --*/ { ULONG Error = ERROR_SUCCESS; if(!RegHandle) { return ERROR_INVALID_PARAMETER; } if (!McGenTracingSupportInit){ // // EventRegister macro has not been called // return ERROR_SUCCESS; } if(!(*RegHandle)) { // // Provider has not registerd // return ERROR_SUCCESS; } // // Vista // if(!McGenPreVista ){ Error = PfnEventUnregister(*RegHandle); } else { // // down-level : XP/W2K3 // PMCGEN_TRACE_CONTEXT Context = (PMCGEN_TRACE_CONTEXT)(ULONG_PTR)(*RegHandle); #pragma prefast(suppress:__WARNING_BANNED_LEGACY_INSTRUMENTATION_API_USAGE, "Generated Code Down-Level Support"); Error = UnregisterTraceGuids(Context->RegistrationHandle); Context->Flags = 0; Context->Level = 0; Context->Logger = 0; if (Context->EnableBitsCount > 0) { RtlZeroMemory(Context->EnableBitMask, (((Context->EnableBitsCount - 1) / 32) + 1) * sizeof(ULONG)); } Context->RegistrationHandle = 0; } *RegHandle = (REGHANDLE)0; return Error; } #if !defined(MCGEN_TRACING_DLL) #define MCGEN_TRACING_DLL L"advapi32.dll" #endif #if !defined(MCGEN_TRACING_DLL_V2) #define MCGEN_TRACING_DLL_V2 L"api-ms-win-eventing-provider-l1-1-0.dll" #endif #if !defined(MCGEN_EVENTWRITE_API) #define MCGEN_EVENTWRITE_API "EventWrite" #endif #if !defined(MCGEN_EVENTREGISTER_API) #define MCGEN_EVENTREGISTER_API "EventRegister" #endif #if !defined(MCGEN_EVENTUNREGISTER_API) #define MCGEN_EVENTUNREGISTER_API "EventUnregister" #endif #if !defined(McGenInitTracingSupportFunc) #define McGenInitTracingSupportFunc // This function is for use by MC-generated code and should not be used directly. FORCEINLINE VOID McGenInitTracingSupport( VOID ) /*++ Routine Description: This function assigns at runtime the ETW API set to be use for tracing. Arguments: Remarks: At runtime assign the function pointers for the trace APIs to be used. Vista and later uses WriteEvent, otherwise use TraceEvent. --*/ { OSVERSIONINFO OSVersion; HINSTANCE TraceApiDll = NULL; BOOL OkVersion; BOOL IsWin8OrLater = FALSE; if (McGenTracingSupportInit){ return; } OSVersion.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); OkVersion = GetVersionEx(&OSVersion); if (OkVersion) { McGenPreVista = (OSVersion.dwMajorVersion < 6); IsWin8OrLater = (OSVersion.dwMajorVersion > 6) || ((OSVersion.dwMajorVersion == 6) && (OSVersion.dwMinorVersion > 1)); if (McGenPreVista) { goto done; } } TraceApiDll = GetModuleHandleW(MCGEN_TRACING_DLL); if ((TraceApiDll == NULL) && (IsWin8OrLater != FALSE)) { TraceApiDll = GetModuleHandleW(MCGEN_TRACING_DLL_V2); } if (TraceApiDll != NULL) { PfnEventWrite = (PFN_EVENT_WRITE)GetProcAddress(TraceApiDll, MCGEN_EVENTWRITE_API); if (NULL == PfnEventWrite) { if (OkVersion) { McGenDebug(1, ("[McGenInitTracing] Failed to load EventWrite, using PreVista ETW \n")); } McGenPreVista = TRUE; goto done; } PfnEventRegister = (PFN_EVENT_REGISTER) GetProcAddress(TraceApiDll, MCGEN_EVENTREGISTER_API); if (NULL == PfnEventRegister) { McGenDebug(1, ("[McGenInitTracing] Failed to load EventRegister, using PreVista ETW \n")); PfnEventRegister = McGenEventTracingRegister; McGenPreVista = TRUE; goto done; } PfnEventUnregister = (PFN_EVENT_UNREGISTER) GetProcAddress(TraceApiDll, MCGEN_EVENTUNREGISTER_API); if (NULL == PfnEventUnregister) { McGenDebug(1, ("[McGenInitTracing] Failed to load EventUnregister, using PreVista ETW \n")); PfnEventRegister = McGenEventTracingRegister; McGenPreVista = TRUE; goto done; } } else { McGenDebug(1, ("[McGenInitTracing] Failed to load %ls, using PreVista ETW \n", MCGEN_TRACING_DLL)); McGenPreVista = TRUE; } done: McGenDebug(1, ("[McGenInitTracing] Prevista %s \n", McGenPreVista ? "TRUE" : "FALSE" )); McGenTracingSupportInit = TRUE; } #endif //--------------------------------------------------------------------- // // // Generated by Message Compiler (mc.exe) // // Copyright (c) Microsoft Corporation. All Rights Reserved. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //--------------------------------------------------------------------- { using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; using System.Diagnostics.Eventing; using Microsoft.Win32; using System.Runtime.InteropServices; using System.Security.Principal; using System.Threading; using System.Security; internal class EventProviderVersionTwo : EventProvider { internal EventProviderVersionTwo(Guid id) : base(id) {} [StructLayout(LayoutKind.Explicit, Size = 16)] private struct EventData { [FieldOffset(0)] internal UInt64 DataPointer; [FieldOffset(8)] internal uint Size; [FieldOffset(12)] internal int Reserved; } // // ETW Pre Vista support class // internal class EventProviderVersionOne : IDisposable { EtwNativeMethods.EtwEnableCallback m_etwCallback; // Trace Callback function private ulong m_regHandle; // Trace Registration Handle private byte m_level; // Tracing Level private long m_flags; // Trace Enable Flags private int m_enabled; // Enabled flag from Trace callback private Guid m_providerId; // Control Guid private ulong m_logger; // logger private int m_disposed; // when 1, provider has unregister internal const uint s_eventFlags = 0x00140000; // WNODE_FLAG_TRACED_GUID |WNODE_FLAG_USE_MOF_PTR // // Mof Structure is the same as EventData // [StructLayout(LayoutKind.Explicit, Size = 16)] private struct EventData { [FieldOffset(0)] internal UInt64 DataPointer; [FieldOffset(8)] internal uint Size; [FieldOffset(12)] internal int Reserved; } internal EventProviderVersionOne(Guid providerId) { m_providerId = providerId; // // Register the ProviderId with ETW // Register(); } // // Registration Vista Down-Level // private unsafe uint Register () { m_etwCallback = new EtwNativeMethods.EtwEnableCallback(EtwEnableCallBack); EtwNativeMethods.TRACE_GUID_REGISTRATION guidReg; // // This dummyGuid is there for ETW backward compatibility issues // Guid dummyGuid = new Guid ("{b4955bf0-3af1-4740-b475-99055d3fe9aa}"); guidReg.Id = (IntPtr)(&dummyGuid); guidReg.RegHandle = IntPtr.Zero; return EtwNativeMethods.RegisterTraceGuids(m_etwCallback, null, ref m_providerId, 1, ref guidReg, null, null, out m_regHandle); } // // called by ETW to enable or disable tracing // internal unsafe uint EtwEnableCallBack (EtwNativeMethods.WMIDPREQUESTCODE requestCode, IntPtr context, uint* bufferSize, byte* byteBuffer) { switch (requestCode) { case EtwNativeMethods.WMIDPREQUESTCODE.WMI_ENABLE_EVENTS: m_logger = EtwNativeMethods.GetTraceLoggerHandle(byteBuffer); m_flags = EtwNativeMethods.GetTraceEnableFlags (m_logger); m_level = EtwNativeMethods.GetTraceEnableLevel (m_logger); m_enabled = 1; break; case EtwNativeMethods.WMIDPREQUESTCODE.WMI_DISABLE_EVENTS: m_enabled = 0; m_logger = 0L; m_level = 0; m_flags = 0; break; default: m_enabled = 0; m_logger = 0L; break; } return 0; } // // implement Dispose Pattern to early deregister from ETW insted of waiting for // the finalizer to call deregistration. // Once the user is done with the provider it needs to call Close() or Dispose() // If neither are called the finalizer will unregister the provider anyway. // public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { // // explicit cleanup is done by calling Dispose with true from // Dispose() or Close(). The disposing arguement is ignored because there // are no unmanaged resources. // The finalizer calls Dispose with false. // // // check if the object has been already been disposed // if (m_disposed == 1) return; if (Interlocked.Exchange(ref m_disposed, 1) != 0) { // somebody is already disposing the provider return; } // // Disables Tracing in the provider, then unregisters // m_enabled = 0; Deregister(); } // // This method deregisters the controlGuid of this class with ETW. // public virtual void Close() { Dispose(); } ~EventProviderVersionOne() { Dispose(false); } // // This method unregisters from ETW. // private unsafe void Deregister() { // // Unregister from ETW using the RegHandle saved from // the register call. // if (m_regHandle != 0) { EtwNativeMethods.UnregisterTraceGuids(m_regHandle); m_regHandle = 0; } } public bool IsEnabled(byte level, uint flags) { // // If not enabled, return false. // if (m_enabled == 0) { return false; } // This also covers the case of Level == 0. if ((level <= m_level) || (m_level == 0)) { // // Check if flags is enabled // if ((flags == 0) || (((flags & m_flags) != 0))) { return true; } } return false; } public bool IsEnabled() { if (m_enabled == 0) { return false; } return true; } internal unsafe bool WriteEvent(ref EventDescriptor eventDescriptor, ref Guid eventGuid, string data) { if (IsEnabled(eventDescriptor.Level, (uint)eventDescriptor.Keywords)) { int eventSize = sizeof(EtwNativeMethods.EVENT_TRACE_HEADER)+ sizeof(EventData); byte* userData = stackalloc byte[eventSize]; EventData* userDataPtr = (EventData*)(userData+ sizeof(EtwNativeMethods.EVENT_TRACE_HEADER)); EtwNativeMethods.EVENT_TRACE_HEADER* header = (EtwNativeMethods.EVENT_TRACE_HEADER*)userData; // // header here // header->Guid = eventGuid; header->Flags = s_eventFlags; // WNODE_FLAG_TRACED_GUID |WNODE_FLAG_USE_MOF_PTR; header->Version = (short)eventDescriptor.Version; header->Level = eventDescriptor.Level; header->Type = eventDescriptor.Opcode; header->Size = (short)eventSize; // // Event data here userDataPtr->Size = (uint)(data.Length + 1)*sizeof(char); fixed (char* a0 = data) { userDataPtr->DataPointer = (ulong)a0; EtwNativeMethods.TraceEvent(m_logger, userData); } } return true; } [SuppressUnmanagedCodeSecurityAttribute()] internal static class EtwNativeMethods { [StructLayout (LayoutKind.Explicit, Size=48)] internal struct EVENT_TRACE_HEADER { [FieldOffset (0)] internal short Size; [FieldOffset (2)] internal ushort FieldTypeFlags; [FieldOffset (4)] internal byte Type; [FieldOffset (5)] internal byte Level; [FieldOffset (6)] internal short Version; [FieldOffset (8)] internal uint ThreadId; [FieldOffset (12)] internal uint ProcessId; [FieldOffset (16)] internal Int64 TimeStamp; [FieldOffset (24)] internal Guid GuidPtr; [FieldOffset (24)] internal Guid Guid; [FieldOffset (40)] internal uint ClientContext; [FieldOffset (44)] internal uint Flags; } [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 1)] internal struct TRACE_GUID_REGISTRATION { internal IntPtr Id; internal IntPtr RegHandle; } internal enum WMIDPREQUESTCODE : uint { WMI_ENABLE_EVENTS = 4, WMI_DISABLE_EVENTS = 5 } internal const String ADVAPI32 = "advapi32.dll"; // // Callback WMIDPREQUEST // internal unsafe delegate uint EtwEnableCallback ( WMIDPREQUESTCODE requestCode, IntPtr requestContext, uint* bufferSize, byte* buffer ); // // Registration APIs // [DllImport (ADVAPI32, ExactSpelling = true, EntryPoint="RegisterTraceGuidsW", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] internal static extern unsafe uint RegisterTraceGuids( EtwEnableCallback requestAddress, void* requestContext, ref Guid controlGuid, uint guidCount, ref TRACE_GUID_REGISTRATION traceGuidReg, string mofImagePath, string mofResourceName, out ulong registrationHandle ); [DllImport (ADVAPI32, ExactSpelling = true, EntryPoint="UnregisterTraceGuids", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] internal static extern int UnregisterTraceGuids (ulong registrationHandle); // // Enable // [DllImport (ADVAPI32, ExactSpelling = true, EntryPoint="GetTraceLoggerHandle", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] internal static extern unsafe ulong GetTraceLoggerHandle (byte* Buffer); [DllImport (ADVAPI32, ExactSpelling = true, EntryPoint="GetTraceEnableFlags", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] internal static extern uint GetTraceEnableFlags (ulong TraceHandle); [DllImport(ADVAPI32, ExactSpelling = true, EntryPoint="GetTraceEnableLevel", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] internal static extern byte GetTraceEnableLevel (ulong TraceHandle); // // Writing (Publishing/Logging) APIs // [DllImport (ADVAPI32, ExactSpelling = true, EntryPoint="TraceEvent", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] internal static extern unsafe uint TraceEvent ( ulong traceHandle, byte* eventTrace ); } (default)EventWriteForContextwin_None!!!NOT SUPPORTED!!!const signed charconst unsigned charconst signed shortconst unsigned shortconst signed intconst unsigned intconst signed __int64const unsigned __int64const floatconst doubleWinRtProvider%ls : error : Failed trying to open a header file ("%ls") for the manifest constants. %ls : error : Failed trying to open MOF file ("%ls"). idl%ls : error : Failed to open ("%ls") for IDL generation hpp%ls : error : Failed to open ("%ls") for WinRT headerfile generation cpp%ls : error : Failed to open ("%ls") for WinRT CPP file generation XMLAppXExtension%ls : error : Failed to open ("%ls") for WinRT AppX Extension XML file generation js%ls : error : Failed to open ("%ls") for WinRT JavaScript stubs file generation #define %-32ls 0x%08lXL$(string. #define MSG_%-32ls 0x%08lXL%ls : error : Failed to Create OutputFile. Return code = %d namespace %ls #include #include #include #ifndef ETW_INLINE #ifdef _ETW_KM_ // In kernel mode, save stack space by never inlining templates. #define ETW_INLINE DECLSPEC_NOINLINE __inline #else // In user mode, save code size by inlining templates as appropriate. #define ETW_INLINE __inline #endif #endif // ETW_INLINE #if defined(__cplusplus) extern "C" { #endif #if !defined(McGenDebug) #define McGenDebug(a,b) ((void)0) #endif // // MCGEN_ENABLE_CHECK macro: // Determines whether the specified event would be considered as enabled // based on the state of the specified context. Slightly faster than calling // McGenEventEnabled directly. // #ifndef MCGEN_ENABLE_CHECK #define MCGEN_ENABLE_CHECK(Context, Descriptor) (Context.IsEnabled && McGenEventEnabled(&Context, &Descriptor)) #endif #if !defined(MCGEN_CONTROL_CALLBACK) #define MCGEN_CONTROL_CALLBACK #endif // MCGEN_CONTROL_CALLBACK #if !defined(McGenEventRegisterUnregister) #define McGenEventRegisterUnregister #endif // McGenEventRegisterUnregister #if !defined(McGenEventRegisterUnregister) #define McGenEventRegisterUnregister #define MANIFEST_MAX_MOF_FIELDS_SUPPORTED 16 VOID McGenInitTracingSupport( VOID ); #if !defined(McGenEventRegisterUnregister) #define McGenEventRegisterUnregister #pragma warning(push) #pragma warning(disable:4068) #pragma warning(pop) #endif // McGenEventRegisterUnregister // // MCGEN_ENABLE_CHECK macro: // Determines whether the specified event would be considered as enabled // based on the state of the specified context. Slighly faster than calling // McGenEventTracingEnabled directly. // #ifndef MCGEN_ENABLE_CHECK #define MCGEN_ENABLE_CHECK(Context, Descriptor) (Context.IsEnabled && McGenEventTracingEnabled(&Context, &Descriptor)) #endif //*** // Warning : Classic Crimson Provider Ignored // Provider : %ls //*** GetManifestData: Failed with Error 0x%x%ls : error : GetManifestData: Failed with Error 0x%x #if defined(__cplusplus) } #endif %ls : error : I/O error %u %ls_EVENT_0x%x_%x_%x_%x_%x_%x_%I64x EXTERN_C __declspec(selectany) const EVENT_DESCRIPTOR %ls = {0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%I64x}; #define %ls_value 0x%x%lsEvent%d %ls = new EventDescriptor(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, (long)0x%I64x);0x%08x, 0x%04x, 0x%04x, {0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x}%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x%cr%dR%d%c%dr%d%c%d%cR%cr%d%c%cR%d #define %ls%ls%ls(pContext, Activity%ls_Len_, ) \ MCGEN_EVENT_ENABLED(%ls) \ ? MCGEN_EVENT_ENABLED_FORCONTEXT(pContext, %ls) \ ? _mcgen_TEMPLATE_FOR_%ls(&%ls_Context&(pContext)->Context&_mcgen_CheckContextType_%ls(pContext)->Context, Activity, NULL, &%ls%ls, &%lsId, %ls_Len_, %ls) : 0Unknown combination (Level, Keyword) = (%d, 0x%I64x) // // Enablement check macro for event "%ls" // #define EventEnabled%ls() _mcgen_EVENT_BIT_SET(%lsEnableBits, %u) #define EventEnabled%ls_ForContext(pContext) _mcgen_EVENT_BIT_SET(_mcgen_CheckContextType_%ls(pContext)->EnableBits, %u) // // Event write macros for event "%ls" // // MC Note :: Macro for event id = %d // This event contains complex types that require the caller to pack the data. // Refer to the note at the top of this header for additional details. //%ls : error : Event %ls must use a task and define eventGUID %ls : error : Too Many Properties for template : %ls MofCoMcTemplate%ls%ls%lc0%ls : error : MC cound not recognize type for template %ls property = %ls _AssumeEnabled_%ls_%lsAssumeEnabled // This macro is for use by MC-generated code and should not be used directly. #define _mcgen_TEMPLATE_FOR_%ls _mcgen_PASTE2(%ls_, MCGEN_EVENTWRITETRANSFER) #define _mcgen_TEMPLATE_FOR_%ls %ls %ls : error : ControlGuid not supported for MOF generation %ls : error : Opcodes are required for MOF generation #pragma autorecover #pragma classflags("forceupdate") #pragma namespace("\\\\.\\root\\WMI") // // ETW Generated File from Manifest // MC: "%ls" event count = %Id [Dynamic, Description("%ls") : amended, guid("{%ls}"), locale("MS\\0x409")] class %ls : EventTrace { [Description ("Enable Flags") : amended, ValueDescriptions{, "%ls "%ls}, DefineValues{ "%ls"%ls Values{ ValueMap{ "0x%.8X"%ls}: amended ] uint32 Flags; [Description ("Levels") : amended, ValueDescriptions{ "Abnormal exit or termination", "Severe errors that need logging", "Warnings such as allocation failure", "Includes non-error cases", "Detailed traces from intermediate steps" } : amended, DefineValues{ "TRACE_LEVEL_FATAL", "TRACE_LEVEL_ERROR", "TRACE_LEVEL_WARNING" "TRACE_LEVEL_INFORMATION", "TRACE_LEVEL_VERBOSE" }, Values{ "Fatal", "Error", "Warning", "Information", "Verbose" }, ValueMap{ "0x1", "0x2", "0x3", "0x4", "0x5" }, ValueType("index") ] uint32 Level; };%ls : warning : There are more than %lu versions of this event [Dynamic, Description("%ls") : amended, guid("{%ls}"), EventVersion(%d), DisplayName("%ls") : amended ] class %ls_V%d:%ls { };%ls :ERROR: For Task : '%ls', attribute "eventGUID" is required on element <task> for downlevel code generation If the intent is to raise events in XP/W2K3 then add "eventGUID" attribute [Dynamic, Description("%ls") : amended, EventType{%d, %d [Dynamic, Description("%ls") : amended, EventType(%d%c, EventTypeName%c%c "%ls"%c : amended ] class %ls_V%d:%ls_V%d { [Dynamic, Description("%ls") : amended, EventType(%d), EventTypeName("%ls") : amended ] class %ls_V%d:%ls_V%d { };%ls : warning : Property Not Supported = %ls NULL Event Name%ls : error : Maximum number of properties is %lu :: Event = %ls %ls : error : No support for non fixed size arrays in MOF = %ls [WmiDataId(%d), Description("%ls%d") : amended, read] %ls %ls%d; [WmiDataId(%d), Description("%ls") : amended,BitValuesValues %ls{ "%ls", "%ls" }:amended,BitMapValueMap "%d", "%d" } ] uint32 %ls;%ls : error : Unsupported map type %d in MOF read] %ls %ls;stringsint8uint8sint16uint16sint32uint32sint64uint64real32real64objectpointer StringTermination("NullTerminated"), format("w"), extension("Guid"), pointer, extension("Sid"), format("x"), StringTermination("Counted"), format("w"), StringTermination("Counted"), StringTermination("ReverseCounted"), format("w"), StringTermination("ReverseCounted"), StringTermination("NotCounted"), format("w"), StringTermination("NotCounted"), format("c"), extension("SizeT"), // // Event method for %ls //%ls : error : Too Many Properties for template : %ls !!!!! // // The event's template has types not supported in c# generation // // // The event's template has types not supported in c# generation // use win:Binary or win:Int8 array instead // static public %lsbool %ls%ls(int %ls_Len_, []%ls%ls %ls, %ls%ls %ls) { return m_provider.WriteEvent(ref %ls, %ls); } if (m_vistaProvider) { return m_provider.WriteEvent(ref %ls, %ls); } else { if (!m_providerLegacy.IsEnabled()) { return true; } return m_providerLegacy.WriteEvent(ref %ls, ref %lsId, %ls); } } if (!m_provider.IsEnabled()) { return true; } if (m_vistaProvider) { if (!m_provider.IsEnabled()) { return true; } ++*EventDescriptor*++ %*ls return m_provider.Template%ls(ref %ls, %*ls return m_provider.TemplateEventDescriptor(ref %ls); } else { if (!m_providerLegacy.IsEnabled()) { return true; } return m_providerLegacy.TemplateEventDescriptor(ref %ls, ref %lsId); } %ls, %ls); } else { if (!m_providerLegacy.IsEnabled()) { return true; } return m_providerLegacy.Template%ls(ref %ls, ref %lsId, } } %ls : error : ControlGuid not supported for CS generation // // WARNING: This provider uses provider traits, but the C# code generation // does not support provider traits. Provider traits will not be registered // or included in events. // : IDisposable public %lsclass %ls%ls { // // Provider "%ls" event count = %Id // internal %lsEventProviderVersionTwo m_provider = new EventProviderVersionTwo(new Guid("%ls")); internal %lsEventProviderVersionTwo m_provider; internal %lsEventProviderVersionOne m_providerLegacy; private %lsbool m_vistaProvider = (Environment.OSVersion.Version.Major > 5); private %lsGuid m_providerId; // // Task : eventGUIDs // private %lsGuid %lsId = new Guid("%ls"); // // Event Descriptors //private static protected %lsEventDescriptor %ls; protected virtual void Dispose(bool disposing) { if (disposing) { m_provider.Dispose(); } } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (disposing) { if (m_vistaProvider) { m_provider.Dispose(); } else { m_providerLegacy.Dispose(); } } } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); }staticpublic %ls %ls() { unchecked { } } } m_providerId = new Guid("%ls"); if (m_vistaProvider) { m_provider = new EventProviderVersionTwo(m_providerId); } else { m_providerLegacy = new EventProviderVersionOne(m_providerId); } } %ls : error : Template for Event Id = %d contains types that can not be described in MOF : (structures, non fixed size Arrays, Binary, SystemTime) } #ifndef _%ls_def #define _%ls_def typedef enum _%ls { %ls%ls = %d, } %ls; #endif // _%ls_def _ContextHandleMcGenEventRegisterContextMcGenEventRegister #ifndef %ls%ls%ls #define %ls%ls%ls(%ls) %ls(&%ls, McGenControlCallbackV2, &%ls_Context, &%ls%ls%ls) #endif %ls : error : ControlGuid not supported for downlevel code generation //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Provider "%ls" event count %Id //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Id_ // Provider GUID = %ls EXTERN_C __declspec(selectany) const GUID %ls = {%ls};_ControlGuid // Control GUID = %ls #ifndef %ls_Traits #define %ls_Traits ( \ "\x%02X\x%02X" /* Total size of traits = %u */ \ "\\\"\%u%u%u omitted\x00" /* Provider name%ls */ \ "\x13\x00\x01\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X" /* Group guid */ \ "\x13\x00\x02\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X\x%02X" /* Decode guid */ \ ) #define %ls_Traits NULL #endif // %ls_Traits // // Channel // #define %ls 0x%x #define %ls_KEYWORD 0x%I64X #define %ls_CHANNEL_%ls 0x%x #define %ls_CHANNEL_%ls_KEYWORD 0x%I64X // // Levels // #define %ls_LEVEL_%ls 0x%x // // Opcodes // #define %ls_OPCODE_%ls 0x%x // // Tasks // #define %ls_TASK_%ls 0x%x EXTERN_C __declspec(selectany) const GUID %lsId = {%ls}; // // Keyword // #define %ls 0x%I64X #define %ls_KEYWORD_%ls 0x%I64X // // Event Descriptors //NULL #define %ls 0x%XL // // Event Enablement Bits // These variables are for use by MC-generated code and should not be used directly. // EXTERN_C __declspec(selectany) DECLSPEC_CACHEALIGN ULONG %lsEnableBits[%d]; EXTERN_C __declspec(selectany) const ULONGLONG %lsKeywords[%d] = {0x%I64x}; EXTERN_C __declspec(selectany) const unsigned char %lsLevels[%d] = {%d // // Provider context // EXTERN_C __declspec(selectany) MCGEN_TRACE_CONTEXT %ls_Context = _Traits0(ULONG_PTR){0, %ls%ls%ls, 0, 0, 0, 0, 0, 0, %d, %lsEnableBits, %lsKeywords, %lsLevels};, (ULONG_PTR){0%ls%ls%ls}; // // Provider REGHANDLE // #define %ls (%ls_Context.RegistrationHandle) {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, %d, %lsEnableBits, %lsKeywords, %lsLevels};{0};1 do not // // This macro is set to %ls, indicating that the EventWrite[Name] macros%ls // have an Activity parameter. This is controlled by the -km and -um options. // #define %ls_EventWriteActivity %ls // // Register with ETW using the control GUID specified in the manifest. // Invoke this macro during module initialization (i.e. program startup, // DLL process attach, or driver load) to initialize the provider. // Note that if this function returns an error, the error means that // will not work, but no action needs to be taken -- even if EventRegister // returns an error, it is generally safe to use EventWrite and // EventUnregister macros (they will be no-ops if EventRegister failed). //EventRegister // // Register with ETW using a specific control GUID (i.e. a GUID other than what // is specified in the manifest). Advanced scenarios only. //(Guid)GuidEventRegisterByGuid // // Unregister with ETW and close the provider. // Invoke this macro during module shutdown (i.e. program exit, DLL process // detach, or driver unload) to unregister the provider. // Note that you MUST call EventUnregister before DLL or driver unload // (not optional): failure to unregister a provider before DLL or driver unload // will result in crashes. // #ifndef EventUnregister%ls #define EventUnregister%ls() McGenEventUnregister(&%ls) #endif // // MCGEN_ENABLE_FORCONTEXT_CODE_GENERATION macro: // Define this macro to enable support for caller-allocated provider context. // #ifdef MCGEN_ENABLE_FORCONTEXT_CODE_GENERATION // // Advanced scenarios: Caller-allocated provider context. // Use when multiple differently-configured provider handles are needed, // e.g. for container-aware drivers, one context per container. // // Usage: // // - Caller enables the feature before including this header, e.g. // #define MCGEN_ENABLE_FORCONTEXT_CODE_GENERATION 1 // - Caller allocates memory, e.g. pContext = malloc(sizeof(McGenContext_%ls)); // - Caller registers the provider, e.g. EventRegister%ls_ForContext(pContext); // - Caller writes events, e.g. EventWriteMyEvent_ForContext(pContext, ...); // - Caller unregisters, e.g. EventUnregister%ls_ForContext(pContext); // - Caller frees memory, e.g. free(pContext); // typedef struct tagMcGenContext_%ls { // The fields of this structure are subject to change and should // not be accessed directly. To access the provider's REGHANDLE, // use %ls_ForContext(pContext). MCGEN_TRACE_CONTEXT Context; ULONG EnableBits[%u]; } McGenContext_%ls; _mcgen_PASTE3(_mcgen_RegisterForContext__, MCGEN_EVENTREGISTER, _mcgen_EVENTSETINFORMATION_SUFFIX)_mcgen_PASTE2(_mcgen_RegisterForContext__, MCGEN_EVENTREGISTER) #define EventRegister%ls_ForContext(pContext) %ls(&%ls, pContext) #define EventRegisterByGuid%ls_ForContext(Guid, pContext) %ls(&(Guid), pContext) #define EventUnregister%ls_ForContext(pContext) McGenEventUnregister(&(pContext)->Context.RegistrationHandle) // // Provider REGHANDLE for caller-allocated context. // #define %ls_ForContext(pContext) ((pContext)->Context.RegistrationHandle) // This function is for use by MC-generated code and should not be used directly. // Initialize and register the caller-allocated context. __inline ULONG __stdcall %ls( _In_ LPCGUID pProviderId, _Out_ McGenContext_%ls* pContext) { RtlZeroMemory(pContext, sizeof(*pContext)); pContext->Context.Logger = (ULONG_PTR)%ls_Traits; pContext->Context.EnableBitsCount = %u; pContext->Context.EnableBitMask = pContext->EnableBits; pContext->Context.EnableKeyWords = %lsKeywords; pContext->Context.EnableLevel = %lsLevels;.RegistrationHandle return %ls( pProviderId, McGenControlCallbackV2, &pContext->Context, &pContext->Context%ls); } // This function is for use by MC-generated code and should not be used directly. // Trigger a compile error if called with the wrong parameter type. FORCEINLINE _Ret_ McGenContext_%ls* _mcgen_CheckContextType_%ls(_In_ McGenContext_%ls* pContext) { return pContext; } #endif // MCGEN_ENABLE_FORCONTEXT_CODE_GENERATION // // Register with ETW XP, W2K, W2K3, Vista +, Kernel Mode // #ifndef EventRegister%ls #define EventRegister%ls() McGenEventTracingRegister(&%ls, NULL, &%ls_Context, &%ls_Context.RegistrationHandle) #endif // // Unregister with ETW // #ifndef EventUnregister%ls #define EventUnregister%ls() McGenEventTracingUnregister(&%ls_Context) #endif // // Register with ETW XP, W2K, W2K3, Vista + // #ifndef EventRegister%ls #define EventRegister%ls() McGenEventTracingRegister(&%ls, NULL, &%ls_Context, &%ls) #endif // // Unregister with ETW // #ifndef EventUnregister%ls #define EventUnregister%ls() McGenEventTracingUnregister2(&%ls_Context) #endif _Arg%d EventDataDescCreate(&EventData[%d],%ls, (ULONG)(sizeof(WCHAR)*%ls*%ls)); // Blob containing %ls concatenated strings; each string has the same length (%ls)%ls, (ULONG)(sizeof(WCHAR)*%ls_Len_)); // Blob containing %ls concatenated nul-terminated strings%ls, (ULONG)(sizeof(WCHAR)*%ls)); (%ls != NULL) ? %ls : L"NULL", (%ls != NULL) ? (ULONG)((wcslen(%ls) + 1) * sizeof(WCHAR)) : (ULONG)sizeof(L"NULL"));%ls, (ULONG)(sizeof(char)*%ls*%ls)); // Blob containing %ls concatenated strings; each string has the same length (%ls)%ls, (ULONG)(sizeof(char)*%ls_Len_)); // Blob containing %ls concatenated nul-terminated strings%ls, (ULONG)(sizeof(char)*%ls)); (%ls != NULL) ? %ls : "NULL", (%ls != NULL) ? (ULONG)((strlen(%ls) + 1) * sizeof(char)) : (ULONG)sizeof("NULL"));%c%ls, sizeof(%ls)%c%ls);GUID%ls, sizeof(%ls)%c%ls);const void*FILETIMESYSTEMTIME %ls, %ls_Len_);(%ls != NULL) ? %ls : (const void*)"\0\0\0\0\0\0\0", (%ls != NULL) ? (8u + %ls->SubAuthorityCount * 4u) : 8);WCHARchar%ls, (USHORT)(sizeof(%ls)*%ls_Len_)); // Blob contains data for %ls chunks; each chunk is a 16-bit ByteCount followed by ByteCount bytes of data.&EventData[%d].Size, sizeof(USHORT)); EventDataDescCreate(&EventData[%d], %ls, (USHORT)(sizeof(%ls)*%ls_Len_));%ls, (ULONG)sizeof(char)*%ls*%ls); // Blob containing %ls concatenated strings; each string has the same length (%ls)%ls, (ULONG)sizeof(char)*%ls);%ls : error : No support for STRUCT in MOF %ls, %ls * %ls_Len_);%ls, %ls_Len_);%ls,sizeof(const void*));NOT_SUPPORTEDsbytebyteshortushortintuintlongulongfloatdoubleboolbyte[]IntPtrDateTimeSecurityIdentifierconst WCHAR*PCWSTRconst char*PCSTRconst unsigned char*const SID*const GUID*const FILETIME*const SYSTEMTIME*reads_(_Arg%d_Len_)reads_(_Arg%dreads_(%d*_Arg%d*%dreads_(_Arg%d)opt_reads_(%d) + 1 // // Template Functions // // // Function for template "%ls" (and possibly others). // This function is for use by MC-generated code and should not be used directly. // #ifndef %ls_def #define %ls_def ETW_INLINE ULONG _mcgen_PASTE2(%ls_, MCGEN_EVENTWRITETRANSFER)( %ls( _In_ PMCGEN_TRACE_CONTEXT Context, _In_ PCEVENT_DESCRIPTOR Descriptor _In_opt_ const GUID* Activity _In_opt_ const GUID* EventGuid _In_ ULONG %ls_Len_ _In_ %ls %c%ls%ls : error : too many properties in template %ls ) { #define %ls_ARGCOUNT %d ULONG Error = 0; EVENT_DATA_DESCRIPTOR EventData[%ls_ARGCOUNT%ls]; typedef struct _MCGEN_TRACE_BUFFER { EVENT_TRACE_HEADER Header; EVENT_DATA_DESCRIPTOR EventData[%ls_ARGCOUNT]; } MCGEN_TRACE_BUFFER; MCGEN_TRACE_BUFFER TraceBuf; PEVENT_DATA_DESCRIPTOR EventData = TraceBuf.EventData; typedef struct _MCGEN_TRACE_BUFFER { EVENT_TRACE_HEADER Header; } MCGEN_TRACE_BUFFER; MCGEN_TRACE_BUFFER TraceBuf; %ls : error : internal error processing template %ls Context-> if (!%lsMcGenPreVista) {ActivityError =return %ls McGenEventWrite(Context, Descriptor, %ls, %ls_ARGCOUNT%ls, EventData);EventData %ls Context->PfnEtwWrite(Context->RegistrationHandle, Descriptor, Activity, %ls_ARGCOUNT, %ls); %ls PfnEventWrite(Context->RegistrationHandle, Descriptor, %ls_ARGCOUNT, %ls); } else { // // Fill in header fields // TraceBuf.Header.GuidPtr = (ULONGLONG)EventGuid; TraceBuf.Header.Flags = WNODE_FLAG_TRACED_GUID |WNODE_FLAG_USE_GUID_PTR|WNODE_FLAG_USE_MOF_PTR; TraceBuf.Header.Class.Version = (USHORT)Descriptor->Version; TraceBuf.Header.Class.Level = Descriptor->Level; TraceBuf.Header.Class.Type = Descriptor->Opcode; TraceBuf.Header.Size = sizeof(MCGEN_TRACE_BUFFER); TraceBuf.Header.FieldTypeFlags = 0; ((PWNODE_HEADER)&(TraceBuf.Header))->HistoricalContext = Context->Logger; %ls IoWMIWriteEvent(&TraceBuf.Header); %ls TraceEvent(Context->Logger, &TraceBuf.Header); } #ifdef MCGEN_CALLOUT MCGEN_CALLOUT(Context->RegistrationHandle, Descriptor, %ls_ARGCOUNT, &EventData[%lc]); MCGEN_CALLOUT(Context->RegistrationHandle, Descriptor, 0, NULL); #endif // MCGEN_CALLOUT return Error; } #endif // %ls_def // Value contains data for %ls strings; each string has length = %ls: if (%ls.Length + 1 < %ls*%ls) return false; userDataPtr[%d].Size = (uint)(sizeof(char)*%ls*%ls); // Value contains %ls concatenated nul-terminated strings (embedded nul between each one - use something like string.Join("\0", array) to generate this value): userDataPtr[%d].Size = (uint)(%ls == 0 ? 0 : sizeof(char)*(%ls.Length + 1)); userDataPtr[%d].Size = (uint)(sizeof(char)*(%ls.Length + 1)); // Value has length = %ls: if (%ls.Length + 1 < %ls) return false; userDataPtr[%d].Size = (uint)(sizeof(char)*%ls); // Value is a nul-terminated string (assume no embedded nuls): userDataPtr[%d].Size = (uint)(%ls.Length + 1)*sizeof(char); userDataPtr[%d].DataPointer = (UInt64)(&%ls); userDataPtr[%d].Size = (uint)(sizeof(byte)%c%ls); userDataPtr[%d].Size = (uint)(sizeof(short)%c%ls); userDataPtr[%d].Size = (uint)(sizeof(int)%c%ls); userDataPtr[%d].Size = (uint)(sizeof(long)%c%ls); userDataPtr[%d].Size = (uint)(sizeof(float)%c%ls); userDataPtr[%d].Size = (uint)(sizeof(double)%c%ls); %ls : error : Not allowed array of bool: PropertyName = %ls is an array of length %ls!!!!! int %lsInt = %ls ? 1 : 0; userDataPtr[%d].DataPointer = (UInt64)(&%lsInt); userDataPtr[%d].Size = (uint)(sizeof(int)); userDataPtr[%d].Size = (uint)(sizeof(Guid)%c%ls); userDataPtr[%d].Size = (uint)(sizeof(IntPtr)%c%ls); %ls : error : Not allowed array of DateTime: PropertyName = %ls is an array of length %ls long %lsFileTime = %ls.ToFileTime(); userDataPtr[%d].DataPointer = (UInt64)(&%lsFileTime); userDataPtr[%d].Size = (uint)(sizeof(long)); short* %lsSysTime = stackalloc short[8]; %lsSysTime[0] = (short)%ls.Year; %lsSysTime[1] = (short)%ls.Month; switch (%ls.DayOfWeek) { case DayOfWeek.Sunday: %lsSysTime[2] = 0; break; case DayOfWeek.Monday: %lsSysTime[2] = 1; break; case DayOfWeek.Tuesday: %lsSysTime[2] = 2; break; case DayOfWeek.Wednesday: %lsSysTime[2] = 3; break; case DayOfWeek.Thursday: %lsSysTime[2] = 4; break; case DayOfWeek.Friday: %lsSysTime[2] = 5; break; case DayOfWeek.Saturday: %lsSysTime[2] = 6; break; default: break; } %lsSysTime[3] = (short)%ls.Day; %lsSysTime[4] = (short)%ls.Hour; %lsSysTime[5] = (short)%ls.Minute; %lsSysTime[6] = (short)%ls.Second; %lsSysTime[7] = (short)%ls.Millisecond; userDataPtr[%d].DataPointer = (UInt64)(%lsSysTime); userDataPtr[%d].Size = (uint)(8 * sizeof(short)); %ls : error : Not allowed array of SecurityIdentifier : PropertyName = %ls is an array of length %ls byte [] %lsBin = new byte[%ls.BinaryLength]; %ls.GetBinaryForm(%lsBin, 0); userDataPtr[%d].Size = (uint)(%ls.BinaryLength); // Value contains data for %ls chunks; each chunk is a 16-bit ByteCount followed by ByteCount bytes of data: userDataPtr[%d].DataPointer = (UInt64)(&userDataPtr[%d].Size); userDataPtr[%d].Size = sizeof(ushort); userDataPtr[%d].Size = (ushort)((%ls == null ? 0 : %ls.Length) * sizeof(%ls)); // Value contains data for %ls chunks; each chunk has length = %ls: // Value has length = %ls: if (%ls.Length < sizeof(byte)*%ls%c%ls) return false; userDataPtr[%d].Size = (uint)(sizeof(byte)*%ls%c%ls); userDataPtr[%d].Size = (uint)(%ls_Len_%c%ls); internal unsafe bool Template%ls( internal bool TemplateEventDescriptor( ref EventDescriptor eventDescriptor int %ls_Len_ %ls%ls %ls ) { int argumentCount = %d; bool status = true; if (IsEnabled(eventDescriptor.Level, eventDescriptor.Keywords)) { byte* userData = stackalloc byte[sizeof(EventData) * argumentCount]; EventData* userDataPtr = (EventData*)userData; %*ls fixed (%ls* Bin%c0 = %ls%ls, %c%d = %ls%ls %*ls { %*ls userDataPtr[%d].DataPointer = (ulong)%c%d; %*ls status = WriteEvent(ref eventDescriptor, argumentCount, (IntPtr)(userData)); %*ls } } return status; } if (IsEnabled(eventDescriptor.Level, eventDescriptor.Keywords)){ return WriteEvent(ref eventDescriptor, 0, IntPtr.Zero); } return true; } } internal unsafe bool TemplateEventDescriptor( ref EventDescriptor eventDescriptor, ref Guid eventGuid int argumentCount = %d; if (IsEnabled(eventDescriptor.Level, (uint)eventDescriptor.Keywords)) { int eventSize = sizeof(EtwNativeMethods.EVENT_TRACE_HEADER)+ sizeof(EventData) * argumentCount; byte* userData = stackalloc byte[eventSize]; EventData* userDataPtr = (EventData*)(userData+ sizeof(EtwNativeMethods.EVENT_TRACE_HEADER)); EtwNativeMethods.EVENT_TRACE_HEADER* header = (EtwNativeMethods.EVENT_TRACE_HEADER*)userData; // // header here // header->Guid = eventGuid; header->Flags = s_eventFlags; // WNODE_FLAG_TRACED_GUID |WNODE_FLAG_USE_MOF_PTR; header->Version = (short)eventDescriptor.Version; header->Level = eventDescriptor.Level; header->Type = eventDescriptor.Opcode; header->Size = (short)eventSize; // // Event data here //%*ls fixed (%ls* %*ls{ %*ls EtwNativeMethods.TraceEvent(m_logger, userData); } return true; } if (IsEnabled(eventDescriptor.Level, (uint)eventDescriptor.Keywords)){ int eventSize = sizeof(EtwNativeMethods.EVENT_TRACE_HEADER); byte* userData = stackalloc byte[eventSize]; EtwNativeMethods.EVENT_TRACE_HEADER* header = (EtwNativeMethods.EVENT_TRACE_HEADER*)userData; // // header here // header->Guid = eventGuid; header->Flags = s_eventFlags; // WNODE_FLAG_TRACED_GUID |WNODE_FLAG_USE_MOF_PTR; header->Version = (short)eventDescriptor.Version; header->Level = eventDescriptor.Level; header->Type = eventDescriptor.Opcode; header->Size = (short)eventSize; EtwNativeMethods.TraceEvent(m_logger, userData); } return true; } `@@F @|@@?p@(@8 @@0@L @@1@8 @ 0@s@ p@Ј@ @x@ P[@~V@1R@oPD@C@@P;@W2@@4P@.@ @@. @G@!P@1@@@X@2@P@7 @TraceIsEnabledBCryptOpenAlgorithmProviderMicrosoft Primitive ProviderMD5BCryptCreateHashBCryptHashDataBCryptFinishHashunsigned charBYTEsigned intINTunsigned intUINT32signed __int64LONGLONGunsigned __int64ULONGLONGbooleanDOUBLEFLOATHSTRING[in, size_is(%ls)] _In_reads_(%ls) [in, size_is(%d)] _In_reads_(%d) [in] _In_ [version(NTDDI_WIN8), uuid(%ls)] interface I%ls : IInspectable { class %lsServer : public Microsoft::WRL::RuntimeClass<I%ls> { InspectableClass(RuntimeClass_%ls_%ls, BaseTrust); public: } // namespace %ls [propget] HRESULT %ls%ls%ls([out, retval] boolean* value); IFACEMETHOD(get_%ls%ls%ls)( _Out_ boolean* value) override; IFACEMETHODIMP %ls::%lsServer::get_%ls%ls%ls( _Out_ boolean* value) { *value = EventEnabled%ls(); return S_OK; } HRESULT %ls%ls(%ls%c %ls IFACEMETHOD(%ls%ls)( ) override; if (!EventEnabled%ls()) { return S_OK; } ULONG _MCGEN_StringLength%d; LPWSTR _MCGEN_Buffer%d = NULL; Counted _MCGEN_StringLength%d = GetStringArraySize(%ls, %ls); _MCGEN_Buffer%d = AllocateAndFillBuffer%ls(_MCGEN_StringLength%d * sizeof(WCHAR), %ls, %ls); if (_MCGEN_Buffer%d == NULL) { goto Cleanup; } Cleanup: free(_MCGEN_Buffer%d);WindowsGetStringLen(%ls), WindowsGetStringRawBuffer(%ls, nullptr)WindowsGetStringRawBuffer(%ls, nullptr)_MCGEN_StringLength%d, _MCGEN_Buffer%d IFACEMETHODIMP %lsServer::%ls%ls( { %ls%ls(%c%ls return S_OK; } namespace %ls { ActivatableClass(%lsServer) } [version(NTDDI_WIN8), activatable(NTDDI_WIN8)] runtimeclass %ls { [default] interface I%ls; }%ls : error : Property %ls from event %ls is fixed count, which is not supported by WinRT. %ls : error : Property %ls from event %ls has a specified length, which is not supported by WinRT. %ls : error : Property %ls from event %ls is not supported type for WinRT. import "oaidl.idl"; import "Inspectable.idl"; import "Windows.Foundation.idl"; #include #include <wrl\implements.h> #include <wrl\module.h> #include "%ls.h" #include "%ls.h" #include "%ls.hpp" STDAPI DllGetActivationFactory(_In_ HSTRING activatibleClassId, _COM_Outptr_ IActivationFactory** factory) { auto &module = Microsoft::WRL::Module::GetModule(); return module.GetActivationFactory(activatibleClassId, factory); } HRESULT WINAPI DllCanUnloadNow() { auto &module = Microsoft::WRL::Module::GetModule(); return module.GetObjectCount() == 0 ? S_OK : S_FALSE; } HRESULT WINAPI DllGetClassObject(_In_ REFCLSID rclsid, _In_ REFIID riid, _Outptr_ LPVOID FAR* ppv) { auto &module = Microsoft::WRL::Module::GetModule(); return module.GetClassObject(rclsid, riid, ppv); } /// IdentifierNameIsMisspelled %ls.man : error : Provider %ls does not have namespace attribute. %ls.man : error : Namespaces %ls and %ls do not have common root namespace namespace %ls }; MS-GenEtw-WinRTTemplate })(this); BOOL __stdcall DllMain ( _In_ HINSTANCE Module, _In_ DWORD Reason, _In_opt_ PVOID Reserved ) { UNREFERENCED_PARAMETER(Reserved); if (Module == NULL) { return FALSE; } switch (Reason) { case DLL_PROCESS_ATTACH: EventRegister%ls(); EventSetInformation(%lsHandle, EventProviderBinaryTrackInfo, NULL, 0); break; case DLL_PROCESS_DETACH: EventUnregister%ls(); break; } return TRUE; } #pragma warning(disable: 4505) // unreferenced local function has been removed #define LIMIT_RAW_LENGTH(RawLength) (RawLength < 0x7f00 ? RawLength : 0x7f00) static ULONG GetStringArraySize ( _In_ unsigned int StringsCount, _In_reads_(StringsCount) HSTRING* Strings ) { ULONG TotalSize = 0; for (ULONG Ix = 0; Ix < StringsCount; Ix += 1) { UINT32 RawLength = WindowsGetStringLen(Strings[Ix]); TotalSize += LIMIT_RAW_LENGTH(RawLength) + 1; } return TotalSize; } static LPWSTR AllocateAndFillBuffer ( _In_ ULONG BufferSize, _In_ ULONG StringsCount, _In_reads_(StringsCount) HSTRING* Strings ) { LPWSTR Buffer = static_cast(malloc(BufferSize)); ULONG Offset = 0; if (Buffer) { for (ULONG Ix = 0; Ix < StringsCount; Ix += 1) { UINT32 RawLength; PCWSTR RawString = WindowsGetStringRawBuffer(Strings[Ix], &RawLength); ULONG Length = LIMIT_RAW_LENGTH(RawLength); RtlCopyMemory(Buffer + Offset, RawString, Length * sizeof(WCHAR)); Offset += Length; Buffer[Offset] = L'\0'; Offset += 1; } } return Buffer; } static LPWSTR AllocateAndFillBufferCounted ( _In_ ULONG BufferSize, _In_ ULONG StringsCount, _In_reads_(StringsCount) HSTRING* Strings ) { LPWSTR Buffer = static_cast(malloc(BufferSize)); ULONG Offset = 0; if (Buffer) { for (ULONG Ix = 0; Ix < StringsCount; Ix += 1) { UINT32 RawLength; PCWSTR RawString = WindowsGetStringRawBuffer(Strings[Ix], &RawLength); ULONG Length = LIMIT_RAW_LENGTH(RawLength); Buffer[Offset] = static_cast(Length * sizeof(WCHAR)); Offset += 1; RtlCopyMemory(Buffer + Offset, RawString, Length * sizeof(WCHAR)); Offset += Length; } } return Buffer; } <ActivatableClass ActivatableClassId="%ls.%ls" ThreadingModel="both"/>TraceProvider.dll <!-- Place this XML fragment into your AppX manifest file. --> <Extensions> <Extension Category="windows.activatableClass.inProcessServer"> <InProcessServer> <Path><!-- Place DLL name here. E.g. %ls --></Path> (function init%ls(global) { var providerTemplates = null; var ns = global; if (ns.Diagnostics === undefined) { ns.Diagnostics = {}; } var ns = ns.Diagnostics; if (ns.Tracing === undefined) { ns.Tracing = {}; } var ns = ns.Tracing; if (ns.%ls === undefined) { ns.%ls = {}; } var ns = ns.%ls; ns.%ls = function () { if (providerTemplates === null) { providerTemplates = new global.%ls.%lsTemplate(); } }; var proto = ns.%ls.prototype; [version(NTDDI_WIN8), uuid(%ls)] interface I%lsTemplate : IInspectable { static PCEVENT_DESCRIPTOR _MCGEN_EventDescriptorArray[%Iu]; PCEVENT_DESCRIPTOR %lsTemplateServer::_MCGEN_EventDescriptorArray[%Iu] = { &%ls HRESULT EventEnabled([in] UINT EventIndex, [out, retval] VARIANT_BOOL* Enabled); static const UINT _MCGEN_EventEnabledBitArray[%Iu]; IFACEMETHOD(EventEnabled)( _In_ UINT EventIndex, _Out_ VARIANT_BOOL* Enabled) override; const UINT %lsTemplateServer::_MCGEN_EventEnabledBitArray[%Iu] = { %u #define _MCGEN_IS_%ls_ENABLED(i) (0 == (%lsEnableBits[_MCGEN_EventEnabledBitArray[i] >> 5] & (1 << (_MCGEN_EventEnabledBitArray[i] & 0x1f)))) %lsTemplateServer::EventEnabled( _In_ UINT EventIndex, _Out_ VARIANT_BOOL* Enabled ) { if (Enabled == NULL) return E_POINTER; if (EventIndex >= %Iu) return E_INVALIDARG; *Enabled = (_MCGEN_IS_%ls_ENABLED(EventIndex) == S_OK) ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } HRESULT Trace%ls([in] UINT _MCGEN_EventIndex IFACEMETHOD(Trace%ls)( _In_ UINT _MCGEN_EventIndex%lsTemplateServer::Trace%ls( _In_ UINT _MCGEN_EventIndex if (_MCGEN_EventIndex >= %Iu) return E_INVALIDARG; if (_MCGEN_IS_%ls_ENABLED(_MCGEN_EventIndex)) return S_OK; %ls(&%ls_Context, _MCGEN_EventDescriptorArray[_MCGEN_EventIndex], %c%ls proto.is%lsEnabled = function () { return !!providerTemplates.eventEnabled(%Iu); }; proto.trace%ls = function () { providerTemplates.trace%ls(%Iu };%ls :ERROR %d: corrupt baseline binary resource win:EventlogClassicwin:UnicodeStringwin:AnsiStringwin:Int8win:UInt8win:Int16win:UInt16win:Int32win:UInt32win:Int64win:UInt64win:Floatwin:Doublewin:Booleanwin:Binarywin:GUIDwin:Pointerwin:FILETIMEwin:SYSTEMTIMEwin:SIDwin:HexInt32win:HexInt64Unrecognize typexs:stringxs:dateTimexs:bytexs:unsignedBytexs:shortxs:unsignedShortxs:intxs:unsignedIntxs:longxs:unsignedLongxs:floatxs:doublexs:booleanxs:GUIDxs:hexBinarywin:HexInt8win:HexInt16win:PIDwin:TIDwin:Portwin:IPv4win:IPv6win:SocketAddresswin:CIMDateTimewin:ETWTIMEwin:Xmlwin:ErrorCodeunknown type <data inType="%ls" outType="%ls" name="%ls" count="%d" count="%ls" length="%d" length="%ls" map="%ls" /> <struct name="%ls"> </struct> <template guid="%ls"> </template> <event channel="%ls" keywords="%ls" level="%ls" opcode="%ls" task="%ls" value="%d" version="%d" notLogged="true" template="%ls" /> : error ::ERROR:%ls %ls Event Id %d from provider %ls has been removed from manifest %ls %ls Event Id %d found, but version %d NOT FOUND - provider %ls %ls %ls Event Id %d version %d - provider %ls Template properties have been removed from baseline Create new event Id to solve problem, leave old event in manifest %ls %ls Event Id %d version %d - provider %ls Template properties have been reordered, keep original ordering to preserver application compatibility. If this change is intentional and required, increment the version number of this event %ls %ls Event Id %d version %d - provider %ls Template property %ls has been renamed, create new event Id to solve problem, leave old event in manifest %ls %ls Event Id %d version %d - provider %ls Template properties do not match. Increment Version of the Event to solve problem and keep old event in manifest %ls %ls Event Id %d version %d - provider %ls Template Added - : Increment Version of the Event to solve problem %ls :ERROR %d: corrupt baseline binary resource %ls .BINGetManifestData: Failed at validation with Error 0x%x bЅ;t@@FF001050000009`if o f o f o f o f o PY )E`aKRpp  < < > L M M Q T b c   < < > > ? ? @ B G H K M p q   < < > C G H K M V W   > D F H J M U V   > C F H J M W W 114:GN557799>>??q *0/00000N00!0)0AZaz14>AHJ~P OQ\^1VYYa!:AJq 9 = = X a     ( * 0 2 3 5 6 8 9 Y \ ^ ^ r t     ( * 0 2 3 6 9 = = \ ] _ a     ( * 3 5 9 ` a     ( * 9 ` a .0023@E@GIi    <<>>@@LLNNPPTUYY_acceeggiimnrsuu EHMPWYY[[]]_}&!&!*!+!.!.!!!A00001,1< &:] ]< "&:"$/!U?K $ >" >"/! >" !#$=&# '2"*& ""&v<  '"&< #@= =; " xF09C 09C; " 09FafFAFF; " M MP "P $?SP >Q-X[c -Z -]Z -_[>" Ce Dg Ai Tk Am [o ]ro ]tp> "p#|y y;* " x09 09;* " 09afAF;* " # ;2 " x09 09;2 " 09afAF;2 " ""&v"< *$'"&"< 2$]> ]gtltampaposquot9w?HC [0123456789abcdeftruefalse<//>&amp;&lt;YE:ш/v;7ObjectLengthMS-WEVTY(6CS>;l=|PFailed to open file for write: '%ls'Failed to create FileMapping for '%ls'Failed to map view of file for '%ls'Arithmetic overflow expanding file: '%ls'Debugchannelproviderwin:NoneSYSTEMSECURITYAPPLICATIONfilterkeywordlevelmapopcodeen-UStask&quot; Name=""><EventData__binLengthBinaryComplexDataData</EventData>urn:schemas-microsoft-com:asm.v3accessattributeschidcontrolGuidcountculturedefaultenabledeventGUIDformatgroupGuidguididincludeNameisolationkeywordslengthmaskmessagemessageFileNamemofValuenamenamespacenotLoggedparameterFileNameresourceFileNamesourcesuppressProjectionsymboltagstemplatetidtypevalueversionwarnOnApplicationCompatibilityErrorxmlTypeInvalid value "%ls", expected UInt8.Invalid value "%ls", expected UInt16.Invalid value "%ls", expected UInt32.Invalid value "%ls", expected HexInt32.Invalid value "%ls", expected HexInt64.Invalid value "%ls", expected $(string.*) or $(mc.*).Invalid value "%ls", expected 0, 1, true, or false.Invalid value "%ls", expected {GUID}.eventsmessageTableXmlWbemInvalid value "%ls", expected Xml or Wbem.channelslevelstasksopcodesmapsnamedQueriestemplatesfilterstraitsimportChannelAdminOperationalAnalyticInvalid value "%ls", expected Admin, Operational, Analytic, or Debug.SystemCustomInvalid value "%ls", expected System or Custom.valueMapbitMappatternMapspatternMapdatastructbinaryUserDataeventresourcesstringTabletypesxmlTypesinTypesdescriptionGenSumResource.BINcategory.DevicesDevicescategory.DiskDiskcategory.NetworkNetworkcategory.PrintersPrinterscategory.ReservedReservedcategory.ServicesServicescategory.ShellShellcategory.SystemEventSystem Eventchannel.Applicationchannel.ProviderMetadataProviderMetadatachannel.SecuritySecuritychannel.Systemchannel.TraceClassicTraceClassicchannel.TraceLoggingTraceLoggingkeyword.AnyKeywordAnyKeywordkeyword.AuditFailureAudit Failurekeyword.AuditSuccessAudit Successkeyword.ClassicClassickeyword.CorrelationHintCorrelation Hintkeyword.ResponseTimeResponse Timekeyword.SQMSQMkeyword.WDIDiagWDI Diaglevel.CriticalCriticallevel.Errorlevel.InformationalInformationlevel.LogAlwaysLog Alwayslevel.VerboseVerboselevel.Warningopcode.DCStartDCStartopcode.DCStopDCStopopcode.ExtensionExtensionopcode.InfoInfoopcode.ReceiveReceiveopcode.ReplyReplyopcode.ResumeResumeopcode.SendSendopcode.StartStartopcode.StopStopopcode.SuspendSuspendtask.NoneNoneWINEVENT_CHANNEL_GLOBAL_APPLICATIONWINEVENT_CHANNEL_PROVIDERMETADATAWINEVENT_CHANNEL_GLOBAL_SECURITYWINEVENT_CHANNEL_GLOBAL_SYSTEMWINEVENT_CHANNEL_CLASSIC_TRACEWINEVENT_CHANNEL_TRACELOGGINGwin:CriticalWINEVENT_LEVEL_CRITICALwin:ErrorWINEVENT_LEVEL_ERRORwin:InformationalWINEVENT_LEVEL_INFOwin:LogAlwaysWINEVENT_LEVEL_LOG_ALWAYSwin:ReservedLevel10WINEVENT_LEVEL_RESERVED_10win:ReservedLevel11WINEVENT_LEVEL_RESERVED_11win:ReservedLevel12WINEVENT_LEVEL_RESERVED_12win:ReservedLevel13WINEVENT_LEVEL_RESERVED_13win:ReservedLevel14WINEVENT_LEVEL_RESERVED_14win:ReservedLevel15WINEVENT_LEVEL_RESERVED_15win:ReservedLevel6WINEVENT_LEVEL_RESERVED_6win:ReservedLevel7WINEVENT_LEVEL_RESERVED_7win:ReservedLevel8WINEVENT_LEVEL_RESERVED_8win:ReservedLevel9WINEVENT_LEVEL_RESERVED_9win:VerboseWINEVENT_LEVEL_VERBOSEwin:WarningWINEVENT_LEVEL_WARNINGWINEVENT_TASK_NONEwin:DC_StartWINEVENT_OPCODE_DC_STARTwin:DC_StopWINEVENT_OPCODE_DC_STOPwin:ExtensionWINEVENT_OPCODE_EXTENSIONwin:InfoWINEVENT_OPCODE_INFOwin:ReceiveWINEVENT_OPCODE_RECEIVEwin:ReplyWINEVENT_OPCODE_REPLYwin:ReservedOpcode241WINEVENT_OPCODE_RESERVED_241win:ReservedOpcode242WINEVENT_OPCODE_RESERVED_242win:ReservedOpcode243WINEVENT_OPCODE_RESERVED_243win:ReservedOpcode244WINEVENT_OPCODE_RESERVED_244win:ReservedOpcode245WINEVENT_OPCODE_RESERVED_245win:ReservedOpcode246WINEVENT_OPCODE_RESERVED_246win:ReservedOpcode247WINEVENT_OPCODE_RESERVED_247win:ReservedOpcode248WINEVENT_OPCODE_RESERVED_248win:ReservedOpcode249WINEVENT_OPCODE_RESERVED_249win:ReservedOpcode250WINEVENT_OPCODE_RESERVED_250win:ReservedOpcode251WINEVENT_OPCODE_RESERVED_251win:ReservedOpcode252WINEVENT_OPCODE_RESERVED_252win:ReservedOpcode253WINEVENT_OPCODE_RESERVED_253win:ReservedOpcode254WINEVENT_OPCODE_RESERVED_254win:ReservedOpcode255WINEVENT_OPCODE_RESERVED_255win:ResumeWINEVENT_OPCODE_RESUMEwin:SendWINEVENT_OPCODE_SENDwin:StartWINEVENT_OPCODE_STARTwin:StopWINEVENT_OPCODE_STOPwin:SuspendWINEVENT_OPCODE_SUSPENDwin:AnyKeywordWINEVT_KEYWORD_ANYwin:AuditFailureWINEVENT_KEYWORD_AUDIT_FAILUREwin:AuditSuccessWINEVENT_KEYWORD_AUDIT_SUCCESSwin:CorrelationHintWINEVENT_KEYWORD_CORRELATION_HINTWINEVENT_KEYWORD_EVENTLOG_CLASSICwin:ReservedKeyword49WINEVENT_KEYWORD_RESERVED_49win:ReservedKeyword56WINEVENT_KEYWORD_RESERVED_56win:ReservedKeyword57WINEVENT_KEYWORD_RESERVED_57win:ReservedKeyword58WINEVENT_KEYWORD_RESERVED_58win:ReservedKeyword59WINEVENT_KEYWORD_RESERVED_59win:ReservedKeyword60WINEVENT_KEYWORD_RESERVED_60win:ReservedKeyword61WINEVENT_KEYWORD_RESERVED_61win:ReservedKeyword62WINEVENT_KEYWORD_RESERVED_62win:ReservedKeyword63WINEVENT_KEYWORD_RESERVED_63win:ResponseTimeWINEVENT_KEYWORD_RESPONSE_TIMEwin:SQMWINEVENT_KEYWORD_SQMwin:WDIDiagWINEVENT_KEYWORD_WDI_DIAGNoPrintReducedStringCIMDateTimeCodePointerDateTimeCultureInsensitiveDateTimeUtcETWTIMEErrorCodeHResultHexInt16HexInt32HexInt64HexInt8IPv4IPv6JsonNTSTATUSPIDPkcs7WithTypeInfoPortSocketAddressTIDUtf8Win32ErrordateTimehexBinaryunsignedByteunsignedIntunsignedLongunsignedShortAnsiCharAnsiStringBooleanCountedAnsiStringCountedBinaryCountedStringCountedUnicodeStringDoubleFloatHexDumpInt16Int32Int64Int8NonNullTerminatedAnsiStringNonNullTerminatedStringPointerReverseCountedAnsiStringReverseCountedStringSIDSizeTUInt16UInt32UInt64UInt8UnicodeCharUnicodeStringWBEMSidtrace:ReducedStringtrace:NoPrinttrace:CountedStringtrace:ReverseCountedStringtrace:ReverseCountedAnsiStringtrace:NonNullTerminatedStringtrace:NonNullTerminatedAnsiStringtrace:UnicodeChartrace:AnsiChartrace:SizeTtrace:HexDumptrace:WBEMSidCreateXmlReader failedGetNodeTypeGetQualifiedNameGetNamespaceUriGetLocalNameGetValueOpenInputFileMoveToFirstAttributeMoveToNextAttributeReadFirstChildNextChildCreateXmlWriterOutputWithEncodingCodePageCreateXmlWriterLiteSetProperty(ByteOrderMark)SetProperty(ConformanceLevel)SetProperty(OmitXmlDeclaration)SetOutput(AppendStream)WriteNodeFlushinstrumentationManifestassemblymetadatalocalizationinvalid string positionR@g@3R@ c@&@`e@R@Pe@ S@g@(S@ @g@HS@ g@,hS@f@S@@e@ h@e@S@0e@ @e@S@g@5Q@`f@Q@f@S@c@S@ d@S@d@ S@pc@T@g@1@T@g@0pT@e@T@g@/T@g@.T@Pf@@ f@T@g@4U@c@U@@d@  U@d@ 0U@c@@U@ g@2XU@ b@xU@g@6'@ m@(k@v@v@|@_@Y@"8I@XI@q@I@I@8q@I@J@pq@ PJ@J@!q@@X@J@!q@K@HK@K@K@K@(L@hL@L@L@M@HM@xM@M@M@ (N@XN@@N@N@O@0O@r@pO@O@Pr@O@ O@r@Xk@Pj@xi@(h@Xk@Pj@xi@ j@(h@j@Xk@pk@0i@Xk@j@@k@k@i@h@Xk@k@h@k@i@j@Hi@h@h@8j@i@i@Xh@(k@k@h@i@Xh@j@j@j@j@`i@i@i@hj@i@Xh@(k@k@j@ph@h@j@ph@h@Xk@i@h@8j@i@Xh@i@Xh@Xk@Pj@xi@Xk@Pj@xi@ j@j@`i@i@i@Xk@Xk@h@i@j@Xk@yrp@=iK 0 Ɣ$J-pP@-P@ ,0P@ HP@ %`P@!P@ &P@P@ P@ P@Q@Q@0Q@@Q@PQ@`Q@"pQ@Q@Q@$Q@Q@ Q@Q@#R@ ,@@(@ 0@R@@ @ 0R@ `@x@ @@0@HR@ hR@ R@ R@  @ 8@#o@X@X@ 1@`8@!o@X@X@ 1@8@ p@X@X@ -@8@Xp@X@X@H2@ 89@p@X@X@2@ x9@p@X@X@ P/@X@x/@/@ X@/@/@X@/@/@X@0@00@X@X0@p0@X@0@0@X@0@0@X@1@ 01@X@@ X1@X@1@1@X@1@1@X@-@2@X@H2@ h2@X@2@ 2@X@2@ 2@X@(3@ H3@X@x3@ 3@X@3@3@X@3@ 4@X@P4@ p4@ X@4@4@X@4@4@X@4@5@ X@@@5@X@@5@ X5@X@x5@ 5@ X@5@5@ X@0@5@X@6@6@ X@06@@6@X@h6@ 6@ X@6@6@X@6@6@ X@6@7@ X@(7@87@ X@P7@`7@ X@7@7@ X@7@7@X@7@7@ X@8@`@/%@H?@xv@9@ 9@r@:@ :@r@P:@x:@0s@:@ :@hs@:@ ;@ X;@;@ ;@;@ <@@<@ x<@<@<@=@8=@`=@=@=@=@ >@X>@>@ >@ >@s@?@ ?@s@@ H'@X'@ h%@p'@'@ '@'@'@'@'@ '@(@ (@$(@h@0(@ H(@ `(@x(@&@&@(@(@(@(@(@(@ )@ &@x@ )@H)@p)@)@)@)@@&@)@)@)@)@*@ *@#h*@p?@ ?@t@?@ ?@Ht@@@ 0@@t@h@@@@t@@@ @@t@@@ A@(u@@A@pA@A@A@ B@PB@B@B@C@0C@pC@C@C@D@PD@D@D@D@0E@`E@E@E@F@@F@F@F@F@ G@`G@G@G@ G@`u@H@0H@u@ `H@ xH@u@H@H@v@H@ I@@v@" X"ص",@""`p`"ķ"и" @"|""@"p"ܺ0`"$@""ԼPx"L "0"0")dj@"$@" " """"|"@"" "d"" H"h",@("("0" < "0"dp"P"8P" x""D p@"""" P""0"h""@p"" P""0"p""X"",`"" @" "(P""0"x""X""8`""0`" ""$P""0"t""\p"""  " P" "" "@"p" "`"X"`""""0"`"" "X"h""<P"0"\"""@"x"h" "\p ""X"`p"" "Xp""p"X`"x"$0p"Tl"  "T"8"(0"t0"0" 0"t""" "Tp"H" "hp"x""t@H"d"tH"d"0"""(" 0"hp" "8"",8"`pp"""xH"| "  "H P ("\ "    `"L ` "  "  @" P "  H"  h"@ " p "  p"   "l  p"  "   " ` "  " ` h"  "0 "`  "  h"0 "d  "  h"H ` "  "| X" @ "  "  @"t  " "l  h"  "4 L  "  ", T  h"4 \  P"< T  P" 4  "  ,  " (  @H0 @@@@\uA8@@S S LS $S P4 (@PP4 @(03 xث03 @3 @2 (`2 @`3 @H3 P3 @0P3 0hج3 (`3 Hp3 @PRSDS3y[ mc.pdbGCTL.text@.text$diS.text$mngt.text$mn$00Th\0.text$x.text$ydfogrp.idata$5.00cfg.CRT$XCA.CRT$XCAA.CRT$XCU.CRT$XCZ.CRT$XIA.CRT$XIAA.CRT$XIAC.CRT$XIC.CRT$XIZ.CRT$XPA .CRT$XPZ(.CRT$XTA0.CRT$XTZ8x.gehcontp.gfids .rdata.rdata$r.rdata$zzzdbg.rtc$IAA .rtc$IZZ(.rtc$TAA0.rtc$TZZ@b.xdata ,.xdata$x4 .idata$2 .idata$3( .idata$4 .idata$60 .data2 p.data$rP4 0.data$rs4 H.bss .pdata .rsrc$01 `J.rsrc$02 3y[ gn a3 ƨS *@#@iP[@Ђ$X"ThTh @@@ 5pX"h@@"*@#@"@ @ P@@"0 @hP@"0!pȂ&X"h @ pȂ$X"hhpȂ&X" i)@"!#@@" "Ђ*Ђ*@ @ =@4@ɆȂ(N@D@цȂ(M@C@ɆȂ(G@>@Ȃ&6"Ђ*Ђ*rP d ɈȄgiiij jt99L:::D;;;<<= O@E@цȂ(:@2@Ȃ$gP A ɈȄgtjj\PPPTP  ɈȄg @"@c@цȂ(o@9@Ђ$j@-@"AP &@цȂ(@"8zTz  J@@$@@l@@цȂ(@@Ђ$+@@"4@@Ђ$<@@Ђ$@ @"7@0@Ђ$:@ @"PvȄf@@"@@U@L@ɆȂ(tP i@цȂ(@"4@}_,} @"pP e@цȂ(@"@$~jL~ @"=P5@Ȃ&@" @L̛d@" SPK@Ȃ$@"P|@ @"PIP@@Ȃ&@"@l؜@"tP i@цȂ(@"T@d}|c} @"tP i@цȂ(@"@}g} @"tP i@цȂ(@"4@t|4Z| @"tP i@цȂ(@"@@T~l|~ @"@tP i@цȂ(@"p@|]| @"ptP i@цȂ(@"@}Le} @"P@Ȃ&@"Ќ@̠  @"ЌtP i@цȂ(@"l@|\| @"P t@цȂ(@"0@}h~ @"0TPJ@цȂ(@"`@@{P{@"`P v@цȂ(@"@4}ta\} @"^PQ@цȂ(@" @X8܀ @"P S@цȂ(@"<Pd x @~@~@~@@TD{~~Ll @"$@"!@"bP U@цȂ(@" <@|UXV,|@" XP M@цȂ(@"P@{(R{@"P`P R@цȂ(@"@T|XYl|@"rP e@цȂ(@"@8{$K0LP{@"tP f@цȂ(@"@zGH{@"tP f@цȂ(@"l@{TIhJ0{@"P @цȂ(@"@@X{LpNt{ @"@lP _@цȂ(@"pL@4|WXL|@"pJ0f~P s@цȂ(@"@{SST | @"mP b@цȂ(@"ЏD@|{$OlO P{ @"ЏP @цȂ(@"zzzzzz@zDlE|EEE F0FFFz @"H@@@Ȃ&6P,@Ȃ&@"0@x  @"06P,@Ȃ&@"`8@t0 @"`6P,@Ȃ&@"@` @"6P,@Ȃ&@"@(КPD @"6P,@Ȃ&@"@ @"0P)@Ȃ$@" @0 @" I@<@iP_ȄgPpz445LPB@Ȃ&@"LD4P)@Ȃ&@"LLPA@Ȃ&@"0tPP C@цȂ(@"dnP a@цȂ(@"@0PFP>@Ȃ&@"pؾ0JP?@Ȃ&@"0B@9@Ȃ&FP<@Ȃ$@"ВFP<@Ȃ$@"@P7@Ȃ$@"0 @+Ȃ$@"`@hDP@"`P@Ȃ&@"lL"L"L" @Dhl$(TX0@@8P-@Ђ$@"n@o@@fPX@Ȃ&@" 4@p@"  @@"p@"P}}p@"|}}p@"p|p"@"@P2 P@"FpЂ$@"x| $0Ȅg@    P\(xDx L 0  P D0ȄgpHd$0Єg=P gЕllP цȂ(@"@@h8\p,d(T  8p"@"0XtԂ@@nP_@@"`jjQ@D@@"QP9gL"ĈkkkkP@@"40 ɈȄfP ɈȄg ;<h=p>P @цȂ(@"P67:P ɈȄgЗ>@@AP @цȂ(@"x4B\BCP @цȂ(@"|DDEEFDGP @цȂ(@"t$|MMtNNO,PP @цȂ(@"@@PPQQRHSP @цȂ(@"pK8KLP @цȂ(@"t|3 44H5P @цȂ(@"ИGHXJP  ɈȄg\xST$U]H^0 ɈȄg08C @"`@P@"` Ђ$@"ܖJPDg8@4qlqqP@"0*ЄЄfPɈȄgtdP ɈȄg lP<ȄXP ɈȄgPjcpcdd0eyP o@цȂ(@"4XP ɈȄgi0|P ɈȄgjlPɈȄg_HaG0ȄfPшȄg@|e>pȂ&@"pdeTe PшȄgT4[>pȂ&@"ЛV WDWP@Ȃ&@"4 @ x yPr@Ђ$@"0TjP _@цȂ(@"`4ܕ@xd$>pȂ&@"L<P @цȂ(@"4YPR@Ȃ&@"LPPшȄg L"P@Ȃ&@"P(`X!!PшȄg0P@Ȃ&@"0./0P}@цȂ(@"LhT(`Г8P ɈȄgЈ>pȂ&@"@ DPшȄgpx@pȂ&@"\PɈȄgОP8 @pȂ&@" t  PшȄg0܋>pȂ&@"`$*P  ɈȄg(P @цȂ(@"Є&P&l'''0(P  ɈȄgȏ8p цȂ(@" ąpP|fnPg@@"PpVP0>@ȄȄg8@YlZxZZP@"KPC@D&@"KP(4ȄȄgY YY7@,@Ђ$qPgȄg#@@"M@@Ȃ$/@%@0 ɈȄg@pDKMP|@Ȃ&@"pTlIJJP y@цȂ(@"LL\lP ɈȄgСQDSSTpȂ&@"4PfȄg0`D`#@@0 ɈȄg`,\$@0ЄgEP7@Ȃ$@"W@A@0 ɈȄgi\t|PfɈȄg ԃ<HgPS@цȂ(@"P,xP @цȂ(@"܎|T@g@P @цȂ(@"HP5@Ȃ&@" ,P@Ȃ&@"Xtl66667899$:x:-@ @"0 ɈȄg@жtXo@@ P @цȂ(@"p(XPP$@Ȃ&@"  P~@"@"Ф <3 4(4t445060 ɈȄg,ԍ(ȴеP$@Ȃ&@"0|P@Ȃ&@"`̅000<11<23.@@0 ɈȄg (X2@@P@цȂ(@"\xXQ@ >@ɆȂ*.@ @ɆȂ*P цȂ(@"xT<4`(X@PшȄfP [цȂ(@"  0TXPؾ8 XPȄgPȆ:: ;(;x;4<==1pЂ$@"8<`0ɈȄgd(4 P)@цȂ(@"hP@Ђ$@"@\x-<-X-t--.//0p0V@@@Ђ$ @@0 ɈȄg@,HL*@@=@.@Ȃ$?@@"SP=Ȅgph\7P0@Ȃ&@"` (4  `3 @(`P@" P@")pЂ$@"ЧpZPS@@6Ђ$@"h (4  `3 @<H\`dP@" P@"P @@6цȂ(@"04p (4 8 `3 @Б\x|P@"0 P@"0TPIȄg`h (4  `3 @$8`P@"` P@"`_PZ@"@"4H (4 P `3 @lP@" P@"yPmшȄgĔ@ (4  `3 l@(@DP@" P@"P ɈȄgiXj܉< (4 Hp `3 @trrs@ss P@"P@"@ @@@ H  2 0'3 &' 03 .`3 8.   '   '  3 ' 3 p X  3 P X  ' ` 4 (0P   '( (4 H    j px # PH % ( % 0 %  % ر %  N&  Z&   ( P d) ((( # ' `( r( ( ' ' ' ' ' l' \' L' 6' $' ' ' & & & ( & & & & |& ( n% P% :% % % $ $ $ ~$ n$ Z$ L$ 2$ "$ # & # # # j# T# @# ( ( ( $ $ $  ( # $ # R) @) ( )  & @ R ^ j ! ! (! _o_wcscpy_sM_o_wcstoulN_o_wcstoull__current_exception__current_exception_context_CxxThrowExceptionapi-ms-win-crt-private-l1-1-0.dll8LocaleNameToLCIDGetFileAttributesW*SetFileAttributesWDeleteFileWWideCharToMultiByteIsValidCodePageIsTextUnicodeGetModuleFileNameWGetFileVersionInfoSizeExWGetFileVersionInfoExW VerQueryValueWGetLastErrorGetEnvironmentVariableWSearchPathWFindFirstFileExW)FindNextFileWFindCloseXCoInitializeExCoUninitializeLCompareStringOrdinal&CoCreateInstanceQueryPerformanceCounterGetCurrentProcessIdGetCurrentThreadId`GetSystemTimeAsFileTimeInitializeSListHeaduSetUnhandledExceptionFilterGetModuleHandleWKERNEL32.dllADVAPI32.dllVERSION.dllOLEAUT32.dllOLE32.dll)BCryptOpenAlgorithmProviderBCryptCloseAlgorithmProviderBCryptCreateHashBCryptDestroyHash%BCryptHashDataBCryptFinishHashbcrypt.dllapi-ms-win-crt-string-l1-1-0.dllSizeofResourceHeapFreeyCreateFileWUnmapViewOfFileMFreeResource<LockResource<CloseHandle2FindResourceExW,LoadResourceHeapAllocGetFileSize,GetProcessHeapvCreateFileMappingW>MapViewOfFile:SetLastErrorEnterCriticalSection#LeaveCriticalSectionInitializeCriticalSectionDeleteCriticalSectionIFreeLibrary)LoadLibraryExWTraceMessage1LocalFreeReadFileGetFileSizeExaConvertStringSecurityDescriptorToSecurityDescriptorW.SetFilePointerSetEndOfFileEFormatMessageWLoadStringW/SetFilePointerExDFormatMessageAUSER32.dll#BCryptGetPropertyCreateXmlWriterOutputWithEncodingCodePageCreateXmlReaderInputWithEncodingCodePageCreateXmlWriterCreateXmlReaderXmlLite.dllwcscmpYmemcmpZmemcpy[memmovememset2-+] f`@x@`@0 @2 @2 @(@.?AVexception@std@@(@.?AUWin32Exception@@(@.?AVbad_array_new_length@std@@(@.?AVbad_alloc@std@@(@.?AVlength_error@std@@(@.?AVlogic_error@std@@(@.?AVout_of_range@std@@(@.?AVEvtException@@(@.?AVManparseException@@(@.?AVtype_info@@P  ` $P4` E@E9=0=p@ !@%hP!@=AȲ]@زAAMAPQA%!(T80B`= !]Bp!]B!h$QP$<$e%Qh%<%qE8&UB&aB0'MA'QB(QBP(P(iP)MA)E@*1*@+,@-p8.YA.YA//QA/iBX11Bp2q69A(89Դ>@FAhA`ACPDExFGxHOUFHVVB@W XEX̶Y)ZZeB[D]I``0c9fkB(lnopFqu`v}Fvxmy!F0{e{B | }8x0`pTpEAIY؅pȇ`PhAAЍ=й`-`Ў=AEAX}؏Bx--8(pUД1оXȘ hh (x 1P!A 1IPUBQк8H@0`HFExABPEXBhHx`H) 1FIAEA(MAxH BX Bx(i(h/H5 6 C`8KYINP8W8]](XjAjAhkHq 0Qy UxE]ALP8PEH$`- qBF8IExE0 AIIHI)ȶFhI |AHeB xh(@$0PYAmYApYAm8ThTQAmX\ BAlMqXE`998d CxC Y8 tyC8@ HLC8=@ i@()h)qeh <`$((MA`(5(YB)L)|(*l +\+mB`,H-(.uB.0)0011x3< 50H6 P7P8Y:<(==Y>Yp>Y>Y ??Y@YX@Y@}0AABpAYDFH8pJX8LxN0PQxRT`VXY`[80]_`b dPxfHhHjplpma8nananEoaozh|a}@~@h=BHieБ]B0B@ BP B`8XxXPxPȞ@yyyyp8MIзE@AU8E 80x`X   ( H} Hp }))))8eB@eBeB eB=A=A=AH=A=AeA0=Ap=A=A]AP=A=A}PE}}EMA]AXB8YAXBBBP]AxI%B]@@IA$P0uBHh P 8`X    @  0 0 P !D(@ uHFH" h$ %@8(, 0H 3H @6 : > ApB8H0 J MpOIQ TVWh hX YPZ(_a bdeT8hAhjk l8npnHxoapp8q uP} }}`~- ppeB؁0`ph`PE(@Ȗ!IXp800HPDx,0qiq`0L Ȯ   @@ ȸ \ p h, h  x ` Pp0<@x  p X  eB@}  IB@( @X A@8PP  8 x HP0H  Ht(hX@x`@ 0 8 @ 8% ) *0 `+ + , .02 3}38p6:x>8A`D`GJ8M@HP`Sx^mB_D`QIb8e`ef=gEgg h @h Thh@h@h| iԳixixixjx jx 4VS_VERSION_INFO e e?StringFileInfo040904B0LCompanyNameMicrosoft CorporationZFileDescriptionWindows Message Compilern'FileVersion10.0.26100.7705 (WinBuild.160101.0800).InternalNamemc.exe.LegalCopyright Microsoft Corporation. All rights reserved.6OriginalFilenamemc.exej%ProductNameMicrosoft Windows Operating SystemDProductVersion10.0.26100.7705DVarFileInfo$Translation Not found : '%1'.+MessageId not found in string table : '%1'.%Duplicate string Id specified : '%1'.9For Provider '%1' attribute resourceFileName is required.8For Provider '%1' attribute messageFileName is required.SProvider '%1', parameter file name cannot be specified without a message file name.)Duplicate provider name specified : '%1'.0Duplicate provider GUID '%1' in provider : '%2'.+Duplicate provider symbol specified : '%1'.UInvalid value %1!u!(0x%1!x!) specified for level '%2'. Values 0 thru 15 are reserved.!Duplicate level name used : '%1'.:Duplicate level value %1!u!(0x%1!x!) used in level : '%2'.#Duplicate level symbol used : '%1'.JInvalid value %1!u!(0x%1!x!) specified for task '%2'. Value 0 is reserved. Duplicate task name used : '%1'.JMap not allowed for template with TId '%1', since it is a filter template."Duplicate Filter Name used : '%1'.OFor channel '%1', value of attribute 'access' is not a valid SDDL string: '%2'.IA <message> element has reference to a non-existent <string> entry: '%1'.BTwo <message> entries are referring the same <string> entry: '%1'.AFor Template with TId '%1', only one <binary> element is allowed.mFor event '%1', with Id %2!u!(0x%2!x!), attribute 'message' is required, since it logged to an Admin Channel.For event '%1', with Id %2!u!(0x%2!x!), level must be specified and it should be one of Critical, Error, Warning, or Informational, since it is logged to an Admin Channel.1Two <message> entries have the same symbol: '%1'.EThe instrumentation node is either missing or in the wrong namespace.7For Map '%1', duplicate value %2!u!(0x%2!x!) specified.5For Pattern Map '%1', duplicate value '%2' specified.For template '%1', invalid Custom Xml specified. Custom Xml must have a top-level element and it should be in its own namespace. Also, the value of property inserts should not be greater than the number of top-level properties in the template : %2.The <events> node is either missing or in the wrong namespace. The <events> node must be present under <instrumentation> node and should be in the following namespace: 'http://schemas.microsoft.com/win/2004/08/events'.dFor property '%1', inType must be one of UInt8, UInt16, UInt32, or HexInt32, since map is specified.7Missing Attribute 'id' on one of the <string> elements.6For String with Id '%1', attribute 'value' is missing.Two providers have defined a channel with duplicate name : '%1'. A given channel name can only be defined by one provider, other providers should use <importChannel> element to refer an existing channel.Two or more events logging to legacy 'System', 'Security' or 'Application' channels are referencing the same message string '%1'. Give each such event a unique message string.String '%1' is given Id %2!u!(0x%2!x!) in a .mc file. Change the Id of this string to be the same as that of the event referencing this string, since the event is logging to 'System', 'Security' or 'Application' channel.String '%1' is explicitly assigned Id %2!u!(0x%2!x!) using a <message> element. Change the Id of this string to be the same as that of the event referencing this string, since the event is logging to 'System', 'Security' or 'Application' channel.tFor event '%1', with Id %2!u!(0x%2!x!), since Opcode '%3' is local to Task '%4', event must reference the Task '%4'.nFor event '%1', with Id %2!u!(0x%2!x!), Opcode '%3' is local to Task '%4', but event is referencing Task '%5'.For event '%1', with Id %2!u!(0x%2!x!), Opcode '%3' is global, and its value collides with that of local Opcode '%4' of the Task '%5' that the event is referencing.String '%1' contains an insert sequence and is referenced by a <%2> element. Insert sequences are not supported in <%2> strings.mString '%1' in the string table for locale '%2' does not exist in the string table for all the other locales.hInvalid Provider Name: %1. When controlGuid is specified, provider name must end with the provider guid.zFor event '%1', with Id %2!u!(0x%2!x!), the 'EventLogClassic' keyword cannot be used together with 'name' or 'attributes'.sFor property '%1', property '%2' referenced by attribute count must have inType UInt8, UInt16, UInt32, or HexInt32.[For property '%1', property '%2' referenced by attribute count cannot have attribute count.tFor property '%1', property '%2' referenced by attribute length must have inType UInt8, UInt16, UInt32, or HexInt32.]For property '%1', property '%2' referenced by attribute length cannot have attribute length.For event '%1', with Id %2!u!(0x%2!x!), a property insert in the event message is referencing a non-existent property. Event only has %3!u! properties: '%4'.BLength of Channel Name must be between 1 and 256 characters: '%1'.Invalid Channel Name: %1. Following characters are not allowed in a channel name: ascii value <31, double quote, '>','<','&','|','\',''',':','*', and '?'.CLength of Provider Name must be between 1 and 256 characters: '%1'.Invalid Provider Name: %1. Following characters are not allowed in a Provider name: ascii value <31, double quote, '>','<','&','|','\',''',':','*', and '?'.8Duplicate task value %1!u!(0x%1!x!) used in task : '%2'."Duplicate task symbol used : '%1'.-Duplicate event guid '%1' used for task '%2'.cInvalid value %1!u!(0x%1!x!) specified for opcode '%2'. Opcode values should be between 10 and 239."Duplicate opcode name used : '%1'.<Duplicate opcode value %1!u!(0x%1!x!) used in opcode : '%2'.$Duplicate opcode symbol used : '%1'.wInvalid value %1!u!(0x%1!x!) specified for channel '%2'. Values for user-defined channels should be between 16 and 255.]Channel '%1' is the 9th channel for this provider. Only 8 channels allowed for one provider./Duplicate channel Id '%1' used in channel '%2'.GDuplicate channel name used : '%1'. Channel names are case-insensitive.<Duplicate channel value %1!u!(0x%1!x!) used in channel '%2'.4Duplicate channel symbol '%1' used for channel '%2'.@Duplicate property name : '%1' specified within template - '%2'.MFor property '%1', property '%2' referenced by attribute count was not found.OFor property '%1', property '%2' referenced by attribute length was not found..KFor property '%1', property '%2' referenced by attribute count is a struct.LFor property '%1', property '%2' referenced by attribute length is a struct.DFor property '%1', with inType win:Binary, length must be specified.>For property '%1', length is not allowed for the given inType.dFor event '%1', with Id %2!u!(0x%2!x!), too many keywords specified. Maximum keywords allowed is 48.LFor event '%1', Id %2!u!(0x%2!x!) was specified which is bigger than USHORT.FTwo events have the same Id %1!u!(0x%1!x!) and Version %2!u!(0x%2!x!).#Duplicate event symbol used : '%1'.jFor event '%1', with Id %2!u!(0x%2!x!), win:EventlogClassic keyword is not allowed with any other keyword.IFor event '%1', with Id %2!u!(0x%2!x!), version attribute is not allowed.IFor event '%1', with Id %2!u!(0x%2!x!), channel attribute is not allowed.tFor template '%1', invalid tags specified. Tags is a 28-bit value, i.e. it must be less than 268435456 (0x10000000).tFor property '%1', invalid tags specified. Tags is a 28-bit value, i.e. it must be less than 268435456 (0x10000000).HFor event '%1', with Id %2!u!(0x%2!x!), opcode attribute is not allowed.RFor keyword '%1', 'mask' attribute is invalid. One and only one bit should be set.TFor keyword '%1', with mask 0x%2!I64x!, mask bit can only be one of the low 48 bits."Duplicate keyword name used: '%1'.7Duplicate keyword mask 0x%1!I64x! used in keyword '%2'.3Duplicate keyword symbol '%1' used in keyword '%2'. Duplicate template Id '%1' used. Required element <%1> not found.(Required element <%1> or <%2> not found.PUnsupported XML encoding specified (HR=0x%2!X!). Falling back to code page 1252. Required attribute '%1' not set."XML load error 0x%1!X! - failed %2,OutType : '%1' is invalid for InType : '%2'.Duplicate map name used: '%1'.2Only one bit may be set in bit map : '%1' 0x%2!x!.Automatic string Id generation logic can only support 16 event providers. Beyond that, string Ids must be explicitly assigned using <message> entries.Duplicate message ID was specified - 0x%1!x!. This can happen when an auto-generated messageId conflicts with those explicitly specified using a <messageTable> or a .mc file.$Duplicate Filter Symbol used : '%1'.GTwo Filters have the same Id:%1!u!(0x%1!x!) and Version:%2!u!(0x%2!x!).OUserData not allowed for template with TId '%1', since it is a filter template.^Struct not allowed for property '%1' of template with TId '%2', since it is a filter template.]Array not allowed for property '%1' of template with TId '%2', since it is a filter template. (08@HPX`hpxȥХإ (X`hpxȨШب (08@HPX`hpxȩЩة (08@HP xXء 0@P`pТ 0@P`pУ 0@PP0@XhЪ 0HXpЫ 8H`pج(8P`xȭح(@PhxȮ0@P`pЯ` 0@P`pР0@`pС 0P`pТ 0@P`pУ 0@P`pФ 0@P`pХ 0@P`pЦ 0@P`pЧ(@XpШ0H`xة 8PhȪ(@Xp8HX`pȬ @P`hxЭ(@P`xЮ 0@Xhxȯدp 8HXpȠ(8P`pС0@Phxآ 0HXhȣأ(8H`pФ(@P`xХ 0@XhxЦ 0@P`p @PpШ0@`pЩ 0@P`pЪ 0@P`pЫ 0@P`pЬ 0@P`pЭ @PpЮ0@`pЯ4 0P`Р 0@P`px(P0 (XhpТآ0`أ(PPD g g  `)0)R *H )C0)?10  `He0\ +7N0L0 +70 010  `He W.Q}Ɂ ,pfEz$OV3 003Hߡw0  *H  01 0 UUS10U Washington10URedmond10U Microsoft Corporation1200U)Microsoft Root Certificate Authority 20100 240808213623Z 350623220401Z0_1 0 UUS10U Microsoft Corporation100.U'Microsoft Windows Code Signing PCA 20240"0  *H 0 }k}'v*.4+mT dh(e;9_R]F?\z^z]i_0Oio=NAW}`H?uIG W,֕oQFl`vmNdBP {9 tP܍b_k;3 9b77LAS53=4"] \zcمayL]5:{zc0 AZosXPDK'9nn8 Q8ejuNRxFnhϴٲVPl:9L%,3UN`?;}OJOF v aB %fNg+^$Ne~http://www.microsoft.com/pki/certs/MicRooCerAut_2010-06-23.crt0  *H  C_?锌;\hT41L Epj 3!ΘA~L"0))?E)κE'TXٖTx*:Қj;: 7oSn>Ą|$.9`qҬ1i jcG᨞7_ eN/kцoLyNi(eF5g [q݌ZI}!?2KeMԦGc:sQI!!w\yMxJ*g4?#~v̋Z9PXGdMrlq1gB0')‚*E]lߥNtX׏1A=| m5߈!9#0&8d4;qy!=NQOQV~崀y.c~xDɻۣ 1~`m~iˈLH}UK4.'5 rw>]T*Dd)Uw003"*10  *H  0_1 0 UUS10U Microsoft Corporation100.U'Microsoft Windows Code Signing PCA 20240 250508182510Z 260506182510Z01 0 UUS10U Washington10URedmond10U Microsoft Corporation1)0'U Microsoft Windows Kits Publisher0"0  *H 0 A-ʼO~ԛ^ENdw^kA]dkDa@#u2TD~X “ w<`6 tp⺡޺"o`0nv+8iUw~+/nv։FMS҂݇?T]@-`cJ'N;x;H+1|@t5,gzCL`,0<:0810U Microsoft Corporation10U 229903+5045760U#0׌4ګe0jUc0a0_][Yhttp://www.microsoft.com/pkiops/crl/Microsoft%20Windows%20Code%20Signing%20PCA%202024.crl0w+k0i0g+0[http://www.microsoft.com/pkiops/certs/Microsoft%20Windows%20Code%20Signing%20PCA%202024.crt0  *H  PO B 7 O3~9^Z:o~|[Wb;Adɛ֣n6j/R6@C f%HKßŭ_m&6jʱj6+( xB-eb/vh.2y5 (+#9 _GC8.}  Q9h޻;H uЧCC᠑2Ne`)u?z _%,&MyMxp)mLON{%w^2W-'3Owyn?0}{t@)ƭÕWWOO0Jqb"FJZGϵi.ܶKy A(tu HiluPɀ|:); w4j100v0_1 0 UUS10U Microsoft Corporation100.U'Microsoft Windows Code Signing PCA 20243"*10  `He0 *H  1  +70/ *H  1" }ᶽ) oUDM&󠶩8܃0Z +7 1L0J$"Microsoft Windows" http://www.microsoft.com/windows0  *H 0!jTvJt"CٟLNM~6CS8z2*- u^> z~#\/Wrs8ĭS"kJi\@x`ƚF{R@.'(卞QP.Abw ΐ R99It].gՂވkSXUw#:V)i,mq׹ŮFנ(K@Q{`J` uu!MO߽'tA0 +710| *H m0i10  `He0R *H  A=09 +Y 010  `He dt(Epf& A)})\ihl20260126232432.144Z0Ѥ01 0 UUS10U Washington10URedmond10U Microsoft Corporation1%0#U Microsoft America Operations1'0%U nShield TSS ESN:A935-03E0-D9471%0#UMicrosoft Time-Stamp Service0 03 d5 0  *H  0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 20100 250130194300Z 260422194300Z01 0 UUS10U Washington10URedmond10U Microsoft Corporation1%0#U Microsoft America Operations1'0%U nShield TSS ESN:A935-03E0-D9471%0#UMicrosoft Time-Stamp Service0"0  *H 0 V&=m<ʢ(]Mϙ{$cIrA|tB"sY&$5ZC}Dl-[w3sVףrmDd52B"ܮ/x'Ϳm0Uf8]G=Cu=Bk苳 ݣ4v2ҍꄅ ƥCvC΃wᏌ}-Hd󠒇7]˫Ć^l޻']b"l.AI0E0UuE!CIyW;ӡ0U#0]^b]eS5r0_UX0V0TRPNhttp://www.microsoft.com/pkiops/crl/Microsoft%20Time-Stamp%20PCA%202010(1).crl0l+`0^0\+0Phttp://www.microsoft.com/pkiops/certs/Microsoft%20Time-Stamp%20PCA%202010(1).crt0 U00U% 0 +0U0  *H  0Y0Y|tߋQ?Xjۡ-h_҉ eʩ|QN1ǚک*VEer8:ۘ2U,Չ~0`g~\ vm"U<_I7RMXήl&#i5pbe7BR.d 5g `zCݔZp>* }6 "RԿj$!UB6: V)XUf Q~BV)~77g _L37itQF`3\OfSqZ~JZ6gF# w2`}jRDFkvPDq\Q17 8n&S|9azĪri65&dژ;{3[~Rb%j]SVMݼ㑏9,Qpi 6-p15(㴇$ɏ~TUmh;Fz)7EFn20\O,b͹⍈䖬Jq[g`= s}AFu_4 }~ٞE߶r/}_۪~66L+nQsM7t4G|?Lۯ^s=CN39LBh.QFѽjZasg^(v3rק  co 6d[!]_0tعP a65Gk\RQ]%PzlrRą<7?xE^ڏriƮ{>j.00 +70# +7*RdĚhttp://www.microsoft.com/pki/certs/MicRooCerAut_2010-06-23.crt0  *H  U}*,g1$[rKo\>NGdx=139q6?dl|u9m1lѡ"fg:SMݘx6.Vi {jo)n?Hum m#TxSu$Wݟ=heV(U'$@]='@8)üTB  jBRu6as.,k{n?, x鑲[It 쑀=J>f;O2ٖtLrou04zP X@1Q{p( 6ںL 4$5g+ 挙"'B=%tt[jў>~13}{8pDѐȫ::bpcSMmqjU3XpfM050Ѥ01 0 UUS10U Washington10URedmond10U Microsoft Corporation1%0#U Microsoft America Operations1'0%U nShield TSS ESN:A935-03E0-D9471%0#UMicrosoft Time-Stamp Service# 0+dC- u峼-U<0~0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 20100  *H  !d0"20260126130228Z20260127130228Z0t0: +Y 1,0*0 !d0e00 #506 +Y 1(0&0  +Y  0 00  *H  x2[u @l`σdŃ,Ӯj:Ϯsp޷۞2Q|4@{0fB='߻sEfgE\dMt(׽&iH0P05I6N:HD㷨]èbC~c8 xJeKpd S3m1cCtk쯪J^no$P鼊3P)Di8v}%ݺP}S#Q˺!Xi)[4PА K,E"3 xɉھ\ m `;=w`j-Z6~ѥar qC!cX*&K)F cH_nFRhBxJɅ}4h߫jRMQeS/*@ѭ.+ 1s\akIvTr2`F A"\6z