[Nitro] A uniform structure for components in Nitro -- long post

itsme213 itsme213 at hotmail.com
Fri Jun 30 01:43:07 EDT 2006


Here is something that may have been obvious to others all along. Any and 
all comments or flames welcome ...

The context for this ... I was wondering what it would take to give Nitro a 
full-fledged component model, where views (and controllers) can be composed 
from generic parts either automatically for the default case, or with a DSL 
that only specified the delta for the non-default customized case. All view 
and controllers do is view and operate on domain objects, and the structure 
& metadata of those domain objects is enough to construct the views and 
controllers.

Like Nitro does for persistence, only for views and controllers. Like Wee 
without continuations. Mostly like Nemo or Mewa 
http://www.adrian-lienhard.ch/files/mewa.pdf, but extended further. I have 
attached 2 of the key figures from the latter.

What is "A Component Model"?
============================

A component model is a server-side tree of components. The root component 
might correspond to a presented web page, its children to <div>s within that 
page, and on down. Each component in that tree is connected to domain 
objects via a meta-layer. That meta-layer provides a uniform reflective 
interface to all domain objects, their attribute values, and their 
operations, and enables totally generic view and editor components to 
operate through them.

What is this meta-layer?
========================

The basic idea is that for Nitro to have a uniform component structure, 
components in successive levels of the component tree are (STRICTLY) 
attached to either
  - (meta)objects or
  - (meta)attributes of those object, or
  - (meta)operations on those objects

A meta-object (in this discussion) is NOT a class; rather, it is an object 
carrying meta-information for a specific domain object (instance). (The 
"meta" terminology comes from Mewa).

A meta-attribute is an object carrying meta-information for the value of a 
specific attribute of a specific object.

A meta-operation is an object carrying meta-information for a specific 
operation that might be invoked on a specific object.

In combination these three carry all the information needed to construct 
views and controllers.

None of these meta-things need db-level persistance. They can all be created 
on-demand, possibly with session-level persistence. Below I use og-ish 
macros for information only.

# these do NOT need to persist
#   but their :obj part is typically persistent via Og
class MetaObject
  has_one :obj, Object
  has_many :attributes, MetaAttribute
  def class
    obj.class
  end
end

class MetaAttribute
  has_one :attribute, Symbol
  has_one :type, Class # or duck
  has_one :multiplicity, Symbol
    # :attribute, :type, :mult could be shared via class level Attribute
    # just easier to understand this way

  has_one :owner, Object # domain obj or a MetaOperation (below)

  def value
    owner.instance_variable_get attribute # or #send...
  end
  def replace (replacement_obj)
    owner.send "#{attribute.to_s}=", replacement_obj
  end
  def add (added_obj)
    # illustrative; only defined if attr is a collection
    owner.send "add_to_#{attribute.to_s}", added_obj
  end
end

class MetaOperation
  has_one :operation, Symbol
  has_many :params, MetaAttribute
    # tracks param name, type, multiplicity, etc.
    # Used to populate (d)html accordingly
    # including using the smarts below
    # :operation and :params could be shared via class level Operation

  has_one :owner, Object

  has_many :current_values, Hash
    # current param values, hashed by param_symbol

  # for [Ajax-based] populating of parameter candidates
  # e.g. drop-down list
  def candidates_for (param)
    owner.candidates_for operation, param, curr_values
  end

  # for [Ajax-based] (dis/en)abling of operations including args
  # e.g. menu or button enabling
  def invocable?
    owner.invocable? (operation, current_values)
  end

  def invoke
    owner.send operations, current_values
  end

end

Example meta-layer instance
===========================

Assume there is a component tree consisting of nested viewers and editors.

On demand, build metadata about domain objects that these viewers and 
editors connect to, including the attributes and relations of these domain 
objects. Make that metadata structure uniformly as follows:

  m_obj
    m_attr
      m_obj
      m_obj
    m_attr...
    m_op1
      m_attr...
      m_attr...
    m_op2

So if I have objects
  joe=Person.new
  joe.name = "Joe"
  home=House.new(:address=>"123 hometown")
  joe.add_house home
  vacation_home = House.new
  joe.add_house vacation_home
  room1 = Room.new
  room2 = Room.new
  home.add_room room1
  home.add_room room2

  bob=Person.new
  joe.add_friend bob

Then a view or editor *on joe* will create and use this metadata structure:

  joe -- meta-object
    joe#name -- meta-attribute
    joe#name= -- meta-operation
    joe#houses -- meta-attribute
      home -- meta-object
        home#address -- meta-attribute
          "123 hometown" -- metaobject, optimized away
        home#rooms -- meta-attribute
          room1 -- meta-object
          room2
      vacation_home
    joe#friends
      bob


Example Component Model
=======================

CLAIM: The component tree should exactly parallel this metaobject and 
metaattribute structure (by default). So here are the components in that 
tree, and the (meta)-things they connect to:

person_viewer --> joe
  #houses_viewer --> joe#houses
    house_viewer --> home
      #address_viewer --> home#address
        address_viewer --> "123 hometown"
      #rooms_viewer --> home#rooms

        room_viewer --> room1

        room_editor --> room2#modify
           new_size --> room2#modify.new_size

    house_viewer --> vacation_home
  #friends_viewer --> joe#friends
    person_viewer --> bob

Some of the elements in the above tree might change dynamically with Ajax 
e.g. a viewer might be replaced by an editor when the little "edit" link is 
clicked; but the editor would still be attached to the same meta-instance.

All the components in this tree could be generic, all the meta-objects 
constructed automatically.
These generic Components (viewers and editors) have the exact context to 
execute generic actions. Components can be set up with proper Ruby objects 
(e.g. stuff Persons into a generic ListComponent, rather than pulling out 
their string names for a selection box) and with proper Ruby callbacks.

A lot of the application-specific code can becomes generic once this is in 
place, needing less in the application model. And customization could be 
done on any part of this tree with a DSL.

Overhead
========

This structure, and its overhead, is only needed for those objects that are 
needed in views/editors. It can be dynamically built to construct the view. 
It would be kept around while Ajax operations removed and added components. 
We might use some event machinery between the tree and domain objects so an 
(Ajax) operation that replaced one component might also update parts of 
related components in the tree. Ajax-induced updates propagate up to the 
tree root before going back to the client.

Components can "call" other components and "reply", causing part of the tree 
to be swapped out and then swapped back in.

A new page load would be like a root "call-never-return", and replace the 
entire component tree.

Thoughts? Am I talking nonsense?


