diff --git a/presentation/images/hadoop.graphml b/presentation/images/hadoop.graphml
new file mode 100644
index 0000000000000000000000000000000000000000..869dead02ad279a139518b04fa113fd24757a0ec
--- /dev/null
+++ b/presentation/images/hadoop.graphml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
+  <!--Created by yEd 3.20.1-->
+  <key attr.name="Description" attr.type="string" for="graph" id="d0"/>
+  <key for="port" id="d1" yfiles.type="portgraphics"/>
+  <key for="port" id="d2" yfiles.type="portgeometry"/>
+  <key for="port" id="d3" yfiles.type="portuserdata"/>
+  <key attr.name="url" attr.type="string" for="node" id="d4"/>
+  <key attr.name="description" attr.type="string" for="node" id="d5"/>
+  <key for="node" id="d6" yfiles.type="nodegraphics"/>
+  <key for="graphml" id="d7" yfiles.type="resources"/>
+  <key attr.name="url" attr.type="string" for="edge" id="d8"/>
+  <key attr.name="description" attr.type="string" for="edge" id="d9"/>
+  <key for="edge" id="d10" yfiles.type="edgegraphics"/>
+  <graph edgedefault="directed" id="G">
+    <data key="d0"/>
+    <node id="n0">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="69.0" width="439.0" x="478.0" y="448.0"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="24" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="31.9375" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="77.6875" x="180.65625" xml:space="preserve" y="18.53125">HDFS<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n1">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="69.0" width="439.0" x="478.0" y="379.0"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="24" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="31.9375" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="66.49609375" x="186.251953125" xml:space="preserve" y="18.53125">Yarn<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n2">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="69.0" width="439.0" x="478.0" y="310.0"/>
+          <y:Fill color="#333333" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="24" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="31.9375" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="160.78515625" x="139.107421875" xml:space="preserve" y="18.53125">MapReduce<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+  </graph>
+  <data key="d7">
+    <y:Resources/>
+  </data>
+</graphml>
diff --git a/presentation/images/hadoop.pdf b/presentation/images/hadoop.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..7bb5df73dc84605b27e117d4ed33c8c46adbed09
--- /dev/null
+++ b/presentation/images/hadoop.pdf
@@ -0,0 +1,171 @@
+%PDF-1.4
+%âãÏÓ
+1 0 obj
+   << 
+      /Title ()
+      /Author ()
+      /Subject ()
+      /Keywords ()
+      /Creator (yExport 1.5)
+      /Producer (org.freehep.graphicsio.pdf.YPDFGraphics2D 1.5)
+      /CreationDate (D:20201103215848-03'00')
+      /ModDate (D:20201103215848-03'00')
+      /Trapped /False
+   >>
+endobj
+2 0 obj
+   << 
+      /Type /Catalog
+      /Pages 3 0 R
+      /ViewerPreferences 4 0 R
+      /OpenAction [5 0 R /Fit]
+   >>
+endobj
+4 0 obj
+   << 
+      /FitWindow true
+      /CenterWindow false
+   >>
+endobj
+5 0 obj
+   << 
+      /Parent 3 0 R
+      /Type /Page
+      /Contents 6 0 R
+   >>
+endobj
+6 0 obj
+   << 
+      /Length 7 0 R
+      /Filter [/ASCII85Decode /FlateDecode]
+   >>
+stream
+Gb!SobAM1+Eh)GGoE3t/q_?;C^]cK41<;EdOR%H3jRN8cmAfI6>'oSN5iCZaLcphmj<C)4Ap:L/k=;h-
+hUBr7?h+j]FkV>XIses.pY0c0YI?F`j2.F>rKGR:k93%HIXCt$\,WgTro"q`s6I.DcgQA^hj5Mba8c)1
+a1qY@IsT:&qY^qSBbpaFGF[uaS(G'_Eq@GE\G989s.<!b^!=C";).\rAU!m$)l*5.Da'-ZnFsr$&*@AM
+^$T!@pbQm@O3d%iMGO90hYuR([_Y21oCF1*&H@g-:<u.@_*@i\pn%qH['lM)4E(!NE6mL=lMl`;J+0)e
+s'dKlh1"n?J&jQt\o%KD<aZjQ2;=]2*MYaJG]0oPC:;g8R#ef[IpR@ap&^iQOm3HroXEM#s,M;LXF0@6
+MO4"n\+sA#l0n>[igB2D\$>(jiA]dO\K])h!C"N/cnTIkL>"ZWf]>tgU%-d[:jnR&A4D#MhtAJn[Qee]
+#F^:Rc?19lUWrZKVajJMnYOX<(WWpjEiUPag8rQgI,t)uMb:&nlkTAA=eA`"*kU>'d!AgC[0JTrSUo*l
+p!FF));;j5h<GGcjpl17Km08^LpjQC41If<q,iK>%(*0-b?RE\6q]&s@UhVpVVcKsE3l`f1Y[TnF,hcp
+N\=JO827:75SnL1eTPV6<`rr9oQ';($gU8hX_)Rg=K.uO`'^5*Po`#MLe$EaJ2;IVn14-Npcgt<Zldqo
+RES=e[6l`o/G8Wpf_9J75BX0^:Yj5a`r;"Ye3s=<*#=8lYP;^L[1M;G0jo!/@s6dgRN?=fA*a"C)k-qV
+D7j!e\MVgp;mWtu%d`@06RR&m_gm-rL="Oqjjr-,=f>b6gS8q_"Q1i#&mB\m4<=a\$'Pf'pVDtOlbYpi
+Wa[b;+*TX&enB\W5@AnP7%!TbXf][.c#8OW@j6,+1DMH`pfMtZT_tat#Vdp%k=*%B6USSC7_h;1[&YkM
+`"525d'M!Q0alQESif)OZN!a[*U=^]DX;e+@BcAQ:*dQ#\QUM8+Ach6Ydi:!p<DA%SV^J^:X`p'RsCRR
+7(ra6n./jT)s7nnAa\>omjSNhN54!>084XOnmBmj3WCN>q@7N/X[BGCiNVn(`EDup<o;EkV*u0mFeOgJ
+k^.9LCe]O1C##*nOk^IaJkeum*V<5sc?Go7e`(@KNS#62PCAq,lg2ju$'1aG->%;i*pmb"=tA&((nU:k
+S@Lm#%ZBpC'g]XEIE@l6nH7f,K/@DQp6F%$lJto5C?dD'O*i?$^<=)kVm9JpMBZ\J/(sl_=g#n['3RZY
+RIAJljb!p*8Yu=c3W$jN@@d9eHo_3(-H9B2f(8WcMD4sb[f*oo*"4R$\YtmPJQZ*lbnO'^Y:]<<kj<D+
+?ej==Ig&Hf<3>#]q47u1neh6c55h,?U$T$4Kqr4hF+XuKkqN5A@J-$K+!M%Ie5./ZfliSenNcEW-Og3]
+3uX=bJJV'ga>$$n4bhn7R9_X%Nh)`M+rcD9*Ub..Kg'07_FV$LMR:UdJUG`qku*Y%@$Ac3,ZI,H)%RVm
+EsInacPN1kgsk1<SF*M4&,/9)/'^h7_FS^$KYuBDh?C?!8h`UWq^SrAQF'(_7E!f\PSQg<G3u>QOA#K!
+FS%h/Y+0QK#<OgO32<lqml(m%6(T>32MN\Ob+!cdO)1++0%t=b&@?K.X:&VBnT'`A[jl><?><^k%^nO5
+iI]"`4bO>X*#.g[,oX`+-\SR0MKFR5bd7f0g'f5[lg(pHNK>ZF8uFYf3R(^K'KBkR#\7/AO0f[j=G?I6
+lC7pRNU%)"0U5[3.qC</K-<H8>t>%S:P.P+-('B7iPh:JGdG;/>!&%o=W0^jc9^GUdNtY'`gN7OO679,
+KP*M=&t.Eu/!,g!`"3H6'@L8t9Yq9]U7T:,V1dg/*LZeQ_>l<%aVUnP5h6aKQ`JYQe?%ft1C]o2JoT/(
+DFZ?_Cea>9o0OJSVS;;<&nf@O$a1Co5iM21?SN>M*5b\f0++os^0mn^C7I3ZFq7rDmg9\LUAFOG!]M]:
+4%Sf9]leYe`A3ON?rl>p(kOiDelIT?hh(LqGhG;f6uZF6A8h#'jS1E<_#e9H)bpZ2(H.#e:uE[W<@HER
+YOFe_F4K69L+_rR25)E&(XN:aF`q"X0ker>$3dT)m[]2h:;1o)E1LtqJWa2`V)TDUO@7tUVc<cCI24#F
+a?H1]i%.YSi-'u<hOtGE^,F#e2u@:d!$BPXrias4H`0/-'msf-SN=`$')B!hK%'7scLoe;HjQ.">HHao
+Cg=*%3>A`ml7sT6G$]sL+XoOF;fnG<qpD#`3/\L4dgl`0+8u0cl=e13e-UVR'7$c*meQ`E7r\GigO<4C
+(1t9a]*hBG>M,LiYpH0f95/5PpMaNk9Wn)TE/)-d?<kFu!=/RXX]lDjLsNJGA8/r)Ha.[:_]>H8lL4M,
+kOu[MYfC9U:Iko%%2Z+#;[GQ)F^T(!SISTc3tk1:)Rb"o4OdQ]G>YSN8:i]QYD`=a&j``?R[Zj"'qL:P
+1Sr0I+TtAo?d:pf[qG,"Zs#::6kHH5`1.IATHV]0#hDa>"9cOZaRA3q%i;<C4Gc(UZJ)kt<l]u2+5n/6
+/m*JJhId2HcKL,A&?MF&%3Pu.cJ('-"=k>*QW1V*DkoX+DaJN9efcXRV.4#3#]iVBRcChG%)H[,M*2,F
+7lJ!_CZ%e#C<5B[pu!39g0d,j=RF^Mn6Bq`Khm4A=F3qQ^Zci;Rg[dT9<\W''We%82Pr_,n0X<+`VrYB
+#Zg:p-R'5J!fl?(]3VNH3XH(D'oOV2'!/O5Y)si/D4*R#"KS6/BV,ECi8fL?^4lNN2%cK51c3N^6kZSM
+&h8#SpK7cbe9M^j2t(ao1'DS4peU'5:q/eu?<_1)mI#3O;t@7:,70@WYn^7ks)m9<mi*.6rXE@3I"1\c
+YIJ/?A`,.pN(.'HLLQhqCqd#^I`o)\`hM'bhN`Z-]WZUb\9K_`=j)b)?.M.sN`f5hK+3OtHa`DXeGcAk
+7:TKh+KtedbYlmbE\iUJ\39`WqlDj6@?I0N\+cCl?VRnBV1-FTLD']Y-'&S^+C`B=J)2jGi.@o)rt^)M
+.gL,Hq>0GG\`eG24PFI93R%WkffN4P%glnM:VPT%QODL2N6A5UY94G;A]cSkXNBp>Y7UPJ,a$PJ/JVX<
+"KJYF%F;+Y#?uK9p#6YKm%e-n-GIu%A)+tScg!('U1!K90,_7br)T&f_u@VjlRma.Bm%FX<>Q_^k^+mf
+cP154:gRjOS<efQ]?\5aXf\+<iStj9qa/M1(K]N1<F2N=?D.mq`iqYcc\#Gd%A).K(I%<(@e\Kj-f7W.
+oaMupKJN7,9;+V"0X'o8BW>ar@JfQl@[D;AN2[:uMVMomRg0fu\Tnd>Qm\N&TR#P0+ch:J`=kH7!TOW.
+D<:]8F,uK=nre%<g@BZH"86l`g+&+^U:u'2/QDskA@&^<K_W#tW2^SN[.V`!g<VnH8](F33;FHIoX$fX
+;hVI=*Rfoq6[Mkq&S]8q@Ya7Xo^T6%H844GJUo<8f7j1RH7%4VT!3"GMW.&3m>CY'P`^?l!."N@&]%7*
+hYtM)<B!jAC3Ii\'2)u9[<'<X`tu^Kk#tZ2VmtUQUT#1O:sCO=e5#n.,m,+88VN/#kZqa!$oCp/EMPNP
+Z\#eiq2U[653J%Kp=F`3IB8]r??(Jd>0;fOoig,gfk^3RiEhQlgRWWkHf$Fid4K=TVXr!+@5r/U.EML[
+SNY;6Dq7c(YW%UnY@;@F>ciW+.)&q+Vg88'S/.BQgd@P(r9cd#NS2CU'3.T6YRq#f'LPa78UQ5glItY0
+c!t^ec"i$%isK[-&,oQ"e]Q;F<T54FdXaN1oM`^/]HO-tm93YaK1G+/pZ'5AQ%k/k%AW[L_6k_pnuZYV
+a)S\cs#6Himm(<U8\t#C1<EaX?D\A\?$A/b&kA-uU!SP2bg@U_Q/&dgb_(jC.i77rAub9H1sSK(Z%N/[
+.Oilp61K+>R*+]A8_"R9L*hg]Q.s/"pH#eXpgiO+o!E;rP-*`'GR+`r/4j7SK2S>fqk\?#QL\K1qVp,g
+@#hW^Mm,l3/hI.;>/]PZ2RUUlkH>44qtmLF8M+u&X\m12=fFj,,,pX-2m`jXBt)YBh5`38mY5B0m.US+
+C8eUO;4t7ZNjY>N;Cd`HK85go/@e3pi"Nk9]I)I%pk8TgE82OID,9n_^b)UAF2Nh(L8s,;*D+:*"!66Z
+i=DXs\KUog6"!aX3/dA"d$IJ;NN3'I;P@A@%BhV0#-*PgV`&,ac+IKu-_FQJ:uj-ubM%)siSQ=_'0n!:
+Fp%;OVHa?de?7AZE\GJP?ZN5E%Gl<.FlD]3\ml!?.dgsm0qn&bh@BeNDtq7%n,Ehe%'+cJn_4H<]IG!g
+pW<`lGZ?qZ%?FE,j)oi<h^ZtCeoF76qE(%c3E;Ba?bptEVS!u]AAETd7s\iUi]TR]I9j@/6/Si^9fW<$
+Y)gqsG,0\`7R8QbDI2OJ]gnqd*:*#]`M8qTV7*G4`'"-N8YW%dB,O..U9e[mC("NGXeQ5C:n6X_PKuJ`
+-!fSj)r;L>l>J`=U<X;hp'PMNH![VDZZQ27%<ui1Q"'$YKYTgg_plgDc\(-:J,/)+VMO]f@Y5p&S_Nu6
+^@LpQAT>]G_;\Z7ZlaYN4K.l51Kp8cJ=ZGAg%[TrAO^!&'KpZkC",'(YZrUO%c$grk?g-]Y/[u2725CE
+XB!SVDNX*B\+aFLX6RUR:@4n4@.8]:(jliY[?GubhppVVrL4im4_BE!%ij;P1rYN.l"Hd`%Fom65,o@p
+VY.V8i671['.u.,q#5;JrP?H@l]`</XZpmVGI>o+`$n.sQrU^m>(=!MEG9jA8*`r"7b@JRW?/0+F!,br
+9WG'al]3XJ-(dJ7@,*kZp_iSPb*o*4rZ"A`k$!6Eh+"76k=ALMeG9E(7g8$1n7C*n.`^rBde]?]X,L80
+1QK$Oqn(]IC9UXDg<-+CrQA?>YsSa#VpbG#+k$3_rZdKp4)ns4$Ua64ds\SeC+n\GoaR7-[/O1$hoY-4
+/NpK?Qr0hkl\LqMEP!uEB`6oC<a+BW:.OW2(3^R/r?qJ,J*LP"YQ*M[hjIj=hnK0n4Y;6~>
+endstream
+endobj
+7 0 obj
+   5093
+endobj
+3 0 obj
+   << 
+      /Parent null
+      /Type /Pages
+      /MediaBox [0.0000 0.0000 469.00 237.00]
+      /Resources 8 0 R
+      /Kids [5 0 R]
+      /Count 1
+   >>
+endobj
+9 0 obj
+   [/PDF /Text /ImageC]
+endobj
+10 0 obj
+   << 
+      /S /Transparency
+      /CS /DeviceRGB
+      /I true
+      /K false
+   >>
+endobj
+11 0 obj
+   << 
+      /Alpha1
+      << 
+         /ca 1.0000
+         /CA 1.0000
+         /BM /Normal
+         /AIS false
+      >>
+   >>
+endobj
+8 0 obj
+   << 
+      /ProcSet 9 0 R
+      /ExtGState 11 0 R
+   >>
+endobj
+xref
+0 12
+0000000000 65535 f 
+0000000015 00000 n 
+0000000315 00000 n 
+0000005835 00000 n 
+0000000445 00000 n 
+0000000521 00000 n 
+0000000609 00000 n 
+0000005812 00000 n 
+0000006289 00000 n 
+0000006005 00000 n 
+0000006044 00000 n 
+0000006146 00000 n 
+trailer
+<< 
+   /Size 12
+   /Root 2 0 R
+   /Info 1 0 R
+>>
+startxref
+6362
+%%EOF
diff --git a/presentation/images/lion-logo.jpg b/presentation/images/lion-logo.jpg
deleted file mode 100644
index 77ac5dfc8dc410aa25f7f15f0c24903043284c49..0000000000000000000000000000000000000000
Binary files a/presentation/images/lion-logo.jpg and /dev/null differ
diff --git a/presentation/images/map-reduce.graphml b/presentation/images/map-reduce.graphml
new file mode 100644
index 0000000000000000000000000000000000000000..7f7e07619d95bc12390507f212e2b7977923e05e
--- /dev/null
+++ b/presentation/images/map-reduce.graphml
@@ -0,0 +1,549 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
+  <!--Created by yEd 3.20.1-->
+  <key attr.name="Description" attr.type="string" for="graph" id="d0"/>
+  <key for="port" id="d1" yfiles.type="portgraphics"/>
+  <key for="port" id="d2" yfiles.type="portgeometry"/>
+  <key for="port" id="d3" yfiles.type="portuserdata"/>
+  <key attr.name="url" attr.type="string" for="node" id="d4"/>
+  <key attr.name="description" attr.type="string" for="node" id="d5"/>
+  <key for="node" id="d6" yfiles.type="nodegraphics"/>
+  <key for="graphml" id="d7" yfiles.type="resources"/>
+  <key attr.name="url" attr.type="string" for="edge" id="d8"/>
+  <key attr.name="description" attr.type="string" for="edge" id="d9"/>
+  <key for="edge" id="d10" yfiles.type="edgegraphics"/>
+  <graph edgedefault="directed" id="G">
+    <data key="d0" xml:space="preserve"/>
+    <node id="n0">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="123.78399999999999" width="32.983999999999924" x="425.17599999999993" y="312.9839999999999"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="40.84375" x="7.507624999999962" xml:space="preserve" y="41.470124999999996">HDFS<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n1">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="123.78399999999999" width="32.983999999999924" x="472.3679999999998" y="312.9839999999999"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="88.57421875" x="7.507624999999962" xml:space="preserve" y="17.604890624999996">InputFormat<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n2">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="53.97599999999966" x="519.5599999999997" y="312.9839999999999"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="48.71484375" x="2.630578124999829" xml:space="preserve" y="2.397350000000017">InputSplit<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n3">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="53.97599999999966" x="519.5599999999997" y="365.8223999999999"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="48.71484375" x="2.630578124999829" xml:space="preserve" y="2.397350000000017">InputSplit<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n4">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="53.97599999999966" x="519.5599999999997" y="418.6607999999999"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="48.71484375" x="2.630578124999829" xml:space="preserve" y="2.397350000000017">InputSplit<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n5">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="67.79999999999973" x="587.7439999999993" y="312.9839999999999"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="67.578125" x="0.11093749999986358" xml:space="preserve" y="2.397350000000017">RecordReader<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n6">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="67.79999999999973" x="587.7439999999993" y="365.8223999999999"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="67.578125" x="0.11093749999986358" xml:space="preserve" y="2.397350000000017">RecordReader<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n7">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="67.79999999999973" x="587.7439999999993" y="418.6607999999999"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="67.578125" x="0.11093749999986358" xml:space="preserve" y="2.397350000000017">RecordReader<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n8">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="53.97599999999966" x="669.751999999999" y="312.9839999999999"/>
+          <y:Fill color="#333333" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="38.18359375" x="7.896203124999829" xml:space="preserve" y="2.397350000000017">Mapper<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n9">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="53.97599999999966" x="669.751999999999" y="365.8223999999999"/>
+          <y:Fill color="#333333" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="38.18359375" x="7.896203124999829" xml:space="preserve" y="2.397350000000017">Mapper<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n10">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="53.97599999999966" x="669.751999999999" y="418.6607999999999"/>
+          <y:Fill color="#333333" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="38.18359375" x="7.896203124999829" xml:space="preserve" y="2.397350000000017">Mapper<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n11">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="53.97599999999966" x="737.9359999999987" y="312.9839999999999"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="47.23828125" x="3.368859374999829" xml:space="preserve" y="2.397350000000017">Combiner<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n12">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="53.97599999999966" x="737.9359999999987" y="365.8223999999999"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="47.23828125" x="3.368859374999829" xml:space="preserve" y="2.397350000000017">Combiner<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n13">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="53.97599999999966" x="737.9359999999987" y="418.6607999999999"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="47.23828125" x="3.368859374999829" xml:space="preserve" y="2.397350000000017">Combiner<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n14">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="53.97599999999966" x="806.1199999999983" y="312.9839999999999"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="52.90234375" x="0.536828124999829" xml:space="preserve" y="2.397350000000017">Partitioner<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n15">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="53.97599999999966" x="806.1199999999983" y="365.8223999999999"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="52.90234375" x="0.536828124999829" xml:space="preserve" y="2.397350000000017">Partitioner<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n16">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="53.97599999999966" x="806.1199999999983" y="418.6607999999999"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="52.90234375" x="0.536828124999829" xml:space="preserve" y="2.397350000000017">Partitioner<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n17">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="123.78399999999999" width="32.983999999999924" x="874.3039999999979" y="312.9839999999999"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="98.453125" x="7.507624999999962" xml:space="preserve" y="12.665437499999996">Shuffling/Sort<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n18">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="53.97599999999966" x="921.4959999999978" y="338.4559999999998"/>
+          <y:Fill color="#333333" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="41.12109375" x="6.427453124999829" xml:space="preserve" y="2.397350000000017">Reducer<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n19">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="18.107200000000034" width="53.97599999999966" x="921.4959999999978" y="391.04799999999955"/>
+          <y:Fill color="#333333" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="8" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="13.3125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="41.12109375" x="6.427453124999829" xml:space="preserve" y="2.397350000000017">Reducer<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n20">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="123.78399999999999" width="32.983999999999924" x="989.6799999999974" y="311.9135999999997"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="100.046875" x="7.507624999999962" xml:space="preserve" y="11.868562499999996">OutputFormat<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n21">
+      <data key="d5"/>
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="123.78399999999999" width="32.983999999999924" x="1036.8719999999973" y="312.9839999999999"/>
+          <y:Fill color="#999999" transparent="false"/>
+          <y:BorderStyle color="#FFFFFF" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#FFFFFF" verticalTextPosition="bottom" visible="true" width="40.84375" x="7.507624999999962" xml:space="preserve" y="41.470124999999996">HDFS<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <edge id="e0" source="n0" target="n1">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e1" source="n1" target="n2">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="2.139000000000806" sy="-52.83839999999998" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e2" source="n1" target="n3">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e3" source="n1" target="n4">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="6.644600000000878" sy="52.83839999999998" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e4" source="n4" target="n7">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e5" source="n3" target="n6">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e6" source="n2" target="n5">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e7" source="n5" target="n8">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e8" source="n6" target="n9">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e9" source="n7" target="n10">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e10" source="n8" target="n11">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e11" source="n9" target="n12">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e12" source="n10" target="n13">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e13" source="n11" target="n14">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e14" source="n12" target="n15">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e15" source="n13" target="n16">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e16" source="n14" target="n17">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="7.6623280000017076" ty="-52.83839999999998"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e17" source="n15" target="n17">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e18" source="n16" target="n17">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="5.102328000001648" ty="52.83839999999998"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e19" source="n17" target="n18">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="-0.5296719999979587" sy="-27.366400000000112" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e20" source="n17" target="n19">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="4.590328000001932" sy="25.225599999999645" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e21" source="n19" target="n20">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="1.854328000002397" ty="26.29599999999988"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e22" source="n18" target="n20">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="1.854328000002397" ty="-26.29599999999988"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e23" source="n20" target="n21">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+  </graph>
+  <data key="d7">
+    <y:Resources/>
+  </data>
+</graphml>
diff --git a/presentation/images/map-reduce.pdf b/presentation/images/map-reduce.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..ec0af02fb29664ceb5ca615238bbeebf6ac7cf1d
--- /dev/null
+++ b/presentation/images/map-reduce.pdf
@@ -0,0 +1,724 @@
+%PDF-1.4
+%âãÏÓ
+1 0 obj
+   << 
+      /Title ()
+      /Author ()
+      /Subject ()
+      /Keywords ()
+      /Creator (yExport 1.5)
+      /Producer (org.freehep.graphicsio.pdf.YPDFGraphics2D 1.5)
+      /CreationDate (D:20201103215447-03'00')
+      /ModDate (D:20201103215447-03'00')
+      /Trapped /False
+   >>
+endobj
+2 0 obj
+   << 
+      /Type /Catalog
+      /Pages 3 0 R
+      /ViewerPreferences 4 0 R
+      /OpenAction [5 0 R /Fit]
+   >>
+endobj
+4 0 obj
+   << 
+      /FitWindow true
+      /CenterWindow false
+   >>
+endobj
+5 0 obj
+   << 
+      /Parent 3 0 R
+      /Type /Page
+      /Contents 6 0 R
+   >>
+endobj
+6 0 obj
+   << 
+      /Length 7 0 R
+      /Filter [/ASCII85Decode /FlateDecode]
+   >>
+stream
+Gb!!kc)tZhXs>p/Vq<YAdnB_hcm&Vs4D9*"Z&sS6%^M%2qu$PRN!N&AgPLR3^/aQ!PH<EbV^52i</@?u
+O(\Leot:;"\+G9Op&.*^5QCZA^]*cKpu``IZl]PQ'';u=rUDN"f,t%la8c.Zs0^&G+9';fs5i/<O7`+;
+s.>>rq9T*>T7?n8s7Lm<,Q7'!^]!2qnULE(poR?FI(&uP2P7:-D#Pmjs#3sV+(bG\Rd:Pls-B"k_'RM$
+b*t_l^]"%q-jsNfqod=@m1K=D>[%DEr_FO0s8A#Yo=nK7s(.VUNVF%+s$ufWmsfM5J,=GRIr7L!r$j/q
+=ED[#[eV.jiEsI0oH.Q[7fH1'q+^k7fDiKf:ttuds7.6M)h3.hrjP+te]e9/lh4]cpc&6*oj=/!S/"gD
+s*_%RnrLN.?gUA"N5$<<I\^W,YPP$<3Hje6VKVG^iULERDRGtGXO4c@aM2N(b5@"Cr_?TDs!M,;C2*'_
+mh83?f(Tiup\t,Pe:,mpJ*g+BP4]'"g.a3UC=Iaoe1Nk,;3AT?/=r<&NTQ:bpXbuYUX$'8Ir%62j1MhU
+f8li3?.YZ@TP7ONb6tu+o)eI*nK[4Z<N_=3<@mUa<SPM>VoS(aC:&Na-2RGb5&]s,6Hc8;GE/!0eHc&n
+Cl^8S=F\h79q+AK](JS^CSB=YfPbCAe_4P`[K65hYPe=&:2`@Cg#`/0@q3]hCJo?;2k$L[<*,YuGn8&+
+m<u(GSTbH`2gjt\eRYXjUb/Y>jEqLb8%cl-WoK#Po]ZqKDUe5D*UKi=^Rk:LYt!<2/*aaoS8=\&Al#e>
+b@O=*l?egn%NFeiZU_<^ZY-bl,e/cqW2"`sIS0So-K"c14d>\J;E6n)pU=3b3JaG+pQA@!q1`D1jnWDG
+ml4ngo7,bu+m\`VY8Wb4s*n`fr$gEN1_\T7GQ#S96ZnIBVj4HFC:3o9\slRN?HISJenXb)-Ek#$bpn&S
+D=jpBd2[MaPl6<hKm)=aAQL+ar#![JgoB1-h+M;&KT1%-SBDrT`Kl*aj0.3X-c?llCu]Lo_pGRMYXr.1
+Q"Fa,Wn^WkNDiETq8aR>>CB/M?ZNmIf&Yerg]j@n-1@[>m^Wk=XM(S!g"uE^2];%/*TMNWCYeFU\pIk\
+e]1-(g%GHRa*DM.Goc@9]u@]_a(S1oY&.]dZ]Y1<f\KoBqV0X[\a9.GII(.VMpH_nDsJl#FoO7F>i]1q
+]lD9p7j$%,nn.p.Q+NBHP(&?;q2Eu7n4#T!Z?PKW9DhlsQs?$5VJic'F"P,KY%D?hbhC&tjlpQ">JnJ]
+ONl6[s,=UFI(YDjG?\"Jpgl?_T;n14ql4kAm<r.&=H8u#d&q:*a@fd=bAc*WnG%P*na(,!Ja@Z+s6cJr
+.'5_bZ<j*dBeF>meNW_$`7S7ZGE6:`"Kh(5dYm;6hIR(qAjN2hF_c\)XmLJc>`U<B5G%9fd8jbO4l0Ab
+a:%q@W(fJH>TUl2H>Lo4"a.so`u<u$%nk0U7G2q3?-)+j;daBdZ?7_mkq\ch1lm#KZZ9n'0=HVh=*t6t
+Y:i+G,C=,fs62bB+TFr2c*=a5ER_Pm=RR=(N;0>iaT%+s*`_ebYM3EcC5tIB\+409C]FF7CAt]@HI\8]
+gW6)`!2#6q&+n_mj6UR>_2lpR^^HX%Tk`lK?=SDcZ<_*]ZjDW<eggCY1i6B:mEt(jg^ETA?eVY=Z2K"*
+O_c5.#A[^Oc)7hKb?I0\eAd`$"5LC3S)b)Q8peZ#[\Q#d;>Z.4VtF8pj[uq\fkFqJ?]C@g2@U"\lTU't
+,^c\MULl)>JX.kuQIg,tD4#4j^>Y)(nX&fr@T3!/(_"aDD1bP`?!Bb(W=EuC7o1C8Nnu,3++*V\']j((
+1HG.[[.EE%[b<0Qmn;,Eebq#;'tOut/ZpMi3k5HUOYZZc<m'$@*8+f.e\RJt920apq_PJ@^'cF`PKPm)
+&n(]7*"juKo3!6!4c8e9M<s>R4I8J0B&PLq7(+dB;Ob.QRp@V@7(.E3SrcK$H!.7mDf!sLDn<).qY]#l
+pXZZuUq'*8]6_s$+BhTWIf;XG4(i^iaaRrnmcl:Re`r)SfN3K`EJ<4`6j859%J>@U+_FAArRgBJjZjR9
+%ppY0Wp#\?%=tWX]_fm!E"Bh+B9(6Q5Q*Rm+(6ZMFWE`KX>-mR3_cHX\S^(>b?eCafhr5HalpnYoIBde
+#'#]EWTKiWaU]oX%X+e5%I1&>Z+`UYRFSmQaUJp!IVHimZ;.qJ=r+kf8#!]0ZUR?\-\ZsNk:`_^U.sa(
+*;EN*#rRkK?h-(2k6eWG-FD#8ig9gnccl5+&(K[WD>$,m\kfHM_rXA@OT5%;+2l>:hte(dp='W$0br?,
+7iU.VMUf#+gu4.HJ0]!_%4Hp:mV"f0mBj+F7.4^K>n7_?]u&iY[!95ZXO5^]n5*:o-/[>mKB.@U7^`&h
+@Ck>c?GAnYF!'P9hBR0S`c'sVV0ett0p@mSNaXh!pWBb%OUlc2VC"]"o]I=7+b*G<oD43fToc+!@a$Pk
+FH0T_"#huhNjI3g^a"Z]?#/IoRb<i.f7Y_W*)<acCn.*4fp$?<1`^i^ZZ.U`GH:b_lX33sNPO?p,CdDI
+UQ&)3&3)]3a6#U?Ns'VXTCiXh.+,eortCmogUQ_gAG<u4`;u`U5;[J@&"AhD?kaS\9RYeggk#9<8&;;e
+iu$79@+b.N3=Gio*1G8-4't-^LS>OJG%>p'*qt6Glm4qZOP$MWIZCf<+MYQeTSK<KnS/%&Om>8NI,p(\
+T=BceGk[!B%XU=aIWWN^Ib4riF?\\,7d?QNV16BKN7<8\WS_\,,L$1EO!ISp:OME"%9hA6?FXd`&+DF_
+De+dQQB84_'pR1sDI'/^8CKm`)ImGl%`ELZf]Mnu]_5!&nb4,.Y,dR@KD8I472%UpA1Hk>AUTDa>5`f;
+O_P5Pr,SQ;q^JulYL`BsNVYiqYsq,Yhn\(erfSjE\KM3,Pu;(N.)EB?IiaGFa8+25?$oq!gbQ:\@B<n\
+Y*TC$du6WahQ`jP7apPp0_UdqZiJ`^]>_ft\n_8D>WYM>SekbA<GHH0X:\Mf8\CSMi@2alc?jbh7V'98
+__q9=\(VlZp!o&UH;l,`1I?WF)ZGmOA[rrhI[*f?N?l?,HqiUKlN&W9@UJu\n<8j9br2epl#<du)f`8_
+pV'?]fJhQMEPC*fe4/-SKC@R>p?tLbkM?#^T96_bD3d,-mu4qQR"!1`]a[1bfR1'rALjKh21+;3KP\\Y
+R+JTTESF".;SV0mVjRJt&"G0jG9<#Dk3mU[O0(^kBT?\&o'p?CNji^bd,)7IXi7i+UpmF'4-DKak*7ur
+C\kSqPe2%DNL-7k**\I<8(QGNHE`24rV=ij[VGIu'$;F;e*_""m-GL1.qXj2V`:)TMsW?Ia%m:rlKm(,
+IbM-79K0)HW6X4F+Is8WA'>!m1jsjr3=`Z2C$1.-9NatKTa_t39.)Qj32$pS%sB2M^>l&45B-)'Nt1a+
+&8L%oUkAV*.9);>%TKb"Tu7Uccqq`MHU8Lsakrn798cH(^AQ]ABD4",=g!s:2]]P;W@@_Gn_+MGfb5(Z
+:[:*n_(LeM-iH@`)gPkjgW>b^-h3>JhLSo.L6(,?D3il2cCQE/CS6+#a2MbbOfp(b=7)L)Juss5I^RLD
+P%\dk/$5.rp6@cKlIEVc3hUnu6eIEiD$(27k(<B8k@6aFdMFmLRK!r@3Siuk(fnm80;e.9ecmdckB(L7
+TA0=7DXB*^VOHSgF6:H]A&_42SZ=JWPgT6eRW%m_S(l+uF#VC[<cVPoht,LOlEP!RE`rXj`Q#H2iN`("
+$jt"_fVZ=6D)SPLB;<LF$eV_h(N:Peb+=s0lj7RE`(?r]&^G&%m$/+Qc3,.t96&SI_6r(PC\:/.-D@&4
+hgmSiVs`-53$XKX]QOgmo@f(lF]l?(R'%+u<ruBd)]5K>\"%8/2"G\?=JG4THrr%fn;4KD.il+>2<i]*
+2JMn>cU7SFZda%;g=WSJE?6llZoISlBsi,TLIUs-:T7RmI'As64Uh&.R=5HpZfB'Uk')"2I2)>PQFe`U
+JWaB2#X<Z602$0/hhosuHAr[mM7jC93^]3fO.2SSSb'2fYjjc-6INfe%ecs5$i=8L52>J:bp)lNeCC6a
+d=q[6S;dum7/%A^7]C#D+(]Z]?CfZs`S@]JaB)SNO'$aV7<Nc^UXY'@(6b``1Bi(>1$@RMqec&mc#2-V
+_bQjglT8]X)Soa+S[u!:e\5htI+UL&mHg*B/ig:i@9gk+/"nD_]lNoWdp@ln\ngY\pDV)\-Ht:0^[gQu
+QT/$ZC"KlT)iet[o7,aZpBos9CM7:MHY<#WinV.cKt2o.HT16"^3?kqTC-Yr_7=dA,GfP.]u"2?@[C$F
+3HuJ*)sK/2T>A'^UXmFFpMQL"dCFHGI<d@=69=iRTD!1,I+<01a:J)2EL_+-rUK2\kOPYkX4ON_-<h5M
+FhpI^[u7CK1]Jj%4"e;IqRV)[I_@5bnm4';icOa,g%97B?\,Q>LH7p(:TXKkf]q)O43-22ljsn6^F6O1
+r>*#a7:<_ZJ)`]E*>OfFJF&_Qn"P98-q8/:T$:3Y0YiM@$A?'?0Q0JH*rLa2IVFQK6]\"rRC<eR[/dI$
+B%I5t7q>hj+uQS!b2\<>Nl&H*T`327.ClR`?`5pGIE=4)[iC*G<W2Ear1DV8'8S0ep[>ee_bna?f&Oh'
+'tfMSRk;(LD*o1]I=s/TW@94F(-pAY3as*7qJ1:"qBQqQO]B<M^>@nk#n\sR5`:h5X9tG[i?Q;M>(2)M
+!Tj@"P),N+P`U],qU^gb)+0?e+q5cX'!WJG[+TQ7>9Y)/L8fOgmjP.r)CT6,U_t\3`n&]W:r?9DZF-6K
+*>]ZTn]QNhcZ3k9pUpE=[EaXJq;dP33^S7eGuE<n;pUIDl49%JPZ!d2>_9E[ID,Lc4kQhID]RD`k%b^9
+Q\F,N1mR;BpO(f/B#`V4VsJ5Pm6[$GZ0@rhnOp3<3ouYL:$)4QMiGiWOWB"eU:uX1R<59Kl_O;e[paWK
+gX--$l:1BpLa_O-329`]<:_RujM7rs8utl\nAlCYhm4B38<6E6=EC/3nGXG_Z%?r#M0bll6@SG935>#r
+DuW+@@<u@Wb7('Tp)`?%^#r"u@n=9e'iMLUFe_edWE8KfG.@7qM8$D=T_]pDIp(VB1WJ^Ae@.>cN$4f[
+aP4_*3hK>g;Rt%RopRTC0J@3r`-jka:g;0@mZ6qd+2h@EQ2`p@KD8"m"*`#0N7ho^W7Th,7X2tt2JKOc
+op'm%eqB$(?lMNJjVgG!Okg,m2mJ)hXU1tT>pI]tSpNTr#d%]2]/>E;_sNhFNs(2<cSnV9bl<OokZMh/
+D=e\BJFSaBoga0%l$5@:h:bjjG,sX"_>`jYKmn>23!S"K`6gBQXRsM.(N-Wh9NN1WL8\ZLJfA?eQ&DR*
+bOn>M1%-pep=ECg?9%#tZrappjT"P@5?st!HfugS`Cp\nZ1n3;bWUDnfS2/)9'cGak6;JGlB\5YD#MgZ
+_70.A16dr`jY_DWPI`9g?Y2e3>)",@%<M!p_opC/h59f`@?!6k0-1$bP[lS^RFMf@j2/IaPPA.\`O8OL
+8#pKAC`Bdo/@d%mhI`#)1<,d92E7-mCV9VS+E*"a$<Ed8K/HL$iAB#;m2Du"U?T"dHF\ZL&Tu6p^Y+[Z
+KZBM@m6TWCN]67=Od`iOfXeICD::tFE@+j^$mgl*DJ3KRY!4C*kgUNA1#eS4@#\@Rf4'BR^On@J.p27Z
+"eUl@k8\4rM\+sAg.>#cfeJg4p!CQ]<0AZ4CUU%,?Cr/sV0:fF6&+TmM/n"cBDWpo!&Y@a(9[A0rIRKH
+*R_sYpu9C"Eq-gNqS1j(U>uRC_5n]@l,5&bkEV#f;H#aBTaVGi/_b_7Hrfq&jdML+(,Q65DFeQp*LIf%
+:NtYrN-?DeH_+3?MOt$4$k6njV?OV[PW$a%CYNWQnNER'84o>bYVc5X+luM$2,3m2Yr)F1Fe5kG\Fj(T
+DuHg&[si,hD;:TZ7U0/kkr5p^3iNek$VfMraDO_efkof:2#S2f1Xl!N3W!CMbq1aZr=Z\tb*Aj-Y<p]>
+NB!h=hjErof(@KjkQ@!#Zis%#8kQ(;T(2)!oO-;I##/I$5u1K`csa%-lsQ?Qk%^[!1!55gHk7Sk%)#iZ
+K[-]?V&S^#d+;8BkjkaW2#T"oFJY""9/$Qp7UWdef(9ER;kp$Hh'I'cEKkfaqC4Gb0S4F4\`kEV,@?eI
+h0oj+@=,98'(=IeJU[h5I>%D\Z1;+U"hLMU+tKob9@9gRNY74kcSoJ8;rXcd(#(S5'$X[%>U=d8<um(b
+KqUXBT/rG6eo.e",N\sDdN/oWmEt?qNqV*qSH!u\oRT.;4-&,u*pp3CB["mGm<8<V*ect)!ustl%UB1j
+A%+Pg056Idj]d)ubnaGrNuQ?=4WXan;)m:eI%C7kT7c>)N^J/@ouCu!huA04?`S%X86+S8W_RUK\k(=H
+XSdPQiVV6Wm@PPL8)i,kn,a]KfC,amK(g3ZqO34$]6bG4i>]NSJbpCVDZ\SZOIeDV3=&uV0#H6.$Hkm5
+%SR!<^4(tVKWh*4,()lqM;.OC;M4K3>K;Zk[6(T.KWh'hKJ1[qI$mUDQfXD"[5s8)n?q#X'bmhT%="Qr
+,5ENT'"m,+3AOkCmr.\f(ZDuGDaF0p9kk6R_mcj;pf^f\#iCWcnqi#Qclme%$:W]Ab!GgV2p4Yb>+Os1
+20,5R]Z8Dopl9oE"G+fMjW\ra@7``[^LKffF<r5".[(Jgd<Qu=)H7=M7B/7u5Wo_\]rG%.Y?''W@b,F$
+T8W1Z=KG*YgA%$?2%_@WY'\,@42sJ-2+rOZn?q$I)MG<M]s^jH7u-S6.U+r!fME'$#C@&s@n93E6*o&8
+HM?#cptF!a]EhkP;6SRE'u]I,YFo`,(AX3N5bJ=UA-1L_7)/)sG=B&cj*VHQ-FXV@YMH`2!Yso1^.JS%
+WaC@F4lq:(eQ5'$W^_Q>7L69_i,i/FE^L?7.]('%K`mHaDo1*W@-U2U`Z-,kqAVQF)m;W`g:-C-qK%e/
+2Iir'Xta1[j?%8n0l)HGeZo>:lZN@HiG1>7,m`Deg:IXJO?*\TZSHcWn23%Tn3qgI_Un8__O'kLKJ1[q
+Hr$c)HR^tRgsRjmQh-B)m-suK6<3+9]0FG.Ih6C\=8q[@6`c+5jU<EnbLoJ(2s)_!?d<I#^7=jAHt,kn
+iN"g:KWiqc$,Y;q=ItH?h<h\h]gc8Ib&`WaS+%HO-Ku\$Ns(2<cSr#Dbl<O3Fi"NU%5nOMd30)5^8Td0
+I"udN,('j-+FJ_Mi<t#=hpXA(HuJq)@1g6)(F9@EO<=j:ldZR]n*nJ*.$]_[4mfGX5.kjUYA(1dA!d5!
+O8cWqhr32PL[`:>G6m)WlP^DM!uDq&I#%a_&AB+<nUlLuTdL+QTL8K('nica(5/lV.rq#(pX=`R*<jLK
+5ZL2kE>q4=g9/2BjrAh`4,!&NqJ)c8<It3,ZnB5I<o7p0^=4&mpl:6l3s]2pnV?VA[;uPkldgeL_W?uc
+GE`A?Rr'AU?^q)],()CL8TSnfPOOPl:;Zb$B'KX^#[`PI6hk+B&VW=E`%-Gk7WZ*G?X(js7JPS_5(`8E
+IaAYb4+*J<_O!'AKWh'jKJ1[qI$G&U=21OPg:<,6&fl'udS.+jjren/#WI]nUqM)M+FJ#Je+dh%gJSTs
+UOht@iB%s#8.rWrfc7l\G0D<>?Q0SQ&AGU)8u<9&TO4UKd^>2sDZgpbB@jF\pho./?p#07BFH)4m6'!Q
+n27iLFN1qf6hi,GK^VIA7\S$o:m:CVE_?tX[\>lkn+GchHpc@!Q=`pEpD_\PVYo=+1k!f;eFZ<8;U[!*
+(n*X&:hoj&8?'dr5RgG[oVteT]i*<,0cQQFBj5?KUi`U#[r_6V3Lhg-;[pU1\qnLoVQ[0idoVMgVchoE
+n`/3mePbT5P(U+F8SL^fM5U(;p$T#Qn-r*!V*RmW=jUSKb_CjFg6VT=b(ae]&1&"B0-0g\khIXh\tQhF
+I9e^^0!G+DdjMi/e.HIf$"EUm4)RcbPcea8W+ptsM[hq>^<-mFN*mZ,&ACYd8%pq@4'YWGKJ2g<Hp\uQ
+r_Lc9LRuI93qR74.cDeL8G@LAk.aNI3``L[m8[WXksP82nPr'jN1iBA7ianbI`'ToPlDCiHT]rf7hWPc
+*_H-]p.3&e3t;R(C6'Wf6[L)p)qq'+a:<ml_'"-)4d,<2p.3%ZZptbCe/h3';L:M3g7rVo*sD$k>Rm@s
+2d"eoX$?U6#iD)pOo1<@`'LCma;F%=`6/*=&AEX&h>R_t\(Y+R5D1\0&AGP7]Lui8:TXI[pf?Dsdij+b
+00nIp%R1a1>g;BF^@BZ@pp+uS^4sL>G;#kK>7oh0W+HXUL2`Ig_UgJ5gkK15.Dj]!nlF[]M=>Z;7JIK!
+iN#oh^+'qPYLb0C_Un+G7I_;%j+PdTg.Zl>5MgE+[_MnfFT(sknS!^I2-cIR?UNoeiTn7Dj`EiBCp=lK
+B9-b!_NuYVhahlYgIpfUI/TPp&ADJKq/qZ:-Tgd:F:l5Eqq32"?OQ7hqB:*uiK/S=ruFHNTIV<#:mmIP
+LsAX;%3poHEGd8[licT"OcDH=<2X%3R4T&-g$/Su%cQ`KB8GQtp^il<<W]Jp'u*ujq^cs=_Lc.&TfY^<
+<Xa<)(FTRH84?/Z/Wq7^)ZogH^(jR5&hL75H1fcXpj28s+af,<^%u!U,%e%SlEm\>m=*4OI5Fbk-LaQ5
+nOludW*Gr)622A$j""lOE(S"E0%&E;N$HkKMt'FfB!66eHJg6HGb[`ZMFP[SV_qa1<U6R<O9<6i.Bu>c
+_'@iqnFc7q6hm65!93Zq(m/GA*^SP,q=@'5/9-70][PVb;!N8]#n&%,I(bh5KWgI&+GV-5B8H%7Pbn`D
+,PB2"@#5Abkj+[+pp.YdnFbX3,()7t5kkrqiHqD)]NCGg<%]`=5ko)#Js*5W[,si'*5_H5J,/:=i)o*/
+rtAn&"lZL"#f9ZL'85hB]-)JYZU+A$eq<HTCB=e!=;)8*c:Y)\Hn.+3+FLjtjXWgU_?JOS*\YC>_QN+K
+K0o]-X61E4@HRU.0)Z/2S+\+T]f(oW?e-e7hhnOuKWh."_NuYV?fE2UYF]aIs+R't9Z#D.Ar,q>&d71Z
+X*52qlXMRi1iX*G38._LI<a_4?di?S`\.9u+8p0k^AaI>#[d"J624Uhmo;dN)PWea!ZJ@rmD+.-n9%]!
+p_!bh)lZU-3a*_Tr@9(IIEj_&9"?_A268aZ,2.ig'&i.,?4kHHqf,_H67:\m)g/*`GVfPE!t`2$1%IU)
+8o"Rgle9SriQF)B#[cHi_PYpdM<@?6f"bO[ljsN@f4S;#iTh^;+2V)8'f;h#0aQYma$KK,WL5e6(ZEQb
+)h]lr&lQ5'R^39,YJW>QYE.=X#[a3dNsK*qi$<]`D*d6DR$!AS\Z=+'I#3IENRS*%S\LsA.SEf7_S-r\
+UimTKbEA.#0+kq4F#=QDITd%.De^IjKWk,[(ZF\,T]Bs@8TD$B_UnJ\.`0e]dji5dpKG[\EYViRG^Uk"
+)t<um\@In7_UhU5,('h_q%18?p7W#j`/;!D]K6J;2c?49F`ba0b-KD$?cPNeYCEBr^"8U/n3*4(EG5%g
+Ge`3>e+EP+(n*YP8nn,E!i>.6#X"P>BM`F>D;:RD#h5X6K3jPeM>i4+%q>6GqOh]%l*iYL\c(kTqhZ:>
+?K3Pb$!fs\9%2s)WTg`YRa\5(RIT=go\!.-"-c/d$^;9H#tg;*`iHj,_Y7a?Ot-*'8K9cBLtSQ^K!psD
+X0SE<$\`*mO7X1%UjY;IQ#<P(6=3fRTZaCMde#i/7d>f;A;HVdarRsg%n\cq'W>\uE/r9?'u+9PLJC3*
+Ubc//PeWq^+i,D\Mt",W<7<"<M1b:\q?Z\B@c\,HQEr"'fe][b:C0J$k6ig?<FXI_MJ]A;M&,N`h'II.
+X,[:/TsR>KW1t$=hm'O5jo<9I*eg:NK(,'!fS@b%clPLJC<$A6/+!q%n'N1Bn/gtZprL`0U'j'A/+!q%
+YI$e2^.3MQi@F:-PcV5^+_d"SdJelCq@iUUkPPdTpA!p6IiZCM%QKA$CdR%&`Z6s'35Qpps!ReM69>&+
+Fo-rIn&fUY9"*=;$+&D#J_3eRj+++*X2r6[_$_#pNVtRE:Sl7'OT@cZ:"Tubbs]<or)g+B/M7t5asf#m
+7?&AGE)keNo]jHB')m$XfDjGmqg=5s%bJJq4BTVp.id;M3.bD:lk[5=]4W.(>Ai*Z-LJoPKDQ@KKE]Q:
+jB>Pf(:Y*%0/pa[I'@JY)pupLNXMo)aXlt"C#]\YTRf-<oU<<WDY-&1%9"9&Y\bVC%\MDhhc8d"<ZgHE
+F@dGH.\56hqZe_]E+iKo!--,_apFH&II9&W^iYcc37?`b1P$2(37Q+ZmVSM)@&O;>[3G87UOPG0ha?"4
+p3:!&4fftTh!KeC6NEKIL;F&Ff"WP:R0mkaQYZ<_qNF%,Y3@".E'a'#!*U.gmS7Uec-Z[b6cNH4cqEfL
+BLn0)eWCg_47gnVZ5Mm?\Qua(PVA]RWRJT!?HK9IK?Mk7S^MNCgo[!R>PFS*-"H4*8.aQOYCWnaPnomj
+bD"C9G.8p:kt+E`:;R;m4O.:Cj^N(W3kLnfoN>))L<jk5>8-r`#J7D)"DjbLT*I7G?Q*B6?EVH_1WVm]
+BnTU([BK?"ETLr;#[ZEo'&ho\qBjYs_I0<1YS`CP'!>AQ`OtW:"ca_qQL<88c7c*4Ttgaqj"rbZZA)D9
+#q=.ip&4\`J'=#Z#G_TKmsu/?edY]8VQo[D0XiWaPp8=;qU(s#<Gk,=;!Y*$2t^LUEkj?Nqcp*hmC*YK
+:XM_sQkKXEc0^)k0u1mp:0e,[.#!S92h#J'$r=EUac!@6m7l*/T^So_!\DlgmX%W55Sh6'Biqe,@ViPn
+%X1^NiJ8NFAJg6=p@OR0*Nn$Imr8'mYL4;lWD7Qb7f?ONE>g=QRD[nTHr;aepNWGAd8?tjccbeh"m%(&
+a^piG5tM-aDtqM/]I]Ceo'o`*7+USLpaB3oTP.&q%_CrW,DQO#84^kYbsI!tMYZR$^(J,(_V*I0hOfgT
+?pet4XH#8Q3>*S+Nq`FTXe0L"(SYGr?&a\J(9B;C[p[OCY86d%fhG;<(!,s#S$/_BN@t7mMUAi!Qf0=i
+X0L9$NJO=CJ\<r=-!Rsf.SpWQ.]!hsalTNUBDNqE7hT0L27NK!IriW.8.d6WA&dNl`N!X.0#9I"K[^(^
+U:^o=icuW"4MVfc=#g@bU\^-ubaf%V@AXP!M>g./grA,he$,3$*M]!CVh`9TRCAG;GPFhV*L7XcLL9/u
+@?$kF`1N-9C(WqP-(^S%CX3&L>YeYb9k2uQ'>rO2p6\DdDPHQ*CkrS?:3.?95/gJ*U@PKeSL>g1?Ehmj
+++:+2FA2CjH-f[;4"_PZVi2OD@QKlGr_MlS0JFe0d3^pJGLTe+pk<SMiQCU@^;and+<IU^L>/9!267cH
+5G3#/%oTK;p28l2,G(&jA)>[a^/(XQ(Z`X2Bjs(_pC.(g:OFFr1u:I%LBKA+-\#>f&ZpV%r.b%_'$.<4
+Nk;4;akp]c^SlG&SM[KtW;GnM?OT#(W%ig^8*3SF$Ednpi;..27>53R'72-\pgldaFii4J!91&.#)sP+
+cWK)gdA[[3"YJmDe]XKj]@7Jb:5h6#dSeEs>DZ_cKfM/i$SO`(=D@0(:G[T!/X1A]XRafLNjhqFeo@CF
+9OM)Foh2CH.C;jOj8(7gn'l("a5iJ.?I\::5H0kdIlS&u+Nb_Wg\Fk7m]99YXq=RtC!G"]Vd/><*/9'U
+%.qThD[@K\]#<R^*ZR\r<P6;j*@_gbNXd?b30'TV\U1MkR2VZ<*.c1N>hI&_IYjJpEli=>=.SB-)EE]f
+od.Z+Z&K"/&X]*.]7%Cc.#1R1_OC/nc$9SQe$'J.]Q&#M$"-+F30'TdE?dFQ_u?7%+#1>k2"X4sj$M*c
+%^rn/\SJS)'0J:lIQ5AV3!I?2FdU!b(oh9<1Y<?c3"F9XR=I=\(WXpC+%)(+^C"jeUA"!634a,"p\n[[
+l#6K)*(S=41bF`pi&D/<MrX#Wa?Yd'q_ZTgL7\;X-d[);HB4DOE$4Fc@<*8LT=%"q"NOrL#01/N?Q;S^
+972B*a'5.^Vj=*$E?)Y[83KaC$9tspfnRYoEVTF/?fF%;<o?F,3(fJH#ED/R*/AQej02TNKB)IiYa7,[
+_n6X?^3%$Y-nk:nN;*ZPbu:<N##N3dLHQhWL">e,"1nqA/0V-5_Tm/>06'=eE\EHj^P_jEco9P_W.^Iq
+3Y[;tA89Oqb'n&CR[1#0P,7W8Y,)^3NoN!GI+@keYJ,VK#j`Odb;;rq<f;6C*'O^i[U($>\+[+\>!S+c
+n.Qds[?fuH?T"2B+6]L=Vp9;S'+idfKM6QK*65\jQm3'1<5pf$@K'_>/Xoi`+!j&&B8p]0f5=l&Lg_TH
+76(YOa2&41GnLt8b93Lb1,$&)KfUn9REqH?3uR>1/p>Xh4F0AO?q(5]ckSUHAPXTc@8FB=7G@l>bcP)E
+OPJ3/>*;NrkS/_n:F1D/d(;qPa>\GYdiS3LC'S3e6``0lQk*CI,n\GRWh<9`OtKgNJLirjL*>+[qKs_!
+5ie[o_W(B[('rqof^DZ7Q^f#94#&Lphj''4RToT5De%9[a_P7=cqDg5929s,HXWOHlpICFdDKGHY4/Rg
+&p8d7WTANRZ)TLFSm'*TA;nhICD#;7@9^FQ9/FqVoXddWoa"apb;!'CIi3odfRmM6=CK/!BI5u/;P7<u
+A*m`C3L[-OY"MhTp9DOB)/$rE[+b;u-lf2mI<U`^?fc%N\JF?Wi]'/&gerOZ)!UnqGDu,m:"TtrSuN2M
+Lll%ST>J[Q>d6!Rl_?8!NU?Qj*%OL-I2"lg7t0f.G+MUa<1TpZS1/9F/5rU5SYq.J:C6&D<T77kkFN=s
+)!<>r(&G(JKK`:^eV!Nl0^jUZVfT;L8Kmc2HRO:0,:O(8^NQ2pop9u$]C<]Z4SlgZ'k*HB/F#6J?Wn&#
+/]u'>6qEJ$32>7D_:YJeSU:!/S;L8jltNK'c;S=Y4&5(9Z\e_Q6*T`)pQ;?A?[].:Z:9DV,bE_(bp0*j
+>ig\[*pL3;jc4=RnAlCYB1Pe^RO:KN<jgY'3]e0)R''S]UhmVSmC7/!Y%d$q:TV_e`3/KPAo\j&UZENE
+&XfZTYrUgG*H]Oe`Klsq=f6-;9TS[u"2Bl!.4eb'\Y3e>##^5ZC#:'=P$'0pSZ#INS;9<mGOJiqG"#2D
+@R120!s!EA<1K2GCXrjTKtU%l4\lJl;nn!gC#spKJPK=h#XW%&GA):i02A='S#NU@@JS*GE`hagF0nMQ
+M+dKphr=qdMW]?NRPf<mIoC)q2K^/-J6XZM.%ehXT`E-Ae#<N)#L2&9hl5^NWAV11kPuO!co#Tl^713.
+T:(54q5V2F9Wb6(^q;-*00%?[oIZ84/$ZG@*NU5HX6k>?/-as3">_!g6HEC%Sbf_bQ)$2@pk]Z5elIID
+<>NgE6.eV[[BJ!0ru2a&g1&<U@kk0H.jUM6Q5"AIUXgm6+PKf@m[t]A(j.1+(kY%YY"uf2[BGf>AMLBj
+-sX+OG:Ns.)bAk&b^93T?d<U^iW!EsUi:e"&ak_U5OmVDRd_u6gHT2XA-#W#bA[bi-:A9D7oPTW_FIN=
+F,s+*W\eCh&.#Gk#F?$W9,>BQSoT`_CJ"`=BjnM.r3eEHRi+#JAh(U:E!c4;p!LM.E63\8eB;e[SA82/
+BR+(kCS]q;_(]*qQJp9-lS:;%)Lf5G%$u_+jN9;ncrc(%0PK"Qk(,e8-%rsoiR2[onJEkf`!N="Op,ZL
+_JmVh.Jl/\987d1/e,9QOPu?+99DNi?tbf>L.e;XHjD"RBJRcI62J[).[X5&Ti.oui,B*k7ROp+"lgFq
+(bQsojY:",QpqrGTa,/="SD;\IrE4Np%X5R]*t$D4;l:ZK]*P2kKn/S6-5/GdVp.M)(t`KHssNAjN0a+
+V3BV``X9U0Itl6%-t0W=0F'@%nu)H'E+sDr56nV%mOlC'Il&hfQPc6KL.d9tf.gN>!$W=60iSGgQQhLt
+%@<:d_kdAaCDng.J/"7&'aeUo;^DY:&5p"JiMsNt@^<jiC$>L,)D5_EJ`.5/_9hNr!l`N*$!;pTpn\Cc
+<3?Xr7`BLu;Llj9^>@o52I)./Ws>,:3XqDe@RPrD#U4@!QPa1bL.d8mdt3ID3b5aB;Y)raK]/)Z>J?-V
+P-&g^%$qg,Q%hp=oD,QhD7G8g?,pnu<7m#ME+siKU>aP!\1hh5A4MA2%!Rh7(bYVOLg^PloJ6oBPZlRc
+,M6[;UeiWu5OrG!_c1?[-@R*Vo*(^K%$u^\/k!5Y/JDLY0FOrhoekI&DoWiZiR1;'6ob[B'Ilb19>fR/
+A[mEO=<V$t'*\*9_(f15Y-Z:s#A^:IFpotQM#kXh(bT6_aq.*b=CsllKaEliV1jJ_c!f[EQp\?YOD0kg
+(]h2rn"cNo2%5g*;PRKOH],)UN.s2>)B\&JF;q?=e:A00?7t>9TT=bj>^Zkaijen)hmXI47c#k)dR]n%
+lc_%:3[6?\aGq7;8dI@t+\F)c*Q"BR+RA>%bO*sRj/X4!*4s=+@?tq'@YCfQe.lD3=r8*IEgOWkar"i`
+)?jSu"3[e13A"OA.QkpZYPB*q[4&j9hj;9>,easZc19>:Lnc._^gi<@RNHN;d56]T9h6iIm`N^<Tq;!U
+kWXrFI?cU=2&\-)a4u66OA^l+`7Df@kfb'7+)1/Y1eDbdLW7c1\!8anpe/mQQ5an#?Oao^'Kb/U^:3(L
+n2o$-\:ehV19%NY]SGI/p(J;r+[!4BQOkK:L.acr_f4k918(q&V<UIr+n;:tej^`UMai=R6_IbQG?d2)
+%$eP8#"jdNhsjm:iR0,.R&LEh='$4k6*`_mE,"6NMM=bBX%`V+YtED_l(i&'46BsRZ[RYf'%\fU/fhl/
+;NgS&l+btl#sn9FiKAe8a\_4@%Z)cspJ:.LD.RmCOE30j5r^nC/h'nn%$qOJ:52E3*Af@)\O/.rV08CE
+=q(QY"kSt6&OPs.1^RUd!l\Clp5janbDJLLOt@_:f2nXHW^c>2ei.ns.b&1t@CUu]7YXPC?7<];KJj5F
+(7<"qrH0&3@:_EQ93Rsb6KIeP#"G;cd/4/qFHhc-r#eTYYfrQ]3hA\(`&b')ErJh)-@JQ_C$/($rq)C8
+oMe(^@:43""kBTU;Km%79rbBs47F4u\>5FrglTF0TVNkBQ];30HuHnKE?$_I!gX-)3"?fCM;s]n&NC8g
+-4QCn"N&<)E#E)o`0m`JMbIp]<Tc?97]mRsIE?KM9LTpk?ud1Sp>(HrET._aXNth1,;;+e)(lqglXO<?
+/qN&EiK?/1)(pL#OD3.9YtiopJR3Bd9OYF6N^JOoi](JY"HGj(9Ahd?\0R)%L.gGaA@Mc&6\\7n3+TN%
+N^JOoi&G8W,`Y6H91Nme]g'n`8K<KoQb[U^E![M>%%"nPaD_G*LCBNrK/-][$2!&g\)C6Wpqa:BL.aHX
+_/[O="<<1*Qc*mbE/C#1%@=k>aDa]jLCBN6RM85<X>!ldNe<'Zj>^h17#lnS9#5KQMrRWOE#^]>!llJ%
+-#jn[>QVqh_^4_=1gGodMM=btV;W%H%N-mUj,j'Kj[.EAY#n"oh1ViOI=gL@iDOV,3V9g:_Jk>n;$eg7
+am<[5PF?TZ.O,@gU0JThOlOdo6&f42k;HQXa)PNDe>M7<<dGW9M;s]V'))YM/qLut(6IR<i=]('\AVb&
+E%,m,NDo""A@Mc&6\\7n38X>C%@;f>aZ5)K^bT0#fic12Bf(h8.a<&U;^DS$^/1-[#B;>(\29`,P.:bu
+L&MLuV9r_af+_KEB2?uO`]CJb?'O:\GJ+VTGoQ%qocScj=4/4'pe>IqBNnk(9tfV0)_R,)f16!Zh,=WP
+\5VjniK@o?4Ud[U<L+;oJ$P>M526Er'&dZ/&Nj3Z/lsM2Qc=PA<)F[0cdQiI%%*VTG^'/X"JG]2L.cbd
+6AA,k2d.%NNQ1pWL.`@r10b_47NsP%)0.Hq>Uih6K1C?"RO[Ep=VX(NQL0!QUkRcjjqnMnc5`m2cG<Fp
+0HDGJQ`q8(%)\q#LH$/(@0XkNBiLLa(-Q?L<Old#EapTe@8?45E%0EXblm6#H8(*>=M'sTT4,7*e1P%_
+c'[LDN&)[fQNg.bLGT&#]6bOTL.cNX'%Zl8L.^@-7_8/?a#HlBm"X[P)D6$jf@ZuTnnGVPO\`k@Nbt5N
+`5njEO@F]c>'?Lco,g"hQ#ig)@B.9;P`YSf@@X7<3>[oYY0KuB.Wuc]#^rNFWX!7JUsu1fWH&KdV)V98
+)42Ts%J3I]`^SL)MM=!.St_Vaf0u,>nYADPUGtcjr.o^.b/ObK+I]V>Q<@,h'p!BXma5*U.T281Vl@Bk
+:XMj,WK5=OH%ggs.JJt%5B<,@WCDH=,bE_(bp0)??0-e\*o5)OPZX]Bi0!JF\.lO:_-#6$\FdWd_/rBi
+KM^9riDSm.1gK%OI%H5#*KPqJYohD5l(j1g?"(5W\g@lQW,'fqM7P#CPsX(:QEI4Bco#OI6sZ"29;-.L
+E/D.Q%@8o,]CKtPa0%C*(bS\;Uu>58RP[6l>[X"rhB[uM-a(V8],o;QoIS1IGtsoC%c:'`amA37iGg[H
+1gJH^VoiGY1X=BDQn#()p\;9.QU9:dfQ9h+/lC5riDSm.21j$Kr#'gZa*'MO5l2Z5QVM9U>&"N7#WdLU
+.<NfQ+l)r%_kk^;?hM/CQ\'M5F#)ZABi7=\Q%hs%AK!1`H)9I4<s0Eo"nP@(V3Cb_o9H+-#P\TgUB9SC
+VF>$%&&KqKXF3g(P^HppXY&,j:CI\oL.c&`Bt-RnQ%hrJ][CbUbc;f>_5O-f;N+0c/tGu0/*WFV"nP@(
+-#+DV>WPEWlsei#J,a8<9+f18`]t-%?9#gQ1]Jj%>=.]Vj`UGJ%$qg^4:IPjjr>^9$4m_HP7pV2VC3K`
+[)l:(@14fBOCAIXoQC-'af!o@e!d!RX_uS')Ynq>lK]kB</?#Em.LDOdD!eCahqH1A%6W4RB6`OqSHBr
+%`!&J_?E4`/'N8g6F>a;<#@65!)".\0_Dj3CsY#<AfBtHFTu2:fNusUi=a&;dW!<4Q+t1TaTHL*)(p3E
+`Zi;H&(RX?A71i`0d,pW10jCCT/)3@$kZZS\E)U:QOK3C&?-)?k5>D_%$rTj5'P:7%$s'j@?of7#;3,6
+>iIOI@CX8=#&(Nb*i.a-dEdmQ]aU7%a"Q6"0jK%`acPj\L._jS$c=7pf+,\E%q)kW\5`!)!=bBO_Jna3
+D+$gI94!W&!9FIt92hVn[ZQ;:*qlcm0>l]0Hjl?(!+2#MP(N&;E2eG-%)X@pdY6YC6>jYZklg(#iDQJ_
+iDRY\'/WtbLGD\D=%M']VFh1^.AX23_F&S`N3gTEWIj(=_kgI*VImd\Aj7[$l!j-ga#%&\057p1jjJ+i
+^KSB]K[=Pr*^?"MdWn=Ci7;GK`))jY>[fDB0O.MS9GfDX]WQGdQK!1tFJn8DIQ8"=GVG5a`p#b\WM('$
+'cAXCEu"0??\V2^6iH2a*^qgmQhV[0%@@"I?%tu\-2gbs9C+q_/ie5g#Xn;`L.dY4o[H,u1,+TIUGP4+
+2@Z'(GoP=#;oX39a7C%\>UI!0GKJ3h?X5>nX9r+deuA+9m$aqnW_?\d?%tuansP5*'l5B0QPedDjNFe*
+_DZ'(0jO;&<FiW#BZXY[(0RTRSB(/]i=]cP%=qsudnD/fr@Z=/\n#40TfHE+KD?+sbgJ<sA/Klp.IX((
+C\''*3KTTh12OM8RV>6D)JPM3^7)rSbt/pMH@t:/i5\&n\E)U5*uQ[k)IMt'I@8K%jFuPjN5QUmD3GBe
+Y)sP3Tm4>aBbJ>G"q&HT*pG2(\J0NBo7709EiK^r2/:(7`qm\GACtIjXpFJWARKVF]C[)YM6RaP$<1Pp
+1tQHdd`Tu6.6$>'Y>Rt)-CPQ0npO*B9B&U<^n4,O9,\No*q$k3JbbEt'MO]Ig4[rWiMF2d`$eZs)WUaq
+AcQSAfeK]"e3@NS'WFHG@TbH?]&lc.o)P:B*M]!CVb:Nn`/09?NdBgtbDj&bYN@Nd9<mNjja.jtH%.ut
+E622O.[(c@Nsq@a5G@$KT:)G4'#Ql]E/EeV%%"+rY0=H!E636$8A&W6[F#6.,1eg?NTsp.ETrQA<;M=a
+n2Ggr*D]+3U4c^8iKAss0/?e,A:Ma@WT%6UL.a7%RiY&8.L!_d/+ouP+m"_lfJHj])@"*U$h9JRaE[(D
+hds=9;q@QG1[$Y)Q+l3%Z).!i_Kqr1AiC-h:4j=:<N"eR"C7qa&jrtRE(RA<VBomC^e?.S]?Uapb.oEW
+`7+X?+lm@+`1YHn.ZupGhO_LAQNMZe-/2a/mc7:c8VTmc9;q=DdAc<;Sk"N.ghCH3'LDM.\ASsWOs%X9
+^\d=P>iNm;L.ed8c$0q9aM@"Q.PO)]*Z\g%*C#@C=UH3flaVD#F^4$C*S4@QJ#?&*:]?7J%ZTB;#Zs92
+j"CYS\js:5HTSu7h46DIMY[Mukpq5)QEo;-_pIE^FaQW;6@q_AQf1h]*&J<QV?mhp%N6/fa$K;AEZ?o1
+@W,QY/).m#I9jTE3N:d\di*\c3KC$M0$RC'EZ?o7$'$5a3K87[0#ON,i['UfTAQ/oYW*(1/mZ!GnWF6#
+Sq\rlLhqVG1,oa^/s51eBbEFd5iamWgm\_=aDoRG.6%eU/s51ei=\-\)D2366,P!h*&LnEa$IV>i&GD[
+7#lnS9B8'G\.fnf%@8]X[J0Zbabc,>T]$MD%N6s^j.P@/E#^]>,0*!e-2&GjQf8/Embc3,l1FbeI3$5%
+(G<ODcle#5MhXm@ER8YrRV$i@:GLEq]/U9=/k'O'j&!G1E9V<]0O,72!E17`*&(>Q*!^J&*6_-;",9J0
+3,#f9*!Zq>aDoRG8NRLmQd.d[q-YXL@CS^cK8*%8ER=VSEe.qf<\,DrDSed&5/D6cE9V<R3V9hOA@SG+
+W.^K7aR!R4PF==\Eg#D0.CWjPHVaTt&V:q7`m85+'HG/I>Ee"Y=*bc;"iipH-1):(W05-0>-KLJ5/D6c
+E(RftiR6+F2,9_&T]$MD%N6r'a76>4A[pgm0-A(X@N$jZ)DYRgq4bA[e4`B".e1ob5`>Q\_0O+@a[^W>
+i=[6FpaO*,T-7?L3\buMFu%XB?0iaEQaH(DG[.*oM@q#>Zg14#`)I0.$aJL&E12*pkqZN7'm(M7V6fTp
+KMS*SokkU!8ZRO'P-i@EO3L*=+Yk,k@Sk$[Xml[Y,[IQP2dGp:\dXpQ`P>.rGeRb*oIQR_C[4G,B>T+Q
+6Gk+A)bYoY^4/P(U7lQr_^43,Q4._g/kHSV_?[RG`\^]<8[Bmm==fr5e*Mt,`H*1IGO_B:'lgqX8Z`h"
+?)CXKetScl>]Mr<\AT7U6RA<oIf9qhCK2ujNDbu!P-7SQL.d<(d7f(>Uk_aVNjXeUr@,X\8F=jUh2EdX
+a>bumE6370q/q[%n%3od?\V5:4=.*#;roUM#EFqlr1>so;_Yi2aG8`;7Xg>FW[alAat`Hq\>6A=dulNX
+@3u[55B\V?:Rt!-)/1bL'HW$J`nE:f`#bIYCOJ@'F+G9D`q-8k:[tL@D/-04cP,u2*itDD=+22.0'PJu
+PFabOm\/f;];.:16T'g\mdh,$CX.24AjTZ;@7$cR!Xt%53<J>5g9Xd;:*9cV)'c9$Ms6Qb1J-SBMIL5_
+_=%4928Yr^qW^0H1SI?fF>c]n#"D\)O#6gdAZ?G%,)Z4$*pG2(ad06fOMdj*\N7I!7NoSmhog!'kaD`d
+<J08Y)l!Pb2/>;SQ(&2KNii]+-*>ARa]$45H")!q.Dqu4<P)b'iR6+2@CRRg';e=K2.<G*FA:cA249rF
+-4H6:CVk&TkaF21P-,,/V3o.`nh.@.SN.+r-0^jP>WTGCb`>(C'c[j5P:1aKGUTbe74p?#3]^[q,KMlm
+58?r"T5+ptS#NU@@JS*GE`hagF*.A<&],IBj6&1&3kFIiXiYNR\n2Be+Xuh[4rU1;_So8o>-J^eM^oQA
+bL'4'E(A7U1es`[ei6%*,/^7PCVK(`)(lrl<R7Ck'89#;Qrb+WSM.m"8^&[nQa@sPE9T'[0O21eT6@r3
+FQNQfU$"\W]Jcpuo8:;)Qri;"fD+"\-P!#]`L?a^V]mf(XRWF8E(S8(%$qIq$H"/EYC&0mUCN#OB2$0]
+kt4\7KgN]P.DmHG*&(X/OM4kbp[mA#B=O17RIp?r%$uG;p\iRtQhru23OXJuY49/nYb#3#r_NH94;IVB
+fBjXt0(o$F6,E9uS(VZX,=qS\#f)d0qK+*n/)B*]r.ZGlfPGk1lAZN`FB1Q.e+Gj.3$_6)PSX(OUHA`D
+r4o>Y?:*3VO-$o#n6C9_bQ7oc1seFurglbKEoCH9EFmKaUbW4P&Y959b<<?YDae?SJ\6@["9F*5mL3`b
+3q-i=4+aP(6%;aeodJ$;;qlTmA3CN@4#-27#fuA3$NUj!r"@/M>[jYa00)===^fbk+BVaO<XIY<_S]OD
+q!8,uUO\7f"Ta/d,'#g`#7-MCM'.W6jF]8rYrMR+!E3Wa)IAG+7pP=tbb4anlSAc4e0,Cb5mYjcMu^\X
+O$t0Vn73q8"UNse_#cV4(ofcFgJ[u2!J6B.T9l&^+S]>C^sn,F&?HpRJD_096jlogP[gT?,$Zh_FG176
+3\hs>`[?BG_J\&\_sa8+/]&jG9WQ%m+g45E@STZ]_dmNNN'QP@IE,t2MIt@`,gpIU!m!uO$3Rf0lfjnQ
+OohZ<ebi&9,qQ]1el*E/5h&=nJDf$=G"'N3mNS=mT*KRXbGua.j!RkM7-4HeY2]WUYtH;t<eTN*Ol,Z\
+Qic<NVQbo#!PWl51X(kSE)+S<m_FVt[A87*`.q/#aOeY+pfs/N3u)kg<ZE7d(DTF7@/U_3KiP8W&*p8%
+9<9%?/ulXSWG2l@Rf`'5*1%XS"_a@dPZ#L`2T)(eJ"[,Eob\QmE1Ftj<#,OKDT$L_3:N;,k]uAbAL$.$
+6'P'l_f640jWc\F.TZXpoi2.M<K4LdpZpKi8>a$tY>DnOEE-Y^rI0E-,<d"-2'RqS#0nVu_*Y>G6Os&)
+9<9%/K"$,%io>:uVVUE/i0Y_s_)4G3k=F\6`1/X$bQHna'giC&^"[*h%n,-A1!KI'a0m/9+Np7XB:CGj
+<iB_./R"3Ydg`^1k)<_3DeA+^#]NuYU8.ngS;CVLS;D8HBB#sUB;.jZ/#'bJ1XR,<ZDB`t64TMA+f-Y;
+4ceaL]>)^Fl$C/(:WG>sQPCZX]rZJHngAa!Bd?.#50>KGaUn=TNF2PGNH.%fj/YB7UIIEtU;!-R-7M-s
+Z67+Kc7cNr/XDn!<2k@)9Af:YAVJ@q)Bm$:jgKG<b&TiZ=Z^Li\U6)`&j5`=`#$us#1X4-+PPl?$K->O
+"P#D0,,hpn"[,B5pNVqAk0&QN=dGh/"k>N4L[-L6L5+A$Pq/fAi>t:m%BTo9D=u4V;!l%,WZAW5W4&$,
+6+-YQeF56Z,jc1$mL`FQd/CbV[lp;3G\U[fl%)LgD0g6Bo@A.3YoRr2@;7qX6iJhaDk'dsr\Ze_TX!%G
+7Sms&D[oKqD+c7!lJVjFj]"5kGNjC/d_B7E,h2f758[6+d*86;JN]s?IlDso)q'AeM7)U\<85Ga"P&MJ
+:j9;?XaX1F26snSYVt"M]Hr/Eq\Y?dg5`>/g@+mm.:]0JIDCJM)t";;gJEg$g4nl-<84VYATpq`<j5Q_
+!F(o^4qNd&;KDs\+-,n,<86mU6+'3T3\aeK*AgRt@\/0@HLu$k)f+>0r_Lb2g@jnJ6+%/!fC#S[]:Lf8
+4<pf5\+o<3M,0m[9W"Nh>FF1hW-1_"6++B:,,hpn"mZB@2]M@[rqi%WGSIYk[#"i]$S,&]npfZ6,H1<C
+?akN>i^()M6h*Q(,uQkf/m9lbkG3aYq1e!Y8P8.b<Yu$=4JVLSS.s;cTQEqXi[Bl\s27L2(Ng=`<(QO5
+PR8i\L/K26'B)DOnM$178K<I_3=,@@#M0S&%n!=Xie^J]Uj*_KKnKZ$_b'BOlSp>bPM/cf8.kn78qlm;
+6`H/.?mlb`G02*8RJ)fm:%:V"'k,3f-%'0U;Ba#s:b&8c(f5eu:BZn)`P[3=OpKjf8b%Hi3[l,H:'G4n
+3@LI)V*^&pTi=SBco(bE3&:pePR8i\L/K26';8ArnM$3MN53QA"]Z/.<$W96;E9!O2^YLkpMKUIK7[X!
+V*O`+-ltF+PMulbE`,"I[4li&$&U)sWK?+J-l#WB%&H9_-UOd<a./Y,=Be["4:J&QMC1`iOQ)ra1FXBV
+6q_E<QmTeIe>1Gi,^fA[3.[:Q@42kM<.n.pNT6Mf)=gE4p:JI7l$UBh)-?h+Gbp>X@3CXHJICb:2Bme[
+M%9e-+Xs-DpFD3=Tm2e/Z@u]r8B"!<',!/2LdD`0_,>q#L-ZZ-<qK#f@8XQBdA!fS&PLFV6DjToVQ)LI
+D$j,uSg0"m!LdU\V3E]qc+`Mo?T5rVJ-^qi@=SKGKhqlI@NmW8M&M*q;;"YhN^E=2MrJ/Y')`HZ/6&c=
+PN]%Q9qiPGV=%E8l9k*3e17I(WL-V%^VdIA`)2KqZ+bc\!%F.:537M=qAm@?2514lq;)gHk"O^#,G9.m
+@Et"VruJ:b;*:4%+tkW_6u?V_M"ncU&Li<7+j*2o7YHXsMq4XYJr7sG&Q+0@,8(6&-;`1]QIt@or6jb%
+Pfl'#?QC8TZ2uV;G3[72'<P[m><5"Z;%B*P+f->24ceaL]>&6@7rq.Q$F%SeN!<-6)Cm"H#*7;q!fMoR
+GtB@P*'s+&oL?A2g[S8cq,&B/'iEj@;Bm]&jetK8ka,HK(<asKe01q:F]>,$<?m0a"AkScV(=RdOL=-2
+'bnuVi0!J&nL4=^Kj>?'`UgqYIRltAKHCiGU[UXFGbE69idmCDMFT_'-m#3[Bp`B6`M;oiU3I5u8>H^3
+%uJ_3pn>J358:Xkr/`<JKHCiGU[UXFGS#<p'TY`^*J4)`4A(U+I'!XmU[UVpC*].GE:R]`FNn6JN,M#P
+5UR2`UG,!.GdML5mHNjH,\PA1W$S<9Knq6(.%XB*;BS+M(mi+'H]@I`F&P1.5BPkHK&XU['ucs;6_\f^
+>)2gmoUH[nG8/#ke:*Bn;*50e']ZQ0N-'aans-F0_"n[pGj9cW4:4:uM?e]`6p;akO=6^q1+=8t*tlQ1
+\OhZKiJ0hk-oFM>c4gtR_@ML_622Uc0F0mbTjB@/8#IJ,3o@184lu^(rR<*M#N:G+nK@ak-m"'a'#fLm
+6_\fbl:CH`QmBXl;Hner$7Re/O=2/X;*5*./,[c+s8LOsSd=jRg*B#Y#V2^3npfZ6,Q,nq?akN:ih9jb
+:cueg$l"blXGoU;>j39+V&q\@e3N8G_dTbZMT6/lofY?D&18=P7=O/n*pWc^<M,q/Nme:_*]]dAifV[r
+.%]Id!K'BB-QmEiF<W!.PCrH<`?V:E\`A4rFO9Ds/BK(mA4?rak8;m(ijhredM)_$S5)<[aQWiWJXfIF
+MK4P>VS2&4;*;n`KK*Me&jC:pSUf^^krgF9RGNSU3MuPDG[u+rM9mpm'[JMg"iV.S1Yc'C.%]I@!fBKC
+-QmD>`-W'>5)%s;1?j;tVis^D=ui.(ifV^3N"@dnM5iO1-^'CX:(D15NCiE^d$9#MLP\N4.HK(n`?THX
+\`=sLA1Mi6Uk%Hedg7Foj)b?[7ntG)GiWrJ9'81)#fiI*$LNtE-ltC>9Es76dg7ED)1BeQ4!dF81+`[K
+'<+PuH6dn59:3nSifV^3)7b3@]uTY3n^'iQ.%XVJPoZ+72]TiFqYbV#g7`cP19n^7]*,N]S1R!Ra;"fQ
+8@5p7#2_`:7-[Tf+u94+6dG@D%KTEOf+F*(E[q`b_>:u`I)RbtY-PpH'$`'+.U?=^,L/a/2eFODUXUW'
+c;m:BB*Dt;jciXaBC35+l_8W;3Z\ur9Z\T#(hJ>W3DLP:C?3=,ZJi_F'TrbbdT?>ZB)a>^:)s*[S2aIm
+Y13CWjV&?SQ$TujJ;Un[mC-RU8=ZVUTH`*E6!rdPMI3Zc?#*"Dc#gM-W(*$0/`2KGM)cf.k/]kCM@ZdK
+'#4I,7lqCqk7#H?c5BM!0kX%)E6aOZiN+/5&p&e\8u*6)7lcE`M)dqtL3&(p%d-NYWT.jR288(:$TI`I
+_:Np1O0<$<W(*-hWitQD>,,'([*\(DEmU>=PV?_q6-Pa@IpEaabS_$C`$APH)G%ic=<UPZOVDC(-jp`P
+$1,^X8'X7n3TY9ta&d]M7u\;N<`n6*;BsAq^J.Qfn]NJ3MreRD^f*Yd7#_6_N=`[4bkW!gA4p'Ca<=&=
+cMSD7$4.dL?5-0pC0fIL!E)$u*0+2b3jVPVGf!=9'G#=(;EWGA8b%HD8W"lnB5!Z$'Mg]'OlE(0(.fH+
+C6?pN7kJ.0C+2(][7Ki7;2Z,a3,4T8Tq`APSf%-EYaV50+uS/BlQ_97*48>eKNr6phC8b9F'-8delVci
++E*cL\u^Nr3,4T8M,e,?Q4n+.-[!S"2CD?a=1LsVa%uYk&],IBj6*.]_GTX9Xbl&rBI1V2N`r6'@^HWQ
+@+Djm9/^7[T@A=LCf3CS/f!Dg@#T1f>1)%Q?]J=YqHjq43,4T8TaMUW#<HU^i]1?M`C!-I;EUD;TQn=N
+M\Js_Ai[-l=0_n*eTiPa3bje1Tqg1ml8TJRS:X;rI)E5Xl1a**/;N5YUD>:"3bjf:#tHRF4ET's`M6:s
+k\dRYR>QRr1:<qp\fA+KnIUoD\WFNSRdKb)^J'=F;%P]OS=p]>3XB@H@Q?Y%s!Re-*4>eB])<k2B@LmA
+WW';bb6l_UMW^>45=Rd#\=B@<kLK[c#nJG!-lqp>)@ft*[B*eAl)>+e0[?,I>%.1R#.YM:)u@'#1gmCu
+2\8<4`k0**C)t(]/P"p""ksoC2>IHQ)BlVVl3i9R=_j7ZQ6mu',R6;]rVT#\8q(N@"RR`<9Cbdb:*Lj"
+2`^mAGoqZ7akMFLqfcGD8%B%rkrku!Z/o\njaQ>>ZFo#^+AV2(_`P;s196QG:$O,&-GsfLeAd+hDrU,@
+\:0k9Q#KH*>J!R@]pH?iLM)YD!hjIVSlE-4`kmmkY;Ac+fn5TG"EE<Lq%fF?^W*a$.4p6.^+6cH_'m^9
++W?o?>-_#>c*SE28Z*/E$O86;ILa6G/I^ZYrR1N9.(<$,d8tb(N#KO^=S4898M.jPQ)PWj_#.bu>@j%g
+_b@Uf.c'm47RU,2^ttM2'4u/3b7-K$X-=64'G<P!rHV'6Oi4Rj^V_e`MO^,/-.n#fb;YN;LRMm#ga_+V
+Ho)%b((_;D9pFXYb,lYQqC6Bt<29;Q\CRgBdlaT?%-I@Y4:r1eeo`th(hu'G,c(8D-fr%#TiH!OJR>7<
+=JP%*n`NH5:,3.LGD>@D@Oq+@FC!SciokImog@g>;Ld1<VEjl'*:'o*GoNRR,Vrn*9e_:pFiD_E2fW'T
+A!GUHF<`i,R;+2sF)GD(4863WBOD?'s2)2o?)YM7@J^gG/t&')g^*'-_LCcnKGG!=Ju7C_GmDUGOgig;
+*abo*1l&`C7VZ.r0bnB[S%)I:Gc3BE-[SY;WMJAV[u\Ch;k"\rD_/F>lmor;A!47'd@EYlCNO&TqqBEn
+i%5ddDCN_$"+$iM>]3u9>:SCZiKVOZF\%Y^$cM`N7sc/oh^=^%]^gP]3JUaCEpS1RkMm$WecsEX`&>`)
+*GptM3b9&tnYaS'g=7-J?SJ6Y3,2j8m64/sKCA%&baAf[k-<8!IQRK+l1d79)*/7WL2Mc2_oL`^cuJgg
+Up[2Z%Y+"Alinq@]0X1Prh;kaa&HD,09(EB<#Re-Q%j139#J]Cda3!4]FaCU4&j3Qg![>sAUKb@\fE9X
+nqG##-epp,+",hl$P%mhm=]9M38n&o`sL@oFurUo!QPhMhG1S8DC=5eD^SdW`sF\$8EP*4NF0PrYeQ`J
+j/[,I</n-NosYTP["bQh'5klW%Y^'DQ'@:BDTJ.SKbrlT?c#h5``r<]=Sn6\'5NV4&)Jq6]*HB3bG]B-
+Jb_Mbo:HZcbu8*$6$V)IiKWg@1]K(Id.p6C=Mh'?9TXaZbIDOMVmmPO&Rm0*$97%&l`9]oPMUD`_@+f+
+5$+D(:;Zou%Sd*:I_uoEOIZ82o5_!8V"QTVLVMV`Fpo3B7;@[_4H<OH8),u'*O0l>-"eiA#@YXa%_:[3
+3>0A7@/`s'*Fj?<Em=S\UuU+;[PlpI+%G=[r@eW/r&2+*rdd7Hkt[cX"L'b_d8`\M;D@F#-8iYWc8;NP
+3:c`XB$=16M[IWfFA-@*2s,Ep@q@*NMUC^!.;0"Loa&T:3u<qmY+rVBo?eJ8;7?"7*]54pd9Z&Um^kH,
+c_R3]G5dtQ<edsEY5a,8@$Cu@=`fC6ZdIG>c]?LWFQ/GLE#,!?X=^AL3A/bO;-p>J]62_O\#%Tb_>tsa
+B^EtUVZ9@1E=-@aBmgbOZ`&<ZB@/Ho'S+Rnmo.#(?sG['(A^lQb1[WB]!XX@2q+0o%a(>&G3Su@,6Z;d
+YOR5W`;hGmX+]F_3hK&,0Vm*a==]uHD?$4==o`bC[6W$3_f$g'e9[XZ`sRUd`OoHnClI!`?=u]r$G_8B
+`N0!PqTc6-J@"GJf2Go8B%OLsG$V[@^-'%"A34YP"rCQY1p^U[aB<VnE&:!5oc*p'Q,=s$[>bF/]2VSn
+4K%fj@7:aYW]&mZqo2giPlDE?=`d^/)\['tG`[qhk88hbPOt7(WL$q-ZF\A?ZX]RpWq<!*Ub$0+fqj2q
+8Eo)V$D_Sujur\;01RgR6RJeeE6';j"/bX=ikNB6oWPIQ5=75f5miDn.GYM*kRD2'7'FH9p<_#?pEhUf
+KC0XQUG2GF@GpOP+FJt%gkZF]]#>jr4?TL;Lh&<e*=#/e'm<:sId,8IU>-1S^%eW!+&O7ImRDVIpf2*s
+b*GBeOrTW5;G%89+\C%)^Q<BR5r#T^3JV4D$*QtlaG-EjpMVJs^@%J=n^Pag)(c)1$Zp(EPNlcLfrZ=\
+EEA?/kgn40&Bgi+OsZp9M46.-qIRQG_EEcnm5!F?9"N2sTc[GXkg7OG*I8m>k9Gc-K=Rf-S`Hm2kZ0<]
+GIm%O`qN1`>Pn7c1BWR)*IdJj*?;4+,`CnXd_ai6WAfG*F0KMqqIKngbAo\D07D@mFGLjOh*L^Fk['C_
+8d41S?Y6u<c#U-q,t&d";klUZDd\^ScY7*Zb;eV!Y>Rtq%KVgPOmc"#@uMLuR:DhAmiW?OPW$NM1Xf'L
+6o%5ATP+@G=5H=oel2"pf[NuB"0WW&Qc-:TOjmA\#[dNc?7+g%?^HD/Lh,(-8G*_#b'Q-ZS/727#C\P5
+.FM?V?LkdDAiLnQRb:<V5r0%4)CV$lY.oa(V?6m6Aq#RnF#Y;(Al^BpAumMWRH;^ERMkP+,*GG";%a-e
+-,O]4k\ms&^^^#"2_JGrH>\tf73.Gdp(<_A`.adEDZq9fRX'-GG1"O/*r:2ui?YV"R>8Om/".@>d*,00
+bmYC*dEJB6ZA1:.E33&,ZH^gC,H/8lOqVQjDch#nL/SLpB"!aWF0pub1YYEg=Y1J2YXA:Y1S7X4>>!8d
+VgY5+eNOP\C0r*lO#Yhq>59,',ED>Ea)Fj$c-2_Sodk!M7[c=W<(Smp6'X:5B&L=.Y!4c78aS*A<"!=n
+bW!to2B,<9ber7*hXgN>RBaIGR[NJ9^R^BR#DWCm^R^BR,]bp.Dl;V'PCu+pa&0!_K75m&7uaa5WP3JI
+'EP2_gSnD!n1"*Tl5"fH)SM]Q0C5gOS[tTOOMgJ8*An01hG2m^B#^2u1c(\k<>I3tq`>@>aB+CiIKooc
+D0si3OLe&t!s+2f%]AH<#6GI!9W)KrON\^N+FXWpk5Ghn&76G%\"D%+UV>Fsq],qb=ph1irXK&B;At_H
+#m:h1V,Qu>\^hS-9>@_Rc4@&T%<IOO;AcIM+baE+&<8Cts!MFXX$m!M<MJb$S4sDn$(mU\&'Z(hTYd]2
+C#e+/I+-BY?TrkrS:bECl(XS_eLq``9_V<1bVfiAd*+3l8Mei;Ou0MIlnrHg\8E@VH$GtqdELAZ82J;H
+6(1rU7:5S*Mos!r&SYkFas;RoGPd(b5Eua>jpsHba&laKmhe+jBkGY>d`e6[UmY`dP@itD-dBm29q"(S
+5AB8D3iVN.TUA02,0`eUlAQ]1ZgVmUe'-dTIP;bk8Me+8f8C4t1EG%<1P`k/BkEr*82J^@SMYCIXHR6[
+WH;LV5+E3O!2jb`b]Hr7ED2.1d`UOQ/hDeN);u=sMLmZ@*S*e<LVl/eAhk4!RCT&SArcPE1c&'%1Xfd'
+1ikXXP:W#)7[sP26!Bn7X7GNiY_$Hsa)]VPg_E@9CWq=)N=eUJRAhu;$tTRd*9E>qVSfu7#\ruM5<$h,
+CXp8@Q-AF>%R`+._`DLDmf0)Nl&r1baP;k6o1?&30EZ%OE#[CgKu5rcB!#`FRO_,LYPR-5F#^8Ij8PX%
+!2[RoC$,1GBkBE-P@g[]6^g"Tek%Zi<9cFAPq)NUY\U&&WLK(WVSi6r=:p4oWm*NZ^9L]rjo:A"YYLXT
+%dTpYl**pO3?6UA1K1n3c)abIRe_n6d**k;qTpDW_dT)m1L8LCXEd4^SOE.CrqfclR?(9+W8$>H:+Rc3
+jo<8KLVrsq?akN:Ap,Q"IV<?(5_7:'j86(?V($l?b]5]E0e9/b)NO-fKrX*Bd["QYs%6B6=$2`b1p]:/
+<"[:gO%KV>!\<UiBCX.Lq`pJ%3$J&sgh!KTfe]VA=bg@m7]C'8L?_2f^aVH\cRPE&8C5(K7=,qVQZXlc
+mt,/;j+'bmVsm6\qHL9LDnJcuQY9u$<O=>Td*,SVK3)jU%_a!N=ilB#Ke;YXl.?t(jPBHgCDpRMbDEDZ
+ob?07is!s''fB1i8lm)n=_d:$_WNFQ\o?=WoNl;N\%MZ-*YP9.qNNei\nHMPmu(e$kF:Y]betcSh5qu[
+%R0;q+H,@*f##g^c@b0dFmqq/n]N65k"PM1=\7("Xj4,K&R;J<hfUK7F$6K?c;=FMesg)N<l]74$N&q`
+;4o,uGg=d,GbqD4;f9Z"lQ+'2^7n(?_'@j0\&>m(T(+-L`]ON63oQ/1pA(3gbq)pF&BPoOJYE=d96h2I
+3)@)CA!:7OZq\cr)nN%fXBcrk,PBI=dq+@G53:@<3E_M9<fMc3?f@]kQW)O^O,@t&'RYG_'^;\;0DSp2
+1S(1jB(d,!75MOh<"mO#n,ks4b6b3+miIX(5#+p;?97`."IH>FdWtB=GYuL!H(>AcEhIWN,S4kaM8SSY
+^I)K:Rj6h^`Zg=tl3jFU*EP@+I%tf1i5OQh4c<oq\$ed`ZaW3loq372&^B[UfgR\1"jO,Jd*-UL,L,Rr
+:"4/qpkpD,fkZrcRT+ReH99<$7fJ-0DSgA:CJt_s[(>?LDHogOc3*HL,6D+ldEJM:TUDu_QCEVBk,WnN
+iEFmJ/h),D\m?4dqg_IhRU4BjiG]"Nn%W?lab+3VcDPtL:J.)O36?ebQBOFEk*U_kH=npFjt!jKQr,FT
+<_:CdK^@s55[&J.\rEof4MGLkGTE$EY1B(k#<j7NI%7_D*Vb.QZ?Cm"%X\g)]0X16+%3Zn%J3Z1K(_:q
+6.D5rga"!eoaWN=3qt3!%P0pB0P^4i/90X2^>bJqkrZ+;I$IU@"&$;gHdU%W1I3fIY_($7-$OhD,9cl_
+1"5T!,c#:\[<1X2ala8\/19W[%Rrdj=Fh4`*K27?8ELCO'#-hB"dQ.($N1H(U)J%/lgJ4,C5l-[?mLn&
+"BO`10G6s=JJBG;#$):!COK($L)8DK`prq%bW-`?0NWfJL!QbaI(mDC)]r2XY7gf'=,Er0E3n$2<Pg+q
+rh,[?,<Bho@Doe:TD5s1B6U,RDu=_)bUf;AZ]CGmBP+fBK4ag_+H'hqEt[8emg;cGZd7MXR[NU(5r1=L
+&nttF$)!^4NWFkb;N&9KjVF,>CEh-L)Xef#IE*`@Bu_>[Em#PF"?p=H^]0>!@t81Blj(e:fajPIb^Rp_
+Rf0!R40nYkReb0Vd*,Q@6Vf^nfMtFT;W)r!8Y(uRRac*m>r;-ZRW1$5A:S9@@tshNU6u`Q@k7dZX0V53
+>YUMtAqe3kTc&':HRFURBk@OnQk@=@VsbLA?IpNm=[=i//"`IP`"=h97YhkiHTZ50=4,5>BEi-^0c6RO
+[A&4a53j5&Au1)k<mV9%bU7'.aPr<)Lf6Q!8F*VO:gT[oMJ2,cg]B==Fp67:0kM3t;'QE)ZVkG+(ig86
+I*)W;XIpFL+fNe(r*2)M=fW$M9f02.Aq4JW5r1b^C]=XaXKWP>"\Z;pIGCgp"G[$&HpUnJS0DVNB]`FE
+VDQmRMs=7@Me5.=1M2<uaAiAAJnBOF5$nN=XIpH(RAJ;]Aj/L:5VlcHH8W6jAj/L:5Vl%l#8+&1)$aS=
++HBH=`p*2N@o_"H^Z-d/B'L>;MIoo9%+*3GBEi-^Bt'b'A(5WTDD<K/B"h.rI7R7:d#?YSIm7'mo7cg2
+;>mEmrafd*q/jBt<FC^;naM879aE6\L%9`Q^E[F3?XL9l6o3-oO*9`0j-e[J2dQ`\$$M9CPJMr)+@L;#
+&?*DmL1(:(fNQ*b<A#;=oN]Jn@KIqSXaZ[$7#]8G2lO]91Z'HN?`K5K%+m41?QdPh>klpeF<=>+5Oj".
+3I^MNh"pX#A?4lHQOqtVLpNTu`oFJe4'?n22ajQF8gs#-Y!%EM-$1BH:e2ug>HKiidOFq,dN;hE<"e$F
+TDfSuIA"s#gP6OT\P@Li]9sN*`3H!GQ]qA(6P]/tkaS`anK+LsFhV*uj@[OJ)tGc&_*Hl"2te`m12Ors
+*TVm,?`nXSn#+d0NhDt)<76(4Fengr\R@OB[Hsk$,E_.Tq34P=mleGI"Ng1V5JI.;=JJM8I)kZFijD/Q
+MV9'%;K(+YP,7,mY+5G]`*KlXHIlq_1Gq^ZWD2hRO6&nc&f0W+dol*&:FBH(dZ*POXIYH'Y6GGS4*"Xc
+e:I'Q)lCN"6N7gs50;RQ1ng83T9l)Crptj@pkh7W8$(q5Uf#-u*W>qLn$=I`.j*HjEQdoMp=uWh(<_dQ
+SXB<rhV/\rT\eCAg2`V$X@HUBa+f`*_A.-:D?e"XkdqP3Q)KmO/NNBkgl+R;F@(#Ye<;r2\T^(QQ`HsB
+9nk8k2D7$f'Dh,<a/2I(9Z1lp1X*</pJ@<hkhYSgL(#)*r:IXuac1-!U3@8pZOA:5JkOW0l?6(3SETo%
+3Sm>$bY(J%4mX.OE[/1->+<Ep&i212W090;gK<P:`,m4[9R![sY;%Fl8$.,!DIeK7oVf5Y*62;bG7S.t
+?)\0.;N@"+7Q(j,80\5.Wu'2TBZti"cdsZ1J\H@*:/?7@4Q?&'(J_h1?Aj3i@RK=4D+9ls$eJE`bAtWS
+ACr-ER81$);u&39mMeM%Hc054Er'FpNE8B1M,XA,S)-a0d[F4a^)V,l\0]PH(%.9''fp>QbWY/VcpED\
+rScE-`Z`*sn5q=Pq>^<T&+n5%X"^+AVqnu"8gKF_1B/^3kC3@ucM]4YcME+VbTHXFEB*^=6@D\*LcF[%
+l?cJ:91gMI0>4V[dD7_u%#l)m)iZ@mQJktU'U9YH\9>WRU3D5EMFrH[X@A>VA61OVi@g]GE5F.t@23Sm
+Q)+?mUSoGlDR!'GOhP(=KMa!7m=-><a:!e$P2=H3i>>"er]guoKi#W7.cGct&r<<Z<?\*npl$Er,t8J>
+Lf#G!;5=&]p_lRoX1nI-)O<atp%)'POBN[p"_jm8Asq'N9HW)(6n"<.@369Y:b)!.\&4)D).5#0b42f)
+MaWOo'A@`tUC_+)\ktX9Y=<I2PZo5`5dRZF7tGKX7RF-D_:BP'&hR+oP(UIU.B,c[_'@j0\&9/objqAK
+%C7Abm]l`'-Dc"'0#K3peRrH\$.mE'714nZntsd`T2R?EN5\khNK+q-Qc,`J>&QPOFXjJLrNZibGu2%_
+5hj.WbKpR7C*XK<KK(D6?2U+W+Yb*p')Ikb8Mtg#&s'h>;h=rc=s1'3=m`DC<YtH`."N6?jhdlpe1S;$
+G$X@&c7gZ,0nZnY@d%5;XpT9s-Sr5h!!/,L9@L"Y;a;k7FLCB">EPq)K?I-(!eVB9=)*_u4H<P3^^.!f
+Cci,`+\L%enq5`?1N:F;I)rQ@ciho]jo<7-K49'Z9GQ:"?F:fO2Qa\FYt]VDS1PdPZTE^eU"RsX.$C8m
+m:ttLFf:>I<pS-/B=bWCMMFKCO!>`LNI)V^TEJlZP?F7G3oK][b_TtuB#)7p;UZ51DW-gojt$ouQooM_
+PI2:;$mEf`n6U:6%\d7pQF0&2c"L6`S?XsZ;X!jD<dt>*`$c:2(mK;4)VXGZi?;-Q61OD_pWBSdT\b_j
+PmI7tkdc9g>3k`>-.`=F_f(/9;6+5Gc>*Y=e/4d^*>E93Z.joN0,*n/SKen>o=E3W?DFj(ZmS1XWGVU(
+p3+X.3kpV0#g.!QXH`*5/^@`VLO8r,7,^Gr=K@*<%#W4b![el6Hh0h(+Mschb3)0p(?iEe*X1_7C@12N
+O%t$]7;A>>N0-V=>pcAWXuZ$T^M=['8?]o+[11[7<k1,qGIm-qJsYuM4D!RNg3SE/ClT2H$?GRgQ'n)\
+q+B*B!BOn0dS=WID[iH[kLY?j+p_saC\>q'$#<O>r_KWeCMVl#E.2YDp?SZ"M;97jdOB:3`Fg3,,M7lI
+=e3>k/m#33j[`P;f/CDPi5B@n;Jt"PoBWIWroGaB'P^$H]L%AZ/$t-'J)\3f%*Dpa[t!Q"!$OMN`IZm9
+(JPDk$6Oge7.?6g)QP8#LJ;nt%@F35F!D=-<=U]/a2J&f*26[s-U/CPGeH4Se3J;a^(#7UU;_]0`IT!q
+U:m0Y8QtYBN-LY>[>h#-)3m2)%Aq[c3.OAN#l^ObL\1W9aF^uAJ2,&t.&"Fm[@FJU.C[+T1;92WP1M+7
+3bNjsi^^`;G@)>WbiX%f!3D*2d=U;S]5bA6%Q7YVWaPV5FJ7KmMZX+Hd)Eij)Zj:bR,cr6/e1@koh^uZ
+fdq,_+9su6*%5s.,ZBmu/&Q2`>T=0]bnVC]TIGHG.@7Qjlf(2)>TCNrkZf+GkY__Z\AR,n(C0*Hg>h/m
+cGI.PO=RRg%cD"?&ojg3>o^ps:DX7.`PoY1\<(Coc>C<K%`Z<7&$?,p^iuJMY)@q[YSuHZ5k>U)#NhtM
+Y)<B!2!O"-pr0]JE1fkP's<o?*qbM<<C#_&p7^8W<E;QAWPugW>j6?M+@eM!*1U!>s7oYbMcXE?F`CgH
+WGunXB/j02$rKU5"g49)3#Dgc)7VZQ>Ri.5XQq`)c__Qr#B1Xj\^@NQ(C*R'=qu:A0J;Nk>oX8Z`Gq\S
+o\DZjmu%9.#3t1J/pj>"i>AMO"$$SNiW,!i\i>6+T.UW7(oW>pV.PEMn?:ntI92aD%sNjB<s<OO]MKDi
+s$Xr2F&DE9dh+;)J&dqU]JtFOTIp]Y8TH6HEX^I:!?;2aEPOct`Bj,=0+LaWK$KnP)*%odid`8+(C(1Z
+,j=g]o\Y(:@,\ZeF`DA(bYVZ=\-htTKD:.kZZoono]Y6th;dK[JZNs5!&nOr*$CK0/e3EW`<#J=3&j(S
+'n2.P`Co#=/e5n:'j%JZjgcuRL)]-0g;b7V+_W%9dJe+8J)cVt<PYq"G5;17k`;4q=1AI^qPOJUBIWP&
+iX"-IIpojA."U=n!])r+jT!.1Y!GHuN$;]\OV\2YYb\)mT3.lP?lMPI38c4E`BfG,?6!nun`#(oL_g:N
+MKhu0UI\Lmj2JioF+hEW`;rI@0+MG*n`#(oLt"UYd6SU<_U8?16HHfYa=ld8p,CPNHM,<Qo>`7/iD.T0
+LngeH6,2:ON$A3hUIZ\E'FAR)./t[/7a]Yamp<8nl%):^%hGrmJmX'g7/t0[='#J0NcQ@MkleF86bhut
+A72qV)&HZApfX:Z[\/<hMG>uk;b>s>QSlWCTNoqFr$nlS=JLL>bQd4;!X&(SI*.]ooMnFR2$sX2q;)nm
+K;%KsdrXCiKg0gmOd%cDF`Dp3"M,M%DAFX(5hqJ\8Q-`(Pfo/.n^RYloMOm*EG;eUl'4:EW5a9XJj7C(
+rQh\<C4J/SM@i0[Q'XcUR$U*6L9@Umm.4)Lnre6NU(cLd?kIrIcZg&k)k?AT"9l6EE6`HC5jb!V#7>:B
+MZ\W`d)?"egZ[YTN2*8V2_P7M`ka<WRR35RjlP1I1fn!'+EWSq%M[Pb(C*R7qMLVD<Gic-`;p%pLtY@,
+RgXeu'+VR<%lkDZ%`u:!B]HRHV<d+@JSfLKJA=(S3)F!%>oZ+2%r#tm1$GMl]6]7Cd_u60F']i>DU+.B
+lK2a?q";QgNp_f-"h(rq:/AM^#gA2/"L\mc$RZ0b*%8%N/e5Csn`#'HCL/"!\XOB?-ZsB&>]FbV^c&b`
+i*NOiP9/@G(Bk.^':=>fjp=q"QVP1Q5[YO:*%8%N/e/HF7Mc;720a*PCC2^)R*(<h"Lc^sJHFS^rn!$g
+WrW@3#o%.tEE->I`@EPN'S&Xh#7+,#MZ\tWddAiaG]BD+/4Qb#\2]:bH#WhnT,8aODfag!Ce9L043ppF
+#!0a!__PuV$])nD6p-Ugs5]lNC'K-)p8b.[8<Ko<7I#Tei5X)>Etm3heUR#&6-N=6,;?16!G;fO*4W54
+#7`S'.WD%$[D.:][hUk^WO8@*5/,e30%0W2AKQ2&W2Hg)*;GnGfDc=#`;Wbf"3kk\['bB`i8Bh>lid$c
+$63`7g4DWKr`+N%PFBK?V0OZWK=2?1R3P$%g:n]I)8WT(C'kZ&_*4oFri_^d<s9)@Ir2IbX"+5VZ%#d3
+5l4WLWDp&?c;pl>N_>8O!sdPp\s7^DWka1/X9opeeF*;$X8W%R!XBki,;MI$?lZd\N9C5ZItt8Qn#tJ!
+":c^*&qL/D#TO+G^[&=S(njf#75S&db1IN6Q%tYDM5oi2Qpfj>%oQ`Q%jL[eSi\b\Gc?m6!ineSPaCYs
+'`h"SKd1OJ7st5_5I%uls#EkgqS(,Bd$Gk(mb8N&I^#d[%ijehN<k!HAHWM0E)uO+JK6+a+^$4thV+%@
+YOgPHpp-7?r(0p6;>mM5e(5VDpU^J3-68=Hi':Cq"%0s.#BgMrSA9[r.$%2U*MQ:6/^uc^#Ei@ii4ogU
+-4_*K;*_$T-#M,;e)WP(WPCe>R8i)e;F`i`3j!4R,5i4,%UZ*pT`W?o>UZ0oh!tak"HL9Kp!e6g#H)e1
+$(i&i\B>0uk_Q\L#<Mjd^d/qM=5Z>6a5%q%AuWR3*5Y\5+Ase1?r-&/33\%.cNtTDiV)9)!ZfCq;"AZo
+P8<B<!s^P5/T>)fn)=`R3)6EfJW90\"Lufil+t9F(N/i('e8_5K'Tf5n6S$N33gc$Upt>JJV,pCWPH?8
+We5J1Gi1hW9I"LaG^A:5`u>aAd&<#@J]'&_E*rnWRg0F4/B>$Wa%o"rETlb?"!.@K]BPu]!XFiKirFQ&
+^d/rq<o?6`Ts(&'D0Pa7.rZ%i4V]s'+\Ybe3pN][5ofPsi'9dq'faQK:'D-eW2B\%Od]S>,$,9p`)0;6
+%Wp3!e@prh?ANNhj1$m8?4Jui(\XVpnb]M7q?[9Fa_]K0#<M.L^d/t5<8^#34V]sG2IbV&ZlfGU=6bn[
+$7kG@VZI+[1Di*]OS8kghOO;O!XFu<Q@9kpD`iCu]^]srj(A0)SoiNc0*XSN+,IDa;<K?l1mnCM3k2?.
+J],)53"Ut_JT(`%Y*SE,W$cD4"(;?CCebul33`4eT"op%IE=h[>(ZlNGp/4.rK$`j$]"[q8D(V[g&K)_
+HX&CW#]PUN^Rd]<hN[h#nIa]8^IWl"SgZma^_5FYr1>qO3(-`<?KBc)a?[RClrN]TT@eLQA+h)N%_NT4
+E,^+8!sd\@(c_"k<&Eoc04LU4oHN7u*<QO"S3u("JHP@0$lkdD<$^qO?:8PcH]]QA7?6F,T+D0PiNSsF
+Iq%k8YP,J>rmQct*"^^8LsMPkQZ7B2Wu(S=]GLAW]b`^&?K:iGn^WP`ch\u2-^n@D'Y\B-Jj6&27/opJ
+8>-(+*<hlQdKs_sVGHs#SpHtY&\oeprF^g#\\:L\f/Z:h*&!-_^AkKnJ4K<s!KnloB+2FB#8IaR8/,OY
+Dt-It=aI7*_+UVi]LH>GA)Haa`?d,bRbh*a;YXG37.?]4KqAcU+Xs,3J:+[gnHQjgH'<U?D4]o_"OKdn
+qL8<];5MIqiR*gcO4<FB6hhr6rpsCCs'@0B"(!3Bd6iSBkEQI2nk-?FFsu<VH/Ron$bktS"V*lu_f:Vk
+"p4c25?AsNUl$f&F:TA$G?lL;1&M_OG;$!3%ie-?8:cDo+#Vr&.i@3]*7Fup+]Tef>e[WJ#8/7Zi#nhQ
+'KCoulD<-SX$=(j'0)(QOf3\"'a9b"OlKr\nmTSu@PGn+")[r^*pj(?,ZUYUJY\/;3!cK-"V0UoLG^oC
+,ie0]?+ks8'KC'h]FM+i^"',G.t.$<F$SNoqU$$;#cXO+F8*Vg_8-O"8?,46XJC^f3!cK-"V,olCD,i7
+riLGaNZrF]V%03YJV0%6;W,@BC6phar(af4!3X$X0.n]lh:%K,[;V6\E$2,("V*l!8:^k7'e++[ZN^L:
+B22mn^f)+1OAq>D#9d(mqEJS>$OoY,-rA-=_Sc!A>[0C1&<]?e*(Y$>JHP?sUtnh-@c/A,ZSQ>VH/RUC
+Q[o61'h&XANF)SH$65SHlJU5UE1e(9JV0%6;W,@R9EkuS7t'6%q0A8in'p(;0-B*=E>Rm<FSP*YkF0e!
+8.,6nLK"4'E,bNS$lo&fP*EED?e]ON+dF&6"ST#N,Ta3XD*>hlnd-:@WG.l#Rb*]dBFC6'OZZV$qq$H[
+,7)>k`^%?V*4)+6r[XRh!b%]!CQ#l5.3:H.qq'D/(HOZt&A;ra>Oe6!_3LJ4$f1\]"qH%$b.tiIg:_ua
+[GS_pi./Y>O98Ys@j<Vp,CIRWk5WALO&XMFYM2S*i4o9d%kI#C?eR]loBed!Fnorrc'_i8&Q-K=mha$$
+BhX_;O).ns$1FIQ8@.c!IJ7:E<(m;(S#uZ!&nAH+HEWcaoYI`iV)`nBfPcXcfcU-&Y.YOCs6nQ,W-YWd
+6JqeCK>&-e@I.+iOq.2m"6Hoq&SO4`Hu7K.FOV`UXE8eTmjPSeb\<*WYiD_"i,$6<Dj0Vc@_1eP4>fb^
+<R36#P$rad*k2Z2T6o+t#Gqa3DR9f.m26J5r,[o1Esq_8K2LG\QJ#g`XGV@pmA1K^.K#FDCUS#f(>fUO
+hJVq.=Sn]2pHL*L7gYZDA9j"d\Neso!P@p3h),hZ;W>;35k3K;`VQLGjPVZ_rIem`m&=Y;$Z.,AG9(r4
+`iXrAqETQ9_T;V"qcu-Qp17Xf0/`N0I)<HrG]Y\h+4Y;APEt#h:ko@$e+&%pfQQf?3*3[Qh6tb'QkQi;
+d)i`lS%W$9ST`U7^hqEL]+52?Jc>3gD`=):*ku:Og/A]8RB:aY?c$l0PJV4a@X0bI,1q1L$\TG[K6D[B
+Nu,;mbCA,m]3uXi.*V,Y]\=D.OZ19uqcKUq0?&\b*R-UnA"Agcg8?r;]5OD;mfm#1'.H,Y\+G:-3"Oa4
+U^*Y'+3S'LM.VJ?$f?C#)1M#r5\dSPQG&FeD$)V!#Qm<T[=paS&HN#ipXk1`\XU\*<*@9,rV[V$QhIIl
+4<S4^N^U*q:N-r&#=ek;J?+R\?`K/3k]11N[_")DIC?ImSZ:ebo"X?(3'CtO,0^;uhWLeHoY,nu"CAg.
+Y8@sr^+`b;0VgmVh10[p=;W^qk^f&RhHO.I_"`Rm)[:osM]N(@/%bg)mK!8pG9X@/U':>=@*a5T"%!\'
+;8(d4]Bp8T?q<rDAhuh$E2I_AO&%6eY2;=EBmCAfRu);pI#jX='aNR^8[&`"Zh@XnI<T">']?YDH!leD
+QErahBKc'cV!tYD*\+eW:L)T9IX(if%(T.q$+K5P8J@X9k/Q"P'9i9[L6/mnNqWJ:l+UmTlLNR9%BICL
+AN@%S5UZ,%SD?KfDP[cBis<8+IRP:2gb,:H$N;+\`N()SB0l;E>L1r#q!M;%SMU,'57lEpq$S81itlU>
+pMW=J(/NVT-;_"6)<U,j6e6=>fg)sCISa\%KQk,XDFKhB=uJQg>8d$pKp5="YAq"VkE`eGgaMR_(/^Of
+ZYDD+]QHupHhL]<UR2^Q4a.V;-.`LB7Y^$l]@WJ?L<\/6"VE3C/Bp3&iZ7\ah*';[]-dm*]2V.cGp/Dg
+oB4p-_F3.["mYe^Keu/#hYq8ND?YFIkct,o:V9ar,@+%/+p#/9E%MPRCn5<AC]3t3%i"MnSL`Q'U"pVl
+%:R;j+N7N@j0gHl%M'pNBeK[Y$O>7tN)=4XI]X)^41tme(>1dYGCN!k/Qbo+O1CmC2.,h&'*90"$b&!'
+5)4rIV)E_B[[U[NAUCM$ZgPi4@qkBP+'F3U1OfcRM,<qd'j-b,UHdKL4LqKinGJpRZj[(S^Z*<F8dXk&
+#<j`cr*Q_Z2mDXV*t_oC1>gLC7]n]4!J6?=eL=oQ/eF&EDXddrR'?VbO7n+m?1t?TmM7!1/V:M^>o4ZG
+XCrb.RjhMHe5j=fBRA-R$1eqd.%_8!3\BFF>@aoK:]#`>M_P/YNYX&Ts))35acGo3l5+ijA,`Z6/L9\+
+J1ja3KaQ*OYL>h7=^H"iS/6%i6ARtRX+amI@4ej&pdY]lN.Z7n#bO%er_Io)YsOakq7H#A_Kib>Vf4aa
+q*/l[O!gM[nd24S`8E@ej\c"QI+>Lhs#,@)?B]?X!DL`6$g_2`j2^j#JJVC(TUFSN!lCk8mPP%*CB^m7
+@&;(#19\eZWcl$%j3!O3:#N,:-c'R".gX_]q`$R9g>$HF95)VIq*e\q+@>I%'0*&?Y1-F6HVJWcmDE]p
+7PVI*KPQO<n@SkFCD&gJ$,.m=_5Aq?s!J;[$$Ahg]dD7Xr$:m&_"$,sjY_VN[>fjK6#PNW,1t<>TY)UV
+BiP7fAPCpnVN%V/b3b&o$)W&Dl7):mhYd^q&ha4;\af2n"p9DE*4)bdE&QFUZ)dgE/pqBAqj[:V)_Qn;
+a`iUO_6q=#f3Wq)cAN.s8Hn3nV9[kIp<E^fRhR=h]1QFBHX[F+2HnuYgGosO^>g$dX_g4]^[uulkMd.@
+>)&ksm`\\+cG$@Up?9VG)c,RbG4'*ULXVEnP1j%S6m('1Rd:DgbubV;kWq@AkOJesaE:b3YNsm(A[pd4
+ch,/_4i'lVHT'W[^nF&rVRb`+"`_d_%V5$pF,JJP)kn4%'u:KNle]>Bi.p%lD:Vn(>AD.*#caTNVT2"@
+Nf,ni5Ce*gqQF0)T!TM9CbDTM;mt#(D3(q.%2<X]cHH(51UolR<r\VhUXSt%\npK9cWfe](K\AU9<RD[
+[VZTEnb=AEIQRMCRX!8-4P8H$CnE\sO8]I/2.MnPoGcO4XMHqBdMCkd^CapJ]>s#ipVm,DBg-Y"4de:g
+HCOKMIVI[!jP)m0G65e3TN(=f[]=u/2Of'jWc.\3kcH(8WA^Km_VfaJC5AW!QC@I/0u:pH]10InMY[Oc
+\'Zl%VL%[8"&!beYsrWIQ[N^Gl;lHk[*r'fNr-7+a*UKZRl1m<,9'"kH<p==Hetg5rMA]HSAN*`ifl`X
+SEDa%K,d!dd9Q$#-fR,1H-UuA#`CL,:ife<n=3<Ekq,dF\Qd@#%`E09So`fk\)f`M?.(O"k6rWj$]F2d
+0;%SnkJ1YhoC/9&l`>>+S0Q"L-Cf#@jD2>O:41=X*1dfk+Bn9)YS+Z]--qD]AgBU_F4pqljZFp9@Z9P6
+VbllQNlc>Ppd</K:7Uh3%*8E`RLq,r:7Ts^I!:;QE`P2I[mC&3;rLYSk;`cVXQf5EIErP]'4UX?996CM
+S:-h:'Ki:'k;b[aGtpK$`QikX<sbH3Xi!:b2X'?,/!s"D!KE$#*8,gWWS#G'i&NN#[>X4$-$o'NKq=6J
+:8-T+!uoPmO'r1;\]n'FMrt3D=e+Zn3TMQ4:>"<)<BTHI56aFCS9Xcjh:q5<Hq!Rq)q"[!ce550]6MV]
+:YCs'S3k&5#.FKPIM-suFrMHCIlfdUGcZo_7aAk`Tjfbh[iU=fg__*4V\U3\c>sce0>V_tIe_iu2Y*@t
+cZOKXp\\L:h8cI[5qi'^E$k#Y4LRDbXW$,dE0ZBe9:@GPOV(Y(ph[H6`mtIId?0DbbF?%We7En5`u2r0
+4Z=Z/*@qr=$fMHD#Y-oE.22"tKFaF.,=X.8D`GLbf7,r--?:ajFm_HaA?V+le2OVFNIIiceT8V<.TKMI
+NF]l7I4pN%8&hfa?1m?)AohfM9#*qdgO\X&NeIBJ=![G6M,WBAj-ePm&=ka&`nOt'_dA!I1\"FkY.SCo
+>Ek"*`]db=)JOA8MjMmRTEK]2Re3o\bDdQ`?[T#Im[RU`BdZ#L,GERRM"N\&V;>1t4_k3oQ'G;n\)>HD
+YkWO'bJec]Wl7/]q8JpGgcrMm!N2#2de/FN:)kDjF66uE6(EEni!V^)ps]UFkAb$XktNjSf+HnmmT)U=
+m*]`F'&,Ih)<31[oWS4bk+gFW:C`2r`%lokm(5Em*iOP(iL;@t-Q_&urBT%M?k8a/O%nAsloE;L,'sKu
+5j1bgkZZ99?j5Gd5I()iO2W]fd]d#H=)'AOaYgQ3EpR"\NN"jq(82Oqejb"Gl9<2]O7n3u[(n\P0=+j]
+F<#53]".*u3-Z\0s2=CS9teCuaN@e\C<J!eO^6]#2?<'4H/_KpDDJDD<K<)MH]hCR,8AjWS$UW#>0aC^
+jJoYr4LeLU_COBHNY),[*]L)=_rQ&D[Y5=*e"$d]goKN'Z8gk@mC^C#r?'cDJ)Xs&k5WB*s,W67pkoY<
+rpdTaaiODBiq3gGanVpOn"24i(`.RiM."LF4PWa1,B0t^SUX',:[In,k9h.^^Ma(dZ^e)KA`T]AQY*k:
+6BNm0+NV/o45C$mOuG/*&f:l"X,1[1@Od-#62&"EKm-=Q?eVEPn_D,g!M\(u0@-@^%:=*DI2eGHJT640
+prC3OruW?OB9S#3Y^;(R#3Mgopr-`P9qSprSdn2<*,IjlY!3P*Knm"8$#T`o9?3s2eS8l$;kg_i8iOTf
+C=N2B88#LdCsTMI7*X<=T"EKEp>JFpSJ^;/3^?T;g;d)V%kZ50nj85=RYZRWD2(MhIJI,PNpO<?[]1md
+)To(.11W[>i'#ImG-a!t(KR#$IU*_k52!*9NWE,3QP.b,M%rW$Cn/u[MRO^)IiNn:BO<A"G!4GknUi?-
+AlnZ>nR>4$PK>_8gMSDQA\Rgo!OI[NJYb\bU>#:\$X\5k8'&;9;X:-%TknBSfb`5?5&;PBiYDf?E7L!/
+!A.JqH!Xm-meGfQce[rhM*4H/\Zd']b#4dp[rb8C?7[Z)D3UC1<3]Zb,LnEuZr2]&1fG2Z-s!$`BO/ht
+MF_@,I&"aR)BQ7okErNX&FI#u2_+33f-oB%H)uaWZb^$tXW<n_@@<4-;K:E!`@iMt'[MIB1J<GHe3iRH
+olpEjf+Dl/3/3U@+b<9rbAn<5r\tY@3JUAu"WYXJmI'#GS2]XoG7E?iSQ_D\I[R(Zc-6'`e7<aO$rL]W
+ftG,W5O-QLdQ$7Q1X;Tt='fOS.RdK)EK"ess251U<5YTZ!PDfg;^8Og]*pRi8[\de.VttJ%J3%A>h(ZO
+:S4_c+VC]<M*mmTL5Pi'3LA9,]<+k@CXpNeArI\6:HGp[JE*!)o#5Z379$p!X_k)#pH$kaqBXoESQ&PW
+Z?<D#%SUA.Od2peM[U!IMY_3Dl]]lK8aYo"[:!S72f-h"r/t42iiMhB%2qa?c->cp"Jou]b6Zk5OnbbE
+b/SLFp*32spiFr@rR^Aiq)pVe[B<K^9tr5+4EI)u9Q8QUe_6]8`Cf]G%hW],DLKg"lFC=.Pq";`7Ua,C
+?Wp^0ap.+VK,`p;='_?65I&<P]J+_eKB@lB<ks@H'-1V%&SSR6n&-r?$fN$g+L^p`b$/BeVA@I!nFsGk
+?.P]'?<pf;m'*5;MP]sL*:mnk<#m;a$gXkMB;]ed#JR+Ea%O83W9s-<g:-+XnjkHL/IKUb]AJDcP[h1P
+bO>-9N]Bc.5B4nUmI<%CF'(5lI\4Nf$smulf5mS%BFUT19YTMT_ksWpQ9'G"c.,WkR;@La@VXFM/u$B<
+c?FJ^ZlY)XmHMAM2QJpJ&+K*YS\D0G?3&E$Z\TO?mc5_&S"Q(ujjnkQ_*$:baq@%t(@)`7ZW=):kde`S
+1[!E110V'5Rl49%5X(JEL<&YqUfZO$p"nu1>5+'rd3%oT9&TkjPFn%28aU9\Rb<6-c^o=ddgfR5i0h0)
+UULk?.,F9]_\Y[^EI!&?;PV:2:@biJV*6p9LubA+#;tp"4OqsAgbW`14%0sm<M^Gb+)4hl`TI?I\d-@6
+_SbuR-Y@%AXr3.7;iZ@Xg:be2^9J%1D*4)%Wnj?7^bq7"qsmVM(9Ajina>;cj*To`aF4#>l.\/A@5kpW
+IrR,-?f0jl4qm=PoZ).Wn5DD;39AEZ-bT8K]X#,F-6L4rot+K;FF=%YHkaKM[j_&2p[o+akPWQo0-%^?
+Em*)'G.EM)09hYR?b`N.Q+GLJH-p:$j*B1MQAm`i;%sT9*]:KpG@07e\S(P.[]N#1TZ?Xf>cV;NAfJCM
+;^QAF5'[OnfQu'<IP=m]>-B!tjeF=`RFn$Y#oc%ZF7$#]Dslq<&#$3,l9FW4ai=C0rIa(pGDb8!fAGf>
+$p)oH-H?7*JNcC'Dr0BeIJs/T7u,U&DJuINX>tZVn#,gNgL;7uYA`<BHoo(AX8_8IpYfuYfWgi>J]_`j
+rdY3d$+$2rEF/4U9oKYTf&NV"c4SHL44EJ<1IS#s[]W5:*9BQcd)PM2,YLk5o;i0kq%giP:3TWNrISOM
+pYUJ[rhjGfk5-X\Y;]h_&o0X><oa'A`FgQkEb7>a.f(:Zp2Qu?c<Ts$<c7JWHRG_"fNKQ@N9KZ*b:2<8
+p\15"q]D!$bJq=@/r>4jXNpr4'1Cq0Nr4A3WVZMWp+)s(>.hGh.843K2`H=U/fJOXMU=FY[ce-X2I1F8
+*DNHp!ZRE&?^ft>4Eij6UJd(/L`0"RjBg`c"0,+i&Kao9p&FRPIM\te+2hh&WEPq<$UdFXIc@YL1,u)p
+_'E$;SQ&m<f[`XE25mhJV!>sU_h^3Vo;5VuTluQuC[nq\<>QZ=OfE1W8O?<t+Vs=<.c(^;@$7NTkos+:
+0.0bNb2]9I;!j$;2-UeC<Is:S;RJ]F2lVU4^$K@,l@fV<D-*V?W=#/I<5l1FEDk=Zb(iq"*na+b[@g&j
+U$j)jH]b>+`?"8B7Zj]h]NEY'8QDEiSQ#dPA4TT5GQk((GCI,eW^9"O?E*4&:QVUMS8q/#/#PG-$8`eO
+<IpV%24V3n7db*91J(S^L[:h:To2kR?Hl&A6dnV,Tcd>[eOW[jANHdt<%_'+lsd?$=Yq/kn.m;t<S-fS
+2J,?8P>ki2_ZqGeI3'Q2\ktJ`.a]D>Pq#[3^D*XccP<F:;G5B8WmRmI>bikKP+RY3?02GRWO`kE:m.iG
+6\AS*82a\R(t\Sr_;\0o:9'o8_Gp3O1js7*V!>8a]9B8<p^<4aWpf\CqVS(uBCA3f0&&Z5'(l@!dEVT=
+Kl]8M.WAZgW`kIS:9*#ddih_nT4KBM^"8D?3dm/*Au&<k$[jd$<U5iDIR4t8Z)]WKRfXH^-ff^Hi9-3%
+>ksmh?&OL6SQ,9R78hZ_*GN+KP9O!iQ)*]6HuAVkc(6+WFd^U5PH&D]FM$;n,$"$tqB8jm7;pn-'',tQ
+Zli@+2b2UKP.Aj#@Tb$s5,@I!9bo*Vg%,`RME[J\<)rr58P+"p<DSn9Q;aKZhp3T+lD;MSOiNHmpQ1Qa
+gXn1>:$oKX*Rq]3V8DmX/9pN.OfJ-9EKR9E.%`kqrWQWi`hLBQeJFZLdeTm`PcLq8q*qL#o3)-(q+?g=
+PH*4"dih`9*mI8V>?SP$Wg@iV)YPGZ.uX#6Bp4?PQ0!Ts2/>?MWZ'#TWX8p/lDZ%/[DIf#[2Q/7WqrY?
+m:e(p46Ve3,uQSd0,!p[T/k)ErtTSb,H9sL(eI`"_oOcAF-tPMlu+Gi?qi"KY;pFqqJE4\f2X'>NDp)0
+>&U4:eL>pYH6>QAYPrd1WgH(i;KWknG"C.p['>gpbEbjM<L4s8SQ+.N/5gW(8BS=Mak'ju=Y&#9jCaE_
+;57oh-8XB*`q$bSa0O_n,27S2?3QsJH7MXrIMATXq]i2G:lq]>g3o!#EgaYn]LZ&?fh#0c'=@5Y>D4lP
+\3pY701NP":lq^B0gVfXmS9d.+-G&JoH7&!O_XNcHY+NfD&"%G<:sCR[&Nr6Nl'Yl>>BIu'/R!deJ/3B
+8QC_P'r7k\3K^>H$AqgU<0F98%>n+jP!!qd'mKn]MGi0;GQ5BJe`5sWG2L$Q*-UiErel+0qYDI;O0;>W
+eU%To<VPX&ll,-SP>mOkjJ2JV;YBh],ZW[P-V`m?5"X8alT98shfI8u-`QD0MkoY.ogu0pY>8'Hq[?'H
+X%+b%2"`8S.sm=4;YBh],ZS@H9_MGF8tkHG,ZWr/McB@0KqrJYj<@Uc=,BmVT+N@e4\DNMVik$001Dn\
+F%*+Of,'FH)SQ!n7B.D9?R2IqI?CQ#ogPm8Y:idR^:m-<H1V">md#d1<N8Si+)<-%_q,^(.UQPYWdK5X
+WlN_@ec-sr1$d/D<*c@4kB,UeNM2Q9;6i_mi"Dic]JPbN7#+b7eE3mf99?1CDoNr#c+eOo7Q(4Cgh:#i
+l<1#VU42+.cAP*hJf!m[E`*X$=Un>PR=qQ'WgqTLW@Es7UoO/MP,bEUG3?N\+]U26[-D2h/<69#eVr_Z
+2*E@,\)4r[GhAHcT9=#;olF1>iY[]*33L67Sc%IB5B5caXeb6#YM8L\%pM[fF2`Cq&+M?8k@OMK[\&&b
+4mDcuHC;iOf:d3l6ZrE&^JSr`n/ubJN7=L;K$_.u]mqi`RQQu9dR6PGIkHaFA."5tWVD;)^8n[\q/In8
+pDgWq6\rcm\t+nTg_5/t.@q7">nd9;W@R&$:a;[4YHZkq\TF4PWLb&P:oUa`C?3D=?hVI7YJ9;2da(-)
+hd.-Uj0D$Ccl^-(c"1>u&i<4(<)1IAm7\CnFmLNK:qV?5%SH5KHoklZj)')p%dVdk$C-L0kAcuGg-^Wt
+AFUm3eec:CJEuNfKn<Lu>b"3HeBBO&LJSe%,S]ndf%]DTH;csclqh%i;N4$,lF*n<<Uk`-L^FI/#Q)#O
+U<YDO7"k]3W0!_4U-_*VflU(7@>P<p1/X`1l8QQm'iHIn'`o<>L^N*W2@i\N<!]E3(DXe9DB<H3T!pl%
+7>5[^4;AYI_Wc$J#S1N6,&:0p'nVqk%qq=s:1sN1<!]d*,:&'2;O-OA67)b6O/PkVQWdZo#bk.3!Jh'h
+KrC+&Z2_-$m%='o@-MBtfL:K,<8Y9F$K9-s<ErK/n%dgY<!_qPRu7Wa2;#BHf02sULL_0S-Ap*JkNS^-
+3%JA,3H0RDA[n\#pHXTC^&+SH?CAsm3O0lWb:;UQ^>L6U_u-,dNpJafOW>Pc[))PUa?d(\nAl(bR5i+D
+aA0_kr5B3.A41.O3O3-%V!T/TEI>kk5u."/D3Yk#ODoN#+5)3u;_OIg;hcWi+5+ab8mWs.+5%5in,Ja\
+djI?QA,]7D7s*VTJMl-1M]_Ct56Eioo3jsOTD4Ydr1>r:7rYZZbUtr.q[lkb;:rhlj[`AcGlGSk^)%jJ
+e\SNm\gF%ZB*Ep\7OjG3RsYN;p`d:_MMZMprjrI:nN^lucP\#+@M14YE?J*q/RY3<fIs@L\j&,baZQM$
+;b,Yh=X/nMeMkL8hSrLiVAc#26]>;RalUBQ6'i42[?h2Di=PO#,TuT`,?]P09cd*KlEfgoIn8SWZ4C.V
+#L;&ffaI?[o,q2U97C\>l'Lm*H9=,uC6].<@Fr:5@=H20JFsX4bFggj`BQA3\MsONb-'pe;R>G\(=4kZ
+CF""*d]ootqBZXC,$MqJL)j6nXJ?aT$XWNaMg%8W)XFQq9*"8nNt[Or2mBErL9e"p(7i(g?"'kIJSa-O
+Uifa@l`Nk-\nc<,H.H8ZKK[';,!qc/h$'6kCMlY(D1ZmHdG((;h;(WB\@M#ORbNb(]824(OR'6_h6lYp
+f#ZB/WKT,Y1U^mkV<+ejQ-(=TG7f[B$Xhd*MKN"q#U(AFS\O)-Unjo:@UF=VQdpHdU7RU\SJL&QheML1
+?PmWjb8M;lP6\=%:,&B"8B#m=I,.4ZpUSl2!k,N6]'DM@lgDALU5.I3\Be<%Kl:\(BBCj,eeR<H`3J_k
+k.1r==VC$Q^0>(Hi4=hb^n0NN/l#ZYlmjU=pXIO#Mm!K>[I-)i,d3g:kU]J%oPd0:q8DL2mR#"]p08/A
+UTBYnZIL?@E<IFlGD4B?K,o6Oi+#"6s2;1f^>$PYH_<:&Nf4A`o5_si#YT^0#=Q#?&S)21r/$4dR-;[3
+0@"O!rt?JO2V.%)?SXLs#=gtP&`C`.F_o:cE]F9,G0_J>diT5mOd#oL@$;G)]WWR)gVT+ecn?^&T]_'>
+K1_F$K5)Z7#h:k%,J[uY&<Z/f1HE5*ek#OV1Z_\;l5l,DEE\?X:44/SD>6bR;a0s.JYfrC=<k<5bJ)kp
+`BuJVe#sJR0)]:##ea]RI`)jW?7(e-6"n2ZP05B^SMq[W7"]q;q$&u@`#VgWU`WP\(\X06bA!MJ,8L,l
+&%MuP/#>mtU@#Kg?@h1FHM/6`7=Bm_2Ys9,<6m]ol7CJf`#?/i?hQ>e"3X_/U(J`.;dD5s"D*=G7Z:l,
+I#(7Z6rJ3ULlFk7R0^n2aM4D7`M7j@@>Mk[C)Mmu5`3SV"0Li"PVEaV'9.Mrc1AGYKM[Io3;-2XL@c?j
+n.Bc3n,7lXLdlK>foq=`FOPV]d>3f:HTn/9->h4;1]hU.65IGVNomT'CtG7/24OBDM+5S/+W<'`/Lq6d
+-q`AgVQ0B>6mLRUBB!+D,d9aoCFp22_QLT]9%'(8#"2<I)YJ(V^@)VMOg$;.1=IN^?#X?)9*>jt0Mh%*
+-Ea<Vl0+O0:b"jE-e+kW3dTdpn)P[K66Uq/Ht5IGjQ8+?q7Ig%KNo$[\K<*Ef7P.nl8krtW!"T<\&T%U
+Nkq-"cC5FPGpL=.k^Q<SJlpiuL,@'ensK$RI8G`4%\0s7;+-3Ag&<n'p;9=eC?/A8EjE>R2<c9#4b.L-
+`Fi!*YgYjZ@",q#2dqY##^LQV7aq6oDZ(d9DfcY8dedl\<f!W6/qGg.5PQMo^(:sakOST*T?0R2^L't]
+pjSGG_m_"/*$fN#(F"e3q,ksuq[4=qb5[<.T+8[oPDA[sEEl2=rhJ^\g8EsOC\E2Q!0J:C.P1=!j'lDl
+V+AQbbW_aDn3bT#M6u5V8\7:)`3Gst?l*A+h"r#1-E.+uG%Y*16LY2G"piO@7clE/W]<2FUlW+Y/D+`3
+`0%Pg_U:"=V7OUX_?J)akU31)+n.992P!N5a[CLHU21Q6+#FiD/IMDL$F,`$T83KN8=e$r@2B><*p0TJ
+"aRV=_BrZB`2>PS;?Bi^2_]G/D`_)U'95,$62@+hB26hf5&n#ZV*/fqOp2PtO?DgMpHt$)iekYP&7gSF
+[>Ono/<Z(8e8SG_;I,h%SPn47K*3GVc6o"<MGgs.S/-?(/d?N*<OP')X(iGCK=>cEcR>0MX,1fU^2;B6
+=cMo>6WVN`lo&>I:c[hS)n3LFjI9se,UPd"&cQdS1&i&u[7Y9q+nh,5Kr5;;UAZel39&:s(jOi`:@Q'D
+OkKA%mC!gn/0\miD74;mNG?5qEctmN,2C4e(>..7R3M1*VNocQUIe,gPM#.39q9jeg=V)lkeu0j,*f6n
+bn1]PU7Dg!-bGqW'!e#^@mEkj-!r/=4f)72(ZjG[<iW(O5.Z5jpLAZb-#lYGLa#"q7`0u4-U&/6bl<N\
+7$Oo$U(El6+VE6Qe.`Nm30.$+,0C$M6R&NdM@^Ct_c.>27$MX]68bNTDTSi"]E!abN=lk$ePm<F6rYn3
+8=,,^;)1?!/J67SLXq4+qe(g$I,\X#k5W@i,3m]"J#>]a^DM2k&*T=#1KJgpPBh&W&rrHcPlDEs/[op%
+rjr'b_##16ohTsJe*M+mO2-,4qfnX`fX&c;59'o*Yud!#iUo-ir7D*Tf^k*Kil(bep^eGsmh6efIFe-+
+?c32dAN'&rp%$S:Zqg"ST7""A/PML'Uo.XF#\`HtPBS*2(9OrJA0qO(<2C6<-=]C.R/DV(_c@UI"<PWk
+C29^0L'B;'`Ej1XUBNANNAj[^6ehA6IQnNK[ek9uL'YHSMk&KsQn:.UonJ`)BEC>EWJr6@Aaio.Se=4[
+5eoItS&6g']\Z>kd6%d$n6R'tdFj6^??&`o2!O^fN4TdK-W%4d=W&[**0+PiiC.lgrR-Ef4;Y/nSYT2`
+E<#W(W>_0L(A3BN1%fFTJXQXYP&H57(ScY,OB]X=U$aiZ,?V1)M^A7T*kgoi!l;)6Yco.]U1b^^G9i_!
+_U56k;'u/Ba/H>faM6^O29PrUmf9;(U3Y^u`jf%%Y.`:R>W>]cMc8-&EfK*R(+;)+CE/P-f55s?p8Y99
+N<=b_54-1+]QpJ]QYMJiV\TX4P:XRj3[6(1&hK]"50bRrWeamcU_+q)Q"qMs"IdIj%d(0=8>nk+r"2_n
+]ZnUe7B?8'7H:66",Tjb#4[a9`2Rbd/!WrA[[X;gl/rurC:M/i_f7$u"&ufH$C,DI<4OW6hapZ+)E5bl
+J?>J>k;O/U\LqiJi\R$$)%MOs7R=(CC8#E0Q"q@+9UEo0"m)V^>Slh&UiK`hq]76=NoN#^jeg0XSlF`+
+TT'.)9YG6#`t24\7N\"k@r3CGH9T!Yn]c]+@'`m8\Lu-F\Y@5h#mW/RdKc="Wa%W+Q0X('l%&8e$`[H9
+IpPY,\mUZCY&]LHUas;dYd_$?<3FWX<^&"bKf^QpbqE:bq/(T[24<@aQgEP)Ea?38Q--L2W*BSiD17=C
+)oV,>E-4P0]$O0QdGOPoro"LdHg^&QVW+9^VD`jNALc<AIj\MOf6243Eg:FqDe'qKfF%,>?bZPP=7bP5
+e2H^01cQ1=f;]k_+TAY%XZH%G(Z[9<QNGHsnY#ILKr5HXJ#W@Hr:]X?gRP8?dup7b&k;[KXm7W%a"n,O
+*PcRWH2YV/ZdO?*I"+42s1H+5+$&t@It'-/J)TYl_Y[u\2*&eq^</Z#q#$"&<mrK^Ic9N[l2RQ,W3=gr
+\jd[Sljkl:Q(o3,qiCRLKr=sFrDe;K=63f_=8=3KT-*c.q-ecLs.]Hprin*!^[9A<Y8iPSmEb?arK[@t
+p?su.FBQ*IA;@CLrHho'?Zlq7=ON6.p\ORZKr=s>rOmTfY*XY)n)[%L4l>Yqjng\nrR^D>o#&$gs0BD^
+5<8N:YeS>A?[2FNfmdPT2n4!#k.uscrrMS_hDq$5\,XP@oa=Rq2>_arDI"pqf\ak:3V\!2^R+E(nFU(o
+^WI)QWr1'>.f[Z=Lh0qY+2@=;?aTj=:[4!`WT8'PIm3i-$Z]4a@K/2k^[Ul&[(j`ol`0kmIkUi_i:Fkc
+.R3:'oO"sib<OQhq3V%[rfs5k]DYn3Z+n_:c2P'(M4:a;e01F,rhEeL6&s0If4EirOSe\Y:]E<LHhhPb
+P[C#KrH3,WacR%ErDERm$W$d[qlBY!Y*E@#p)iu(Mom]nr`9$k$W$d[qti8E<0KZHU:<NjA,.b@'0.+J
+BP$=..DL>jktUEW<5&iK7JXf%q'Urh^D_0lr:kuol_F*%;SL<lq9u5^h7Lk^=e*Pf"qUHRq0$,b<Ben3
+[ITB$VtAW%rH7f]EiAo?5Kc:b=8K,RhbPHT.P)4.Qqe*WCum_^MMlEpk%K7Ms4agNNJIPn+l4H[qL:,I
+<W54QXaTXHrpl--J*u\'otT0sr(CV7rt%.Idkofp4$pPdZ*N=os7;<O]5.>*5Q2bMq)kb~>
+endstream
+endobj
+7 0 obj
+   49886
+endobj
+3 0 obj
+   << 
+      /Parent null
+      /Type /Pages
+      /MediaBox [0.0000 0.0000 675.00 156.00]
+      /Resources 8 0 R
+      /Kids [5 0 R]
+      /Count 1
+   >>
+endobj
+9 0 obj
+   [/PDF /Text /ImageC]
+endobj
+10 0 obj
+   << 
+      /S /Transparency
+      /CS /DeviceRGB
+      /I true
+      /K false
+   >>
+endobj
+11 0 obj
+   << 
+      /Alpha1
+      << 
+         /ca 1.0000
+         /CA 1.0000
+         /BM /Normal
+         /AIS false
+      >>
+   >>
+endobj
+8 0 obj
+   << 
+      /ProcSet 9 0 R
+      /ExtGState 11 0 R
+   >>
+endobj
+xref
+0 12
+0000000000 65535 f 
+0000000015 00000 n 
+0000000315 00000 n 
+0000050629 00000 n 
+0000000445 00000 n 
+0000000521 00000 n 
+0000000609 00000 n 
+0000050605 00000 n 
+0000051083 00000 n 
+0000050799 00000 n 
+0000050838 00000 n 
+0000050940 00000 n 
+trailer
+<< 
+   /Size 12
+   /Root 2 0 R
+   /Info 1 0 R
+>>
+startxref
+51156
+%%EOF
diff --git a/presentation/presentation.pdf b/presentation/presentation.pdf
index 369f70bbd52c48873119a02e7ebd613b08dba791..d82a5d2cb2e57d67deaf7b124779c09e4abaf472 100644
Binary files a/presentation/presentation.pdf and b/presentation/presentation.pdf differ
diff --git a/presentation/presentation.tex b/presentation/presentation.tex
index c19de51978996ffc5016f86891b6bce975c346c5..c5a9c35923361aecbc247057a326674c9e8f6e23 100644
--- a/presentation/presentation.tex
+++ b/presentation/presentation.tex
@@ -1,79 +1,139 @@
 \documentclass[aspectratio=169]{beamer}
 \usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{listings}
 
 \usetheme{Madrid}
 \usecolortheme{default}
 
 %------------------------------------------------------------
-\title[About Beamer]
-{About the Beamer class in presentation making}
+\title[MapReduce]
+{Hadoop MapReduce}
 
-\subtitle{A short story}
+\author[Claudio, Gabriell]
+{Claudio~Scheer\inst{1} \and Gabriell~Araujo\inst{1}}
 
-\author[Arthur, Doe]
-{A.~B.~Arthur\inst{1} \and J.~Doe\inst{2}}
-
-\institute[VFU]
+\institute[PUCRS]
 {
 	\inst{1}
-	Faculty of Physics\\
-	Very Famous University
-	\and
-	\inst{2}
-	Faculty of Chemistry\\
-	Very Famous University
+	Master's Degree in Computer Science\\
+	Pontifical Catholic University of Rio Grande do Sul - PUCRS
 }
 
-\date[VLC 2014]
-{Very Large Conference, April 2014}
+\date[2020]
+{High Performance for Big Data Applications}
 %------------------------------------------------------------
 
-
-
 %------------------------------------------------------------
 \AtBeginSection[]
 {
 	\begin{frame}
 		\frametitle{Table of Contents}
+
 		\tableofcontents[currentsection]
 	\end{frame}
 }
 %------------------------------------------------------------
 
-
 \begin{document}
 
 \frame{\titlepage}
 
-
 %---------------------------------------------------------
 \begin{frame}
 	\frametitle{Table of Contents}
+
 	\tableofcontents
 \end{frame}
 %---------------------------------------------------------
 
 %---------------------------------------------------------
-\section{First section}
+\section{Hadoop}
 
 \begin{frame}
-	\frametitle{Sample frame title}
-	This is a text in second frame. For the sake of showing an example.
+	\frametitle{What we mean by Hadoop}
 
-	\begin{itemize}
-		\item<1-> Text visible on slide 1
-		\item<2-> Text visible on slide 2
-		\item<3> Text visible on slides 3
-		\item<4-> Text visible on slide 4
-	\end{itemize}
+	\begin{center}
+		\includegraphics[height=1\textheight,width=0.6\textwidth,keepaspectratio]{./images/hadoop.pdf}
+		{\tiny \href{https://data-flair.training/blogs/hadoop-ecosystem-components}{https://data-flair.training/blogs/hadoop-ecosystem-components}}
+	\end{center}
+\end{frame}
+
+\begin{frame}
+	\frametitle{MapReduce execution flow}
+
+	\begin{center}
+		\includegraphics[height=1\textheight,width=1\textwidth,keepaspectratio]{./images/map-reduce.pdf}
+		{\tiny \href{https://data-flair.training/blogs/hadoop-ecosystem-components}{https://data-flair.training/blogs/hadoop-ecosystem-components}}
+	\end{center}
+\end{frame}
+
+\begin{frame}[fragile]
+	\frametitle{Custom data types}
+
+	\begin{columns}
+		\column{0.4\textwidth}
+		\begin{itemize}
+			\item LongWritable = long;
+			\item IntWritable = int;
+			\item Text = String;
+			\item ...
+		\end{itemize}
+
+		\column{0.6\textwidth}
+		\begin{lstlisting}[language=java,basicstyle=\tiny,columns=fullflexible]
+public class IntWritable implements WritableComparable<IntWritable> {
+  private int value;
+
+  public IntWritable(int value) { set(value); }
+
+  public void set(int value) { this.value = value; }
+
+  public int get() { return value; }
+
+  @Override
+  public void readFields(DataInput in) throws IOException {
+    value = in.readInt();
+  }
+
+  @Override
+  public void write(DataOutput out) throws IOException {
+    out.writeInt(value);
+  }
+
+  @Override
+  public int compareTo(IntWritable o) {
+    int thisValue = this.value;
+    int thatValue = o.value;
+    return (thisValue < thatValue ? -1 : (thisValue == thatValue ? 0 : 1));
+  }
+}
+        \end{lstlisting}
+	\end{columns}
+
+	\begin{center}
+		{\tiny \href{https://hadoop.apache.org/docs/current/api/org/apache/hadoop/io/package-summary.html}{https://hadoop.apache.org/docs/current/api/org/apache/hadoop/io/package-summary.html}}
+	\end{center}
 \end{frame}
 
 \begin{frame}
-	\frametitle{Image}
-	\begin{figure}
-		\includegraphics[height=0.7\textheight,width=0.3\textwidth,keepaspectratio]{./images/lion-logo.jpg}
-		\caption{here's the image!}
-	\end{figure}
+	\frametitle{InputFormat}
+
+	\begin{itemize}
+		\item TextInputFormat: <LongWritable, Text>
+		\item KeyValueTextInputFormat: <Text, Text>
+		      \begin{itemize}
+			      \item Key splitted by \textbackslash t;
+		      \end{itemize}
+		\item NLineInputFormat: <LongWritable, Text>
+		      \begin{itemize}
+			      \item config.setInt(``mapreduce.input.lineinputformat.linespermap'', 10000);
+		      \end{itemize}
+		\item Customs InputFormat must implement `getSplits' and `getRecordReader';
+		      \begin{itemize}
+			      \item {\tiny \href{https://hadoop.apache.org/docs/stable/api/org/apache/hadoop/mapred/InputFormat.html}{https://hadoop.apache.org/docs/stable/api/org/apache/hadoop/mapred/InputFormat.html}}
+		      \end{itemize}
+	\end{itemize}
 \end{frame}
 
 \begin{frame}
@@ -86,7 +146,11 @@
 %---------------------------------------------------------
 
 %---------------------------------------------------------
-\section{Second section}
+\section{Examples}
+
+- WordCount;
+- CountProductsSold;
+-
 
 \begin{frame}
 	\frametitle{Sample frame title}
diff --git a/projects/word-counting/src/main/java/WordCount.java b/projects/word-counting/src/main/java/WordCount.java
index ddc65f105c6fc24a7746db5c3ccfebe3cecfb88d..894ff71531cba255dfa9072579e2f51d0518aa27 100644
--- a/projects/word-counting/src/main/java/WordCount.java
+++ b/projects/word-counting/src/main/java/WordCount.java
@@ -3,13 +3,16 @@
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
 import org.apache.hadoop.io.Text;
 import org.apache.hadoop.mapreduce.Job;
 import org.apache.hadoop.mapreduce.MRJobConfig;
 import org.apache.hadoop.mapreduce.Mapper;
 import org.apache.hadoop.mapreduce.Reducer;
 import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
+import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
+import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
 
 import java.io.IOException;
 import java.util.StringTokenizer;
@@ -17,12 +20,12 @@ import java.util.StringTokenizer;
 public class WordCount {
 
     // https://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapreduce/Mapper.html
-    public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {
+    public static class TokenizerMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
         private final static IntWritable one = new IntWritable(1);
         private Text word = new Text();
 
         @Override
-        public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
+        public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
             StringTokenizer itr = new StringTokenizer(value.toString());
             while (itr.hasMoreElements()) {
                 word.set(itr.nextToken());
@@ -54,8 +57,8 @@ public class WordCount {
         job.setCombinerClass(IntSumReducer.class);
         job.setOutputKeyClass(Text.class);
         job.setOutputValueClass(IntWritable.class);
-        FileInputFormat.addInputPath(job, new Path(args[0]));
-        FileOutputFormat.setOutputPath(job, new Path(args[1]));
+        TextInputFormat.addInputPath(job, new Path(args[0]));
+        TextOutputFormat.setOutputPath(job, new Path(args[1]));
         System.exit(job.waitForCompletion(true) ? 0 : 1);
     }
 }
\ No newline at end of file