# HG changeset patch # User kazz@kazzone.st.ie.u-ryukyu.ac.jp # Date 1256881692 -32400 # Node ID 1f2eb3b9a8765877f32d186334cefc1dce124308 # Parent 2322b05671731a22039c18e674cadf01357e6dc7 added meta engine diff -r 2322b0567173 -r 1f2eb3b9a876 middle/graffle/meta_engine.graffle Binary file middle/graffle/meta_engine.graffle has changed diff -r 2322b0567173 -r 1f2eb3b9a876 middle/middle.tex --- a/middle/middle.tex Fri Oct 30 13:16:36 2009 +0900 +++ b/middle/middle.tex Fri Oct 30 14:48:12 2009 +0900 @@ -36,13 +36,10 @@ サーバーに負荷が集中してしまい、適切な処理を行なう事ができないというのが 現状である。 -そこで、1つのLindaサーバーに負荷が集中しないようにするためには、複数の -Lindaサーバーを接続し、それぞれのタプルスペースを連携させ、タプルを同期 -する必要がある。 - 本研究室では、これまでにFederated Lindaという、複数のLindaを接続したモデ -ルを提案し、実装してきた。これを改良して行くことで、Lindaの利便性とスケー -ラビリティを兼ね備えた、新しい分散プログラムのかたちを目指すことにする。 +ルを提案し、実装してきた。これはタプル同士の同期を行う。これを改良して行 +くことで、Lindaの利便性とスケーラビリティを兼ね備えた、新しい分散プログ +ラムのかたちを目指すことにする。 \section{作成するネットワークゲームの概要} 本研究では、Federated Linda上で動く、ネットワークゲームの例題を開発し、テス @@ -89,12 +86,12 @@ このようにプログラミングを行うことによって、Client上で表示し、動いている オブジェクトを、Viewer側でも同じように動いているように見せることができる。 +また、これらの他に、それぞれcallbackタイプのAPIが存在する。 \section{通信プロトコルの概要} \subsection{Linda API} -Lindaの通信は、表\ref{tab:lindaapi}に示した、シンプルなAPIから成り立っている。 - \begin{table}[htbp] +\begin{center} \begin{tabular}[t]{|l|l|} \hline in(id)&タプル空間から取り出す。\\&タプル空間にタプルは残らない。\\ @@ -106,10 +103,12 @@ out(id,data)&タプル空間にタプルを入れる。 \\ \hline \end{tabular} +\end{center} \caption{LindaのAPI} \label{tab:lindaapi} \end{table} -また、これらの他に、それぞれcallbackタイプのAPIが存在する。 + +Lindaの通信は、表\ref{tab:lindaapi}に示した、シンプルなAPIから成り立っている。 さらに、Clientの区別を付けるために、それぞれに固有のIDを割り振らないとい けない。65535番のタプルIDにinを行うと、固有のIDがインクリメントして割り @@ -138,12 +137,21 @@ \label{fig:send_position} \end{figure} -\section{Meta Engineを用いたFederated Linda} +\section{FDLServerとMeta Engine} +現在のFederated Lindaは、FDLServerとMeta Engineが連携を取ることで、通信 +を行っている。従来はProtocol Engineが中継して通信を行っていた。このProtocol +Engineは、LindaのAPIを用いてタプルの入出力を行う。 + +一方、Meta Engineは、FDLServerの持つタプルを直接編集することができる。し +たがって、FDLServerとMeta Engineは1対1の接続を行う方がよい。 + +\begin{figure}[htbp] +\includegraphics[width=8.5cm]{pic/meta_engine.eps} +\caption{Meta EngineとFDLServerのRing構成図} +\label{fig:send_position} +\end{figure} \section{今後の課題} -現在では、単体のFederated Linda Serverを用いており、Federated Lindaの肝 -であるタプルの同期などのテストに関しては実験途中である。 - 今後の研究では、クラスターを用いて、複数台のFederated Linda Serverを連携さ せてFederated Lindaのスケーラビリティを測りたい。そのとき、必要に応じて、 デバッグ用のツールを作成していく必要があるだろう。実験の方法として、大量 @@ -152,11 +160,11 @@ また、Federated Lindaを用いて、ClientとFDLServer間の通信量が減っても、 FDLServer同士での通信が増えてしまっては、あまり意味が無い。それを解決す -るためには、シンプルなリング状の構成から、ツリー状にルーティングを行い、 -通信量のオーダーを少なくする必要があると考えられる。 +るためには、現在のシンプルなリング状の構成ではなく、ツリー状にルーティン +グを行い、通信量のオーダーを少なくする必要があると考えられる。 -このように、Federated Lindaのプロトコルを追加・修正していく必要があるだ -ろう。 +このように、Federated Lindaのプロトコルを必要に合わせて追加・修正してい +きたい。 \thispagestyle{fancy} \begin{thebibliography}{9} diff -r 2322b0567173 -r 1f2eb3b9a876 middle/pic/meta_engine.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/middle/pic/meta_engine.eps Fri Oct 30 14:48:12 2009 +0900 @@ -0,0 +1,1408 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%HiResBoundingBox: 0.000000 0.000000 361.000000 249.000000 +%APL_DSC_Encoding: UTF8 +%%Title: (Unknown) +%%Creator: (Unknown) +%%CreationDate: (Unknown) +%%For: (Unknown) +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 0 0 361 249 +%%EndComments +%%BeginProlog +%%BeginFile: cg-pdf.ps +%%Copyright: Copyright 2000-2004 Apple Computer Incorporated. +%%Copyright: All Rights Reserved. +currentpacking true setpacking +/cg_md 141 dict def +cg_md begin +/L3? languagelevel 3 ge def +/bd{bind def}bind def +/ld{load def}bd +/xs{exch store}bd +/xd{exch def}bd +/cmmtx matrix def +mark +/sc/setcolor +/scs/setcolorspace +/dr/defineresource +/fr/findresource +/T/true +/F/false +/d/setdash +/w/setlinewidth +/J/setlinecap +/j/setlinejoin +/M/setmiterlimit +/i/setflat +/rc/rectclip +/rf/rectfill +/rs/rectstroke +/f/fill +/f*/eofill +/sf/selectfont +/s/show +/xS/xshow +/yS/yshow +/xyS/xyshow +/S/stroke +/m/moveto +/l/lineto +/c/curveto +/h/closepath +/n/newpath +/q/gsave +/Q/grestore +counttomark 2 idiv +{ld}repeat pop +/SC{ + /ColorSpace fr scs +}bd +/sopr /setoverprint where{pop/setoverprint}{/pop}ifelse ld +/soprm /setoverprintmode where{pop/setoverprintmode}{/pop}ifelse ld +/cgmtx matrix def +/sdmtx{cgmtx currentmatrix pop}bd +/CM {cgmtx setmatrix}bd +/cm {cmmtx astore CM concat}bd +/W{clip newpath}bd +/W*{eoclip newpath}bd +statusdict begin product end dup (HP) anchorsearch{ + pop pop pop + true +}{ + pop + (hp) anchorsearch{ + pop pop true + }{ + pop false + }ifelse +}ifelse +{ + { + { + pop pop + (0)dup 0 4 -1 roll put + F charpath + }cshow + } +}{ + {F charpath} +}ifelse +/cply exch bd +/cps {cply stroke}bd +/pgsave 0 def +/bp{/pgsave save store}bd +/ep{pgsave restore showpage}def +/re{4 2 roll m 1 index 0 rlineto 0 exch rlineto neg 0 rlineto h}bd +/scrdict 10 dict def +/scrmtx matrix def +/patarray 0 def +/createpat{patarray 3 1 roll put}bd +/makepat{ +scrmtx astore pop +gsave +initgraphics +CM +patarray exch get +scrmtx +makepattern +grestore +setpattern +}bd +/cg_BeginEPSF{ + userdict save/cg_b4_Inc_state exch put + userdict/cg_endepsf/cg_EndEPSF load put + count userdict/cg_op_count 3 -1 roll put + countdictstack dup array dictstack userdict/cg_dict_array 3 -1 roll put + 3 sub{end}repeat + /showpage {} def + 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin + 10 setmiterlimit [] 0 setdash newpath + false setstrokeadjust false setoverprint +}bd +/cg_EndEPSF{ + countdictstack 3 sub { end } repeat + cg_dict_array 3 1 index length 3 sub getinterval + {begin}forall + count userdict/cg_op_count get sub{pop}repeat + userdict/cg_b4_Inc_state get restore + F setpacking +}bd +/cg_biproc{currentfile/RunLengthDecode filter}bd +/cg_aiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}bd +/ImageDataSource 0 def +L3?{ + /cg_mibiproc{pop pop/ImageDataSource{cg_biproc}def}bd + /cg_miaiproc{pop pop/ImageDataSource{cg_aiproc}def}bd +}{ + /ImageBandMask 0 def + /ImageBandData 0 def + /cg_mibiproc{ + string/ImageBandMask xs + string/ImageBandData xs + /ImageDataSource{[currentfile/RunLengthDecode filter dup ImageBandMask/readstring cvx + /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd + }bd + /cg_miaiproc{ + string/ImageBandMask xs + string/ImageBandData xs + /ImageDataSource{[currentfile/ASCII85Decode filter/RunLengthDecode filter + dup ImageBandMask/readstring cvx + /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd + }bd +}ifelse +/imsave 0 def +/BI{save/imsave xd mark}bd +/EI{imsave restore}bd +/ID{ +counttomark 2 idiv +dup 2 add +dict begin +{def} repeat +pop +/ImageType 1 def +/ImageMatrix[Width 0 0 Height neg 0 Height]def +currentdict dup/ImageMask known{ImageMask}{F}ifelse exch +L3?{ + dup/MaskedImage known + { + pop + << + /ImageType 3 + /InterleaveType 2 + /DataDict currentdict + /MaskDict + << /ImageType 1 + /Width Width + /Height Height + /ImageMatrix ImageMatrix + /BitsPerComponent 1 + /Decode [0 1] + currentdict/Interpolate known + {/Interpolate Interpolate}if + >> + >> + }if +}if +exch +{imagemask}{image}ifelse +end +}bd +/cguidfix{statusdict begin mark version end +{cvr}stopped{cleartomark 0}{exch pop}ifelse +2012 lt{dup findfont dup length dict begin +{1 index/FID ne 2 index/UniqueID ne and +{def} {pop pop} ifelse}forall +currentdict end definefont pop +}{pop}ifelse +}bd +/t_array 0 def +/t_i 0 def +/t_c 1 string def +/x_proc{ + exch t_array t_i get add exch moveto + /t_i t_i 1 add store +}bd +/y_proc{ + t_array t_i get add moveto + /t_i t_i 1 add store +}bd +/xy_proc{ + + t_array t_i 2 copy 1 add get 3 1 roll get + 4 -1 roll add 3 1 roll add moveto + /t_i t_i 2 add store +}bd +/sop 0 def +/cp_proc/x_proc ld +/base_charpath +{ + /t_array xs + /t_i 0 def + { + t_c 0 3 -1 roll put + currentpoint + t_c cply sop + cp_proc + }forall + /t_array 0 def +}bd +/sop/stroke ld +/nop{}def +/xsp/base_charpath ld +/ysp{/cp_proc/y_proc ld base_charpath/cp_proc/x_proc ld}bd +/xysp{/cp_proc/xy_proc ld base_charpath/cp_proc/x_proc ld}bd +/xmp{/sop/nop ld /cp_proc/x_proc ld base_charpath/sop/stroke ld}bd +/ymp{/sop/nop ld /cp_proc/y_proc ld base_charpath/sop/stroke ld}bd +/xymp{/sop/nop ld /cp_proc/xy_proc ld base_charpath/sop/stroke ld}bd +/refnt{ +findfont dup length dict copy dup +/Encoding 4 -1 roll put +definefont pop +}bd +/renmfont{ +findfont dup length dict copy definefont pop +}bd +L3? dup dup{save exch}if +/Range 0 def +/DataSource 0 def +/val 0 def +/nRange 0 def +/mulRange 0 def +/d0 0 def +/r0 0 def +/di 0 def +/ri 0 def +/a0 0 def +/a1 0 def +/r1 0 def +/r2 0 def +/dx 0 def +/Nsteps 0 def +/sh3tp 0 def +/ymax 0 def +/ymin 0 def +/xmax 0 def +/xmin 0 def +/setupFunEval +{ + begin + /nRange Range length 2 idiv store + /mulRange + + [ + 0 1 nRange 1 sub + { + 2 mul/nDim2 xd + Range nDim2 get + Range nDim2 1 add get + 1 index sub + + 255 div + exch + }for + ]store + end +}bd +/FunEval +{ + begin + + nRange mul /val xd + + 0 1 nRange 1 sub + { + dup 2 mul/nDim2 xd + val + add DataSource exch get + mulRange nDim2 get mul + mulRange nDim2 1 add get + add + }for + end +}bd +/max +{ + 2 copy lt + {exch pop}{pop}ifelse +}bd +/sh2 +{ + /Coords load aload pop + 3 index 3 index translate + + 3 -1 roll sub + 3 1 roll exch + sub + 2 copy + dup mul exch dup mul add sqrt + dup + scale + atan + + rotate + + /Function load setupFunEval + + + clippath {pathbbox}stopped {0 0 0 0}if newpath + /ymax xs + /xmax xs + /ymin xs + /xmin xs + currentdict/Extend known + { + /Extend load 0 get + { + 0/Function load FunEval sc + xmin ymin xmin abs ymax ymin sub rectfill + }if + }if + + /Nsteps/Function load/Size get 0 get 1 sub store + /dx 1 Nsteps div store + gsave + /di ymax ymin sub store + /Function load + + 0 1 Nsteps + { + 1 index FunEval sc + 0 ymin dx di rectfill + dx 0 translate + }for + pop + grestore + currentdict/Extend known + { + /Extend load 1 get + { + Nsteps/Function load FunEval sc + 1 ymin xmax 1 sub abs ymax ymin sub rectfill + }if + }if +}bd +/shp +{ + 4 copy + + dup 0 gt{ + 0 exch a1 a0 arc + }{ + pop 0 moveto + }ifelse + dup 0 gt{ + 0 exch a0 a1 arcn + }{ + pop 0 lineto + }ifelse + + fill + + dup 0 gt{ + 0 exch a0 a1 arc + }{ + pop 0 moveto + }ifelse + dup 0 gt{ + 0 exch a1 a0 arcn + }{ + pop 0 lineto + }ifelse + + fill +}bd +/calcmaxs +{ + + xmin dup mul ymin dup mul add sqrt + xmax dup mul ymin dup mul add sqrt + xmin dup mul ymax dup mul add sqrt + xmax dup mul ymax dup mul add sqrt + max max max +}bd +/sh3 +{ + /Coords load aload pop + 5 index 5 index translate + 3 -1 roll 6 -1 roll sub + 3 -1 roll 5 -1 roll sub + 2 copy dup mul exch dup mul add sqrt + /dx xs + 2 copy 0 ne exch 0 ne or + { + + exch atan rotate + }{ + pop pop + }ifelse + + /r2 xs + /r1 xs + /Function load + dup/Size get 0 get 1 sub + /Nsteps xs + setupFunEval + + + + + + dx r2 add r1 lt{ + + 0 + }{ + dx r1 add r2 le + { + 1 + }{ + r1 r2 eq + { + 2 + }{ + 3 + }ifelse + }ifelse + }ifelse + /sh3tp xs + clippath {pathbbox}stopped {0 0 0 0}if + newpath + /ymax xs + /xmax xs + /ymin xs + /xmin xs + + dx dup mul r2 r1 sub dup mul sub dup 0 gt + { + sqrt r2 r1 sub atan + /a0 exch 180 exch sub store + /a1 a0 neg store + }{ + pop + /a0 0 store + /a1 360 store + }ifelse + currentdict/Extend known + { + /Extend load 0 get r1 0 gt and + { + 0/Function load FunEval sc + + + + + { + { + dx 0 r1 360 0 arcn + xmin ymin moveto + xmax ymin lineto + xmax ymax lineto + xmin ymax lineto + xmin ymin lineto + eofill + } + { + r1 0 gt{0 0 r1 0 360 arc fill}if + } + { + + + + + 0 r1 xmin abs r1 add neg r1 shp + } + { + + + r2 r1 gt{ + + 0 r1 + r1 neg r2 r1 sub div dx mul + 0 + shp + }{ + + + + 0 r1 calcmaxs + dup + + r2 add dx mul dx r1 r2 sub sub div + neg + exch 1 index + abs exch sub + shp + }ifelse + } + }sh3tp get exec + }if + }if + + /d0 0 store + /r0 r1 store + /di dx Nsteps div store + /ri r2 r1 sub Nsteps div store + /Function load + 0 1 Nsteps + { + 1 index FunEval sc + d0 di add r0 ri add d0 r0 shp + { + + d0 0 r0 a1 a0 arc + d0 di add 0 r0 ri add a0 a1 arcn + fill + + + d0 0 r0 a0 a1 arc + d0 di add 0 r0 ri add a1 a0 arcn + fill + }pop + + + /d0 d0 di add store + /r0 r0 ri add store + }for + pop + + currentdict/Extend known + { + /Extend load 1 get r2 0 gt and + { + Nsteps/Function load FunEval sc + + + + + { + { + dx 0 r2 0 360 arc fill + } + { + dx 0 r2 360 0 arcn + xmin ymin moveto + xmax ymin lineto + xmax ymax lineto + xmin ymax lineto + xmin ymin lineto + eofill + } + { + + + xmax abs r1 add r1 dx r1 shp + } + { + + r2 r1 gt{ + + + + calcmaxs dup + + r1 add dx mul dx r2 r1 sub sub div + exch 1 index + exch sub + dx r2 + shp + }{ + + r1 neg r2 r1 sub div dx mul + 0 + dx + r2 + shp + }ifelse + } + } + sh3tp get exec + }if + }if +}bd +/sh +{ + begin + /ShadingType load dup dup 2 eq exch 3 eq or + { + gsave + newpath + /ColorSpace load scs + currentdict/BBox known + { + /BBox load aload pop + 2 index sub + 3 index + 3 -1 roll exch sub + exch rectclip + }if + 2 eq + {sh2}{sh3}ifelse + grestore + }{ + + pop + (DEBUG: shading type unimplemented\n)print flush + }ifelse + end +}bd +{restore}if not dup{save exch}if + L3?{ + /sh/shfill ld + /csq/clipsave ld + /csQ/cliprestore ld + }if +{restore}if +end +setpacking +%%EndFile +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%PageBoundingBox: 0 0 361 249 +%%BeginPageSetup +cg_md begin +bp +sdmtx +%RBIBeginFontSubset: Helvetica +%!FontType1-1.0: Helvetica 1.0000.0.0000 + 14 dict begin/FontName /Helvetica def + /PaintType 0 def + /Encoding 256 array 0 1 255{1 index exch/.notdef put}for + dup 33 /F put + dup 34 /D put + dup 35 /L put + dup 36 /i put + dup 37 /n put + dup 38 /d put + dup 39 /a put + dup 40 /space put + dup 41 /S put + dup 42 /e put + dup 43 /r put + dup 44 /v put + dup 45 /M put + dup 46 /t put + dup 47 /E put + dup 48 /g put + dup 49 /C put + dup 50 /l put + readonly def + 42/FontType resourcestatus{pop pop false}{true}ifelse + %APLsfntBegin + {currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if + /FontType 42 def + /FontMatrix matrix def + /FontBBox[2048 -1947 1 index div -985 2 index div 2961 3 index div 2297 5 -1 roll div]cvx def + /sfnts [< + 74727565000900000000000063767420000000000000009C0000036C6670676D000000000000040800000A0C676C79660000000000000E1400000F38686561640000000000001D4C00000038686865610000000000001D8400000024686D74780000000000001DA80000004C6C6F63610000000000001DF4000000286D6178700000000000001E1C00000020707265700000000000001E3C000003CF05C0001005BD00280580001A042F001F0000FFD90000FFDA0000FFD9FE55FFE605C70010FE6DFFF1033B000000B9000000B902FE3F3C00C0008D009B00AF000600A800C00028005E009800C9016A00B9015C00B400D6011E002E0080000400B8004C00CC01FFFFD1006600A400AF007400C2009500B1000C0028006D0015004C008E0125FF7A000C0040004C00620084FFA200240038008600BD0039005E008E00EDFFA9FFB300400052005500AA00AB00C200CB012302B10413FFAEFFE4000800510074008400AA00D1FF4CFFAF0012002C004200500051008400BE012503DAFF680018003B0098009C009F00A100C100EC018201B4FF68FF76FFD0FFE100020018001C00530053007D01B401E103AF0486FF9CFFEAFFFE001F0028002A00520060009300A300AA00AF00AF00C001000145016B0174019301950240028202B404850517FEFD00060029004700470048006F008800B400B900C400F200F901EF02180310037403C5FF35FFF3000B004B004C0052005500650076007600870087008E00AB00BB0106013001430150017D0194019501D3022A025502580277027802E6034E035C037903D3047304B2058C0598060BFEF5FFBBFFC7FFD50017001D005B0072007E009C00C200D000F400FA01030106011C0125013B0142015E015E0180019B02B901A101B9025001C001D002AA01DF01E301EF01FB0205020C0215022B0274029302AB02C202CE03690395039903DF03F5043E050205A105E5062507DBFE62FE89FECEFF3BFFE1FFF800030008002100390042004E005F0061006F00700034007F008E00AD00AD00AF00BD00C400C500C900C900C900E3011C00ED00F800F901000112011A0132014D014D014E014F01660169019E01BA01BA01BE01E301EF01F602000200020902110217021C02530262026D028002D50280031B032A034A035A03AF03AF03C803D603FB03FB04050413041504470449008C046D049A049A04A604A804B204CF0539053E054E055605800589058C036305D105D6067E068E06B206EF06F00728074C076F078C00B400C900C000C10000000000000000000000000004012400AF0032006E0063014401620096014301A10161008A00740064018801EF01700028FF5D037E0347023000AA00BE007B0062009A007D0089035C00A1FFD803AA00D70093006C0000008000A70442001D0597001D00820030002A + 002A002A002A002A40292A292827262524232221201F1E1D1C1B1A191817161514131211100D0C0B0A090807060504030201002C4523466020B02660B004262348482D2C452346236120B02661B004262348482D2C45234660B0206120B04660B004262348482D2C4523462361B0206020B02661B02061B004262348482D2C45234660B0406120B06660B004262348482D2C4523462361B0406020B02661B04061B004262348482D2C0110203C003C2D2C20452320B0CD442320B8015A51582320B08D44235920B0ED51582320B04D44235920B09051582320B00D44235921212D2C20204518684420B001602045B04676688A4560442D2C01B9400000000A2D2C00B9000040000B2D2C2045B00043617D6818B0004360442D2C45B01A234445B01923442D2C2045B00325456164B050515845441B2121592D2C20B0032552582359212D2C69B04061B0008B0C6423648BB8400062600C642364615C58B0036159B002602D2C45B0112BB0172344B0177AE5182D2C45B0112BB01723442D2C45B0112BB017458CB0172344B0177AE5182D2CB002254661658A46B040608B482D2CB0022546608A46B040618C482D2C4B53205C58B002855958B00185592D2C20B0032545B019236A4445B01A23444565234520B00325606A20B009234223688A6A606120B0005258B21A401A4523614459B0005058B219401945236144592D2CB9187E3B210B2D2CB92D412D410B2D2CB93B21187E0B2D2CB93B21E7830B2D2CB92D41D2C00B2D2CB9187EC4E00B2D2C4B525845441B2121592D2C0120B003252349B04060B0206320B000525823B002253823B002256538008A63381B212121212159012D2C456920B00943B0022660B00325B005254961B0805358B21940194523616844B21A401A4523606A44B209191A45652345604259B00943608A103A2D2C01B005251023208AF500B0016023EDEC2D2C01B005251023208AF500B0016123EDEC2D2C01B0062510F500EDEC2D2C20B001600110203C003C2D2C20B001610110203C003C2D2C764520B003254523616818236860442D2C7645B00325452361682318456860442D2C7645B0032545616823452361442D2C4569B014B0324B505821B0205961442DB8002B2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8002C2C2020456944B001602DB8002D2CB8002C2A212DB8002E2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8002F2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800302C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800312C2020456944B0016020 + 20457D691844B001602DB800322CB800312A2DB800332C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800342C4B535845441B2121592DB800352C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800362C2020456944B001602DB800372CB800362A212DB800382C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800392C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8003A2C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB8003B2C2020456944B001602020457D691844B001602DB8003C2CB8003B2A2DB8003D2C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8003E2C4B535845441B2121592DB8003F2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800402C2020456944B001602DB800412CB800402A212DB800422C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800432C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800442C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800452C2020456944B001602020457D691844B001602DB800462CB800452A2DB800472C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800482C4B535845441B2121592DB800492C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8004A2C2020456944B001602DB8004B2CB8004A2A212DB8004C2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8004D2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8004E2C4B20B0032650585158 + B080441BB04044591B21212045B0C05058B0C0441B2159592DB8004F2C2020456944B001602020457D691844B001602DB800502CB8004F2A2DB800512C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800522C4B535845441B2121592DB800532C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800542C2020456944B001602DB800552CB800542A212DB800562C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800572C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800582C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800592C2020456944B001602020457D691844B001602DB8005A2CB800592A2DB8005B2C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8005C2C4B535845441B2121592D00020042000004D005BD00030007003FB800532BB800082FB800092FB8000810B80000D0B800002FB8000910B80003DCB80004DCB8000010B80007DC00BA0007000000562BBA0002000500562B3031331121112711211142048EB8FCE205BDFA43B8044DFBB300000002005AFFDA057105E5001D001E00B1403B1B0597019605031F011F0482018705891305530803861D111115063A1D030C3A15091E021E1E190331023B1031111A20093119191F20A1216A66182B2B4EF44DED4E10F64DEDF4ED12392F003F3FED3FED12392F10ED31304379403A001C172513260E251B260B160932000D1410320112110F10071C0932000500033201010204030A180C32000F120C3200081A06320104010632012B2B2B2B01103C103C2B2B103C103C2B2B2B2B2B2B815D015D080117232E0123220011101233323736373306070621202726111037362123041E013411C221C5B2D9FEF5F1EFDC733D1EC21A92AFFED7FF00AEE5ACBA01472805E5FEDABB8EA6FECFFEC5FEFEFEBFA95991E89DBD9BCD01AC0145D0E20000000200A50000056305BD000D00180067401F871196120232080B1E0F02001E17080831131A1A0D250E19191AD6217689182B2B4EF44DFD4E10F64DED003FFD3FFD3130437940260116112515260607050704070307020705060A10083201011608320109 + 120B320107140032002B2B012B2B2A2B2B815D2532373637363736351002232111032120171611140702290102D06541744A3B1A0FD9F1FE9FC80253012FA795589BFE86FDAFAA15276F598B53470111012EFB980513D7C2FED1EABDFEB20000000200AF000004ED05BD000B000C004E4024071E04040B031E01000209081E0A0B080C020C0C02000669023B091A0E03082500190D0EB8010BB3219589182B2B4EF44DFD3C4E10F64DF4E41112392F003F3F3CFD3C3F3CED12392FFD313013211521112115211121152101AF042FFC93032BFCD5037CFBC2021F05BDB4FE42AAFE0EAF05BD000000000100AF000004AA05BD000900394018071E040409031E0100020908066B011A0B03082500190A0BB80157B32195DC182B2B4EF44DFD3C4E10F64DE4003F3F3CED12392FFD313013211521112115211123AF03FBFCCC02D1FD2FC705BDB4FE42AFFD64000001009C0000044B05BD000500314013000203021E040508031A070102250500190607B80153B321765E182B2B4EF43C4DFD3C4E10E6003F3C4DFD3C3F31301333112115219CC702E8FC5105BDFAF2AF000100970000061705BD001300CB405944014B03020601090316011903D7010513011C03140B1B0C57015803D401DB03D40BDB0C0A040A040D45028602045102970202290A280D380A380D4702570276020725640D0A0203120301020B0C120306081517171A040405B8019B400D0A1F030B06FD0C0102FD0D1F12B8019BB6130019147670182B4E10F43C4DFDE419F43939F4393918E4FD3C4E10456544E6003F173C3F3C1217394B5279B10D0CB801AAB40201020A0BB801AAB202020387054D2E7AFD047DC487052E7AFD047DC43130005D727101725D71132109012111231134363501230115141615112397011D01A601A3011ABD04FE5DC5FE5A05BE05BDFB2604DAFA4303632DD077FB2904D72D36DD34FC9D000000020060FFD504F605E5002F003000FE405E290F27232626360E3521472662267A0E7724096B08180E172502590E680EAA22030A0E3A2224220A03041C1886142F2F2B1C3A1403043A2B0930020A0E081124221F28303011182517490825281A321F25114900252F193132A0216A89182B2B4EF44DEDF4ED4E10F64DEDF4ED12392F1211393912113939003F3FED3FED12392F10ED111217392EFD335D7131304379404D282E111F0008022602262D2506251A26032C002B002D2E032C002B00052A082B011D131F2B001B15182B011918012D042B0009270B2B01250B012E042B000729042B001E121C2B0119161C2B01002B2B2B2B10102B2B01103C2B2B2B2B103C2B2B2B2B2B2B818181005D0116171633323736353427262F012627263534243332041523262726232206151417161F01161716151404232027263701011E073463FA705CB24B4CA2C7 + C3518C0112FBE70143BB0F315BDAB09A5A3BD0CE95518CFE9DEBFEEE9B9B03024D01DA7D4E92203EA0783332252D2C355CB7C6FEDFF5763F7394626C3220302F223B67C4F4D28C8BEE040B0000030052FFDC04470449000F003B003C00DD40382A30010A100B1B0C1C2733481069096A10073908120C09031B320724091D100C1D3B2B022E293BB73B023B322A2512100705081C2722171CB8018A4023171D1F07271D2E0B021D350B3C073C3C1C1407292AA8241A3E1B291C4A0F2738193D3EBC0197002100B9019600182B2B4EF44DEDF4ED4E10F64DE4FDC412392F003F3FED3FED3FEDED1239111217395D1112392EED2EED01111239111739313043794028363715220001192501360F2100181E1B21001620142101212200370221001A1D1721011521172101002B2B2B01103C2B2B2B2B818181005D015D2416333237363D010E010F0106070615013637363534262322070607233E01333217161511141633323637150E0123222726270E012322263534363713010E724E5F59962168326D62315301B43E150C837A8D3B210AA805F7A3BD767517250C1E112A2C265D2A160937CE7C95BDBA978ACF5A2C49A691151C060E0D1C2F67016C082C182D5C534C2A53C69B484898FD971C220303850C06422340486AB58895A41301E40000020038FFDA03ED05C2000B001D00774032370E470E570EA704A91B05250814020F1D1000081D1D07130A021D170B052E132E102911121A1F0B271A191E1F87217242182B2B4EF44DED4E10F63C4DFDE4E4003FED3F3FED3F1139113931304379401A181C090A000101180B2600091C0B260000190226000A1B0826012B2B012B2B818181005D1216333236353426232206150017161711331123350E0123220035341233F692A17DA1A67A88A9018A53303DADA23FAC6FB3FEFAEFDE015FE8D7C9CBC3D0CA0237341E4B021DFA3E956358012DFAEA015700030048FFDA041A0449001C00240025010C40799708991AA71F03050E020F0514150E120F1514400C401408291A014B0BB603C701C603C71BD808D909D61FD823E817E8230BC711C712025C080521240F9A161D243906070716211D1C070A1D160B2507971CA71CB71CD71C0425160F251C05190A0C07110E270F1D27051A27242E072719192627D421A65D182B2B4EF44DFDE44E10F64DEDD4FD391239391112393912392F5D003F3FED3FED12392F3CFD3C10ED1112393130437940460023040503050205010504061F26111012101310141004060C25221B24260020001D26011E1D09170726000B150E26010D0E231A2126011E0521260108180A26000D100A2600002B2B2B2B01103C2B2B103C2B2B2B2A2B2A8101715D00715D5D00161716171615211E013332373637330E01070607062322001110003301262726232206070102B4D638 + 361210FCEF0590978D543014B1074F3152794152C8FEEA0118E2011F0B284AAD7CA805012304476B55516C4AA2A3C55D36473B912E501C100123010601020142FE26754682B38A01DC0000000003003DFE3B03E80449001F002D002E00B7404D36144908490958085909880CA91BA81DA927A62BB91B0B4008031622290EC40A221D1F070406291D190A121D0A0F2E072E2E051C032E162E2D29051A300C0E270D3E26271C192F3087217242182B2B4EF44DEDF4ED394E10F64DFDE4F51112392F003F3FED3FED3F3FED10ED1112393931304379402C23281A1E0B1124251026231E262600281A262600110B0E21000F0E0C0D251D222601271B2926000F0C122100002B2B2B01103C103C2B2B2B2B2B818181005D00171617353311140706212226273316171633323736270E0123222411100033002623220706151416333237363501027C5E3335A63C70FEC9ADEC0EB70D273D83CF40260336987DAEFEFB0107BA0144A47FBE4625937CC24F2CFED104423E234387FC32CC76DA9BA548273C9256DD5250F7011D010D012EFEA1C0B25F9AB5BDAF6384022D0000000200840000013B05BD000300070036401C07E50400010006030A0917171A06010229070300190809AA216242182B2B4EF43C4DC4FD3CC44E456544E6003F3F3C3F4DED3130133311231133152384B7B7B7B7042AFBD605BDCC0000000100890000013D05BD0003002940150000030A0517171A0102290003190405AA216242182B2B4EF43C4DFD3C4E456544E6003F3F31301333112389B4B405BDFA43000000020084000003ED04490019001A005E4031B706C706020406140627147606740705140C021418101D05070006180B0A1A071A1A000C29091A1C012E18291900191B1CB80106B3216242182B2B4EF43C4DFDE44E10F64DED12392F003F3F3C3F3FED1139390112393130005D015D1333153E01333217161511231134272623220706070E011511230184AB4CAA68E4502CB71D307E40294A382D1BB401A7042F985E529F57A2FD5102A3623C640D1642357169FDCF044900000100890000029204470011004F40262703260D37034704040E0810020E0911090C270805070006110A081A13012E10291100191213B80145B321627E182B2B4EF43C4DFDE44E10E6003F3F4D3FC4FDC411123939011112393130005D1333153E0133321617152E0123220615112389AB15A46B05181D101B108892B4042FB9369B0203BE0302AF72FD980000010017FFEF0209055A00180052B50D2E0AC00E01B8013F40250416391703060E0A111A17171A0301062900150E150F031F030203FC1619191AFC21677D182B2B4EF44DFD5D39C42F3CFD3C104E456544E6002F3F3F3C4DFD3CED10FDE431301333113315231114171633323637150E012322263511233533A8B6ABAB261531 + 0D1E141F43277E5A9191055AFED593FD4538130B01028E0908816702C59300000001000B000003EA042F00060102402E4201C5010200670068026803670687048805A700A802084700480245044A0586048905C704C80508492873280708B80109B321677E182B2B4B5279B8FF70B40105042004B80183B703036D1202010205B80183401E06066D120000010506040301010502030603000605040A0817171A03AF02BA018400000184B301AF0619194EF4184DFDE0E0FD194E456544E618003F3C3F173C1239011112391239074D2E2B104EE44D072E2B104EE44D2B4B51794025022912030304002912060605010502030603000605040A0817171A020403AF050001AF0619194EF4184DFD3939FD3939194E456544E618003F3C3F173C12390507102B07102B313001715D005D7113090133012301DC011E012BC5FE6CC0FE75042FFC980368FBD1042F0001000000000000032DBC1E5F0F3CF500110800000000005F4D8F0000000000C321F6B6F865FC270B9108F9000000090001000000000000000100000629FE2900000C01F865FCED0B91000100000000000000000000000000000013051200420239000005C7005A05C700A5055600AF04E300AF0473009C06AA0097055600600473005204730038047300480473003D01C7008401C700890473008402AA0089023900170400000B00000034003400C40126016A019C01C40250031C03E60452051C05C405F20614067006B60706079C000100000013006F0009006B0007000200100010005D000007E80A0C00040001B800532BB800492BB8003F2BB800352BB8002B2B4118008001A6009001A600A001A600030069018B0079018B0089018B0099018B00040089018B0099018B00A9018B00B9018BB2040840BA0179001A014A400B041F5414191F180A0B1FD2B80106B49E1FD918E3BB0119000D00E10119B20D0009410A01A0019F0064001F01A50025017A00480028019AB3296C1F60410A01A9007001A9008001A90003008001A9000101A9B21E321FBE012C00250401001F0126001E0401B61FE7312D1FE531B80201B21FC227B80401B21FC11EB80201400F1FC01D9E1FBF1D671FBE1D671FAB27B80401B21FAA29B80401B61FA91D6C1F931EB8019AB21F921DB80101B21F911DB80101B21F751DB80201B61F6D29961F6431B8019AB21F4C96B802ABB21F391DB80156400B1F3638211F351DE41F2F27B80801400B1F2D1D4C1F2A31CD1F241DB802ABB21F201EB8012540111F1C1D931F3A1D4C1F1E1D45273A1D4527BB01AA019B002A019BB2254A1FBA019B0025017AB349293896B8017BB348283125B8017A403648289629482725294C1F252946272729482756C80784075B07410732072B072807260721071B071408120810080E080C080A08080807B801ACB23F1F06BB01 + AB003F001F01ABB308060805B801AEB23F1F04BB01AD003F001F01ADB70804080208000814B8FFE0B40000010014B801ABB41000000100B801ABB606100000010006B801ADB300000100B801AD401F04000001000410000001001002000001000200000001000002010802004A00B0018DB806008516763F183F123E113946443E113946443E113946443E113946443E113946443E11394660443E11394660443E11394660442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B18011DB0964B5358B0AA1D59B0324B5358B0FF1D592B2B2B2B2B2B2B2B182B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B74752B2B2B65422B2B4B5279B376706A66456523456023456560234560B08B766818B080622020B16A704565234520B003266062636820B003266165B070236544B06A234420B176664565234520B003266062636820B003266165B066236544B0762344B10066455458B166406544B27640764523614459B36242725D456523456023456560234560B089766818B080622020B172424565234520B003266062636820B003266165B042236544B072234420B1625D4565234520B003266062636820B003266165B05D236544B0622344B1005D455458B15D406544B262406245236144592B2B2B2B456953427374B8019A2045694B20B02853B049515A58B020615944B801A6204569447500 + 00>] def + /CharStrings 19 dict dup begin + /.notdef 0 def +/space 1 def +/C 2 def +/D 3 def +/E 4 def +/F 5 def +/L 6 def +/M 7 def +/S 8 def +/a 9 def +/d 10 def +/e 11 def +/g 12 def +/i 13 def +/l 14 def +/n 15 def +/r 16 def +/t 17 def +/v 18 def + end readonly def + currentdict dup/FontName get exch definefont pop end + %APLsfntEnd + 42/FontType resourcestatus{pop pop true}{false}ifelse + {currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if + /FontType 1 def + /FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] def + /FontBBox{-1947 -985 2961 2297}def + /UniqueID 4375838 def + currentdict currentfile eexec + 54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA5567765E71F2B911B3C5586B741EEB93F3C73016EC16BFF283758900903D203992EFC8BAFAF13579C602F38C91BD326F6E6A1837BE2706B92FCAA32341FE90C82594E2DAAEF640CEE7C829F74199BEB91DB68E41A499587CED5A856443AD12FA7631214AFE1C70F3E7FD54114126E2FEFAF34858ADC23924206EDD9FFF1C250C313D111342B0E65914AC504B2035C8F614E59B51D24BCEAE2517DCE1290EFA832F252911EF2582DD8B9A324A429E53E9FDEC780BB01486642693C82D27C6C86B0AF1E4C2EF0304500B7D10B0A9AD6AFA1F8AA03D6F3A0CFA43B2B684A8FE01589949FB2668D7CEBF2F933ECB2CF408A4F7AE63EC1FEF2BA1192A5DECCFC0A4576DD39B797D61C129780EFDB720051A4597A4A5DA0C326AAEAEEF251FD69F8E8C35325CBCD6A906D085A9F5E457C6AC36F13F60347094D2D95F28DA27241DBD09260FB7128AB966705E35B27D6A70161D440AC2F276FA4877A793243CCF30EE23BE4A14F168E2E4A835563B5FD95FE7F78092BA255151D3ACCFAF71A864AD1869E572C16CB7CFB1B0AD3D394617F2DFC373BB9AB5A8C5C9C5FAF167CDC1B887D3260F27E5DE1BC284A608464969B2E0F3059A54410FFC386256A3C22EE789E59E0BAE9273BF6458C379F83FE011AFBC692CED46AA0D21149BF203CA69E5F890F55FEB4A9CC54F40CA6593E8DB0EBE24D825B395C42747D5580E0AF08613481050377FED1E24A04F5EA656A1E112A3949F9ED6E06192D47231B84D690BA633EEAE84485986B17A5453AD90FE63683916CD5686E55106DB0A8DFF897FEAAA3B8F60DB2BEA68CC9A7A0094D7F2362A + F921724FBF071A3F7DA3C87CADDBA311BC1F8AE0C8D799372B313EAF83DEC4E7A07C08CE86DCF189B68AB8A988101EF3A86BCC4CBD8DE2A98CF054CC62E0D6683CE19352DAF6407D76120326C4450B4A92B7EC6EECEED0DA7C3C92F1EBF69F0C6FC43FB4EFD4228212E22380D68E45095F456B0AF2F4A53224B14591C9EBF46ADBFE2352DBD8221F575383ECF9D54B944F865C6BC8419F2344FC6E7951F2E0A9091856696C40EA063A22D8601CF548013B3E5541B476CA697027F59F279B33D7A0469EF2C7F23CA75E2FB375939B2F8744C7037C1DD34E68DE9AFA439C5F49C137423F60466877290A1F4833C67BEE89D56C263B2F04D328F599D5ABFB795AFDFF79AC99F2AA5BA0176824CCB5B1FE00C70051A5AD7B55DB51D37E2BC0A9B47226675F3D5BB8C62B22501B47149FE978E544F197E6B809DE9B8A2853F4255D2662CEFFB8D16202E1E4BE92C866253687DA66FE366C89F129AAA234459B633C23C42600C88BEA85F2C8E6240F14D0A1CCB9D5C09ABFE9ABE1B166E15761B485C13B268D66DEEF07D9B2BF4856B84748B397A31F056FAEE18FEEB0F040DA11CB99702F39F3C539BADF97BE42300312A18F9FA9A7FC44C25C64A3A55D28F6B06CA6BD370B345317D253A30A553A3039CC98B45D406CE9DC0354B12CBD6B8529C8EAF55B5ADF2B7B365B69E50BA5A705FA42FAD836E0273E7227F0CF32C51FF9D4FC6596B2C94D27D532F4D0F346CAC023A38A9A5AE74F39478D2CC52BF6CE849E09B0FD46231132BA5C4C345417FF7592E4E5D95E4DB4C0EB89DE693CEC7FA94BCCBA4AACEDB3D758082B5240BBF07ECBBBE34EEE0AB3209E2218B55AEE852AC4E3A220EE27F2CA10177FB9C7A4439A050333E6DE0F96B85604A080B9363B20E7B40454E048FA78DD6E2B000D75CA5634BED1EB23B5798D565FC743A89DCCA33B1B64F4F2C754816E8D56311E6D06479A38108CB203AEC2539739A0DD79E1D15988B0A95B9722A6D3886D94DA2C3F46401469A0A48A5594DD2EF1DFC6551A3F607326164CA321ABBBA945FFEF7A12A083E699B8AF92A78E80A7D9E07446D77FAF3D1BEDF1D8FD1388B02BB60AA9CAE931D9B17D698F27F783E4A6176273D6F6C9B1B32B8614FD0E3BC5044D0B4BBF479EB03DF4047F63C81F0B10CA86239910A04EA73851EBA3ADB8B964C1D0D17AEC63B76F70112CE8871163B3E5719586A55E0A1AEF19614A821761F98CFF4CB4BAB017EED13E2EEE39AAC8C59D70CA6F796FDD95B816AC706D2A6DD823F509BC3E13BBF75F31D65438102B7630F14E4707D487EF9140338C0DC062C2F75935A9E181E3B7E8E5840501179FCCE5343C4558BB16C1B98A6F723BCB05C33B5942FAB6B1DD697C57807FA1C769C1B387EECAA6C50F95361A5C36D4F83A4DFA03E26E2C77A7B9F9814D39E055760517627473A475E3 + 087D3CE2FFBCB5A3068646C8BE1B04D7E80778C1B75AA79F3DD502A35B081D259DACCB878CECC24859A866FB600F1ECB11D5A20248DC6B0634B96EDC7FF458F7DAE643E25C678123DCADBD44D5887FA34C3EABAE3665AF019370138708ED0F521F22529737C7F3783BB1ABFA5C536F3DAA868D9F0278FC894CB3F4B4E16434857EEA4436C14ADA55D213602DB194588084D30B94CD7F4B3C33EA3613F8A03C4ABD1A5DEF39377C2B2296D84847124D2322E94E69FEB2082833763694418CA7EF459F58616E2A81173B19D64CD8F13C66C54CF054C782DDAFBAE9CAF7A63D4DD115CFDA3A147118803059AD8B065D857BBD6EDB54AFA72177421D40A273A91303222518E61822A295AA56FC582B5C6C94C4FB20D17EA958C1542C945AC62D78AB12DB55744ED6B46637E11995F7EEA98AB14DCA4C4FDEA6846FE97EA6C7CD1F13229ABAE2B3B6CC3AD266D84DD511E7D00F15354DEA5B1E62F6A4EED129CDA0D307E37E745F14106AD3626B2C3B7EF0AE07B0965EEDBB432C14F28E7EDA0F323390FBDA89AC67572C461FBAF38E3BC2973FBC3417023C90F8D8CC163D3B7BA1C3951CF24A6A862946C5B3E40DB9F031ED32C7AB49C9BA7B132085EED57388ADFFC69C79A61C58FCD74BB5DEFB7C88B7AB44488D566BA48DB2A414B94C6C60272B8C3DC476F9C81FD33E34D594674C9A64D7BD53BC8C9C3D653ADD59D21BFE931E6C6CBDAC5340166D84CA5246F9D2C67E9D7371FA97673E336AF79E9C342B57AB44DA9211BFE58661EC599D8C65024602B1B72EA7C2B9D9D45417BCBFF0EFF0469B015662CAEC8224F68AAC1A76607FEF3075823C88DF621765A2E0FA7D55811FA39F80F6EAAAE79FF36BB50E996056401B67D5A047F1B3ECC1E9B46EC557ED5A7736D9D056203D16C34A7586D0B1D29A9086A27E162F52B54A8E41E59F40476A40C7147D3E08018A9419B0B5911316F9CB3E2C8979DF2FEE06F19DFFB5BA2A4070B9FA03928168A90708972DA3D2F47BEC65FE923E7F8C1124B396DF1D5268373CEAC665A25B66ED93D513EB380D6C53426553F84749DBF2C8B93202964768A3AD2CA192C46A2956AD79E1C0BDB2B63D9EB3F123849BC0703CE08FD383C6E669EEC37E9DFD7CC10AFF768DB98D69A609B9E9F6FF1D8A44B72329909A00CC491128A587AF45A785F242CF9552AFA7D25BEF17723F016C1DC0A6B43CEEE83AE72B5F9C44517B9E855D7243D8133C + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark end + %APLT1End + +%RBIEndFontSubset +/Helvetica cguidfix +/F1.1/Helvetica renmfont +[ /CIEBasedA 5 dict dup begin /WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeA { { 1.8008 exp } bind exec} bind +def +/MatrixA [ 0.9642 1.0000 0.8249 ] def +/RangeLMN [ 0.0 2.0000 0.0 2.0000 0.0 2.0000 ] def +/DecodeLMN [ { 0.9857 mul} bind { 1.0000 mul} bind { 1.3202 mul} bind ] def +end ] /Cs1 exch/ColorSpace dr pop +[ /CIEBasedABC 4 dict dup begin +/WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeABC [ { 1.8008 exp } bind { 1.8008 exp } bind { 1.8008 exp } bind ] def +/MatrixABC [ 0.4294 0.2332 0.0202 0.3278 0.6737 0.1105 0.1933 0.0938 0.9580 ] def +/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def +end ] /Cs2 exch/ColorSpace dr pop +%%EndPageSetup +/Cs1 SC +1 sc +q +0 0 361 249 rc +0 249 m +361 249 l +361 0 l +0 0 l +h +f +0.60000002 i +/Cs2 SC +1 1 1 sc +103 183 m +179 183 l +179 151 l +103 151 l +h +103 183 m +f +1 J +1 j +0 0 0 sc +1 0 0 -1 -30 275 cm +133 92 m +209 92 l +209 124 l +133 124 l +h +133 92 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 141 167 cm +/F1.1[ 12 0 0 -12 0 0]sf +-22.678711 -3 m +(!"#$%&'\()[ 7.330078 8.666016 6.673828 2.666016 6.673828 6.673828 6.673828 0.000000 ] xS +-17.671875 11 m +(\)*+,*+)[ 8.003906 6.673828 3.996094 6.000000 6.673828 0.000000 ] xS +0.60000002 i +/Cs2 SC +1 1 1 sc +CM +179 183 m +241.34003 183 l +241.34003 151 l +179 151 l +h +179 183 m +f +0 0 0 sc +1 0 0 -1 -30 275 cm +209 92 m +271.34003 92 l +271.34003 124 l +209 124 l +h +209 92 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 210.17001 167 cm +-13.338867 -3 m +(-*.'\()[ 9.996094 6.673828 3.333984 6.673828 0.000000 ] xS +-18.682617 11 m +(/%0$%*)[ 8.003906 6.673828 6.673828 2.666016 6.673828 0.000000 ] xS +0.60000002 i +/Cs2 SC +1 1 1 sc +CM +254.15997 96 m +330.15997 96 l +330.15997 64 l +254.15997 64 l +h +254.15997 96 m +f +0 0 0 sc +1 0 0 -1 -30 275 cm +284.15997 179 m +360.15997 179 l +360.15997 211 l +284.15997 211 l +h +284.15997 179 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 292.15997 80 cm +-22.678711 -3 m +(!"#$%&'\()[ 7.330078 8.666016 6.673828 2.666016 6.673828 6.673828 6.673828 0.000000 ] xS +-17.671875 11 m +(\)*+,*+)[ 8.003906 6.673828 3.996094 6.000000 6.673828 0.000000 ] xS +0.60000002 i +/Cs2 SC +1 1 1 sc +CM +191.81998 96 m +254.15997 96 l +254.15997 64 l +191.81998 64 l +h +191.81998 96 m +f +0 0 0 sc +1 0 0 -1 -30 275 cm +221.81998 179 m +284.15997 179 l +284.15997 211 l +221.81998 211 l +h +221.81998 179 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 222.98997 80 cm +-13.338867 -3 m +(-*.'\()[ 9.996094 6.673828 3.333984 6.673828 0.000000 ] xS +-18.682617 11 m +(/%0$%*)[ 8.003906 6.673828 6.673828 2.666016 6.673828 0.000000 ] xS +0.60000002 i +/Cs2 SC +1 1 1 sc +CM +73.339996 96 m +149.34 96 l +149.34 64 l +73.339996 64 l +h +73.339996 96 m +f +0 0 0 sc +1 0 0 -1 -30 275 cm +103.34 179 m +179.34 179 l +179.34 211 l +103.34 211 l +h +103.34 179 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 111.34 80 cm +-22.678711 -3 m +(!"#$%&'\()[ 7.330078 8.666016 6.673828 2.666016 6.673828 6.673828 6.673828 0.000000 ] xS +-17.671875 11 m +(\)*+,*+)[ 8.003906 6.673828 3.996094 6.000000 6.673828 0.000000 ] xS +0.60000002 i +/Cs2 SC +1 1 1 sc +CM +11 96 m +73.339996 96 l +73.339996 64 l +11 64 l +h +11 96 m +f +0 0 0 sc +1 0 0 -1 -30 275 cm +41 179 m +103.34 179 l +103.34 211 l +41 211 l +h +41 179 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 42.169998 80 cm +-13.338867 -3 m +(-*.'\()[ 9.996094 6.673828 3.333984 6.673828 0.000000 ] xS +-18.682617 11 m +(/%0$%*)[ 8.003906 6.673828 6.673828 2.666016 6.673828 0.000000 ] xS +0.60000002 i +/Cs2 SC +0 0 0 sc +1 0 0 -1 -30 275 cm +262.38138 131.5686 m +299.94861 171.4314 l +S +CM +275.43533 97.746597 m +272.13187 105.62613 l +267.76535 101.51108 l +h +275.43533 97.746597 m +f +0 J +0 j +1 0 0 -1 -30 275 cm +305.43533 177.2534 m +302.13187 169.37387 l +297.76535 173.48892 l +h +305.43533 177.2534 m +S +CM +226.89465 149.2534 m +230.19812 141.37387 l +234.56464 145.48892 l +h +226.89465 149.2534 m +f +1 0 0 -1 -30 275 cm +256.89465 125.7466 m +260.19812 133.62613 l +264.56464 129.51108 l +h +256.89465 125.7466 m +S +1 J +1 j +211.41998 195 m +189.73999 195 l +S +CM +151.73999 80 m +159.73999 77 l +159.73999 83 l +h +151.73999 80 m +f +0 J +0 j +1 0 0 -1 -30 275 cm +181.73999 195 m +189.73999 198 l +189.73999 192 l +h +181.73999 195 m +S +CM +189.41998 80 m +181.41998 83 l +181.41998 77 l +h +189.41998 80 m +f +1 0 0 -1 -30 275 cm +219.41998 195 m +211.41998 192 l +211.41998 198 l +h +219.41998 195 m +S +1 J +1 j +98.151886 172.12814 m +145.0181 130.87184 l +S +CM +121.0229 149.41418 m +113.03583 146.37996 l +117.00035 141.87634 l +h +121.0229 149.41418 m +f +0 J +0 j +1 0 0 -1 -30 275 cm +151.0229 125.58582 m +143.03583 128.62004 l +147.00035 133.12366 l +h +151.0229 125.58582 m +S +CM +62.147064 97.585815 m +70.13414 100.62004 l +66.169617 105.12366 l +h +62.147064 97.585815 m +f +1 0 0 -1 -30 275 cm +92.147064 177.41418 m +100.13414 174.37996 l +96.169617 169.87634 l +h +92.147064 177.41418 m +S +1 1 1 sc +CM +87.830002 238 m +134.17 238 l +134.17 206 l +87.830002 206 l +h +87.830002 238 m +f +1 J +1 j +0 0 0 sc +1 0 0 -1 -30 275 cm +117.83 37 m +164.17 37 l +164.17 69 l +117.83 69 l +h +117.83 37 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 111 222 cm +-15.339844 4 m +(12$*%.)[ 8.666016 2.666016 2.666016 6.673828 6.673828 0.000000 ] xS +0.60000002 i +/Cs2 SC +1 1 1 sc +CM +147.83 238 m +194.17 238 l +194.17 206 l +147.83 206 l +h +147.83 238 m +f +0 0 0 sc +1 0 0 -1 -30 275 cm +177.83 37 m +224.17 37 l +224.17 69 l +177.83 69 l +h +177.83 37 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 171 222 cm +-15.339844 4 m +(12$*%.)[ 8.666016 2.666016 2.666016 6.673828 6.673828 0.000000 ] xS +0.60000002 i +/Cs2 SC +1 1 1 sc +CM +58.169998 43 m +104.50999 43 l +104.50999 11 l +58.169998 11 l +h +58.169998 43 m +f +0 0 0 sc +1 0 0 -1 -30 275 cm +88.169998 232 m +134.50999 232 l +134.50999 264 l +88.169998 264 l +h +88.169998 232 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 81.339996 27 cm +-15.339844 4 m +(12$*%.)[ 8.666016 2.666016 2.666016 6.673828 6.673828 0.000000 ] xS +0.60000002 i +/Cs2 SC +1 1 1 sc +CM +118.17 43 m +164.50999 43 l +164.50999 11 l +118.17 11 l +h +118.17 43 m +f +0 0 0 sc +1 0 0 -1 -30 275 cm +148.17 232 m +194.50999 232 l +194.50999 264 l +148.17 264 l +h +148.17 232 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 141.34 27 cm +-15.339844 4 m +(12$*%.)[ 8.666016 2.666016 2.666016 6.673828 6.673828 0.000000 ] xS +0.60000002 i +/Cs2 SC +1 1 1 sc +CM +243.33997 43 m +289.67999 43 l +289.67999 11 l +243.33997 11 l +h +243.33997 43 m +f +0 0 0 sc +1 0 0 -1 -30 275 cm +273.33997 232 m +319.67999 232 l +319.67999 264 l +273.33997 264 l +h +273.33997 232 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 266.50998 27 cm +-15.339844 4 m +(12$*%.)[ 8.666016 2.666016 2.666016 6.673828 6.673828 0.000000 ] xS +0.60000002 i +/Cs2 SC +1 1 1 sc +CM +303.33997 43 m +349.67999 43 l +349.67999 11 l +303.33997 11 l +h +303.33997 43 m +f +0 0 0 sc +1 0 0 -1 -30 275 cm +333.33997 232 m +379.67999 232 l +379.67999 264 l +333.33997 264 l +h +333.33997 232 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 326.50998 27 cm +-15.339844 4 m +(12$*%.)[ 8.666016 2.666016 2.666016 6.673828 6.673828 0.000000 ] xS +0.60000002 i +/Cs2 SC +0 0 0 sc +1 0 0 -1 -30 275 cm +154.70732 78.130112 m +157.29266 82.869888 l +S +CM +131.12347 185.10695 m +129.92635 193.56668 l +124.65897 190.69356 l +h +131.12347 185.10695 m +f +0 J +0 j +1 0 0 -1 -30 275 cm +161.12347 89.893051 m +159.92635 81.433319 l +154.65897 84.306442 l +h +161.12347 89.893051 m +S +CM +120.87651 203.89305 m +122.07364 195.43332 l +127.34102 198.30644 l +h +120.87651 203.89305 m +f +1 0 0 -1 -30 275 cm +150.87651 71.106949 m +152.07364 79.566681 l +157.34102 76.693558 l +h +150.87651 71.106949 m +S +1 J +1 j +187.29268 78.130112 m +184.70734 82.869888 l +S +CM +150.87653 185.10695 m +157.34103 190.69356 l +152.07365 193.56668 l +h +150.87653 185.10695 m +f +0 J +0 j +1 0 0 -1 -30 275 cm +180.87653 89.893051 m +187.34103 84.306442 l +182.07365 81.433319 l +h +180.87653 89.893051 m +S +CM +161.12349 203.89305 m +154.65898 198.30644 l +159.92636 195.43332 l +h +161.12349 203.89305 m +f +1 0 0 -1 -30 275 cm +191.12349 71.106949 m +184.65898 76.693558 l +189.92636 79.566681 l +h +191.12349 71.106949 m +S +1 J +1 j +125.51962 222.94933 m +127.16037 220.05067 l +S +CM +101.10115 61.911377 m +94.549591 56.427124 l +99.771133 53.471527 l +h +101.10115 61.911377 m +f +0 J +0 j +1 0 0 -1 -30 275 cm +131.10115 213.08862 m +124.54959 218.57288 l +129.77113 221.52847 l +h +131.10115 213.08862 m +S +CM +91.578835 45.088623 m +98.130386 50.572876 l +92.908852 53.528473 l +h +91.578835 45.088623 m +f +1 0 0 -1 -30 275 cm +121.57883 229.91138 m +128.13039 224.42712 l +122.90885 221.47153 l +h +121.57883 229.91138 m +S +1 J +1 j +157.16039 222.94933 m +155.51962 220.05067 l +S +CM +121.57884 61.911377 m +122.90886 53.471527 l +128.1304 56.427124 l +h +121.57884 61.911377 m +f +0 J +0 j +1 0 0 -1 -30 275 cm +151.57884 213.08862 m +152.90886 221.52847 l +158.1304 218.57288 l +h +151.57884 213.08862 m +S +CM +131.10117 45.088623 m +129.77115 53.528473 l +124.54961 50.572876 l +h +131.10117 45.088623 m +f +1 0 0 -1 -30 275 cm +161.10117 229.91138 m +159.77115 221.47153 l +154.54961 224.42712 l +h +161.10117 229.91138 m +S +1 J +1 j +308.78391 222.63869 m +309.88605 220.36133 l +S +CM +283.37106 61.839691 m +277.18567 55.945557 l +282.58643 53.331787 l +h +283.37106 61.839691 m +f +0 J +0 j +1 0 0 -1 -30 275 cm +313.37106 213.16031 m +307.18567 219.05444 l +312.58643 221.66821 l +h +313.37106 213.16031 m +S +CM +275.29889 45.160294 m +281.48428 51.054428 l +276.08353 53.668198 l +h +275.29889 45.160294 m +f +1 0 0 -1 -30 275 cm +305.29889 229.83971 m +311.48428 223.94557 l +306.08353 221.3318 l +h +305.29889 229.83971 m +S +1 J +1 j +340.48386 223.27267 m +338.1861 219.72734 l +S +CM +303.83508 61.985992 m +305.66858 53.641037 l +310.70358 56.904282 l +h +303.83508 61.985992 m +f +0 J +0 j +1 0 0 -1 -30 275 cm +333.83508 213.01401 m +335.66858 221.35896 l +340.70358 218.09572 l +h +333.83508 213.01401 m +S +CM +314.83487 45.014008 m +313.00137 53.358963 l +307.96637 50.095703 l +h +314.83487 45.014008 m +f +1 0 0 -1 -30 275 cm +344.83487 229.98599 m +343.00137 221.64104 l +337.96637 224.9043 l +h +344.83487 229.98599 m +S +ep +end +%%Trailer +%%EOF