begin 666 mewa2.png
MB5!.1PT*&@H````-24A$4@```?T```&'" (````U%QQX````"7!(67,```[$
M```.Q &5*PX;````!W1)344'U at 8>!"H=/%&(LP````=T15AT075T:&]R`*FN
MS$@````,=$58=$1E<V-R:7!T:6]N`!,)(2,````*=$58=$-O<'ER:6=H= "L
M#\PZ````#G1%6'1#<F5A=&EO;B!T:6UE`#7W#PD````)=$58=%-O9G1W87)E
M`%UP_SH````+=$58=$1I<V-L86EM97(`M\"TCP````AT15AT5V%R;FEN9P# 
M&^:'````!W1%6'13;W5R8V4`]?^#ZP````AT15AT0V]M;65N= #VS):_````
M!G1%6'14:71L90"H[M(G```!`$E$051XG.W=3X at D=_W_\4]]?_I%XF0%9X28
MQ(D0B!O4D+#NH?I at W(@AN'_ 5+-,0,6]9&L$+Y(<[+D8<#=@#3DDB-LC&(-B
MC^+FL%9CR"+N7&8"V^T?7)E=0PC=N*[1;A*-V4N0^AW>W_GX255U375/3W=5
M?YZ/PU)3?S__^M75GZZ9=:(H4@``:_S/M L``)@H<A\`[$+N`X!=R'T`L NY
M#P!V(?<!P"[D/@#8A=P'`+N0^P!@%W(?`.SROFD78,P<QYEV$<: /YX!8/_,
M6NZK\H>FXS at +"PN]7F_:!0$PFYCG`0"[D/L`8!=R'P#L0NX#@%W(?0"P"[D/
M`'8A]P' +C.>I[(=`0```0!)1$%4^X[C5'8XCK.^OC[V\^^Z!@`*9<9S7RFU
MN:/5:CWVV&/[?;D@"'+NN;JZNJ\E`8!43ME_NS7&<=Y3H^P?QWZYL1SK.,[\
M_#R_KPM at G\S^_;[6;#9=UU5*M=MMF?]Q'$??=*^OK\N:9K.IE.KW^RLK*[$U
MR\O+,F6TO+S<[_?E0-FM4JG(&IGG23V\6JW*GNUV>V5E12E5J52FT! `+!?-
MEEB-E%+N#J54I].)HB@(@C ,8_O+0JO5JM5JLD\0!+)&*=7K]7S?ES6RU?=]
M.4I.5:_7]9I!A]?K=;TF652SS//S\^-M%@#09C_W]7*OUW-=5Y;#,)3LUCNX
MKNMY7J/1T%#G7)\```$`241!5#_*FX0LAV$H\:U/E<QN<TWJX=E%-=>3^P#V
MCXWS^]5J52EUZM2I3W_ZTW?==9?>H=ELAF'XAS_\87-STW$<^8@@GGONN<]\
MYC.]7F]^?EXIU>_W%Q86HB at RSR_+^M_DX>:%CAX]ROP^@.F8SMO-OE&#[_?-
M"1:Y<]=K>KV>YWGF(9[GR02.;#(G:J(<\SP9AS//`V"Z9C_WS?E]F7-O-!I*
M*<_S:K6:_!M%4:U6DS="F>KI=#J>Y\E1LD:R6T[E^[Z\<\AY9(Y(KQETN%[3
M:K5TV5*K0.X#V#\S/L]3Q@(PSP- at 7UGT'.<$Z(<[`:"PR/UQ.G[\>+U>GW8I
M`" +\SPV3>WC```!`$E$052%PSP/@'TU at _^O.G\9#0`RS%KN1U&TL+ P at 0O)
M5+X\S@\`)5+Z69&IT!\I:#T`I</WN@!@%W)_:/JKXRB*^"X!0.F0^P!@%W)_
M.+'G1+GE!U ZY/X09N"7`P" W-\K;OD!E NYGU?&S3[1#Z!$R'T`L NYG\NN
M,_O<\@,H"W)_=WR="V"6D/MCPRT_@%(@]W<Q5)03_0"*;];^'N?8#3O#PXP0
M@(+C?A\`[$+N`X!=R'T`L NY#P!V(?<!P"[D/@#8A=P'`+N0^P!@%W(?`.Q"
M[@. 7<A]`+ +N0\`=B'W`< NY#X`V(7<!P"[D/L`8!=R'P#L0N[/H'Z_WVPV
M5U=76R[\GP```0!)1$%4^_W^M,L"H'#X?Q9+IM_OGSY]^J]__>OMM]_^S#//
M+"XN)O=YY957CAT[II0Z<.# XX\_/O$R`B at T[O=+YIEGGGGXX8<W-S<??OCA
MIY]^.G6?HT>/>I[G^_ZA0X<F7#P`Q>?P_X"/QG&FTW252F5]?7UQ<;'?[R\L
M+ PJ@\SPS,_/3[9T`$J W!_1M'+?O.ZTR@"@U)CG`0"[D/LEX[INM]M5.S,Y
M`#"L6<M]9U+V]5H9%7STT4=?>NDEI=3Y\^=]WY>5S693W@;TPB3M7SM,V(3;
M#9B669L@=LH_Y>TXSOS\?*_72]W:[_>/'S\NR[_\Y2_EFUO'<<(P/'KTJ%Z8
M7. A[/T```$`241!5'%GHLW5;LT.S!*>WR^9^?GYS<W-V$H=NS.0OP#VVZS-
M\P``LI'[`& 7<A\`[,+\?OF83YXPH0]@6.1^F4CBFUF?7 ,`V<C]<AB4[[*&
M] >0WRS/[SN.L[R\;*Y97EX>UZ_G),^S3[_X([]2%$511JS+UN+_\E&_WW<<
M9V5E)>?^NCH%KQ=0+K.<^TJI<^?.9?P8L[JZNI=K!4&0?^<\U\J3^*;BI__%
MBQ>54F?/GM5KS'9(MLG8FQ2 FNW?UW4<Q_?]8\>.R>^O-IO-, S/G3LWJ,I#
M_=[I'G])->/PO7]M._G<SUG.:K7Z\,,/GSY]NM5JR?\-X.3[\Z)Y6GOO/<(1
MT[8W```!`$E$053OZ\(2,WZ__^"##X9A*,MA&#[XX(.RW._W5U96*I6*XSC-
M9E,I)9,/E4JEW6X[CB.;]"UDN]VN5"J52J5:K>H_@"-GD$/43MHFSRPKJ]6J
MWEE?:U"QQ_)W\Z-)R5F>?K]__OSY1QYYQ/.\%U]\41EM;B[+1)"L--_ =&M+
M^YN;]-R1'*5;VW$<Z1H`[S&Q=)@,LT9**;E]2_X8!$$0!%$4M5HM6:^/#8(@
M#,/8V3S/DY7U>MWW?=DD:\(P]#S//#QY9M_W]<ZNZ\;*F:S"_/R\7AZJCZ;2
MISFOV&@T9,]ZO6YV2NP\2JEZO1[;JEO;;/_D@?*C[_MR!NF"_+70S0[,9E(B
MF0```0!)1$%4MAG/_6 at GLENMEIG.KNMV.AW9S75=R11];!B&01#(7[L<=-I!
M:[+/G%K.Y*98`.5)\RF^B^>\KN=YM5HMBJ).IZ.4:K5:4;Z&S;E;ZLZNZ\J%
M\M2"W(<E9O\YSFJU*G_(K%JMZI5;6UM+2TOZQ]MNN\W<7REUZM2IDR=/9G\/
MG"KCS*+9; [[]S*CS(<U2_$0ITSRN*ZK9[?:[?;^_?>_&7-H`&;_?E]_4V=.
MYNAYFUZOYWF>N4GO:<X29,SS-!H-<^8A]<QZY;#S/*E;E7%C6X0>S%,&^99%
M_ZBG>I+]E5P3#9CGD;;5TT=Z9WV/;W9!GEIPOP]+3#\UQBLU-3S/DZ .S]4`
M``$`241!5$D>O;+3Z7B>Y[JN4JK1:.A-KNM*CLBDA)Z::+5:KNNZKFN^2<@9
M8F\;J6?6*W4DR;4&56'7`"I(XHL\)?%]7[[V$/)F+!,^NAUD>5#NQUI;'O&4
M#M*Y+Z>2.3TYE?ZJ)D\MR'U88I:?XRSII4OW0"'_[PI0+C/^'">P3XK\^W% 
MMMG_7G<R*I7*4+]<BI+261]%$;F/DB+WQR/Y?Q^65RD>$)HP,^ZG6Q)@[V8P
M][D+V[ODS6QVWLUPFV<\/LM[`$IJUG(_BJ*%A85IEV(6Q$(M^Z\&S4:SRY\+
MC8S?EE#<X&,6<<^"%-DWL\F[^]D814/]13SN]U%>/,^#H>FG@/7TZ*,)```!
M`$E$052:&9[G`68/N8^]^K_?!"EY] _U7QT`I4;N(\4,Y/A>[%I])GE0:N0^
M1A1[T*74;Q5FCDM%2ET=(!NYCW39P6?##>^N+<"O[**DR'T,3=\.QZ*_I/?(
M&17)J-%__\05;P`HFUE[?A_C,BC(!H5^2>U:D5TKJS?Q>\XH"^[W$2=WKZE/
MZ>1,R7TNX"28%8E5:E C</N/LN!^'_^5?<=J_BYK]OUO63X-Y*](_DK%;O\5
MGP!0/.0^E,HQ1U&6*-\_PWZ4X0T`A67[BQEY$E^]-\7RC)GBOT^,7)&1J\8;
M``J"^WU[Y?\><MC0+[Z]5&3O!_(&@.DB]VTTU),GHV53B6;YK^[[O ```0!)
M1$%4L^U'17@#P'21^];98XK-S),J1:@(SX!B*F;AC at PY[5.XS,9]O2I 1;C]
MQV1POV\%;B=+@?D?3 :Y/^-(_#+B#0#[BMR?623^#. -`/N!W)]!)/[LX0T`
M8T3NSQ02?^;Q!H"](_=GQ]0?1\$D\0PH1D;NSP)>^3;3?RS/_!'(0.Z7&XD/
MP?P/\B/WRXK$1RK>`+ K<K]\2'SDP1L`!B'WRX3$QPAX`T ,N5\.)#[VCC<`
M"'*_!'A $^/%,Z"6(_<+C9<E]A7/@-J)W"\H$A\3P_R/;<C]PB'Q,2V\`5B"
MW"\0$A\%P1O ;"/W"X'$1S'Q!C"3R/TI(_%1"KP!S!)R?TX&P4X```$`241!
M5)IX0!.EPS.@,X#<GPY>,R@[G@$M+W)_TDA\S!+F?\JHN/,,>AC-GM0VG\GZ
M%F1TS63;3E=&S]+:J0KR6A"%OM\O5$OM49ZI_%FJKRK8ZW_&VG:ZLGO6_ 1 
MLXM"O1:44O\S[0)89&%A8=I%F#0+JVP)>G98A6HQ<A\`[$+N`X!=R'T`L NY
M#P!V(?<!P"[D/@#8A=P'`+L4.O?7U]<KE4JE4G$<1Q965E9&.$^_WW<<)_^Q
M\DL6T_I5"UU9QW%65U='/L]HM5;%^QV3,=)M*\W;;#8'[9;G5'LLR5 G+-<8
MCI5D>7G97+.\O)Q1L-BF_'O&E+?%)B$J*K-L(Y0S" +P.)I;```!`$E$052]
MW&@T8I756\W=8EMS7C3U#$E*J?GY^>P=8 at M1%+FN&X;A:)?.J'7JL7I-GHKG
MJ?6N59Z8U+8-P]!UW>S]D[)'S at A%2IXY51'&L):S9Y7QN[NQ]1D%DTUYVCF[
M=F5LL8F9V=PW#_$\KUZO*Z5:K59LZZ[C;Z at +9>\V0NZ'8>AYWFB7SJAU]K%Y
M:I1SGX*,]4'=/:@6>Q\5^8N44Q'&L+G_4+GO^[Z^?0G#T/?]7<N\]T%8QA:;
MF/+E?J_7J]5JKNLJI60PU>MU"<=6JZ64DAV44G(WU^OUE%*=3L?SO%JM%D61
MWFKNII22TT;&R N"P/,\UW4]S^OU>E%BZ,0N)#N;I+JQ:P```0!)1$%40\VL
MP at BYKW^4JLG)Y5Y#7SK9(-FU-I>3M3:;0DZ>[(N<M2[.6,]NVV0#ZMWD,X%L
M:C0:L0$C^[1:+=G''"0R<N2H:.?>TVPE24/=FU':J/-]7TY8D#%LMMM0N=]H
M-'S?EY6^[TMK1(EQI1=2VUG62_',B at P[_HO<8A-3OMP/@D!>*CKEHYWY$'-6
M1!^B!YF\^<>VF at OU>MU<:;XF:[6:#-R,,_B^+V>0 at B6KLY?<#X(@636]*=D@
MV;4VZQBKM2SH-]18K<T#=ZUU<<9Z:@OHVB4;4.]6J]6D*?3*Y*D\STLVE\2]
M>93T2QB&>CZAU6J9U\H8=049PV9[#I7[L6HF&_Z<"CT```$`241!5#-9F-1"
MI@[+$<9_85ML8LJ7^Z[K=CH=O2Q#H=/IF!UF'J+?\&4??;<5VRTUVF0,19DO
M^]0SN*X[[,UO=NY'.Y%A?D:6A=0&R:ZU6<?L`@S:+4^MBS/6S=*Z.W2.)!M0
M[]_K]6+-GG/DQ-;('6+&FW>4.>H*,H;-DP^5^]'.NV.KU9*/YJ/E?NJ91QC_
MA6VQB2GTWV%.M;6UM;2TI'^\[;;;E%+_^,<_E%*OO/)*;.=^OW_^_'G7=2N5
MBJQIM]N'#AW:I[+IJXQ+L]F4Z8)JM:J4.G7JU,F3)\^=.V?NDVR0LM=Z7VUN
M;LI"L]D\=NQ8%$6I(TH</W[\R)$CE4HEV>R\/^_C```!`$E$051#.7/FS*./
M/MINM\^<.;.YN7GFS)G\Q\Y&;U:K56EY&<ECQ/@?Q;3?> 92:?<"D?&Q6F;6
M] 1<ZCR/>>\6&1_Z5+YW_M1/?+U>S_Q,IQ?TN[U9,/.<>WF>1^W<AB0OG6R0
M76L=O?>.*5F Y ?JV,?G/+7>M<H3D]JVT> &3.ZOFSVY*76>)W8)/26]ZRUD
M<M059PR;)Q_V?E\JK@>2WJ2GOY+MD*Q=:CN/,/X+VV(34[[<E^]J]%=M410%
M06!^IM,#2[X9,R=_]+<]ROAB)_;U462,`/T]DOZ&+0@"I92LU#O+LGR&C7V_
M9)XS?^[KB0A=> E<^?2J/\/*GLD&V;76YP\G?@```0!)1$%4^MA!N1_[7DO7
M6N8K<M:Z.&,](_=;K5:R`?5N$AG2GFK ]XVIW^O&+FU^KQO[ZC at U]\U15YPQ
M;)Y\V-R/HLCS//UPFMDL,J[,PJ162CHBV<XCC/_"MMC$%/<_Q)FQ_ZS'<9SY
M^7E]UY.ZPRS55^6H\B1+4I:V+451<_;L>.M2BI89I#BO!5'HW]<%`(P=N0\4
MB,Q-(XF6&2-R'RB0HT>/3KL(!47+C%&AG^.TY6\D[;"MOI-$VTX%S5Y,Q<W]
M*(HF\S_0]_O]^?GY"5PHV\3J:Z%)MFU!AM, at DRP>0[JP2OP5^;C(+0GM at +TK
M_E at J?@DQ`;;/[Y?ZX3 44!1%A9W<8$76V2H```$`241!5+1#V)[[HLBO591%
M65*5T0ZK<[\L+U242S&#E=$.S>K<-Q7SM8JR*%>J,MHM9V_N)U^HO!@P+D4;
M2^5Z6\)^LS?W at 7$I>*JF%J]H[TR8)$MS?] +E1<#AE7>L53\$F*?V)C[!;\[
MP\PH0K RVI%D8^YG*\)K%651]E1EM-O)NMPO^PL5Y3+=8&6T(Y5UN9\'-T'(
M8S92E=%N(;MR/_\+E1<#LA5_+!6_A)B6XOX]SGW"^,:X##66)OSA0,K&:$>J
M6?B at ND>S\6D=!5'PX53PXF$R[)KG`0"0^P!@%W(?`.Q"[@. 7<A]`+ +N0\`
M=B'W`< NY#X`V(7<!P"[D/L`8!=!C'*$```!`$E$051R'P#L0NX#@%W(?0"P
M"[D/`'8A]P' +N0^`-B%W <`NY#[`& 7<A\`[$+N`X!=R'T`L NY#P!V(?<!
MP"Y.%$73O+SC3/'J1;;W?J%M2\KL>CIQ)DTW=952[YONY54!FJ" Y-6^L+#0
MZ_7V<A[:MG0<QXGU.YTX8Y)=/'G,\P" 7<A]`+ +N0\`=B'W`< NY#X`V(7<
M!P"[D/L`8)="Y+[C.)4=CN,TF\WI%D86^OV^XS at K*RO#'EBHW[5IM]O5:E7:
MMEJM=KM=-60),W;.WW%YKKB7=DL]-N.$PW:N/MNT.M=QG+6U-?WCVMI:=K_L
MNB9[O=Z:IW_WNW-3#\\^X6 at O]J_#VP```0!)1$%4WD*]<O=7-%5JY]=2])HP
M#*=;*GWU1J.1;*(@"&(+R4UYRI\\/%F&^?GY?$7..HGG>6$8RIIZO>YYWJY7
M3SW/KINR.RYC4T:3YI=Z_HP3#MNY>F7.P3ER79129K_KRRFE7-?5ZUW7S=/:
MN[9M=G5B_6L6(.=)QM*YJ9?(/F&R?XO0N2+6Q5-1N-Q/_CAA^NJ>Y]7K=:54
MJ]5*;ATMXW+N,\;<5TKU>CV]LEZOCW:>/)M&:Y.Q=/>P)]G7SAVA/.:!@W+?
M[,KLF[8\%<FS0\[^W>_.'>$\R?XM0N?JP\G]@;G?:K7D'D<II=]@&XV&K)%[
M6'E7ES6ROW2SYWER8ZMO0J/(G2\```$`241!5%NMENNZKNMZGB<O'J54K59S
M7;?7Z_F^+YN"()#]Y;>H.YV.YWFU6DVN7JO5Y')ZP3R/.;!DC>NZ4AZS at K)5
M'][K]?3A^L9\O/?[2JE&HV&FOUG4( CT/E(>:0HII+ESK]?S/$^W]J".R]@S
MV:>QEI1CI3M<U_5]W^RLC)$@.TA%8A^\]";='2-T;L;98IUKGBJU<W?MM4&Y
M'P2!G"0,0SU04PL0*X:Y7KI;MVU&EPWJWXQA()\)9%.CT<C?N;%!&'M=RSZ^
M[Z=V;JQ&J?V;OW/UV<R at 2.W<08TV;!=/1>%R7]ZEHRC2HSQ*-'VKU9+NU'= 
M\DH0D7$W% 2!W.'JZ8Y-9W3E```!`$E$051ZO>[[ONPCFWS?UR]^_7*2D6>6
M)[4DLJ"C)[8F#$-Y^QGTRI0K2IDE$\VA-I;<[_5Z4BFEE.=YL1>J&?>RTO=]
MW5"QHOJ^+RTF18W5J]%H2&4S]LSH4[W@^[[YD5QW5AB&9DXE1X)<,;F/WJ2[
M8ZC.U9^0!ITMXPRIG9LM(_=U96NUFCFKEC&ZDDVAV[96JTF2RH_)+HN=6;]P
M,H:!%"PR>B%GY\8&8>QUK:N?VKFQ&D4#^C=GYR;/EG&&U$;;%;G_W^9V=^AL
MBG9ZW1R=LH.,DFCGO5>GB=S4MUHMN:?H=#H9-V5F+^H7I!Y8^DZAT^FHS$^+
M&0O):R772#GULOD6M7GO:0```0!)1$%4,I;<USJ=CC3+R$4U-TG#FAVG7[V#
M]I0?DWV:?"4GNR.Y<VPD9(1O<M,(G9NG?9('IG9NMHS<-T^;LY"[MFU&YT;O
M?6&JQ/U-E.C<7J\7Z]^A.E<OQU[70]4H&M"_.3LWS]C+;K1=%2'WI__W.,7F
MYF9L3;5:54J=.G7JY,F3Y\Z=T[LUF\TP#)]]]MG-S<TS9\X\^NBC[7;[S)DS
M\N/6UE:[W7[@@0?NOOONS<W-K:VM0X<.#5N8?K]__OQYUW4KE8JL:;?;(YPG
MCZVMK:6E)?WC;;?=-M[S.\[__:GMQ<7%[W__^WM\8D$WB*8[KMOMWG777;HN
MR3W5@#X=36PDY#>J!' ```$`241!5#^PU)WK>5ZSV;S]]MOW>)Y4J5VFV[;9
M;!X[=DS&4NJ>2JGCQX\?.7*D4JGLL7^3K^O\QTZR?]7 at IBBZZ;[MJ,0;OKE)
MWGOU#87,IID'RA1J]-YI"J54J]62#\+R22T:,,\CF\QY'OE@&'LT9==/B\D%
M_?6#OI:44W\"U3OK at DGMQC[/X[JN_C";_&"N$K<\9D/%=C;GQZ6HL8[;=<]D
MGR8+HS\[1^^="C#W28Z$9$7,3>;,S&B=.^AL9J62<R^IG9M-9=[OR_B1`IB;
M!HVN9%,,FN=)=EFL^OK'C&&@%P:-M.S.-2\1>UWGK]&@_LW9N:GS/+U>+W7$
MIC;:KE0![O<B!4^M```!`$E$052+F_LRB.4C6^S[&97V_8_Y3:\^N?Z<F/J]
MKFPRO]>5\YNSD)'Q-5&T\\DWMF#6119B7PW)#'OLRU(Y7+Y]2ITG&4ONMUHM
M^<;,G$/+&/K24*G?Z\JI!GWD-QM\T)ZI?:KR??47*W!L)&3GOODU^VB=:YY-
M%\],6ZF.N_.DHYPAM7-W[;6,W)>)"UU:V606()EQ.;_73799:O^V6JV,82 A
M*RVLWOO\0I[.C=X[3E(OD9K[9HT&]6_.SM5?VNOBZ1=OK','-=JP73P5T___
MMJ9;@&*29MGC?\XP6MNNKZ]_X0M?F)^?[W:[2TM+0TVA%%.YQICC.//S\[K?
MQUOX<C5%F9("Y ```0!)1$%4'F6L4:R+IZ(0OZ^+XMC8V#A__KQ2ZNFGGSYR
MY,BTBP- at _,A]O,=WOO.=W_WN=Y5*Y<,?_O WO_G-:1=G#&3"%VH6FV+V:C09
MS/,4T13G>3!=^SK/@R(HPCS/])_CM.AO(4T<;3L#Z$2,W91S7^YJIUN&8MI[
ML\QDV_;[_?GY^6F78G+D9G_V^A'3Q:=(E GS'L#>\;TN2H9Y#V"/R'V4!C?[
MP%B0^R@''?I1%''+#^P%N0\`=B'W40*Q&1YN^8&](/=12D0_,#)R'T7'U[G 
M>)'[*+2,T.>6'Q at -N0\`=B'W45R[SO!PRP^, at -Q'N1']P+#(?1047^<"^X3<
M1^EQR^F104$```$`241!5 \,9?I_?Q](DAPGS8']P$=IE F3/\#>,<\#`'8A
M]P' +N0^`-B%W <`NY#[`& 7<A\`[$+N`X!=R'T`L NY#P!V(?<!P"[D/@#8
MA=P'`+N0^P!@%W(?`.Q"[@. 7<A]`+ +N0\`=B'W`< NY#X`V(7<!P"[D/L`
M8!=R'P#LXD11-.TRH!P<QYEV$8J%UPY*ZGW3+@#*A*33>!=$>3'/`XQH86%A
MVD4`1D'N`X!=R'T`L NY#P!V(?<!P"[D/@#8A=P'`+N0^P!@%W(?PW$<I[+#
M<9SU]?6ACMWCU?O]ON,X*RLKPUZ17[,"-'(?0]O<$8;AL\\^.\E+7[QX42EU
M]NQ<;7A<```!`$E$0519O69U=36V8 J"(/_)4\\`S![^/@_R<APGBB+Y-[9R
MJ#/LI0S5:O7AAQ\^??ITJ]4Z=.B0><[LD^>Y]+!UF9^?[_5ZN<L.% 7W^QA=
ML]GT/$\IU6ZWJ]5JI5*I5JOM=ELIU>_W8VLTO<EQ'-G4;K=E^LAQ'+GIEAFD
M:K6JU\B!Y\^??^211SS/>_'%%Y52,N%3J53T at AR[LK*BE_5U966E4NGW^RHQ
M!62>(5E"8*9$0#YJY^^RN3N44IU.)XHBS_/",(RB* Q#S_.B*/)]OUZOFVOT
M&?2F5JLE:X(@D,/-J\@^<D,MFQJ-ABS7ZW6],G5!CHVME$O4ZW7?]P<=* O)
M5$$9T0```0!)1$%4$J:VQOS\_$@-"4P9\SS(*SG/T^UVEY:6-C<WS97)W6)3
M,>:F2J7RW'//'3ITJ-EL;F]OO_;::^?.G1MT>+5:_<0G/G'FS)ENMWO777?)
M5$]RGB?CTJDES#Z#+F&R-9CG04GQ=Y at QNL7%Q:VMK1$.E.D4K5JM*J5.G3IU
M\N3)<^?.I1XBDSRNZ^ICV^UV,H[')59"8*9,\L,%2DWMS,#H-7H:9*AY'M=U
M6ZU6%$6]7L_S/+EE[O5ZY at G-J\AR&(;F2CW5HP9/UT2[S?/T>CUS)D<O)$N8
MVAK,\Z"DR'WDI=+F]_4\N.=YKNMZGF<FINPF:_09],XZBV7BWO.\6JTF_VF.
M*<D```$`241!5":SV_?]( CT2GFWZ'0Z4AY=L&AP[NL22H[+(YZR4N\CR\D2
MIK8&N8^28GX?>>W]*<Q9POP^RHOG. ' +N0^`-B%W <`N_ <)X; 7S<#9@"Y
MC[RB*%I86)AV*0#L%4]H`(!=F-\'`+N0^P!@%W(?`.Q"[@. 7<A]`+ +N0\`
M=B'W`< NY#X`V(7<!P"[D/L`8!=R'P#L0NX#@%W(?0"P"[D/`'8A]P' +N0^
M`-B%W <`NY#[`& 7<A\`[$+N`X!=R'T`L NY#P!V(?<!P"[D/@#8A=P'`+N0
M^P!@%W(?`.Q"[@. 7<A]`+ +N0\`=B'W`< NY#X`V(7<!P"[D/L`8!>\X at M-
M```!`$E$051R'P#L0NX#@%W(?0"P"[D/`'8A]P' +N0^`-B%W <`NY#[`& 7
M<A\`[$+N`X!=R'T`L NY#P!V(?<!P"[D/@#8A=P'`+N0^P!@%W(?`.Q"[@. 
M7<A]`+ +N0\`=B'W`< NY#X`V(7<!P"[D/L`8!=R'P#L0NX#@%W(?0"P"[D/
M`'8A]P' +N0^`-B%W <`NY#[`& 7<A\`[$+N`X!=R'T`L NY#P!V(?<!P"[D
M/@#8A=P'`+N0^P!@%W(?`.Q"[@. 7<A]`+ +N0\`=B'W`< NY#Z0U]6K5Z==
M!& ,9CGWU];6*I6*XSAK.U965AS'65U=E1TJE<K:VMJ$2]5L-M?7Y3(DMP``
M`0!)1$%4U]?6UJK5ZOKZ^J#=UM?7U]?7EY>7\Y=P8V-C=775<9SEY>74Z\JF
M9K,Y8M%WT^UVI0"#=IA*@V?;M<RF>^^]=XS1KUMCJ#*,W?Y=/?O,\O(<^T4S
M"B,O_XE=L="BF5:OUV-U['0ZON_+<A $81A.LCS;V]N-1D.6WWGG':54O5Y/
M[E:OU]]YYQU9'K3/(+[O*Z4ZG4YL?1B&2JE+ERYE'YX\<%@9 at VKD!M][J;+E
M>2%<NG1)*14$07)3LGAY"AQKC1%>C&-LEOV+ at D%G#L,PM3'WU<PG7DXSW at K)
MW(^B2"?OY 5!8(9X$ 2I`]$,Z-0J9*C7ZZ[KQNK8Z72VM[?SY&-H`8 ```$`
M241!5/[>7XK[\=+:[X#(4^8@" ;U5[)X(Q1XA'8;8[-,/O>GHE"%F:)9GN>)
MV=C8D(5;;[UUUYV[W>X^%>/TZ=-Z^<"!`X-VNW;MVLB76%E9>>RQQ\PU?_SC
M'P\>/+CK@=UN]\DGGQSYNOND.*4Z=NR82LSR)XLWF0(7IUE0.N^;=@$FY]JU
M:P\^^*!2ZNC1HTJIU=75)Y]\,HHBV7KUZM7?__[W'_WH1Z]=NR9QO+FY6:E4
M?O[SG\MNW6XWN=SI=%Y__?7/?>YSG4YG<7%Q?7U=WE2N7[_^Y2]_^99;;HF5
MX8DGGGCBB2?TCYU.Q_.\9%%UJ6+[5"J5KWWM:X\__GAV38]'5QFE```!`$E$
M050<.:*4VMC8D/JFNGGSYD]^\I,[[KA#E[;7Z[WTTDM**9ET?N211Q87%V_>
MO/F;W_QF;F[NVK5KG_WL9_6;Q\V;-R]<N/#1CWY4*77CQHT3)TZ8E6TVFW-S
M<__^][_??OOMI:4E6;FQL?'RRR^?/7M6:I<L@)QA=77UP($#!PX<^->__O7X
MXX]WN]UDJ9)U^<UO?B/+FYN;7_G*5PX>/*C[:'M[^[777IN;F[M\^?*==]ZI
MRZ,[*X]FLWGOO?=*]<,PU.V0+)Y2*KDF.5KT6(I=Q6PW<\C%&C"U608U:;(N
MV]O;TLBWWGJKO!Q,^@[IY9=?EL942EV]>E6:\=___O>9ADKQG0```0!)1$%4
M,V<V-S>3:P:UGISPQHT;TJ?2;F;54D=CO5Z_=NW:J5.GE%)R_M31V.UVDWNJ
MQ$#2A;EZ]>H;;[PA+_.EI:6UM;73IT_[OO^M;WUK<7%Q>7GYW+ESERY=RGCM
MS(*I?=*8")DDJ=?KJ;,EYAJEE$RI=SH=UW4S=C.793JET6B\\\X[81C6:C79
M9"X/(A,OV]O;&?O(=P!ZGSSSXS*/5*O5S,)(U90QS^/[OCZ56=I8*S4:#5DC
M)='K?=_7I[ITZ9+^RB0R6E**$2NP/DEJ`8(@T#-4NGF3I8K1A8P2W:>4TE<Q
MJV"V9*QJJ?2,2NI43\XUYFA)[C.HW9*[#;K*H#XUA4 E.7<```$`241!5&'H
M>9Y>UF>(G5;.8S:FV<52D>2:5.:H&U27025W75=&KVZZU-&8W#-C($EAS#/4
M:C4]^QJ&X7Y_F50$5N2^+)O#5&0$>L[=] LUVAEYLKQKE+SSSCN>YV6'?I26
MF[N2$2Q?0DKQS 210=_I=,SBF:6-%5O>SV*;8H?+)OUJ,3>%89CZ)II:`/VO
M/M;\<CNCRF8AHQQ=F5K^C/-'1NZGOEOGS'USM PJFS#;+>=HS.A34VR4IKZ[
MI+9\$ 2>YS4:C>WM;=F:7)-JV.X8=C0F?\PYD/2R]*DL3_'+OTFR:)Y')F<'
M"8)@?7U]:6EI?7U=[H/R,#]';VUMO?WVV_HSLB2!9JHL```!`$E$051OJILW
M;W[UJU_]SG>^DSWGWFPV*Y5*\F-X'O(I]<*%"Y5*96YN+K;U]==?5\;'^>S2
M7K]^/?;HIQR>/&=R!F9N;FYK:RMUYV0!+E^^K(PFS5_Q6VZYY>VWWUY;6[OC
MCCN2E1UT]?RD^N83J.943WZILRZI!K5;AIQ]NK6UI9OHEEMN26WD(T>.R*R+
MV9A?__K7#QPX\.RSSTK!MK>WDVM&:)/\)1?)T9 at T[$ Z>/"@YWG-9O/3G_YT
M_JF_<IOV&\_^RGX8QMQTZ=*E[>WM2Y<N)3_EJ0$W++$SFW=24>8S=N9CFH-N
MYR]=NF1^\AUTJM23RT*CT8 at 52;WW0ZYYCY:\%*@])@```0!)1$%46]?S1;$[
MK$ZGD_]^7U[ L3T'%4!.:ZY,WJ:E/M):J]7,VS1=SBC?#69RMYC819-3/<GB
M9:P9=-%![9:QFWF5C#XUQ89$ZHVPYWFQF9E.IV,>U6 at TS)D9O29YN4$%-G_,
M,QI%ZFA,[IEG(,669?IKPD]U3Y%%S_-DNWSY\L&#!Q]\\,'D3:N6?:.QLK+R
M_///ZQ\'?<VUNKIZQQUW7+Y\>6-C8V-CX_KUZWJ]/O_5JU<O7[X\-S>7L<^N
M3IPX,>B>\99;;@F"X"<_^<F at TMZ\>?,3G_B$4NKLV;-RNW3SYDW9]-)++RTN
M+ at 9!H$O2;#:#(##;3>]\^?)E>>O-4X#%Q65^^&D```$`241!5$7?]R]<N*!/
MHK^MC94JYNS9LR=.G)!E_2!6QM>,<B%=_NQGMW1=M),G3ZJTP9 LWJ "[WJM
M0>V6VOMRE5W[5,1&Z84+%Y(5/'_^O'Q>-!O3/&II:>G#'_YP<LUN]4N7L^1J
MP&A,[K;K0$HZ>O3H^?/G1RA\2?V_;W_[V],NPWY96UM[^>67M[>WY^;FWGSS
MS7ONN4=OZG:[/_O9S\(PG)N;DU\:_/&/?WS\^/&GGGKJJ:>>NG+ERGWWW;>P
ML" ['SY\^-577[UQX\;'/O:Q[WWO>W-S<W?>>:<^_,J5*X<.'5)*W7///1_\
MX <O7+APY<J55U]]]<2)$^]___MC19*8[BM4```!`$E$052'B'[ZTY_^:,=]
M]]WW^<]_7BGUQ!-/W'WWW7*J$R=._/"'/\S>)VEC8^.))Y[X[G>_>_OMMQ\Z
M=.C][W__&V^\X7G>AS[TH6:S>>'"A8L7+W[@`Q]P'.>>>^ZI5"KM'69I#Q\^
M_,(++[SUUELR+7;X\.$+%RZ\^^Z[?_[SGQ]XX(%FL_G)3WY2#I>:MMOMM]]^
M^QO?^(8NQNVWW][O]V_<N/'**Z_\ZU__,C<II9YZZBD9<JD%>.BAAW[]ZU]O
M;FYVN]UKUZX]^NBCN at O,4L4</GSX5[_ZU;OOOMOI=-YZZZU/?O*35ZY<.7+D
MB.XCV?2+7_SBXL6+TGU?^M*7?O6K,\0]?P```0!)1$%47[WYYILW;MSXRU_^
M\M.?_E36?^A#'S+/W&PV/_6I3X5A>/CP81D_\B#*Q8L77W_]]?_\YS_2%\GB
MF6O,P2:C)3G\,MKM\.'#O_WM;_O]?J?3^=___=\?_>A'NJBQZP[J4Y.,TA=>
M>.&UUUY[]=57[[___G???5<71DY[\.#!S<W-O_WM;W__^]\?>. !:<SGGW_^
MMMMNNW'C1J?3^=.?_O3%+WXQN2;6>F8US9?,G7?>^<]__O,'/_C!Q8L79:PF
M2W[CQ at W90;KOXQ__^*#1^($/?""Y9W(@=;M=?<6/?.0C^A#=Z7-S<P\]]%"L
M"K/*B=[[))F=UM;6S(<4-S8VGK]W+GD```"X241!5'ONN5_\XA?3+56I=;O=
MU$].CL.0RS*HW;#?Y.N]:9=B0ICG44JIW_WN=^:+;<8?W9V(6'@YCM-L-KO=
M;NKO*T C]"?,<9RK5Z]>O7I5?AG%$MQ\*;7S:R-Z*O;&C1OWWW__: \G(-7J
MZNJ]]]Y[_?IU\W,5,'5K:VORPK?J;H_<!P"[,,\#`'8A]P' +N0^`-B%W <`
MNY#[`& 7<A\`[$+N`X!=R'T`L NY#P!V(?<!P"[_'V8?Y#?8J-N!`````$E%
&3D2N0F""
`
end

begin 666 mewa.png
MB5!.1PT*&@H````-24A$4@```5\```#X" (```#$N7(T````"7!(67,```[$
M```.Q &5*PX;````!W1)344'U at 8>!"H*OX(-= ````=T15AT075T:&]R`*FN
MS$@````,=$58=$1E<V-R:7!T:6]N`!,)(2,````*=$58=$-O<'ER:6=H= "L
M#\PZ````#G1%6'1#<F5A=&EO;B!T:6UE`#7W#PD````)=$58=%-O9G1W87)E
M`%UP_SH````+=$58=$1I<V-L86EM97(`M\"TCP````AT15AT5V%R;FEN9P# 
M&^:'````!W1%6'13;W5R8V4`]?^#ZP````AT15AT0V]M;65N= #VS):_````
M!G1%6'14:71L90"H[M(G```!`$E$051XG.W=;6P4Q_T'\-\&%TQ0!%5I21RE
M)G5TCE#2)(I)6Y2>#ZA)0SDJE;21%14:"9!!40DJ41$Y=?<4(T&%@X.K8MRD
M+2#L- ]&Y5Q7C7+XFJJ&(">X&&&;JC8V"@34A',3LH>NU?Q?3#S_96]]OH>]
MV]F][^>%=1[OSLRN;W\[.SL[JS#&" `@Q2U.5P``)(7H``#6$!T`P!JB`P!8
M0W0``&N(#@!@#=$!`*PA.@" -40'`+"&Z ``UA =`, :H@,`6$-T``!KB X`
M8 W1`0"L(3H`@#5$!P"PAN@``-80'0# 6EF!\E441575`F6>1C@<QDR9`+90
M"G0L*4JA<I:SG&6##@```0!)1$%47 #OP94%`%A#= ``:X at .`& -T0$`K"$Z
M`( U1 <`L(;H``#6$!T^IVF:D@>GJP]@OT*-E72CG(=1(3J )Z'M``#6$!T`
MP!JB`P!8DZ+?(<_K=CQV!5 (4K0=5%5EN7*Z[@">)45T```)(3J U"8F)M+\
M-9%(\ ^:IFF:5HP*R4?L!-LA.H"\>GM[Y\V;EV:![W__^_Q#.!P.A\-%J91<
MFIJ:=NW:5:#,I>B5]+9 (! (!')8$;/@O?766QDN4+([:MNV;06<HC'G[L!I
M.PLS7SC/7LF<RRU0'>S*N7#_G6P1D:JJ'1T=1-31T:'KND@?&QM;OWX]_S4:
MC38T-/A\OCX&;+L```$`241!5&@TRE-&1D8:&AJ(*!0*]??WBPRCT6A-34TP
M&!1+\J\X/]IW[- at A\A??TLN7+^_9LX>(@L%@1T>'\:_B\.!K#0P,!(-!G\_'
M%Q-97;ER9<6*%<%@<&!@('4;=5WOZ.CP^7P-#0W#P\,BG2<:U^(%U=?7!X/!
MH:$AO at S?,\8%UJQ98]I=J5E9;C6W;]\^(MJY<Z=Q$[9MV[9GSQZQ::8#F>]5
M(FIO;T_[_\P4HH/]=; K9ZFB0WU]O?@BBB\?/^S7K%G#&(M&H\8O*S_LC6L1
MT<C(R%1+\N/$Y_/Q1-.W/S6K at 8&!J:*#W^\W9<ZS"@:#/)%7V*2]O=V8_^7+
METU5]?LG6(L)```!`$E$053](JMCQX[QQ(:&AE H9*R5:0&QNRRSLMQJQI at Q
MSU H),H52YKV`!$-#0T9?Q4;G at _T.T!&XO%X/![7=;VSL_/PX<,B?=6J56^\
M\081O?322]W=W;JN)Y/)[N[NMK8V(GKKK;>ZN[NO7KUZ\>)%5563R:18,IE,
MZKHNEN2.'CW*&-NR90L_;/A/<6 ,#0U=N'"AL[.3B-YXXPTV&4"-_9$M+2UW
MW'&'J"IO;G ;-FQ()I,C(R.Q6"QU`W__^]\?.W8LF4P.# RHJOJ?__R'B/;L
MV=/9V:GK>CP>O^...UI:6L3R/*O6UM8E2Y;HNO[QQQ_S6O&_CHV-\;7$[DJ3
ME6FKY"JYO0```0!)1$%4WW___<;&QG/GSC'&SIT[U]C8.#@XR)=\^.&'15D]
M/3ULLEG'&.,-D%.G3NFZ_L<__O&SSS[+\C]L)?\`8RFKG-%VR"';8J*;QZ2(
MBAEK:/G5XI<5QFN-J984@<#XV9AH:G'P^AAK0I-Q)).J&JMARLJTX>*S,519
M+C!55JEK66Z@*=%R8\6FI29>OGR9+QP,!GD;+7_HE82,W+AQ at W_XZ*./*BLK
M4Q>HJ*A8NW;MK%FSC(G[]^]75;6KJ^O at P8.;-FUJ:FI:M6J5Y9+3VK1I4R02
M>>"!!VZ]]=;Y\^=/M5A-38VQJA45%5,M*0Y"WF=<45%Q_?KU.7/FF#9J8F)B
M[C6CC>4```$`241!5-RY1*3K.K^JSX182^RNS+/B=7[^^>?+RLJ,-4SO]MMO
M9XP-#@ZVM;6M7[_>Y_/MW[\_P]I.!5<6D)'>WM[Q\?&)B8GFYN;:VMK4!;[S
MG>^4E95MWKQ9TS2_WW_BQ DB6KQX\84+%]:O7__""R^</W^^KZ]/+/G<<\\9
METR#W\\_?_Z\S^?[\I>_W-S<;/RK:4#$[MV[IZTJITWBQ]ZWOO6M7;MV)1*)
M5U]]55&4KJXN7M4]>_9,3$R,CX^?/'GR%[_X169[B\1:H at Z99U575T=$W_C&
M-S1-6[=N73@<GCES9IJR>#3LZNI2%.6VVV[;NW?OU[_^]=;6U at RKF@:B`V3H
MN&FS```!`$E$051DX<*%&S9LJ*JJ&A\?MQQWI&G:X.#@][[W/451FIN;^>B#
MK5NW_OSG/U<4Y<<__G%]??W&C1O%DCZ?S[BDI<<>>ZRFIN:11QXAHN;FYNKJ
MZGOOO3<>CS<T-/SK7_\BHJ>??GK>O'EOOOFF6&79LF4K5ZZLJZNKJJH:'!S<
MN7-GAAOX_///_^,?_Y@]>_;^_?N?>>89'C)X5:NJJNKJZE:N7"GZ-:>U=.G2
MAQ]^N*ZN3NRNS+.Z^^Z[H]'H2R^]I"C*=[_[W=_\YC=I&AHOOOCBH4.'GGKJ
M*;_?W]#0\.BCCRJ*\L]__I,'XCPA.@# %&SIO4B55<[HE<PAVV*B_)Z4LU#4
MW@```0!)1$%4*S7R_./RA%[)_U>R`_4!+"$Z?"Y]:$C_\EZ$%? D1(=,E?+;
MO4MVPW/CF=V%7LGI:9K&+\/01H"2 at N@``-:DB [A<!BOF0&0C1318=H[*^EO
MIQ6MGOQ]644K#L!94D0'%T'O`Y0.1 <`L.:".YJE?"L1P$&%.O <O#ZW?8M2
MYSO.*F#ELRL0%L%!A;JRR&-PMT6G8[;+VT@\X6NDJJKE_$*6\MQV`*>XH-'N
M[)7%5*67\@L4H$2 at 5Q(`K,D>'?@H9J=K80%C'\#S9(\.SHK%8FE>)9)5[P. 
MZR ZI!.+Q=)T+FB:AN@`'H;H``#6$!WR at MX'\#!$AWPQQA @P),0'1W,5C(`
M``$`241!5 # &J*##1@>W 0O0G0``&N(#@!@S05/<#LEJ^<[^,T+.8=U`N0&
M;0?;H/<!/$;JM@/.Q@`.0ML!`*Q)?7)VL.T0B\72/V0Q%;1WP#,*U78PO7)"
M?.;'VU2_FM:ER=Z^J5(*5! 1Q6(Q\9:-K$KA0R>G*M142OI?\]DT@/Q)?:)3
MG#L/YS/U$Z:-`F^0M]]!VGE?`$J$O-'!O?#@)G@#HD-!X,%-\ !$!P"PANA0
M*!@Z"6Z'Z ``UA =+(A!!'D*! )H/H![(3H44" 0"(?#3M<"($>(#H6%W@=P
M+T0'`+"&Z&!F^QA-]#Z 2R$Z%!QZ'\"E)(T.=MTUD 1Z'\"-)(UK9#SP```!
M`$E$050.`. X1 <`L(;H4"1X<!-<!]&A>-#[`.XB8W2(Q6*JJCI="X!2)^.,
M];E-]VH+!^>J`Y"-1 >#B BQ6"P0"*2F%ZY<XW@$8[.E$$7S`,3GO Z'P_+L
M?P`3B:+#5)UVA:ZA*3H4H6CCELJS_P%,).IWL.QKZ.GI*72YE at V$VMI:>X];
M?KD4" 1PYP+<0J*V`UDU'XI3O:*5Z]0&`N1 HK8#`$A%WNA@>]L^#5-!A2NW
M"!=*`':1*SH8#\M8+.9('0HZU"(0".!2`MQ"KNA DP=G\4=#B7*+,-2",89&
M!,A/NM%0_.!T9#14,<_JO!&!^Q<@,UGN64P5#@*!@'%DE#?*[_T4'@```0!)
M1$%4=6IC`;(B1=LAS?AE/D; ,^7RD5>.;"Q MF8X_M1@^D<;Q/ AVP\;1\KE
M`ZB+7"A ;AR^L@@$`IG<FQ 'E2VQ+/.N#5ZN>PL%R(>3T2&K!R+Y2=66VFJ:
MEOFQ9]=3FXX4"I /Q^YH9GL`,,;X["EYCH/(=CY;6Z9L<:10&;S\\LO9KC+5
MOLKV_L[%BQ>W;MV:;>E at Y$QTR/F=$7E&!]O?52%MH9+8L&&#75EENP]?>>65
MYN9FNTHO3=*-A@()\: \/#S<TM(R/#Q,1&?/GM4T[;777A/+7+MVK:NK2].T
MO_WM;V(M, at 3T#S_\\/#APYJF1:-18^;1:#0UD>=O3#0V*+-EC"(```$`241!
M5$9'1]O:VCHZ.JY=N\93$HG$V;-G6UI:NKJZ/OOL,YH<:RO6>O?==S5-^]WO
M?O?AAQ_:L$=*!'."JJKN6C>?'>5(H?8BHOKZ>O&=:6]O%Y\[.CKX,GZ_7R2&
M0B%F.-6KJGKLV#'CMTZL%0J%4M=:L6*%2&QH:!!U2%W%[_?SQ& P:%K%^ TW
ME3XR,E*\?>=F:#M IG1=__CCCXGH3W_ZDZ[KC+$M6[;PJ/'**Z_<====//'<
MN7.-C8V#@X-L\I#6-.V]]]Y3575T='1H:.C))Y_D:[6TM#0V-IX^?9HQ=OKT
MZ<;&QG???9>(9LR8$8_'>6)K:RM/Y-Y___W&QL;N[NXN#;DL```!`$E$051D
M,JGK^EUWW77TZ-$3)TY$(I%CQXXED\F!@8&''GJ()H?&\SILV[;MJ:>>&AD9
M^>BCCU1532:3#NP^%T)T@(SX?+[R\O(O?O&+1'3//?>4EY<3T;QY\_A?UZ]?
M?^3(D=FS9RN*LFC1(B+ZPQ_^8%Q=T[3__>]_=]]]][WWWBO^]-.?_I2('GSP
M0?'SSW_^,Q$]\L at C<^?.-25RO!6P<N7*+WSA"[-GSSYRY,@/?O"#O_SE+T04
M# ;+RLKNN^^^C1LWFBK_VFNO'3ERY&M?^UIK:ZNF:3Z?S_;]XTE2C)64G"-S
M9+MK8NZ:FIKR\O+ERY>+%-. KM6K5T<BD9,G3U96&S4'40```0!)1$%45N[=
MN_>7O_PE7ZNOKR^12)27E_/. at HJ*"B*Z<>,&7XLG5E96BGSX`MNW;Y\U:Y8I
M\?KUZW/FS+&LW@,///#))Y^<.7/FT*%#U=7534U-JU:MLF7#O0UMA^DY,C;)
M70.B=N_>?<LMMVS>O%G3M'7KUH7#X9DS9_(_34Q,$%$D$B&B>^ZY9_;LV2=/
MGA1KT633@)__:VMKB:BWMW=\?)R(#ATZ1#<'FKJZ.B(J*RM[[KGG-$T;'1V]
M[;;;EBQ90D2[=NU*)!*OOOKJXL6+Q?*)1(*(-FW:].RSSRY9LF3W[MWGSY_O
MZ^LK] [Q"*<Z/'(K6E75GIZ>(I>;3S^H at X7:R,*WD6X```$`241!5+C;C9][
M>GI$/:]<N1*)1%15;6]O__333WDB[VXX<^8,8ZROKT]5U6 at T>N7*%555/_C@
M`[[,VV^_K:KJVV^_;<Q_8&# F,ANWH<#`P,'#AQ05?7"A0L\1==UD?_UZ]<9
M8Y]\\DDD$MFW;Q]?X,R9,ZJJ_O:WOQT:&K)Y[W at 7V@X`8 TCJ:<OU[V%>L;5
MJU<7+%B ?5)D3K8=&&,9/HRH:9JJJC;VTF5XH/)R75VH!_3W]R]8L&#'CAU.
M5Z3D.'^.FO8\6: 3J2/E3MN"0*L!Y.'\'4UF>.+(>.2(SP4Z6API-Q (I!9J
MG/0!H0'D(=>9RJE7R#E2KBBT.%/=`F1+KGNR!\W9```!`$E$0506_#X*OTE6
MY'+%G;GB%XK0`')R_LI"!KC:!TB%Z.#8F&6$))"<7%<6CG!DS'(I3PD#;E'J
MT0&3Q -,I=2C0S@<1G0`L%32_0Y.->_1XP"N4.IMA^)#: "W*-VV`XY2@/1*
MM.W at U)-.N%4!+E*B;8<TK[H%`*X4VPY.G<!Q]Q3<I12C at U-P]Q3<I>2N+)SJ
MC$2/`[A.:;4=<(@"9*ZTHH-3T.,`;H3H4 SH<0`W*I5^!SX[FR/SK.!R!ERJ
M5-H.[GJU%( ,2B4Z`$"V2N+*PL%.03S-`>[E_>B0U4NH;"\:H0'<"U<6`& -
MT0$`K'G\RL+!RW[T.(#;>;GM at - `D _/$\87!0```0!)1$%41@<'>P2=>D$&
M at +T\&QT<A)%7X V%:@";WFHM?@T$`L;W4)M^Y1]X(O_5^'[JU!33W4KQ:S@<
M[NGIF;8 at XZ^F;#,I9:K-$?5/+31]*?D4:OD^<8!\R'AYG/\(!?0X`.3/@U<6
MZ'$`L(4'HP,`V +1P4[HCP0O\=IH*%SV`]C%4]'!V:>>$)C 8W!E`0#6O!,=
MG)W9%0]K at _=X)SI at 9E<`>WDD.CA[S8\)Z<&3O! ='&_5H]D"GN2%Z. LW*H`
MKW+]'4W'KRD0&L"KW-UVP',-`(7C^NB D<L`!>+B*PO'[Q2 at QP&\S<5M!V?O
M%*#'`3S/K=$!!R= H;DU.@! H;FRWY+?A44```$`241!5,'Q"W['*P!0!%)$
M!]/4LL8[$7Q*5;$`GYJU^'<QC=/AXC8JE HFAZFJIZHJ8\QT-#I;/5XE`,^;
M(<]X@;_^]:^IB;S)$(O%4O^Z<.'"PE?J<^%P6'P6-2EF!0"*3Z+K9T513"FB
M;IJF&8_/U 4*+;5N1:X`0/%)=,_"=/E06ULK/AM[)8RF2B^"VMI:A ;P-EG:
M#E.=G%55U30M]:\\O>#5FF2J@"0[#:"@G&\[\#=?\5X0T7P0/7_&=\!Q_*3M
M8'=)3T^/4T4#%)-T`P?X6=HR,36]:'@%BMQ@`7"6DVT'3=-2S\.,L=1$9T_7
MQL$7#E8#H,A<]C;:(@]2-#5DQ*WP%0Y1```!`$E$0503]#M *7"F[9#S<,.B
M]3 at 8>T.,B3PE_[>$`\C/F9'4,L_:PAL(Z5L'O/)XV@*\S?E[%A+*\)AW]M8)
M0*$A.MS$\?FF`.2!Z'"3;.>;LARI!> -B [_#_T(`$:(#@!@#='A<SE/5,D8
MP\4%>)(ST0&7ZP#R<VSF./[,0N9W!,62N(D(4!P.]\-E'B LG\ZRERL&=P,4
MC?.SSDX;(/A?<00"%)D4Y[TTI]_B/W:5;7%H.X!7.=]V($.WO_$P*\*E1/[P
M2B[P,"FB`TU&`>,E1N9'G>EU&$;9=F'B^4L`09;HP.5P6"J*DF;*IL)U-&;R
M**=7%>)B*L\\IVIIYI#M^/CXA;[B)@```0!)1$%45[_ZU9QKXB5R18>L9-);
M*1ZCS.K6J6@^6*[%FRJI$UY"/@KT>K%LLSU\^/#:M6M+,^A;R/U%.4[+JO*Y
MO<#*M(OX5PWOPI+P:V/7EYG_B_//QQO<.I*Z.-V!?!^)UD0@$&"E.J=#8V-C
M=77UHD6+>GM[1>+HZ. at 33SPQ?_[\ZNKJW;MW\T1%48:'A^^___[JZNJ#!P\>
M/WY\T:)%BJ(\\<035Z]>):*#!P\^]MACBJ)45U>+1'YIP ?1;MVZE?_U5[_Z
M56I-CA\_GEHHU]34I"B*W^_OZNH2E1%57;=NW9UWWEE=7;UW[UZ>>/KT:9[5
MXL6+7W_]=9I\Z9FB*)JF#4R4]7<```$`241!5 \/KURY4E&4A0L7;MJTZ=JU
M:W;N4%=P,C3E(8<3N'LWUG'1:-3O]X^-C<7C\5 H)/;DVK5K0Z%0/!X?&QOS
M^_W1:)0Q1D2A4$C7]6 at T:OK,_VM$=.+$"<;8V-B8,9%-GKJ[N[MYH3Z?SU23
MD9$1GF=JH42T?_]^QEAG9R<1C8R,,,,_G5=5U_5X/.[W^_O[^QEC]?7U/+&C
MHZ.FIH;=W'8 at HF>??98Q=O'B12**1"(%W,52<N4!D]MQCNB0,[_?OWW[=O[Y
MW__^M]B3%145\7B<?]Z^?3L_P(CHTT\_Y8E$I.NZ^,P#P<C(R+9MVW[RDY_X
M_7[+Z'#CQ at VQ"D_D&&.<XA1V```!`$E$050'#AP@(LM"B>CZ]>N,,5W7B>C 
M at 0/,\$^OK*S<OGT[S^?11Q]=L6(%K[^H*F>,#B^^^&)55=7:M6N/'S]NTXYT
M&1?W2D+1O//..TN7+N6?O_2E+XGT2Y<NS9T[EW^>-6M67U\?_SQGSARQ3'EY
MN2FW+5NVW'GGG1LW;JRJJEJP8$%J<3-GSC3^*EZAJFG:I4N7B,BR4"*Z]=9;
M18E\26%L;&S7KEVF at BY=NF2LJLG6K5OKZ^N/'#FR;-FR8##8UM9V^^VW3[6P
M)[FOWR&?1ZU+L\L@?R^__/*I4Z<F)B82B<31HT=%^N.//W[TZ-%$(C$Q,7'N
MW+FFIJ9,<HM$(HV-7FCVH0```0!)1$%4C8L7+W[OO?<R65Z<RGB)1#15H?W]
M_43TSCOO$-'JU:N-F3S^^./=W=V\5=+9V?GWO_^=B)8O7QZ)1/[[W_^>/7NV
MK:U-+)Q()(BHJZOKU*E3/_O9ST9'1R.12&MK:R:U]12G&BTYR^>603YW+JBT
M[U;PJP`BXD<13^2]"9S?[^>)=//Q;/S,=^":-6N,W\!GGGF&W7QE8;FZP#L^
M4 at LEHF PR#^$0B%3#L:J^GR^*U>N,,;:V]M%8D-#@S$E$HF<.''"6,^^OCX;
M]J.KX,K"FG'\)9O\\ADGVB^U9LCKK[\>C49GS)CQHQ_]Z(,//N")RY8M&Q at 8
MZ.GIF3]__O+ER^U,]UL```$`241!5'FB<8B!Z3.?LW/?OGWWW7=?967EZM6K
MD\DD?]$97](TJ:?E:(477GCAR2>?M"QT\^;-O_[UK[_][6^+=(%7M;>W]]*E
M2T\__?17OO(5(OKA#W_H\_DBD8C?[__F-[])1,%@,!*)]/7U5596WG___6?.
MG'GSS3<K*RN7+%E275V=\]YS*5<^052$1ZVG'4^-AZ_D=_7JU04+%N#?E#.T
M'<PR'%O)&.,C(###O9SZ^_L?>NBA'3MV.%T1%W-?KR0`%(<KHP,K\-V'##/7
M-&VJ9T/!<0\^^"!C;.?.G4Y7Q,5*Y<HBP_N at Z$T`$%S9=B"B0CPBJ6E:MH_T
M87)M\# 7GRK.3;IY```!`$E$0533S^P at 9#X1`V:=!3!R:]N!B!ACO 619F(H
M\6#EM+G%8K'<IAC()$(!N)$7SGN\=4"&84LYS$F9SX1Q:#Z )[FC5S+-<6LY
ME1..58#\R1X=INTU,)ZWT<('L)&\36(Q?>.T at Q&SG3ER*NB5!#"2]YN=;4= 
M_D<IH at . D:3W+/B]AJQ6454USY&+;/*E.YG+^4X'@/PDC0[A<#C;Z&#+N.9L
MQV@;G^D&\!@9>R6=??T<'T,Q;7^'79T=`-*2M.T``(Z3L>V0,_[40Y[M#MYJ
MT#1MZ=*EEEF5\CORH*3(V-\NS[!%RVI at QA<H$9YJ.]@.W0I0RCS5[X#[BP`V
M\EITP-D>`O%M.0```())1$%4P"XR1H="S.P"`-F2-#J(EZ,!@%-DC Z4T[RR
M_*WJ!:D-0$F2-#IP&3[U8,LP!P`PD?V at 2C]@.?.GO $@6[)'!TXT(HP3O83#
M8<SI"% X[H at .@H@%:"\`%)K+H@,`%(W4O9(`X"!$!P"PAN@``-80'0# &J(#
=`%A#= ``:_\'WFT-&2K\*7,`````245.1*Y"8((`
`
end




More information about the Nitro-general mailing list