From - Sun Jan 28 16:13:01 2001 X-UIDL: c96bf0e06a0c0f00 X-Mozilla-Status: 0001 X-Mozilla-Status2: 00000000 Received: by mailer.csit.fsu.edu (mbox gcfpc) (with Cubic Circle's cucipop (v1.31 1998/05/13) Sun Jan 28 15:54:12 2001) X-From_: fox@mailer.csit.fsu.edu Sun Jan 28 15:42:59 2001 Return-Path: Delivered-To: gcfpc@csit.fsu.edu Received: from dirac.csit.fsu.edu (dirac.csit.fsu.edu [144.174.128.44]) by mailer.csit.fsu.edu (Postfix) with ESMTP id F20BC23A13 for ; Sun, 28 Jan 2001 15:42:57 -0500 (EST) Received: from localhost by dirac.csit.fsu.edu (AIX4.2/UCB 8.7) id PAA150406; Sun, 28 Jan 2001 15:42:54 -0500 (EST) Resent-Message-Id: <200101282042.PAA150406@dirac.csit.fsu.edu> Delivered-To: fox@csit.fsu.edu Received: from lsesun13.epfl.ch (lsesun13.epfl.ch [128.178.73.20]) by mailer.csit.fsu.edu (Postfix) with ESMTP id CB39D23A21 for ; Wed, 17 Jan 2001 03:21:50 -0500 (EST) Received: from lsemail.epfl.ch (rboichat@localhost [127.0.0.1]) by lsesun13.epfl.ch (8.8.X/EPFL-8.1a) with ESMTP id JAA18980 for ; Wed, 17 Jan 2001 09:21:48 +0100 (MET) Sender: rboichat@lsesun13.epfl.ch Message-ID: <3A65561B.187C9856@lsemail.epfl.ch> Date: Wed, 17 Jan 2001 09:21:47 +0100 From: Romain Boichat Reply-To: Romain.Boichat@epfl.ch X-Mailer: Mozilla 4.7 [en] (X11; I; SunOS 5.6 sun4u) X-Accept-Language: en MIME-Version: 1.0 To: fox@csit.fsu.edu Subject: Sumbission to Concurrecy: Practice and Experience Content-Type: multipart/mixed; boundary="------------A6E01A5BE820069935A747E9" Resent-To: Geoffrey Fox Resent-Date: Sun, 28 Jan 2001 15:42:53 -0500 Resent-From: Geoffrey Fox This is a multi-part message in MIME format. --------------A6E01A5BE820069935A747E9 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Dear Professor, I am sending you the paper titled Open Consensus for submission. I think this paper falls into the object system section. The file submitted is in ps and A4, if you need another format, don't hesitate to contact me. Thank you very much in advance. Best Regards R. Boichat Abstract: This paper presents the abstraction of open consensus and argues for its use as an effective component for building reliable agreement protocols in practical asynchronous systems where processes and links can crash and recover. The specification of open consensus has a decoupled, on-demand, and re-entrant flavour that make its use very efficient, especially in terms of forced logs, which are known to be major sources of overhead in distributed systems. We illustrate the use of open consensus as a basic building block to develop a modular, yet efficient, total order broadcast protocol. Finally, we describe our Java implementation of our open consensus abstraction and we convey our efficiency claims through some practical performance measures. -------------------------------------------------------------------------- Romain Boichat Research assistant DSC-LSE / EPFL URL: http://lsewww.epfl.ch/ 1015 Lausanne Tel: +41 21 693 6702 Switzerland Fax: +41 21 693 6770 -------------------------------------------------------------------------- --------------A6E01A5BE820069935A747E9 Content-Type: application/postscript; name="ABC.ps" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="ABC.ps" %!PS-Adobe-2.0 %%Creator: dvips(k) 5.85 Copyright 1999 Radical Eye Software %%Title: ABC.dvi %%Pages: 24 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentFonts: CMR17 CMR12 CMR8 CMSY8 CMBX9 CMR9 CMTI9 CMBX10 CMR10 %%+ CMBX12 CMTI10 CMR7 CMR6 CMTI8 CMSY10 CMMI10 CMMI7 CMMI5 CMBX7 CMTI7 %%+ CMSY7 CMMI8 CMMI6 LASY10 CMMI12 CMCSC10 CMTT8 CMTT10 Palatino-Bold %%+ CMMI9 CMSY9 %%DocumentPaperSizes: a4 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips ABC.dvi -o ABC.ps %DVIPSParameters: dpi=600, compressed, comments removed %DVIPSSource: TeX output 2001.01.16:1447 %%BeginProcSet: texc.pro /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc % @@psencodingfile@{ % author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", % version = "0.6", % date = "1 July 1998", % filename = "8r.enc", % email = "tex-fonts@@tug.org", % docstring = "Encoding for TrueType or Type 1 fonts % to be used with TeX." % @} % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both % ASCII and Windows. % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /.notdef /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: texps.pro TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{ dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def} if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def} def end %%EndProcSet %%BeginProcSet: special.pro TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N /vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N /rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N /@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ /hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B /@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ /urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known {userdict/md get type/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale }if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState save N userdict maxlength dict begin/magscale true def normalscale currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts /psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict begin/SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N /@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X /yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginFont: CMSY9 %!PS-AdobeFont-1.1: CMSY9 1.0 %%CreationDate: 1991 Aug 15 07:22:27 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY9 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 110 /backslash put readonly def /FontBBox{-30 -958 1146 777}readonly def /UniqueXX 5000819 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352 05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23 b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145 d026957276530530a2fbefc6c8f67052788e6703bb5ee49533870bca1f113ad8 3750d597b842d8d96c423ba1273ddc63eb43f34fa90ea73a234af35fd9b24eb7 4f19626e9124df7acb92629cc87b2cf81c4a89b27447806db34393ddf0402958 e2daee0b4bf315f9aa0a2650d2e11ee289ffaec940d0af160fe7f29411c1c458 69d1ac3bcfe2ae4da72422549095f1fc9fec606289316f106e719a4ae2fd45ee 868fddf07a80e9a626bb43cdfdaa9dcd208b88fd99af20b27f9d6b5cda6a3fa8 8d5acfce8b5eebb38854378cecc3bfdac526514f1be9fb28ae628918ba942a3e 05b78c3aff808cf416a5ed01be280231b75a7aee0c66b0549713bef6b3cbc188 e625ba81a0a7f34771e69cf51959595a11c3e703d4cc8f8c7394380c1fc08a08 6f11dd235be00c0fcda709d3c93359f18ea15a5e76307e905375dc9c831c0ff6 7a372cfa7b5403792718786cef3a40cae8236516a83b406f6cf7045d38d4e428 3a985cefad644896c4584a76e46b34cb3431048990b4a288d51e7cdfa483e426 e1c45e7b730e39ce977ebcb997b6a27f0d864f9b529736d01ce6c051f8899cfa d23c6ea07462fdc569bdc9c2cd2dedf065e723a47a249bef2163c579900ec8b7 b14b4846478563a1b2d3160cf65224bea1c1dcdf71c36f789e3001370b229433 0f8f29421ab91325e4561ba02a88440e2c76ce 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI9 %!PS-AdobeFont-1.1: CMMI9 1.100 %%CreationDate: 1996 Jul 23 07:53:55 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI9 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 112 /p put dup 118 /v put readonly def /FontBBox{-29 -250 1075 750}readonly def /UniqueXX 5087384 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98 74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730 48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f 15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427 bdd7da12534ba078ad3d780414930da4f8d58abefd45db119b10eb409dd89792 3c6e705479464a4b33ae3d31bfe98efe259f07f7950237bbaee4f7b64ffea83a 757fa717d50c3298392891bfd60e34a056b0d6021da3fd9b8b01bf78b0b23dc4 ea3b0605150d20b27ff9ea5f2524661019d982a2e47cd7c21ee5ca9ed9227821 f8d07119397de26838c11d7b35bcedc43e011626e300f8249ed846d7b5ccbd89 02550cda17ddf113df658fb13f8162681013766863784efac128e01ef997e1a4 30312afac8f3d948edecd7d5090ab5c864b91d7f6e80256f0e1fc99f1102b74c 61cc456e2e1bedf0e627d5f70f738f963a13666405c51ebf23ca077e97570a2f 1118536b92e585cf1dbd5fbf36a0a5d197538c05304e93a15f3c931168d91d42 483ef428b1a3f1b7e548fd1d23b80f5523c8b8bf450b02804fb689f915c86693 f7dfb1c43f681627c7f027021aa3a8179148f1819cd94b8890a9ac63dc1e8a68 f254b64f6f173c3d02e3ebc037da05074017c8b113e94f4e2d26b467ef9da07e afd7ea7c86e025af52c5ceeb835951e67e02a38daf1e9e698bd21996c1071e84 ff7fbe77f6ddf9d06fa92b16ecebcbe0370b5cd9d450d0f2906a105cadf93ed0 0abc7fcf2c996e7c15e452006e35390d99b9cfc59925f1444c20d9c3e1fc2910 32cf9fa9d580eac1bc956334da391b870a757c3bee6aa3e005b20988d8587876 3ced20c6edf2ac2b22890e37ff7aedeb0986d85ae05bc84339bf2116df48c5d1 cc888bb33d409b06dd70ffd0618b2080442aac439aeb39c20a87ad74ef10629c f1604db8611e8e4224c5b21ab0c7ebddc77fe9a283b3a8c6a2a9508f6836e3fc 3eae1366b4da4f44cb7a77fd81d278c17775d56cb28b70f18d894bfd1ec1827f fb177e1d46b0dc5afee78aaca1c43d03b7be6c8768adc3dc8219bda2fc610117 a26eb78095073b0961001a907d6eb044dad1d2ef29cfd60208c6c305b891af6f f7c689d34d0afc23a0f5c34ebc05a157c19aeae5a58135ed6a6dda416fb77c33 22382033290b08fb51e08793a9864d720a11c1f7e7bea21ccb8ee06a21bf3562 a0c00647d487299dfd5c321d199981db169062fe6c7b60a4326b78512233f3a6 5925b6069152c95a95ee80d23fbe790ca87fb88b241914643dc2cb8d6b3ef72f 38946a615193ae3f0877865a85a7d66aa7d83a5f760fa578f893044663c79bfd e003d41969226d908f17241d7f11e84526165d527f9e47bae8ed73ccbe199284 7f0326a21c94843e4351c1375f9a51852ce2b17af07b1671929017774df068cc 48d916c996d11e6f768cc9ff699e2697298dddee2de1fbc595d917889bc58532 781d15b4418b01c666fa70caf5e9ba03d8342d1bcf3248ce05494bb689cbfd55 525cb3d8a7fd3f321802854b1f8eac515d2ce24610d2716fb8e3acaa8944ebd4 121e9838c6d46953560f65e681a23cc6224db00e3eac9fac5493580adec63236 76ab1c83704a5dc09242a708bd62a82b7765a73ca02392782328348b5f3bc5b2 891b08da655e0cb7ac4b4ab66c506a431e7861587c40abc6b0329c0f4bc7145f a64e4c56e1cc0b7c5861de993bb6118c9838c2fb0e711ccc1b9e2663236dba21 bd6d536240e8814ae14fbeab4f3cc2d1160d0614ce2dd59822110992700a0053 9e74b9c469e8e18c68c2c2fe2d4d 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTT10 %!PS-AdobeFont-1.1: CMTT10 1.00B %%CreationDate: 1992 Apr 26 10:42:42 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def end readonly def /FontName /CMTT10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 76 /L put dup 77 /M put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 103 /g put dup 104 /h put dup 105 /i put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put readonly def /FontBBox{-4 -235 731 800}readonly def /UniqueXX 5000832 def currentdict end currentfile eexec 8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8 97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc 8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011 b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415 50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e 784c6bf7389803d9450b0c21756a017306462c563d51ecefaacd079732f12c29 315e4b9623a5752c6f1d8145869e120d910b2644887cea7e30b15676a92537c2 9d3aa80dc30082aba94b40990b82fb1a877e805e0c8c48f61e9f2edac05b944e e4d8084ec1d5cc517aaeec5b3ea379dd011eeb454cecab3ad2443c887c582789 72355673e503affe0394fc7db31de364e4f56c24033c7df2265c56445ec63a1d 5695a6041ea1b94407e1cdb7c5635603a4fd047e6edcaeb2d0da6c9e0e9396d5 1a4a58e8fdc1578730f992435560a6e2d3e3687703ee2f78f5896389ac8470bc 806169eb01762e89b6dc9adf857ead656620e2589aae722c37a2ed7a2941c360 b067ee34d8d5ca3bf68db725614d936bcb207781f4d4ec2ac67b13a5ad161f3f 059add7b5e3d904831e31c20c04546fae83ca93a35989e65c201756888f727b9 7e5313c9870ec96e4cec3901ea03a5c744754485e7d169bbc98bf872d0796e18 9d43b712950c3786257d8be06ab6080b9d9392313298327549a8a41c00a2cea3 690b4a333e45aa815a64facae1c2b44640860b8b8687afbefdbd5b4a541a7251 4ee7d3e0752af3e96a88c95d31fa16d34ba2f02fdb0088b165844f02611c734a dbcc2037bf741fdea7e8bcdc130c70c33772f777d8bcddf4611db99001ccff14 d7af2bb05defc3480bdab312a0eff2f375afb4e0df2f803c594b7c93f71ca4af 861ae1711932fef19bfe2f9b7adb69d68e5a70ea4d1a3d5bd85231b16993f65e fb37a0a823f0542f8c2340a073dc1be4a8347f9d3068a6435cd8278b0db1809e 8af9664c2c989b9f16873c009449b6284b85da4dee11c96a05ba83292f0edbd9 2cf674aad6ac1a5ff966ffc37e88a66048deed053565b55ef6bdb8c2f2f67832 f8939a32442ea54f13d003494d6350a2864b427a9126a9c26a031909fe53fa84 63b80c3ffd536c9a5dd29ceb03148dbc24c0033aea2dc2bd8562c949a4d31e46 355ac4e6dcc3b28c2855c95d0eeaf65ee1106d4b55de833ed502aef1f6f6e4b0 1cdac0fb1927fad89639bff0579b532fcbce172e37bf94c84e16f485e164ddf8 e17b0645846dc88f11fd5c13852d088458258682b0ec87d4cdb56dbda0493d1a 7d8f6d06091694bec97e3804f4824b4d5ed31c205588bdd0225ee609bdbc8c8e 4861770012eca31e48626f5f9243d95c82d47192744da9d7507b22108b122a12 d5328db47a42c8fe1ca3f03926aa66d47448072a720d56e5bf953296543d226d 32e00eeef6fcfa09e8b920141554c33ee7c31fb8e404e2a4c39a165687df28b0 d0cefabeb011342dd49f9150d97cbcf56eee9d8ff2fd68432af5e1245a151207 5a15647461d98f7812560f3eaa61dc3da94102c8a34c0a5d946fbc8407a8f051 5b7229516c60e27a187d69b732e6d2cd4af7874d8cffeb9f8e72541e4961f81c 2b92ef1e921d34289119d39443797cd20726389d48475a907f4da5604012cf6b 9b36666f8c1a39adb554f5d7a6db6b5ff2301df333a7116d21047053963773c3 0261193d49b1ffe3d3d9945b5b2151ea66932fb2070f3626a5feb814d597d433 f3d3cb698a4f3fb7626d6359964815415a09c5238c52ffaedb24b15c6c70a117 64cd837649f50db89c097ad6124748177d0445bb03739a74707725567d69c74b a9866d7625c8d5f83a5e7bef91ac366dd39acad02c06b091f821a9bb10091942 9c1e8644590a24baa7e39bc1feb8770314acf823272435fef4c4bb43317de6c8 52a79809086f6267723881252ef4456fc95e7893f00675bdc570433eee17e05c b98082d7988588f6c9528cc0f8ffdbcaad035d9dac1d41d32cba5e27118ee9d0 b5411284ae6f383437731ee0ef3dbb10a788c51de4bd86ed49fa916a8bfa46b3 2679ed66ef483db06029a83ffe4cddf005d03c7b502a2279945fc503b087c9d7 2f2be267efe74b16779a9603a40cefdde6b3742a2f524ffb3ac476466a9ad7b5 ffe7cf6386cec7f89f62946fb30f07814a7e2f256cbff7b42b88f73c7d612575 8cea7106a5206be6afb6cae239beb3521c92d7ea9851b4ec513beae1ae1817fb 5ce5565495c0ac9802e8ffc05fff85f73a378be604349642de84f76744e706d5 9eb0b9e4e3a14b91efd20f016532bd1287415cb79c57349638283fe7c5b3e14a 944b5dd04c11daebc682f963bd09038172c5da180713537a1f853e1dd7ee95d2 a3105f985fefa2fc4f2ac7d35b18241941d71da53df62cb493b8723459568204 9972ff670c8fbb57241925420698be2feda9ad0f77256fcc320e125d6d31fa76 a223ee0d9d08ae103e380d4c485141c96931e61baf43f5416c73eab64b16d5ce 588bc31b8cf7bb165c4027cc260e2ee8058bcd5443186d2d6fc6508ba2984068 26e3a082b05f215daa156aac047e9145d5a0abd370d94c5f8324c6acb2214fc4 5a99ed54def4ce83605ffadb29d23d04c76e4d4960cd729ea32c80bdb5ec321f df47c6bb6299363097a5029a908a6e7036fe79e50a3749e1e4dc3987944cbaae 162ea9258b0b169569c50cc95b564a0766087920562e2a11e56a2e403f4850c2 f827b4e280d3073cd3f86df7adb78cc0a3312af9806bee950d7ae89bb699d358 86a78d147b8407e66af3f2ff261be9af9ee331c3746b1e3e13bdf2e600f5ea67 b6459f74215ae8a846de9623e49c73fe87fd50ccd5cb3229ed2ff815ff547be7 5b123a459f07339a01f065c5056414fb6e03b10a177feb82bbfe6a0f92bef5cd 80da16e7010f116e242b4784060b87b71f32f457e6936ff8bde27b894023553a de4c4897e7015ab8ce2f80c402f80ea953e7ae0cd42ec631933f0ee6b4da24e8 f01a6ed601e89b39c349ea5d50923f972a9d6bf39750b6a2be7c35d150d922db f46f3504f8f7263e792b918427862d643518d980c108fa3c481334ba9839424a 0d44fb3a06285346e8fb07e42e695249b417268b9247fc9d7f58181672681433 b0e2a03c397aec0290dd5732057054f72765436b959eb1926bdaac46e0086714 ed9c607efd103374dd693f1cfc31821345b4a332c1c6b506f703dd292cd08097 b314f6065f8a6e5bc2f986efe601aa800fe036f33dbfdf0be7db7e3bf9f62808 d7f130420118081af86c69ac98c0a68363e5fff3e7a6b332da0ebd57d3ef1ea7 69a7b192a2d3012e65e43ffb2557b3d8c3ddd8d715a9fb197d5bbf81d400ad09 47ac9ee28c2098f1682c347be7846d5b307e86d0e3ad798271fe713baf03dea5 aceb0ef88054064eb1e8b3224f651b4e8c98b958a27fa659bd60484a6d6999bf ef9949ed4b1913ca2a00d91c4f272ee8808dcdcf80c316a8ad9be376ae0da3fd e80fd478bf865fe9a3c608677bc3962ca9494af0b10f40d87b8ffa480127e73e 43f5c319a6b9ad490e0719a1068b01d4fdec7f7f9b984f0145fb842c325653ea 38c4b5df1fe14ff4a6218ae5cf45b9a0fd14451aecef3efb1db15ae7008bf508 0c4b399fd7bfeb90d30cbd7e9c7ed1c5335adc7f2ec8ea2e7c1a761f1df3dd71 e28fbb71e428d8e59c1247a0bdbd295028d545e69c206e4d5424921df3ab66f0 7f5c71a156ba8ad459f5b6b7aeeceac30bafefeb806b6161e1e9ff51d98e041f aa1c17c240eca2a226eb8080e0263fdcd8abf288c7471b717ce0168cd7a07760 85b2018e1d7bbad78bc894ba0aea7c04e34faf11572c38c97c6a5b400f23a9f0 be3d368dd91e62355e157362ae00d9eebf42540aea2517f0ca4dcf24e5f4dcf1 c7095557ac2f59dc0a624ca6b257c794c428900912e6084505d92b2f3c637f51 d54addefef711d2fe5b3d7f39b30f440269d67eeb6fc3e1782a8875dc7ce2a14 8e6024bf8de20f2451b6f313e9f43d40199e5c5f287f2dadaf8e9d0d6384dd83 a1fd5a1fe747bea25bc4e3c0a405cc83c7fd576fa057c7f034def384c1a19071 74413c02653c0936ec1fef544925bd633bebc9cc06e811323e71907420366908 afadd23b9d412867179b3dc2bf75986b89c6ca5b18c150fbbcdd23a1addca834 49e9e718da518e1d4abb970b29f21ca59e391b8c95ed9ba221c0b7dd2c1050aa 74cb46e59e26b109187f56cca36b29ee0eab04fbc70ed5f6014a0bbf5a990adc 1e511808b2afd50f90ede65dbbc850a107e98134edb0a9acb1f20c38569b6cd6 93a9e78c68b6d525d6dd032e3b5a6dda960dfffbd2636a524c77f670f233ed52 86b0a14ec9cf1ac94be070a0ed7632167010c14f7e2d0cdeddc003073d567540 2544aa19a663c781def5230fd4731fd0e7d6e83b671efec61bfafc02c17bfa33 1e175dd199c41279699eed9357bfc5ff1d1ced90518d4e88bb7fc34d943cd593 20f167866c179cb803b634768055b5e5a6430f500d5b6c45ef18cd2ff535d833 9a783b433d7281c213838fa26fc05fa903a498dea92f01c954ebd47c77231c93 0151a7304f524f3638ac2eaf37fb67caabd7bb606b97707b7404274092a814a8 d15d59cb019fbfa95a99d0026dd466130d83d5b72da860155185f21224d0ef2a 261e0de695550b8a7a83c00ea7bd0c3ac002351a0fbe758fb695799e1641cfed 3cc71103d688bf0275ffb129ad15b56ff3b176196b9dc817b2e2bd47feb596a8 7239718cd967060743897fa663613781c67365fa02973760d45495a6202c5d0e 96797b85c0d0d1676e22b536b69110bafa8e61e587365ef6ab39aa552d51d991 d46222f0486e11a942c8e1268f00d8beea44df4ca22ea212326c2a1fcb50c6c0 e67bb0e6d978099b5a59e922dabcf239c9294c20f3625af05e185a2bfe6d3490 ae8855aca16fac5effabdd54aea5cf0d04f97fad52eb6f6ec07a5645cd71f8c9 bff7cbe9eeaaafec9280a14512fc4e7a400f80893d11e242d2da9aa1e8f39777 1125077d59c721235da1145be131c6b2d24c0fad71bf14fa23768cc20f4169d5 4f9ff7a38710bb8fecbba22113690fe1a55bbe57616f8c2918d4bba5f6686dcc 786786d9d5fd5272bc7657f474790cbeae409808c0f7edd5297dcfa89a2d3a72 9c702eb28f644b16a730bf693776cede68ec720b2135393f0bf9f65cc41cb24d 5c7334321e007e65a85157cccfb840f4665344ab345b12d8bad9aec92732c7d1 ab73fdbbe6be98462f2be7919106645aa33138f8810267b4fbd2d185462db06a 9c01db86b1b88edb23ab981b453f7a2c8d042fc31e66e420440280855c45691e 23159ea802e4cd7f9268779718319a4f7b5017a2db1e51c125c7c264a72063a7 9e3f68c1367f035c87e395bc1309385e5b855279b083de170a8584b7a5924520 167f2d0b5a28a3f5f9070d1c430c23cd59db382b9013f1b8b568686a11302764 5d393961a3ad507ffd7e2b2f8a4c407385afd401488e7c057b1b29a7546cbddb f02801ccd3fe32b31d4821dd6e3680efdf3ecb9e7f07bac8d309ddedd4de6e61 c6787e817140516d5cdbe798d14413cfa6e6955fc6cd917c2c344702980c5d89 1221c9f22709c5b953294eea63595c50818939fd518d7201ef532552077e168e 929f0dc7010db4cf95e4d4db68d6b3850d2400e82a8844a76ff147132ad9a035 6268c14afde7a50f24b17efa9fa5cf3b17c1f106e0352944c89268a6f44ab814 65738b7afd0d6c4e0320cb0b0647b61690bff89cdb8b5368d971537587552c1f 9964e283c2a8381fae744643ad9150ff49bfd159af642c22679d9afc8f8a1308 f4b9c8059ddf9ac1f763665fe67e463713af3fd2aa0d98e2ab5ceb4bc6d5819b ca49e9b958c1464fc134bf34b4b9453a3030bb0f113555c39028c35d635488fc 7a9cdc4be58d06c9d2be04cd79ccb4e2b1de86c796ea610f6984368c1041505a aad8d6be9f5c593b822c1a4c2f1123345bab60728e909c8db53b3e9581a4f3a3 e49c4617eebf8587b9e2d9b6c4b4fb16656262dee80fe212e0aa65c1d426cc3f b17a1d5befbcd684c8b40916befa40585d04ff95a40342b3f4bb84abadf53d6d f70649cae735ecac7553c9717a08c979148f33bfb335db8befca1a7bb9b84afb 7664f29ac5035a1cc3af42a5053b809bde3a39865cc460e922b9effb1937bb4a a6692321c1132fe0cc8767b0da6b3f7f1f5453a0eb54086ad9c1a966fba7809c 8159a694c9346d68beb355241765c64b3e0071ff7fb9e123bf28e6f5d7ef952a 74b03fb3749dfe9bdfa00b6f803a3a8ed2213e3e2a9b6f1254e99011f20c2215 25f259ccb15218f5e5cf6c593a85b64d07ba5e0fe6d75593d272a544b14b6642 db211d7e69c171ac22d1e29a386d22203d8a2b4bdc8f657211d57f1e495b6b30 acde54250905ee4a05f9889819cb23338d30508fc4ee07265359faf54a9f6112 fc29f73c9c04e7644a29e1aa5212be21d555571c3ccacbce79327ee9e936bbb2 dcb67c92938be763570e6e04c4d9264cb92143be34d94ae887c27d997f620105 68a72c57966e6e25deb6c8e03735538ce447fa311b3f7935a5f325cc5e50fac2 788ce0296116f9c2b7537f7e57903639cb4c8a9473056a12df678f6c2948944e 8bb6c2d6f04202ecb8f54a34e73d7c318d5c1293c96f4e06e3c43d00f07d9736 d4a30ca0e148953d0f7006cae91d3792ede7c4e293feb606b3f6f8e1aa09309a c3cea501918b95c15bd3b3d5c8742ab54718d14b7dd3809bc36423b3f9e877c5 6a1839fa2397761d38c6dffde1b67b7873f84651a4292024ae0974504c580d70 df41f8d9758b5fa996c0d2557df41eba728b9ec44c5e61f13ef1e07e21aef30f 4eeafc2a5488df42ab314bbc9f5931a7b496d7f4ce13e5d0d58ec69a6f5b4611 42cdd344ae67f44b87d50ad13d7e9c4090ddbfe9441e9c6a02e5a668ffa5756f c57746a93b57d7a8a3569e5260d65c80fe5611fc1ea7e41b8890bd556afa3d52 f30fda4e61b0acb008406b0fbfbdd750061f70c535d9ae43ab9c52524047aba3 4470fe4ef78dd0fc32e351ef535729025064096e7dcae12cec6ed3fc990a3f2d f69126899cbf5307da020e3a728c0b9bfd3987962bcc7e29c55de7d911473de7 01e1d891b217309989be23fc37b3099262f38505c197f5086128342ed7dc314e 758b9ff939c9a9b71e1049f8063647e8456f9d91d015c413d175cebc5e1cec43 d5c01e40c7189e58496d25956dce4d2f438039666d74d7545bb7763d0d4fc561 3944205e9158a30d829ddefa8de5eed78e19945487b1c324320d173f30f6c2f9 364aa5c50d77b85e05bda77fa4944e8cf5f1b2b4d7cc593721bab65a35743345 41457ad04c2d9005914460f5d4fb6a2ebe5f9de4941400e1cdf7374151cc752b a90c389b2ef9690bc2c6502e378f5790953b9e3143bda89dfdeba18cdbb112ac fa3ff5a1f0005e1043f497992f13029626b2d7559c3c1e69202e31372a5e89da b3b392dbd2110b0bb856100707af46d6d662822648579898408640bb58ea0ff9 cd86168c02161851782d0e6e55d027e5c6381f8096f8b84cef36ae6d6231e49b 0a4805816e96404e648f8098baf93df2acfc3320c2c2fe107a068c6d14758be5 ed01635eda8c37f2feead622df4da77677bcc0994e044728f4daa7609d2f984c f77a1f02157bcccb430ada7004652ed6c694cd08a00fe62cf548d66c637196eb a1eca95f138932732b0446ec90ed6c51457121719085cdcdcdc7f902c759f66c 32d7f97cca81e130586e531835179cb7ed5db3b4a51e2facf2beccfbe80eeb78 70ef69f35ab53349a535c2b048c36e00a9dad318a84d721039e8a29dcc0b9393 a9ef4442b033ba604b16fb0942f9dc9a0e909991316a951cacc615763ec84db1 b1953ed395ecb2eb6985cf053c561ba804dfae008464aec74e704c2f5faaf6be 71d8f0f499de992a79e0aca5b73ab6f15a48274ebed41ac0a1173f2dcc9e8a51 f6486e9ce7f2a87e0a613ffc7994637d385ed39b51578de23d277409a53a16c6 7e9f83d1a750dfe82090b512bf65f1d47b3db68933f9f32be85b7c3125357e6c 80cba5fa23233d440d0808b9be2111bf8d2b2f0a6fa5910d2ce7781d3fe83090 ec7ed485c2ba07a456e69af5c89f6595cfb0872a3e1595beba4cb8270e179874 5e3a65fc4f64cd4b155df07c796c292e0d7528beff8bc9d521169b640fb9791e a0100f6a13ff913b1fac45d00c64ed7fbb4bf1cbb6e39c23ee1c05c4ad3f32a9 6ac1b0f33f6f571bd0d2cb97e34284b348360533cb0fcd5c8d5a399953bfec4e a988f39842150aae6f549c4725f1e6087d526d3804ff396696adb1233b1d314a d960fd8be183dfdf780e46d71a1d840a27fa1ee924361507a21fb5dececac2a2 00d547a6d9c613603eed7168bb8374d8d5ab5dfcd7cf5d0df296db2b65f9cb73 21542dcaf38757575b86ee603963ff09c026d9ee10a7424d9747542548bdeba0 61e85adde445bd47579935d43f1146c8e5495401166936efb81b7bc71184e3db 03f67cb0c6d38059caac0fbba76fc4ec8a6b7b356463ae59ba74c96795528eed 9eb8bcd23d59fd4ee98ca94943e0aa0b60797ffd724428b6fa207ce045073d95 3fde681913b9c57ade086e9369d0c91a1e4bafce940ddf168a29aabe9e360117 1af6e4b27855c61c11920a0b49f85284288955ec564b48c111573f4dad3cb11d ab87832e2375b940a94a1e8d1a4c239ed7d6cba860d3cc330b107ed761821da2 969400db72e8c91d01e88d080dd46c8d9bf0fbc5895649271e77cba0f466f7ae 9a74ac247015b6a46fc539837cad20fb 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTT8 %!PS-AdobeFont-1.1: CMTT8 1.0 %%CreationDate: 1991 Aug 20 16:46:05 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTT8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def end readonly def /FontName /CMTT8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 59 /semicolon put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 73 /I put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 91 /bracketleft put dup 93 /bracketright put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /braceleft put dup 125 /braceright put readonly def /FontBBox{-5 -232 545 699}readonly def /UniqueXX 5000830 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b4486be533de8dbe3ccd493ef4c9656d5d5b76d531 9e704539dd76b065f45e6d6f62ec499c9ab91923a364237ef75e1d62d52df3a9 43713cbc63b16c1880feedd1633766248fed9d060ff709951f2ec84ecdc06bbd 9cc4a865e1f275455525e5ac7e2e6289615e98cf7ce3763b6914d3a4c5b75b29 b8043dbd898ccd5be448064cf1af2f80f969a44b4f9b801c42f6d6a6d0c3ff42 e0b1cff748c1fc49b598eadde0c2802dd591c54b802ffd24cb7a7639295713d5 4e639514ac78460672c9c51742ae2014e4137ba4303051c06f686395aaef86c9 9d7f9a97009436c2ff55b770de3e80cef0d53f4df46aacecc21632c0c676e2f5 ca7bb101a239a0ff67ebd37a6b8c4c8246dc2c90b759dc03fb26bde8f134f552 23ef3d6496aa0c4a2d7b6398de6e6a0474ee1b0d78b2d865614609f1db92fc56 4ab5921078b4944e11a2162902f0e04f4b29448aaa22b4ea92fac48f8dc47535 d717dc7acd08b25d391c97c6c540ae0a98be5d6a8da564ab73e8b5d3b5e1989d 6e25c3a35ea44d596b5fd6b2373b30de7d59c1831245edb76d6a67816ab91a80 a27a6597c6dfd274db8b3e45cb01aedee59ba6efa1428e41ed557f051012a389 9b195ea44a4e4d0067398d9d40ea26195efbffd2cf785540bbeb8964f6391361 904fa5e187e4af3baeb4e8cbe7558fb7049c94a1769a2ff0b44f679bf6f14d8a 974bb8bdc734077371d2d1b09e1a5c2fa63222c67f004f7dc18ec42bff9736e8 04079c457059bcaf6c180ebab7ad3b0f93c0a843143600b18f6f2b7853a05cf3 97493d825b14c2fe7db788ace9408790c928501f123f9041610206d020115cad 3243f145df5577a91772a69c8edec1ce5b6ba16d583c83696f25a3a3061ba431 3196743b117ad89a3712fa486dceb117b99fd90039a656083a9c78eb5402b547 a08ddc567d4b415085f205b0b18c39716638ed9b595365f8e9b35dd2de881f41 dc6e8404dccac03f4da8abd25847dbb5f5fe15656d00ddf97317ffc0ed235481 e62401654d5d3addb8162799e13c3734aadb0d39e94d48ec05f14a81fc0b11f8 59d22222fea725d3a484bf1bf31e2ef2c76528c6b73d4b041f8307e05465b6fa f48b1fd5efd8c582f8260f9f1d1f8530258f5cd53cd2816f4592fb1fceec2c38 7b85fe01707cad345207542f07945d89daf2f6221bf2575f4073ad5ad70f4fb8 fa8b39f6a254701ceb1527d437eb8b1a53966154ba834164a9374ba9efb3c988 a97ac6407475c5527142422f239b8092d25ef263b6947ea91537968a94e7284a 6a9a274662e1a54b4ee315ccf8a0d27ac767fd100e801d50fd68b98fbdc75026 199e72c67feb745b49480e325dfa6b3ebe3097e556a0e275811674dabe05f9d0 958181a3c15eabff97b9c28b93baaec9789dc416d5d42212d17c298d9647b2e7 16c50d0ac5598dfa48fd6d25ee35afa292f2712f75fd370fcb9a0d79428cf04c e31886507b57d21b68fc5f1160f7668fcd1fe6026fa55aa94cdecd21c71888ce 262144edbba17eb88edb8be5e915daeaa6d8794c39656c8d12e78b2141de6f80 eb51406125a88fb6492117e695a739ab40022a3a206552af4a0a161b1d81407b d107f4c3c05da3bb503d2d8b67c884e72c249f6d5d3a367360cecf236d65289f e2f4d8d4fa98166c1dc03b9be10c621c80bae474bbf91e65e10e153728e9fbc9 d61107242198c29e822904f3c09c726ae0eb2bc53d3aef62905d99017b5751da bb2e49f913caf9f04fb5a0b0c6b25cbc70e94d56d7eb5f8c737d16e2f42fbe39 9211b02b5598ffa3a25fd1e4707b4f4fd218b1eaeba343f6bb6f6d03148451b8 2751713c3c30e6881053a7ccb1d4145d3d48b104c32fc520991a852469c5a303 669886765ef6f80adcf9b8bec0a4dd6d8eacbb3a518bb581ea16958dd29a9ae9 7eaa5eb8953f4e4d19ccfb5720ad5a59f993872eff39affc6b9d54cc389735cc 01c510c0acb00a3f1bfca9e0af00423f2d47010d633878da5c36985df9382c27 82301eb0d161765842a8679a6646da8711e2d7fd92c0ba734f75c14677864d54 9c9a264ed1da3f8362cf52fdb3431ea387af7f1c2986fb6429a46e3bf0231521 2f818301414ff7c1c5d1232c15a1534ce6f15e2f164c325038b24b58288e4527 13e627f879ab16835c576c2b7f0d6b4fcc322e384a1ef56cdc820d63efbd50ba d70aabc69e3658ba0f025ce14abc5fbc3287eeaeac5e4988775e1edeaf5925d0 b70f409d1a183ee79f1097c964537913cafd69189011a979433bcb714a881f52 f4cfc66a78c9093e73c4f4deb1ed2fc2b0fe7a4610a3c17fc0eadabe02e5d45e 7ab060f0b8ba9ab645caff59e39a086373fc01cf8286272623e1665739e24309 e6981278eb7848a044e3158c7a751e4c30f045364fa0d29b54ce3271dd6cc1a5 14ebe37a54f17f5c7267b84e6d41e1563f3a5c46206e2cfb5f125edd1bbc6826 41ec44a921eaba2a76e347c117d1677a9ef553bb7609b73b01c71cda86b1bca5 4381b4abfa04f480b83f9f1f38a3e6c9a709188f4e3046ae2d2c70615a36a9df f35575cdc9c568e3ba89c05624d97b6e9798b050ee4c8c44fdc49ff78e588b52 d57cfd897a48724bef66900dc17997b84a99a7c28c5a12b1a874410d9743e213 3bee898796fca53bed1715b90b50e1d171a9071d80f3b0a7e624916847c9dab2 83688a95feef038b1b8ee69b2252787180e903805f332d6cf259376985f822ff 66ef8a55f0d5f70502978e98ac0e134329d94221eba655378ddbd188a323c77e 8905f6bca304ec968201cbd8db4c69a77f34895358eddb36bd432ae652129d18 2991ea8b899d88c5caa3509a2f42edd26f34a2113030e5f126cd075c7470e8b2 7e1d75c74827367d40bf386d902adfa7f90d6d3f80035a06341c22d57f03a573 ca187765b4f3652f19d34f444c9b1820c70be4690eac144606e723e44d610954 055baf277633e41d0fe4701381c20ecb08021e7720e1006eda543f0df3f22400 ceacb5cfc927e57592084bbbebdcf238883fc4e9f61423bd99315b49ee0bf1ba 6a6f64a2696894099314ce4a32e52f0b961423f90d71d290d20171df51112fbd 15746b880cf4bce0f6f5f05bb3beffb3e8f262be3fe8a122bac550c2c0cc7670 7fc0ce5c6c42aac4086cb103f486f1a9c75ee430353cd327c21b0fe57f4cdb46 dcfbf29f6d91270d9a77aabb8d0473483f92a242433a5ac51e0312a687b0d2df 66fc4901707b77dcb594f229c8f12e6aa855e0d550f7e659966298413292ab0e 956cf51ed932dc088c012d128f9f2626570f71dd3d12dc9c76d0d86b278646d9 81c549cc9aeeacdb525a85faf8543ca02f3b33d6c66c495ffa4c259879aac3ce 7edb94d27727642d8b458657c879c9919ae0953aad53bab7bbef98d499579e4d d7fa0d5d2b45d5b69a81cbd502ee0e130852cc34280526326720b9910bff31a1 03736c7478a6e925b601ff5d2963e64b185128e9d3df11f7009237fb9d48a259 491ff06944df1663acec5def8a2928c2fa779b219f406766849af9d97ad0c4fc e05abbc7aad805a8e3e18e725a2331a8f369628898fa895a69262e54b5fc1627 ab988c2dc286660646695f42d9d442387edb93ae87ebd8312720ec3400c00f86 f9411430d9ad96827dfa463db41142bfa08e04a6d4569c47a095ec90c8cb154e c7c355b0cd37c4e3b8361555890a4e8c438140371ba7ae1377dd61b958db7b92 4cd918e82fcea0c31be8e4b0ffd0f098dc6661ff5f16097aa378c1fc5fe7a10e c24ccdee92b8a1aec32e56354a6b707b6a10e7409105c4d40354f5eeefa423d4 1f7e8568f027684e2bfe5ea3ed91371a2a43a8f443e36c161c61d706dd5e6aff a1d577440d68e2d52ec88530aff5efb7c05a90f575b47e1734e9c8f21c9f5be2 4ec8e9ec3880302364ae96d28f826f2e3f24169222eb3163dabb28313201cf10 829dd2eb85292b649a5ccd732a7d558c83741d556cbeeae7e6f119b4dc692c67 a6c3ba5f4249798b14aa5488e9234fd3479792dce0bac26476bfcf668399b493 46dcca0e5668de40ea48fdad5a642893aa8a369aa7bf3536b41ba3b103b70bb6 e927d6be332c29db0dd4204fdf10c6e9c4d59c01ee8409189b90c1ec8c7688ad c502a987fd89b8e46352a519450ecb601974439417d1eae164ce47ea9b636313 346bee819bd4925c297ff9c638754472a54847c29e0100a0fa68ddb87a464f28 91a7d7d6585ccd1814b8fd5ca33b7eb99a4ee210ed199ea548896594a4e54f9f 80db1f56de1562c5b076fd2fca811a516b3b49e3d68fcf702f025113cf5ad920 f545cf8f5d5fbe3bc458ce1c9c902eba977203ffad885bead8366b89cb66d254 37cc9a8ce2d47d88b0df22b446dad9b0b66d38d7fc3ce5c88897c2bb406d6634 ab50aa3c0c3e92e0853aa25d238171c58ed0ed79f459022b4761617beee6c685 8132fead1b7895ea0bd8dc77d0e9795ef954f174c4eb5abef769a91cc7076c3c 31a9c3c16691ed7a372268484835ca2a15f5e17ad7ef49b08f047d899730ebd9 ff310a6c69adfc43e9b34342842ea955455dee65fccf5f1441bd6a9acef4a7be 8d3f32db69f0b5bd4a908e9a57bc424991618063e8305797a4eac71db5715f88 316a7e66e5800bba2e49c00e2e4a435518140e7ec59577421b55b03bd4d31b55 b4c13dd65a9466d738ca0c39a88123e594b2b582523530abad1705fd2975ccd1 cafc6fe90a77a897586af937ecbc34dfd71bb81a1f54e3c81860ab03e3fcfe85 71d27d7d10503a280c26957b28205a541a612e7ffe2d8c802a1517f9ae8c98bc 635a4e9f23493213b4809fb9e91ad65c4db796a6e0efd0713b18a09277e9bce3 590fc23368e583da5d9bfdd9d2f0b63346ae9f04120b3f2685447378fb7d609e 3bf065544a4357bcc1b0309a8953d09202a999540c0f0d5472aa52a0e5c70ffe 53dd3ec47908cdc146c0112eb65c994840ca2f38a5728ce43894ae7fe4afc246 538fec1038ea780c7077757fc9f6f45150beec1d44638c5e02d0aafecda6ed45 54518bf9aefa70fb39eba514b784da14efe40d3618e6dfa092440dce4c22667a dec3ad34fa89f8c011b5091fd78d9ad7c669fee9e036b885f1e853d1a65f1142 b13368bc64c134d59d5272633fa4fd9978cf4a5e89a5f65867c294e01cd25645 d36d168923544eca8e6176b951e8269bed7526fcd125822089de0a8ff6342fa0 a67bce8f872e4f2606f6b68c34182d4c6dff32daa85b6edfeb23cf96d4e8d405 9121e4357d2f17488aba918db70aab63686b3aa5015f6d86bbea2b7427f0031c a6989188cc6e95cf208a3f3768f5f91eaa01f97dbcbc0e03dfa3a1a2a6f866e1 cd0a238b569ed174356f1b17b9be867956f717f951db49e3f194da80df9bae33 2d55952d064635c71b754465a61cd46c636a5fdb04e140f216cbffefbf235b6e 6a4995926d162ae7706b4e8dba1d3599098935070ba12fabf072d127399033d4 b5ea913100e5dfdc76fa0b36475e1b5d46cd236493c8c581be5d2332f001bd9a 57fc7e0d34bd6ea5c6c8ccbc1bb91b97fc8db43b69994fbd43a43f1c2dcd3fee a3f8ce89a35bce015cb8adc88fc69bdfc1891aa61bbad3659405faa6f175872d a2b5488b4490f0e2e9ddeddcf6815028d85344f6ef8d385b62a418fe352b1bf2 af125f690a9cc6ec493cac8be243da61d0b69ac63e8fed90e47e64358da34da9 2c98fc4ce251d1bfc08960363a0c310e0fe600d374618f98652c6aa7c6357afa f42ac78923373c87f51d6d57391666aea8ff2cd3c44a673dd52432ca45c9738a 78ab3bcb57446bc2a478cc4e86118983e287ea0fd7b03d76935da4d3c16c11a0 c97fc57008b39f9bc9825b97ead45fc933e19b1d70f5515194c2486d6b06663e 5e67f9f6716a06b17c32041a13bcb231c80b2af219595c536941e3bf49250563 dbfba66d808da481a2fd7407641f8a1f554406050dab2f0ae1b88a7c3d2071a5 ca704c4efe81c7183d75f64466cf3c8eb8434dde43d01b15fae8a39a2a28b481 6ab313cda180fb35389c374c239afbc37b89ada2ca4e9ee0866c778304f9815d f4f9499f203681b4d854dd2a5f5c6bddd447f9d97cc58122eb408728fb22a311 b21c458e16d78b2ecb31bc946326ff93e5ea102361af748f858479c268754cd3 1092689e1e8e5f8a62dc955b5b8a5215f099f1f2cdb01b7933ffa4acd004326b 54a1a5d5dc2faa4f8a018364f54e2339d56730ef04fb2604058398eb89c7581c c55d9d9933d4904c811744c5beb2beff5427c0147cd15053b2e76777cbbb7caa 60244b8d67d3df18988dd578123dff3a01da4b8de9c116e56db5fabfd2d4c04d 9d6c02a099b061a254d5449467463fa2f0936de759f4963d74e3abd6447d4246 e5254af1538152d305045315e0d77aa7029f5ff4aee8fd1ab42878afed11e192 e40b5e3965f6461357c0c60cecf25bfa878d64d097a50eb02c365ee22c9152ad 160c011d1ffdedc39cee32a14a9afe6a71f9bcfd0b6ba9780fd34725270fa9a2 899775e25d703dca3a2506540d663d4dcdf1d7727f194a7f13743d0f43d23c9a 2e1a241b10af953cfce473ce9d9b228fa0a136e2453c2dbed0261a404f3ba098 ade3a5074a2cbb4751baa5924cee75d1b22a751cd8e3454cb7fa7e06161e3d74 340860f39f714825c0f56a7d1f5c9a406e457dfadad3538634323c681d414163 7d1062f2413e0067476444c3f58e20f9e79a20089f42630fe478c144ad2eb7c9 b15001cd0d43c5aa697e7faf5047e0e4ed7af867289c3ab905170a5df374be59 14d408452681810aa10f7d9259dfc1e546c26bc80925d8657234db45ac1b2970 6162b475254834abe3f9df1cf75b80540429305c78c59a8f270d21135f70621f 0014d5c1007adbc76ca41e45f0abec30dbfe4141ca212f7e7b7bce38eb1d3289 a6370b5e48439b6eb1b9c6537661493f4274d47bee93c8630e41a731acdc4903 b507ddbd596b90fe65a7bffa75181315ad06ef33f36aa28de7ecdcaabe56cb63 ec12ed3353c181abf62f287602fda7c30fcd186de86441d0691cc5eb2c81151a 78c320b7853b95ff8e2e0ca75a4e9b65d22ebdfd25ae322c1e2970d541c060a5 cbe2d739d1df0db179341a80af4233e9d53dffa62f004d08750872c4f897884a 2e33d3616e49d9f2df78eeae94e7685702b22850f655a19d11f773bfc6afbe7f f80dbd01fc809b8ec08bfc00e708f5086836f542eb45090ed83fa3bfe1f414b0 bb21aa15a71562d18fc5129e90b815b5e40efd27b35f2c626c837398e04f12dd 12c2486324b1422b8a4c27bc2e514b66856d975233f20eeb21d46b2562849331 12ba03eefbc429af8992c8d7c599d0e2d77250add5ac14d4895f4fbc60c11731 9f3082c6709c94faba47b7e81510fcb21d7c37610a1bdd4fcf7632168ee97c31 60e031cb929c784df8f5acc250958e569369e9dea5778ec24fc2de7fd2f4435f 8dfc41b84d33c0608f13daf8c9feb0625a3f921194e63f728521c32b1e5e9b79 c83eafd71550e1508f64dad5d8b1585303ac1df267541ed758ff7dd7a98170c5 180d31263719f4a712850adb20aecd7f677a30b8c702320392e5d9f803a74918 ba41e4e16a662448cfed3b61f6a0f4cfba1333211328a5f620a0abd34f10e6d9 67721366611472e9169e887c12c804e3246ae6d117fd407763745cfa9ca23ec5 a29e4b6950ccbb47d33f6fba5ae173df6d1955115d67bbaf40da5282eac4ecd3 50665be64b09db4b69a2acbebdf13af455daffbabfd86dee4c53456ded3132f8 bb21035c1fc1934ddb10ad381b63b4a1403db07f30a462bb29f6ebac3c96afbd 85349a682b7096e60a8e79e0437446a5f6dedac302596fcda952f332fa3e5bef 8d1e3db35e5dd14861ba068b46cdf71fc449cb9b623fab8b63c333eaa95d6141 8ae17a44873ccd55b624f9f1d49c632ceaefdf6cdd15d900e18cc00cb1d55752 b6a10e55d9f2aeb140712a81b1fede3df8fd16da58c0777bc46dd19241be67f8 7e2b457c2790a0bd87dbdae202568475f707dc812b7944b47e23b54ee3061ff6 b7030e4be0536e1adf6e10c32311ee8ec2277e28179004824c38bdecc066c71a edb1a6c58e4e1a255f23dbaf9952c09a2a7d7729cacdd26dcfb983ee4a7d1bf1 ecd2d400ad2313a9a51406b0d08dbf6c03ed70c1148ee16126e61c6e744c5299 30dfb0d4d5fe4958f10ebeecf82326118291b1a2bc3856658d85d9355be9f9e7 dfea3e705cc39903d7837395a88cb869ced88ca044a154b9b2a3a95067ec13a1 4f6c400a22835824bff3941ab9256fbec44bff8b34610ebd2f57fe3ed2dc0ce6 b5bc816cd60b0887bf5b5c2d1139f9d3adc2798c089483b294e8f99c03893ac7 e2a443b1dfaeff096bffd0748a6657b9c3ca02f5b4242c4312018341fa2904bd 1d51cc615af7d0fdb444d83447b68892109120b7538e1111932ccdcbf8c26c69 6bd333590a55304359743353b534e22cd564240645aed2e5d77a0b8c90457820 7f0434a769470d9350db3ab48ccdedf948f3604504c452ef790a8509af96f928 0041e5a1c7427f656d2f769e4c4b513a1f28b23cbf14a8d2e069826f4308972a 0c49d35b93306cf38e274f6da2ef9ecdd184c06405116c45ccd6fb88bd480ea1 ad9fd9183552d655ccebd2c2424bdc6684eddf90e71995bcdc1ea9c1ccae9b78 7abb37cd178e17f7640343d52a566f33b77577dd13b5c427a6a076c4b2a4d4eb 17f69860abb80abca2ca04b6788ccc9e6597239d799e1a955949b795e105be4c 85f163d93d7fcb753041e74fe0c62f800be889b28c6ab42dce62a24c397bdc2b e2a60a2a47a8288dbdb582374c9be92787b003eee68cf106142cb8f8e06c01e6 3ab52c2a961089d1657d88460a412c84001376d301699a6764bb01a9fc517acc db79742dbcff859b2b0f7611eb746e68daae89fe324e315d0de9a1f4a8cc7846 36ec12ffd97a888da74e77c594476d160810980acfdafc2a3d78446da9be7e8d 683c1b5092e5ce08ba9260272ba652da10d8b15b8afc7b19bcdddb6a07d6df4b 41bd54f1c644ad3bb645e026965784b4a647eb6a8317c2231cba2dc10faf6999 a9c44c7bffc3bf5351651e5603bc4416bff8a62182fc81b0df39bf4328caa16e e4854288b71d88e011967aaa42f74e71011efda2036c6b4054c73c71d239120b bf75ab367f958ce20eb8a28a5879a1eade663f71352fa0350b404a4409dfdeb3 039e7813bff73f7013c54da476aff630069202711ec33eb7515cc945fc8e92ea e22bf82af889af3aaaa3f9ca146970234c03533fffc4ca284d49fee429d0aac7 2a999699097c3ee6ca2e6bfbeafa1a0fca049803c4485aa7eef69e512e5028b9 372466de28a8bec508436708d5ad797497933dc2d239a9f7496aa31dce3e055f 15576da6f84f5379fa42d644bd67f651e27c0ed7ff3ca64cf986f74e0ec1c09a 930d26f68f60144880ea427416dae99162ad506c3541cbca3ee8e2be3490fb89 a110e3b1a50a4c412c4227cd1bfb1385152d1253126aa5c89f1bcd56453342f7 ab8454e9059762e3741f081c506d93c68df3e4f14a57faf3fe4798cf6865c685 bdd3e4bfbaac89413fca48a0db80ba180d5acb9a180eabc3dfa4cc8bac2ade46 8e3086ae5948bd49f1ccf846f7e23b03fe102ded3ba5c755a30db3944a14f883 df210df2626c58ea7bbf3ca2b9ac42b2e0f45bd57d8810bc3a6095459a3a45f9 9b1ffb6b9a8824dc61b68c01e519ed2062a57ebd6fe17fa02afd26bf07187696 ae013a446af524c5fc4973e18c9ff02c7c78bb21851f04d04053f485fdc77de8 4bb7d3923d2c5efdfbf1f8a2bc7cac001b7a9550fe17b4d3a13a42be26627ac1 f01c17a31035a918881f9477ecc2b7b07ee282688f16dd5fdb20b9967bcb0e12 f5d7a2b43115018039f2f5a38d6fb4a944d2e2c665248ec73685fdd98f9bee27 f21fe3bcd8b6295bcaeaa3dd4a139eb3ffd3233432c0b46c09b9153116493bd8 d3d5f7fbce343be92d190738f25f9bdaa13f0cb9f6928dc72c2cb368e7378763 53dfc829eb945d43ec2b9db4c237a14a65f25e16a6ef90359f256116a5ba3fe0 3b06f0360d88e4dffb8113b80653f69218455bbb88aef8621e233a3b025bca77 bec0001bc4eef3f2816da997a5da75dc95860ee7e590e00a22a8e088f994ce5d f579bfb8640e03f2fc34c7eb89bef1df329f5c1b6b31d7a60ef32c94fd02e9db 86f9ea00415cc8fb4eb7e5eef5b5b5dc6ae9f8f20845bca4475cd76aac80adc1 9900a55f5c84a8d0501578a42ae63cd937291e415fda7b36ea7056bdf2f22932 1e8dcda6b9d7af9baccbc98019aa097ab2cbefee9d68e666f30162dc98fdb6a5 1ce77fa3fc901accf118abe6be8509301ec7dac2d3174849efb0829b34f15ffe 60d29dad0a24e44d3c3cf215db1b5724ef20e11a5122134227dbeb95d29db4f3 961fab93ec703d6b45f2f1102428884d118e6609be0ef6b2e80f968c236a9e6e 79b33b12e894cad8fa0476c544fbb943d13c629d585bfa604409ba2bfe171956 cf9198f3446d51636002628824c013c99212eeba05772a4c0474c4e71055ad3c 74871bfb7aa7f9ccead1f971036b407c572b3f1b7947f32012eeaa8690fea8f9 84f3f47b1a3849b09048d7203f3197dfdcedbff8e6062ecfe34d4aa656bc896b f1a46e958239e3b8064e1d81f8cee5ef8881f1b6907f27d051c2142969c08e8d 9de686d7198edad6e0a66b4f4105caa2a871197ef494136b6e2afcb614922767 6e891a9a77cc0bf07112630d30aa845561aea7df386c477cc5aca1f2e664c42d 9628e35f7c1748a918b04bd49d831a89cb6dea451d8cc1594518c9cdca1ac209 6a35a599dc25feabfc0e723a6a0e800831e129d03aeb5354580f231ab688c145 52a857708a05497ea4ffbb7130d058499e28adf0fd9dbcce791b5534a1bf71fa e7db28cfdd8b7ce587eef55ded4529d7e5714b760d569ff41d2d5333e236cc4d d3df90af1cd3bc3d67c02b4f372a849f66e15f461be53ae3b52ec845b0f4f598 b26a878981b9459adb3bf4dbbab201a132495e3194eb0c95b238b9038d76d3a0 014bf1bd8f7407a249deffa92736019578a80467416c8e8490582dd7e38a438a 9e3592764051506fccdcb7fc0dac35b561ccaf2046373e34f8c9e3f1c3e91070 d75c26b20f743086a05439b070ad303e77b90a1687b2bc9ab4890f1d8f0c5633 2aa0d3a3df5dc9dae2847dd86410603c1f3148c1c9ce41c4b900eea3b2b7a4bf 449f9891aaa2e0a9776fcd6a4ee0faebd0a68d4e6687aaa0cb083f5a5e469728 24601ddd48cec919ea3ad5099cc3d37fd18a40fe901a7c12fdb1562d21b8d05a 768eeae849c62bb73c43b72d3aa8604c3e0cb661df48c1bf7a61e9f0923fed21 53bfad1c1165b48fb201c70478fccac6703e5f7e4f23da028b4d347df16d229e 3e5349d05f6e56f4030dd9dcef471edad28e389a8a8ede06bc91cdde81364e76 aacb5ab0f659253e57a7b3bd0a6d596c07d73176c788154d761495a2616cda29 fcf03642399668c9f86e023dcebd64 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMCSC10 %!PS-AdobeFont-1.1: CMCSC10 1.0 %%CreationDate: 1991 Aug 18 17:46:49 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMCSC10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMCSC10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 97 /a put dup 99 /c put dup 100 /d put dup 101 /e put dup 103 /g put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put readonly def /FontBBox{14 -250 1077 750}readonly def /UniqueXX 5000772 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65 66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7 695aba81f0260cd5248b9e649cd800bcb325468c79ffacb9cd3037a112066957 7889d67fff57549064b985d67ede2fb03272083723541051ebe936eff01a4ab3 cd845d565dfdf25d9ddd2792db17f52f894bea484480f06c832140fdd6c3af0e fef0584c6b78b5e2bbb9a752f10581fd1c48cb498a822afb18cddebba34695b9 b418010368fdfb7bf758d50f3af03360b81c776325c33c9c81130b1e1be840cf 68c71ffd091dccc0df7b507fe8953dc3836af0da08ff9ff3e9cf7288d9eb8baf ffac546a0fd987ae8e0bcf7b759f4408e13524f478de5896d816cb0ad2904271 cbec82a5ca50f0598502b434ecd94531b4a65181b5b3afcb650904b15157737a a4386f1a7f1252caf2adbd5c8162bf3b065c01ca471d520c884ebbe1b29f9549 134e285dea2fe158c15a08a744cdda00bb6c62158262e24702803d9e1dc1d3a3 1383085631154b077fc20488ee3aa03f47ed2766644330b94133f2f9389b99b8 96d3707d1c5bb227fd3bbdf3a6ff572bf07164107c7a1c0710a5c7cfb67282f9 c238100fa138b75c553d7cbef17e2292a320d3d86a6210e6e3a1e590b10dac6e 177094d5dd163db623d7b344478752f6f3d7d5b3fa92e6bc72dc6fc343d2f946 9153e3d14c5a6d6b1d9ca52947b789cb4cf6196a02973aff0b097333f8d615c0 a1726ab7e31c378eab77150faa28cce535afe3ae5798402ca51cbd18dedc2c43 5281d0781351df30f4d11761579676449ae4a47a10f677cdd31ca9120fc2606a 9025d3cc09d58856a9bbfb17669f706ff8c7efe37a3656c9b20609cccb58b309 0595ca5666833f2bbf884aac1cd632fce69b4e0ea2e0a25b9c4d471f0e322e09 4cefda321359fdbe0a82656d3ecaeb68b7e0c7e733d85066ed7474c22b67169a 1bf1bdf7dfd0ce0aaeef78ee393ce6ea65edc1fdcdf3f744f714005d8221a156 4e72505bdc2a7d3c82b910a9000bf82a2726fc8ce26483d27debc13bf3fe9d2d ef260408d23c7adc665f4f67a632da745870fe0f7c707c399eac563e47d4878d 59f2f981952bfa7c0df64974558f768061c889ab8d0ffd98bd9ba7a3d625d841 f4234e8ac93623f1f10d013b131d752419dcd2cebfde5126c13c479b7a9f99e6 994e79a213c9565ee91b29252642ffdd30fbbcf2a882f19e347e9f571889edb3 8beeaf7f283b36a1acceb7bffccab1d0f9da7f9b87dee548076a58e28a9f767e cb852c24a6e753c72e39aa03360b1b0fab0501713f0492000cfb571d09a524a1 128710a8bfb79ece2c185141d5d903727c401824cc18f2407328980edbe36f9d 53c778eb49762167a370b1dce78d415ce068bb82ef6f773c59df4a8f7caa10e8 73bbf418378736dd68d3dfbe648e6c8e56ee02b533011dcc1a162b183ecf23ba 8a540c451eb0f6a17d1459421bd24b64de240cd6179406e9abefd488caf2e914 0d7291a09db74841f209892ab3ae3423a089953b12f9489ef07f57723aeee5f1 24644d95ac3d2cee1b912caf23141e6cda690e6e1bc0583a5386a9e37a7eedbf 796eeea66c13a464359dfcebf91a287e6189c8e3d831f6079734ebd47245c817 f55b9ca2a3f44e2af3ebcd0479e527be68783b639a4bfd726ae3071acf4f6aa2 e0b395fafdf1a907389b03136218cbf786eea4e19aeca88b94bebd61051b8c30 ef516e4c4d260cfee53358c85ce6a2e1fa81989d9dd847b23841d848d5c9074d 4ad10a3a9a7fced87b148a02e98cf5f814507f3b576d57f12705d07d5d289857 cea4288a921f1ac2ecb6220b7cd6fbc45ed3558dde4e61f03c8676ac5fe88c28 560fac2ba5b1c0c6e32726bb1deea53fb7d79c8fa7f410654290a62d8e0b74e4 7e7848685a20fa2936be1415d31fba08b100cb73669084acdc19459b6a1102f6 9c96a8e59b2334026010d59498469704409b7e4acc50b52f68637fcd964b1737 78c9bfeb32ff897c4a490f5f82ffa728e5062feac9023f8d4419fd5e8d117e38 d61882ae7f6feea373a95171f85f7b38041fe00c5700ecd8db1e99af812ae471 afe991b2c53066c988d64bab5a79660e417bf14081ea7d2d62c418c9f2b95717 491f1c6abcb431ae571bed1a9f7097da95ea3710ec5e734b98f1585d856fd84c a59a9a9aef62f4039d4166b73cb773f122f1f7e6fb4546d062837c11214b2c99 9d8a1946acf1e94d76d7dc92b60725c55a1fd5d5703237fc87eae7bd3b516aaf be7569356679ae53da827054a519f611c1e81bb44136227fc2413aee38df63fa 866a8826c1f986dc2c90ebf2072c591a630d7a922a19621e17c339524b7f69af 35042818f54d712ad9fcfc69ea6eed00e03b8881b2f1a79d79284ce895571631 72670278df0a53679633ed7c30d09e8279a949fbfeed2e8beb2c8641522bffd2 6da69dd39a998e5f6f077a2ea42fa72268b7153bd4284406cba0fd9760cf8c73 e09679f3bc17c311aa93e6bf125a47af0cf2571459e3867899ac2049a5ec277f 6f37fbddf1f30f01355d814d41e62156273bfdf8caf8dca0c34db4ef94895975 15d81cbb2c1e71d86d445d573a4fbaa81e5592ce1e0ffb14393ff3b1173a66c5 623d5ad16b440b50cb2ac3eb785c75a28ade1c0f379a7a9804d7eadfaf576ffd efa14e8241064e320e618bbfc5d9ded012940936c13f517c4edb041190655a9b 2496b7242a938fc9500211bdf199f92c22407e5c6b75b08357611bf92551986c ae9d291da588a0d9e7a256afc66a98e279239abf61c29d5eb7307eb4b41f6988 4f8b9dcb8fdf12b010611de5c4fb3d244506c96fd2497e925d4fb5d2f1c0fd4e f92a01bed3f63abd1dd803fe51b1a8ccc11efe108c06b928ae86bbec2f5db303 fa74b34f9a98d145f67c50bf860e18b4fc81692f0c48df4026b743c5b605a05f f73cba018a49318376e6e25cbb028d83af538673c121000f352ec9ce4de55de0 cd12ba23cd504cc8877180caa9792bb1b630de585e8be456c49f9a8af2f30824 8130e704a5e966d7cef33cfae537dc88df994c2e4b70147602a11c4341ae3374 87acf8da8e732c9465031185b41780c9afd017ec20a1fcc9351a6ad8361f125b fbca77a3e02cd846c0664d4b67a954b3ff4da766c9240414ccc28f8b8dcac7c1 f31cb176a3e19efefeec98c72b7d7fced6e8273a0a35e078a8205dacba01c68b ba227a5d5da931526566a38b66dd2b222cc9f41925d396187b06a499f5515adc 572d6efe87af90e59c8156d8219c5985f1ec867a0625ec286a41b93a884d7caa 4bf50255ec1af342a51a1f69177ecb565bba0b68b1e0c8fb7fa5e7cc2d5330ab 58a472e358a84a247a4a6b30a733394b8b41be7c92f383b6d7fbf6687e1f7a37 968c76ce00497368919d6aba2c8bd4cc9520fd55c1d446b8f5d5d5e52ca1a429 55a4a6ee8d0d676a7c30ed9ce7ae83e785e7a8c161c3a23816fee3099ae7cd37 adda5f5b76a2c4d92565d5d5262c8fbd3f83e28ba433986df4996acf7badca73 6a02f86d74cf1f3ed9fed9d519106ec0dfd5b2674b2e3dd73abaffc4f79362b9 995b324d082bcca5da7f38cbbd3e4b235b8eec894a8d5138b3929741651bd687 bb16e7f21a031c0c3f2dcb216fd7b62c0f6d3762e8e816b88118d123fa4d6539 d21ce51301880e8cf87e065cb21999df8bfa17bca68e805627e9b30c1ccf7e1a ea8be83cb6ecf8f05320e0d0d05bfb57a2a459973531d2ed4d38cea3f7ab80b3 85e4ed2fc6827cf6655f2f56d25522f2d82ca5eb140a8365672355ac6afc67d7 9f4946df49af29c0cf2b32be5a96017c05934ba28748caf9e85632d17952c40e 980fb89fc0169d2630b4818278bc3cb1997cf2e571f9e6cf9e99c60a6d0aae1d 553bb9f8f1d9978a371de4601899574406c23798e0e183c24a6a7495e305c5b0 27ae1205e9ba9a0d8980837230a195c920733cb05a39785a5ef882a19391902f cf428cd6df50396ca03acca3c2e651ffce769d849bd45d62e2d7cd5e873e790f 2dc31f735fe27eeae3bda624b7a9e669757df18713c06d1550b3c72fd368d65a e0b3489c0c3da792abc91fc9ad91de4968672fc701848af2cf62f6bf84fd6959 f30ad5717d5182a4391785a3378c169d5964eb3d6381ee3fae72a2de48289987 76ca3cad266185bfa9eadbad206894c94ba0126721582045b4d2c1182780b294 b1f3505eaf6ba4f8bafc664e8f745707d1ab169e72e32c4c0543cc337dbbfab1 7ac053e05e870f53dac5fee6680b8a39e5fc705e577fc0002e69ac970d838198 20a3dddf8fb336b635e6a2732defd59b44d985ee7ba1b87ee1bc7c9b9aeb1422 56e8fd9496d6ac773e8d72bf4de1d6b89499e59c08545dee34794e4c2616a9cd 60f295680e1276a6534ed1ed2aaa08fdccd7ecbb14c2f1435fd3a995cdb96e4d b49072fefd2c6653de1a5030981dfdc868ec491d5e89cf8a6277b38b533cf1b3 fccb0215cf7cc4d0e15ed200c9392e1571310c9c9ae08b23f58ef369534a8613 d05238437b46a65d53eb126e621114656fd809b77dcf7de5fde413f445cc72f0 5aa82eba8c92479326abd6cf757ff42a4d00cca71c9b75c49dd9cf220ebd5fb4 2f175290512f51c624c71acda064c5be3744f6f74d355f369f7d4b8c74bfcb23 208dcb3a8f888b05844311b0d8496fcc7836524ec176557cecd3c4be09effce5 acd8ca60cf85499bf9ddd6e8d5d7499d1f106df0623728f9c30295c571239c90 185f5d2124226b09795206af7aa935bd50dc0a97e2bbab528e044096dd360902 58eb7c366c985a9ab9897e19a860c08a4af170382514361b23ac138e18b051dd 7aade10b089fd4b909a66843614fe646da6618ae4822894461eb0f1cd5fd0568 2a4911d11229b9cc28d66fd35dc98b1bbff141cad0dc57b5b23b779ad9b62285 272508e1bb814fddbc6764cbed1f765d5acaeadbbf531be6ce3447c66aae00a0 1610eb3e2189f7ffc7a82dbfc33afc438a1a9ee0f0912d6c8185343bd031a3e1 c0a05cd8aaf79ee8a601dae78bb266d9f95e073243fcb6076fa6e82e2bd9a641 2d57fdd93c2cf6f828775fc053c1cdbdcfa8af69d866eea245 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMBX12 %!PS-AdobeFont-1.1: CMBX12 1.0 %%CreationDate: 1991 Aug 20 16:34:54 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMBX12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMBX12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 46 /period put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 58 /colon put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 73 /I put dup 77 /M put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 87 /W put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 121 /y put readonly def /FontBBox{-53 -251 1139 750}readonly def /UniqueXX 5000769 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b4486be79011d1f5bfae5c1f476ee6f05eb1d2caeb 269958b194521197b312fcced4867f3c8fbd030bd715d8ffda1dcd454b174e7a 1a97b59fe770e67702519d9d9b23d61ac08424d555242a8ca08c49aef300945d 99b999a79ce74804ae6bfde623f4463371442f6523a5f6ce19c839a708c02513 2e22c696c8ccade45680e5197189d0f98e7f0d5f955e353970b392cf530a68cc 56b0035ddfbf206c3074beeb0739dcbca272a6e629fb7aea2c5ba7bae50c7b4c a595df78200c352997ec3ee564df229fbb5473f5e8ccb1cc0153e9a7e299a8ea a29b69d1b622b1f0cffc58291248759607d91150cb0651120970dc9f743bebef 44f6ae92facec57658999c8bf01f60611560043962c0695e1bb87d090e0fdaab 659d6557208a660be9aeef8ae55f71b8bc76394d792967e41bd8023b6e7f8c3d 9987d5e54c53bf2bbb32855b946473b44833bd78873df8e4c7e668ffff25aabb 8da4148f744b9d0524d6cb8281247b3052cc5d66f3f1bcf8a56a3fb446ea587b d8be30257652cee035628aeddfd8283b5ad21b8b1480ad24d898970ac8a1e33e 543ce4e3c48f9ee621c5ce3e8ae930f890011b630866c988606068d9e92396eb f51bb3db204505fc3d09d4701ac703a14d92bbfe27bd7411b363a88e33a8e9a8 025ac31f21e73dc52b333b918d0b1270c54873a490222d041a66e0192612be6d 2c88958a8f70c10390146ee5091df020ab97675e8e6acf98b28b539cd0a20d24 a42f535ae44b8f5e9290b38fc6b02e1bbbdf1aca96558c2dd5afbec53f03ab51 fbce958ed4a65b17fbc03f9defd4aea4a15229f3c320876235f2d8b69bda5f48 03a2798790d35b394c63295997dd487bc603cdd10d18f3e3fcc7f17d2a6afc77 f1d7f6cf69d2a86b104b9d3b260e4a78716927a485ad8a650d610e68378f4514 3610b087981f0a0655090163dd2dd4d0030faf6a953896a9cb2cd033ec99b813 3f223b06375532cd5ea926a4722398f5a72e006391827be9eb63074700d70cb8 0977d64695befadc67e271795d04d367af1d9998ef4d7a51ba0b6891419e8df5 771697059c741663ef5f8499b761f4946b444d615952b245863a9a46b0ed39f5 1b1688675f28350c0266c873648b8e9e84d2dd7b0b0f7acdb99f48f62f6d9572 0af1e09783fac5de60aa86d8ed99706d8be4b7e2d820116cba9ea3e039e47a4c e2db68d55d74f4e37c748891623b6c1beb791e78a25e80dc8b38a77d2a6e52e4 1b8aba42280845e682a2b47e4c81cea9c679cc04c18cac2b3641d3c3d89cf145 08965964efb2f4a88a6a259cc28cb9a353c6d5b82e0e3d8ffcaec37a24b54288 b7294c9865ceea5fe4c0aab70d4384bbb89ac6e3b613eed1b4576c7febfd7463 43316c92baa9f8772ce7a0de959c85274362618e520ec755b32031fadddd196e 9170d4328dbb89269a8d2712a1b74fda539789990d94b4cbd633fada36924f6e 519f763911ea8091b45e2903d9a975dc5021ab042b7d0c0c1f398135edf0971a 1614c4888094d16e290bb89b9bfc2311d99e3faa8c769e4ffb1504ac2eaec8fd c4f7ef81aa2f054f565f7f9cedc6f794001ec113e765cd93f57c3e7088ce7f6a c0c3191feaaabc2c83023abbb80035db0fb4de81e4386c07f1af27118150689b 5b8afc4469a3ffca297ad7c400cf9efe4726a9db8737f9ea5a259db130eb242a af39ef38a5d6a3c24d127b334a411560124db961fb87c93abfa2de0d58e99b8f dbc7ab2808b1b3499a6442d22e67df6b111fe083db87dbbc3e963ec808f23190 1906644a3f62fce880e2b3cf2e3fe599ae267f227aa4f9dd77fd44a57ceacc13 0c0bb136df72904ba749f9e2e536c4e66ade8dd0dbd42a84341ba7f6111bdbce d4f8c6ddb70618947e37bf69073515d43199f40d8d5c09a6dd82a222d5e18cdf 25fd917218573bd4575067449efde8b186640201cd930db29c77a4a4c632e729 66649293ce3636374393cfeb0565070f68e180b9bd33673c3563cdf0e3366019 99dd69b6e87f4a38977850f989aa669eb15ad43ec92701ccb678c082ac22a8a2 5cb72050f9d701ecbdd9fd042c73a1ccc34d3da4f8f4aefb8dee75a05305d1e3 74bcd2d93c1e0f3603560980f57d8203a27f1429298cc07cd3c5aee05b588321 bc2e3a8fdbc4a73c02cc78bd860a2b464ada8bfa17de6f7b957b689f57a8df25 75e0ebde50be5ad1d8e136793d11c8bf3d3ed5b6e2bbaa3fac6527a8113d7114 73ec5cb0c60354b931c986673e558d7f198243057e8c9c5628a27fb45d1afefb bbdba88ebc5f97362d1bcac6d1b34d7ce9f7f6dfd05a7f8ae7a341d3dcda8b0c 638f51811565ce49c20c991082b26babe3a00bce2b622afc1151f51c04baa72d a9fdf3d61381d2353f3afff4ee129f90ce097a0eda36581ae660288cf897e484 f3c93eb9ce86f9f6d67836c0d29dfacd18b6ed7a7ac22e2fecf734fa903ad907 6230e72b276ef4b166f1d09778c4a95fe919601b1cea1a03b9b30a7efe1ab809 368805d4acc8171bcd1412cede86fce14f8081d4b124baa59f90ce762781b0bc 550248bf301cfced298e72e83b2d4e4747df429f5486e1ed2fb6f1b9085c2786 3611326c85aa61f31dc2d95ed79dc4476454cadd7a5174d3e1183cdb3530828e 42d316215c4f73fb14254e4626c5423d3caf77117b5a00268e84f1c3b9ac1d35 814c0d36a549d16aa40dedc3720460cfcf3b2e967e518a3148e329017c11960e 1b1c3e525542e782ee4123df7a7997fb94c70d9acaefa198a390b919f0085669 8c92b8c6891e6e962f284fad50602a32aab639d7e91687c0a983325d35f2bf57 1d7d4a0eb588b33fb2c9b8b018802889d4e921b6dd43fe55c4a81c056e763733 b247de209d627324aadca8151e874c8aa1d71539d03e4161708afeab299dcfd8 e9d994ae52482cab634b836c87f9df47ef2d8db07ac56a06845a762746f29049 0384ae6e802af9fbe678d7634bc1ca070048ee7f4eef029154f325f0bb8f1f84 3c1b5ef4dc8c5d6fb56a74f6cf5c686e634b8213b032fa3b8719dcc5cf3986c2 e536fb914bc261cafacb31c327a3cdbca998e2935342b8cb14974c24fa6fda1a afbd0f0894a196b62b92a21832ace584d266794abe9cab3938344e46ea1dd581 ad720777e8580413bb1a48ea8d425dc016d6b6080879e5b8fb8de59f7e7c68c1 f343c680680bad94f6f4c5c8a483d5f8b0b134d1f2cdcaa4aafe7d16c2ae408c 8d3e459819e4adbf776e68168ff0439f10873701982547868f01203928b002a3 b3710f4a325ee32687c0691326dc5f9b1fa0145f5268cf3f840b2b268fc51449 9cd4192682427c0478d3443606637b283a15ff2624d25d09d356e5620b76f538 b19a692003ed8a4e9377042def658da6f38338ba500cd37becb64929f5799a34 4de2d46739a0aec5fbf4738c59d6571871766a2997524a6222a2b68a15461b0c 5adbdbc28bfd84ed25d78b151f42829e49bad20441644f2d5636437ee7ff79b5 69b4f2456b39578833723faabc34fbff0957cda393ada3f97750d5927c4f853e 7cb9d47841e07936b932761c8e247b7cc357d322c33c8b40806689c344d29cfa 6c229f61da96ba7fcaaf1cb0e4c059663eacb85a04f5c216ccf5d11d98692c5d f279efe77d8b66856ac3421ed162b46d455857928508c93363905351b0c93374 7807bde6f2250141adac6d5f93a7deb7b5cfed2f6a46d0166ff1e49430a66880 8c90263e81dcd1f1d7786ba8a17c54f943e0235db0c7c23b3e91809a1ae930e3 a293eab0c56765d2dd60cdd10a308a08af19debd4676b74bbf8abbc1531fbf02 9d22be9196f95a3851df87c716a1a137458f7a9affa76ea0a715f2dd573274ca 505dae146739843d64c726c3ea8350a552919396fb202a3405665acc7c9f8cfb dcbdca71d314d12200747ce138320e5761fea5120bb08bdce525d84389b6379b 03339d87016848c90c8fcb7d43262c0b40494a6bbd3bd795ba2d8da964e31880 a0e8e7f4fe2e8a8f059b83edbe73463ba96efdf8f90abbed1e4be6c56b52bc6b 47d91716956109413dd3a3dc42bbda79f4a4cc12dde8d7f6486cf32f34cd5d7b 7693fc97b3f832d63a4a842f99ad499fed45dcd4f94bb44f3d40145011de8325 90fe59bf42bb0701764650285f01116d278dd99ff3e79254575226a265525d83 6d3782d606776b72b069bbe6550c0da4c1e9bf8f51249198a447e6bc0312e7fc 90961c09f0215499b1df1fde2d0e374fa77f4503b79aa5cd91923a9fde235b0d 1e18a8b68ebda5f928275f4e5599013ef1a2f074c235784bfa3c987ed47fb2dc 2bd24af656baeaed72adf44ba0708e71193e2e87e98c7e269e1ba1b41547ec41 33629f20cd6a1dbb2e964708fb3c14af40f049079b9f780f087ff0bc1194aea7 8b5ad213f8717eadc3b3aa18eebbfad373607ee40803eea86d26a238c4256d0d f069f62ed5ebab0839f4829bd870edcb1a928545c9b9689ada49992dca05b24e 24c13ffeb8487acd0479e11d0efed50d4b43be41529a343a58c438276513aa67 6a9a9bb0c5958b88e373a214dfb4e25aa63c6160b787df3270ea0cfb6090c683 bff32d3e7ad92c9eb5e3359fb55ff3bb8fc47138f1a92785816622ce81bc9694 423ea936f59fd2081ec68412cf250128312e8b0a09751b8116a4aa1fd73736b2 d2aec75f28c61e58ee84b1805da4ab5ed42af507f5d1ec895c4f49a2318e9416 4ab3fa3c92b01a3877de74fea78512654c8e742cba428a2cfe68bdcc27955908 8c89f746e3d54dba0012ff7b0d04780576462909df2e762057b46d441fda4834 900c54333edb8ad9113fa8d027f502aeece8b26a92cf8714f8e5b8b23a0b2626 4def19365467d54b09ae7934669ce4c11ea2e4b9ffe9b8e7f734972390375fcb 73e74d4382d2de1e45cf719c0735a0fa7ad31239009fd716e0d96ae48a054638 f9d639c858acab9623763f5810adeeafbdd351500e9b36d8c94c7a884d7dadaf f30e981dc12ba7e5b305014b431cd2025bd32cf4bf43d0212f7e4549a47de267 b2e5cf241f1584a86cc8305bea70c2cf6b5e4fac2abdcaa912e3b708515082d6 b84be849ba37b67d418e70955e951c29d25043172e36e2a68a1a6cf62333e809 ed27f39ebdbe058671b60fc5e54daea55c1defcca3adecb2b84e20064f68f55a 252c1482928b12115f06224d18de816350d4d7f04afebdbb77e92ab06dd22502 35ccffc715067b91fa0f75578034f6debeb8d83a8ba743220afcb0f6d8d77dea 3ea4b7cb797b19194f763a2fb720451b4b5dc50c61a5702c44a6390eb891a71f 4e42e7f41c0e50ee26706f266c75c33644d97812846bed853a414d027e14b726 c93b2e2fa5881c20a0d619e1efb306368c479fee06591f4e2d4ecc10d7e5b904 c1d53898053cc0fa932a9f0fbe7ea9900f4d7b9f529e7ff346a1c19774c6aea8 fc0aa0129cc895db1ccd459fd063a5f8ab16b26ae2b7fb1089a53138dbfe5970 f0f368bfc63e80c1c981288d27ed4bed83c64a645ff15d0f99f02fff3bbbe680 36433fef5ba656ed21c75d6165a71776368ace2a0091ce1c06c198dac61958b0 5178f946a4fe567db365ef4684f2fb7e4bb406868aad5304b355f4680eec013f a41c1236e4fffbdcba0c184d3fe5c1174bf4e9b843a832b9b84e6e240c992e72 4bd1265ed515a7a741870825f6def08c7e7e848e8148e402627afda26b6c54ec 6e89d76512484276d30414ed87626b09779477ea9d39ce0b049303964745b5c2 1a0afec3b14fb1ce80f3e172f2cfbb6fd59d2db9395b6a1202187c51a33a63c5 d1cd40b0ea956011319c7a8d0cf23026499193ab4313ef3ef70ef143b975be5d 0c3b0077c713f0086e8e53f44133b6ceb2efe8641b7565b80064a98c0af02ccc 388e6d811510d56347f1bc1bbba338cfd81f0608f6bb08cf051067a63d07164f 050aaee414be2c8a6a335e06a94a858b18541016f8dae1c355a49c4b48fd829d 99ce32c2d7edf763156246c7cfaea6fe237f6da7d04524bea4b62230437db1cf 964c4f9bb88ab28b7944bb806233d74cf4c2c06a981cf11aa94424ac3bfc21dd 33daf24b047cf40a1ffcc297497d3c284a2e0aefc35169a521fe22e7bfe10a3b 9bc8453fcd2979c0b2bbfcb2afabb41b09336a2ed1eac15f6c219004453d4791 1c3d29339efc5b15a10df6c7059b88984c7b2e0ef074494061f5883a8e82b044 8ceba56db1098814f03486411695623bfd18152f02bee1e1e2a369085742bf66 96eb2d301bad239a92e108b43b542e582c909431c71f6032ff81a560e1db5cba 313239b97184e02c5f0e5fd4de4a9a55dd509b92ddc32078f74c9faa11661381 3cd90309d328afbd97e1eb0617191d6d992438b6f5439beebe35eba2440818ac 5ea778849501e4e8e655594db58cfe929b86fa7a493ef3eb67ca96335425d056 0e59c1c7020dcc47add3337d456fae665a8618a96453e4ebe7e7543fe2a4a920 b2cf0fe22eab7fd7608224c5052748aa5c147d645f8c125882c29f159bbdc7d8 cfd35cdbb30e8890d3d20b54fa082556c5ccd868d26e4e4a0d3d1f72b73337b7 f7e5e6763f637175220f28befa3e042c9d28faef0410d33e0f050d3f1012dda9 a64d660ecbece378a6f47645cffe7381550461b027030f389aa523a5cda1754a c9e9f638ed6ab755c1d95d494931709672e2b121d186ea4fd6f570242fef7007 2e0b475cdbe02239c2eaf6329591744e67aece14f3410abd06fd80f1c2e7f41d 10dabd8a2a7e09b027b97f90c7d9f239a714e16ac2d5161a6f6b07202e394c6f 1f38a56da2dc7cfefd8ced422603b9bb580132932a9b1ab8c62825a943fcaf73 40a66c36b4025d4609d6ed1aafc9e4f405f74b2719974a7cd36bf08d9f0db5d1 1812a50639db48f3fb01d82da6bd699ac25fa506783b439de1bc399d5b97ef65 436c498e5a585bf91f18c39353ba9043ae6b8673e67f2c35a6d739078ed12b17 94d543dae8cd64e3a1916141ad29d77afb797175269a418a5e1c436da0d01fcc 74f0079c17e647b5cb13cc6412364762d818e309e1b289b54c103c60cd8c3304 202c1f0040bfa2f586a316679000557ce58c02e4c355c55a7adb4580208d8048 0831c0d56ed4bfcd9e39334cde5aa4e136a681d107d7d794bf9e8b7673caedf1 1de6a9a3334b08dedbc1e7aa955981b10de7f0554ad36fbbc3f524a4329cbe5c 2837c3805971df1aa0f48d40bab0200862a30772f0c1a15d60c485e7954b27c6 0ec90d2af99a629000edf8dfee91e6e89bfeddb4915d0af060f29e59d91a767b 51846a407bbadfc11e5a37bce91f1fa1f1f8c49b1e2b8eef12a69195ef3e40e8 737275db864718f6ff7b849b8cd3b93357bbda8c9912ca96a24ffda479b4f350 2ce0c68d9105aad9ee23abd4cdb127401634ebfc9c1074304df03bc1fe088800 b51c043822ba8a0268ec63e57b591e9b612916f64caf115dc5ada90af1528208 4a2a7e761a6f5fae228cfe68d93b930be7d6038db429ab81c9ca6555eb99344c 58b2fd1c4509c24a80f924e0874959f767672e2daf9de319fa86d93ed7338581 2c0215cedb330929e1f34a46353cdbaf8d4b67dd1cf8e50dca2b43e38fc7251f 8f7acb891d0cc9cc1c290ef9d00e6a244c6b8984a117e0d7346addeebde97962 397cb50b925b9db04cb7f0f281535ef58940d19b6dbc7da23f693ff5904d44e3 2092e3dae8b979561b0875bcb4545d6d65d96fd9ca10a6526ec5b08697a0a065 b8cb5539d6d7ca861603bb5e55dad2b793e33c12b2d58cf51694621e0215ec11 6d057f56d5d79cd959853d0a3e10ca05c3394c57abe0cfe2b5dc1bbf1e44cc92 ce3db7c4e510f28ed77a4a7653c2942e658a729a0365f62a8151adf2d8ae5f5d 231f48d627e4ce8d3923d1ee0bc54f0372c9e45fd84dc87f4f776563f9241a4b 82fddbc62a127b4c8b9830f2dd037ede70683303df9d0d60e71b867e51e23308 d5c5d34017c5db5fd61e6392a6e5b0ee6b126399acc4c45bb0132e69de3eb0e7 972d2ff9fa7ac06f944969adb09b593eb28002b0df5a2a7a4b89fefe4452088d eb9f45bd1c7f58adbe7b50a52fab990631a71629bb81a4ddfb24aedf147a27ea 47aea644941264d4ef99ae590a4fbe139a33a9f8e9c901bcfb4692eb96762561 4f73f4b915246841b39e0efe56d433903fad92362e8aa05794b54369caf78ef3 8cbaa2c7c22962377283806de247bf6df74644abe5b3b1038ad5cf5ac91abe13 371529d8119b4e1e82f5d4e391618aac00de688556e021fe3caa1bb96708bce1 7ba2ced3d88ac7fad869971dec05b56c403dfcae75aaea6be2d5a7c7fa46cd2c 0da08bfbf4ab101f267b8c0671723b05d41817022f35f92caa2c9af26f0c3645 cd0c5d0a9f71efc47330af16182f6497b9db376514537a94d151151a2e8d7ad7 eceac77b4d4521640e0ca508cb38ffa737544fbf7757310febeee612b1d0487f 2aff97b68f16bbfabca4f0b973145ba15f6527381ae1235afe4b14ae3e6c80e8 1728abb1eb02b11e0e8b203c8e89ce06e8b94c3977851ee6617050e218777319 573f2a865ed6a3cc58df1e678f4566c625ebdeed38ddf7ec9563e15ce759f0d0 83d8b28b509457477d811c31034593afc74b9d3c9434d408906dd2a1d43b3c79 b7f5191418ae56860dfb8df92e5f48e5169da11cae107d48f4dc0ae0c2032fc2 38c7a8c02d5a6f0889a2afe5c685fd1b880a7c131fff73bb64db9f0868b0ea70 1943f75c7605e715fce04dcf0f09cb7cd6093dda387a0f7cd7f145f2948f8177 15500968df4ab9e6af895c40ebfe33e1604dd9a7bbc7919877120b8c9f1fe92f 73115253bd8214318edf9c8a8d39dcdf292ecb3345f7cfe6a8c6ac1563a5907a 00f8b24f4578ee7995a46831d97470f811aa30c669ec150b1a34257d2e514c21 4df4b5cf2cd34d8bbea65eefe0b98eafb9e5786aabd42d1dba732040cee16e31 95aca4b83121b52dccc15e36013762e2550bc28d8863ad1feedf0e9628875d19 150312e42b1584929d71d43b78cbb1204c5fe1290b9c8deb214c44dcfc1632b5 2d35c503f7f9505a56ef182777c98b346e0717ce52bbf6ff4a2ae8f3a1e0eda8 2a63988d6a18f971e038cf906b56a02c9ca3b7b6de06985a9df627a3e8538819 483c11e94d6ecd80ef6b0f122478e4057a739abf390581474b1136184ad06c7c b28f807bc2c1357cc6fe50fbf2b055259183ec24065ed15281abbc260121b61b 428aaa0936e19d9434f0313bf44d449debb596b0ade00e0b3e88914471e58654 c4d2e710065960958dcd408d5f7dd7667791f286be6d21d318971b041980ac32 524f417497e0b8f0e9fc40118183719f7f3476bd311a9b919c35acd5003a9a8d 85c8c5b63da9adfdb66223e759f954083728c7caacd23f0bd47e72d49c7e6505 00597a9c30c021058ee6bc0584a087d34a639dde2922a80b17f5d428ec7c95f2 c7a8b370dadcde935e86d0d3fe4e6945b6def0840b300eda41550ed29b3561d7 a799536a748b5fb213eba020e6c213ac9102765f29498e6f9d685687a44f90a8 292d1531713c0e6a3d75e029cadbee2c82a9e049288ad379a7b034814fa81374 fe195db0e309bdd9e32aeebf330a976ad5746f07ed513fc713fe97dd92bd5206 4d6a33a84b3c65504d2d6f3a4ea967a8d7b33f68e9c4ee79505ddfad7e016859 4e08773a8d004ec84814287f815615fd00a44207d34fdab060e94bb40b113b3f c2c176b6dc0e9a29f2b01c2718754ba4c1ae2db12c586838f1cf7fd9a32c8d74 ee17d036292eaa90fbc72aaa3a4b7215a4f7f469d4474850b20e9dc01fbd63b1 0b31af3d0757444bf7ba38f67fcfaa9df8086fab026efa7413c5bbeb88a0b395 91c62b4cc6d63a5d7de8ca87a13a3af246bd89b01386648e80d7a5f5268e9474 7e79a42972187d55e8f2832b15423d052eaec39139f19a23f4b476aa9cf99b9b 7048019e29519d55c100136201ae90e46342faeb97b78257957a5560da9952f8 42d6fda9703c8d40a55b2e8f13bfdbb68025aa57f9904551549ca1f0ba9dd979 cfc38a7367b6fe8428748f8a60c208248281811912bd622ef03773d57982b7a2 918b7a2e9d22b533bec48093fbf40a68be33b475aa99988d1ccc21a819c1ebec 1d44860f8ff902aeed0c5a45eaa1aaac83b0d7044b0d342575ca870d45be09ba d4418ca13fcd5246cf05e1957e0af8f887badf13a1db572a3fe1a9dcdf2d54fe b18a645b44c3d266bd7e26e0df4d02d912f334904984697a06f0d0e81219d647 a97ce498a1cb5a7c3d65dc31d228a5e1161e9de9387864892b94d0cf5cfa1972 9fec7c2cdfcf85988b69aad9691a34cf9303611f3103b530bf6d2f80649c10e6 f3b34fed1f4587a75b3a555e3cc5d8748a9165e62e8c5f7dea08846f6531e423 751fd351df26e64661bbad3f9f816be123cdea7b5cd4f6bb76b90dd0e0cd2dc9 e25be3ae9fccce5bcc8cd3c8ab6657927c98f9a83c5ba2e3864b2194254f54de e7954f7d2f9c4acb2b23e45d75556455dcf9524262bd586cfec2e241135cc9a6 788de9dd60a4722aa585f8c703945d4db4578d8c825d375f19ed87317aa590c5 4aa5955f3056c31da70affeb1fdf100eaba9463a96052b1d491f2bad65fd7833 a18ae1ded1785025b8ae66ef7bb66b5410551e9214d9bbf150f9b52c951d2c18 5532517bfb5c4b4c892154e1039b801e3404df6a3c8bec3b332aa8bb8bd0119d f4daf5b8b2862be52594a2429e3e7034949d24643191bccfac40c0abaa62dd5f 7569eed13dd0a95aed848e517ec67e706af0def425dac4eb774371c57449bab2 86938528a5aa627249b14e2cea38305b78ded2a8b94612f2d4c97c49c165070a dc160cd14aba603fdf8e5d521a6fe249f0a8f6a88a619696a4dc1501ad359993 9ffc03e13fa77cdaab2032bf7131949f5d9c39e5dd2db999f088e7c61a5a2218 68ba543820e645ac6b533f3ffdf49d4ef018705295a5781a7d038e7ab6b955e3 c731873c75f0d387e21b2b068b8452c789e92179b96f8244d0bd474cd9b9c595 c3c1831b170b2dc522a8bc4b4c3a1495eecb 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI12 %!PS-AdobeFont-1.1: CMMI12 1.100 %%CreationDate: 1996 Jul 27 08:57:55 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 28 /tau put readonly def /FontBBox{-30 -250 1026 750}readonly def /UniqueXX 5087386 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98 74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730 48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f 15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427 bdd7da12534ba078ad3d780414930e72218b3075925ce1192f11fc8530fcd5e3 038e3a6a6db2dcfbae3b4653e7e02730314e02b54a1e296d2bef8a79411d9225 dad7b4e6d6f9cf0688b69ba21193bf1495807e7bcb09b7064e91fa0ded228e42 09aae407a7aaca60b1076299ac4abd23ef02f108765f0e3d91f92f3afbfded37 2fcf6e4b1416901517da8f2fb3c9fe7a87bcbe6fd36cd5b5823fdb74229036a6 3c3346a1093e6b1036902c1bf42fc317c80abf04020a47b344c36de42f05c490 a0ff44ab6d5249e9f552a8707bb7661e242644814001c8430ebd5e5f0b944ceb 666ee64359d663e355b2f17093a964139d17287f6ca6a024767eba4fe4873855 babe2f07b91560f68300b06dfe27264c163195d446980c35bca0b48f7806626a e72636593a05ba403ce1c0f8b2cea3ecd586e90ac17d034ba4af708304f23131 3459fbbbfb97d4834d0395754ab3f22d6495d2144087d448616fa1ce27bc50d3 46543287e3860d99b433624119bb9920a2113604c0e260fd275ba55e0fd19c83 e19addc3baa1f32f6b7284038845ccee71a3311ddb17b84975f7a984bed7c6ec 2a06e5b335a763d081c6273f86a46632fd9141a27902074fc860df3a2eb59b89 774c767022dbb577e30da128bd7706a43af886d0c256b50fa968ef06776aac0b a5387e9011eb2334c1f42c090f06a1125c207ea6324e87f46414050d88070346 7b9a6e4d2045feac295d15ca55b900da594770ed9843365bbc81bff2190b731b 8790385f7c313b4f64683aededa87b8c04da713754a05b7ad08b814b94b7be0a 5f20abfa50f767a51aa084b330955da5231cf6660a76c929e56afc63797a999f 757018dd00ca061ace2eae761c8e56838535e4f0dde8afaf899c418727ddfd13 eaf2262f80d0e55d748a8911d5e9446dd6e2e7bb4ee36fc60385d70725e60b05 b16dceab3f42c73628cf68f2c48bd7e5b372f0c2f61cc54ef8df7d43c8c3665b fbe755a1d846eea7baaac70630e96a8510a9ab374b8a109ffeb2f963d859f4d8 d207204980fb8e038bac52c7e420b6182024bbaca6b9fd73048481c5e367b3a9 efdde6c05928b7c5b40f96ac8e3640e4650c58f99112479e92d30f8130958391 78310610ec1f3f873e7f1edf6be73e0e2c63720179eaeb0bd980ee769265d416 739e38aaa8f31374df58baeec7f7313453a4b13be5fda20ef76d2e144bdce32c f6008e95a69cc1cae0e7ba4ddb5b58597b3af2c247a9611ce7c4213145f18627 a6620136acc49d87299b29320430b2d0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: LASY10 %!PS-AdobeFont-1.1: LASY10 1.00 %%CreationDate: 1992 Oct 23 20:19:17 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (LASY10) readonly def /FamilyName (LaTeX) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /LASY10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 50 /a50 put dup 51 /a51 put readonly def /FontBBox{-19 -192 944 683}readonly def /UniqueXX 5011949 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98 74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730 48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f 15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427 bdd7da12534ba078ad3d780414930e72218b3075925ce1192e3f6620e5383410 9c674a944e5ff85290c767088ede1e6835bf2aaf7a0e947193d98442808fc3dd 148069ab44a71076493a05cbf836aeb3dd5c78829d1482b3c40c2f4cf5fdd0be c3c3c1e08cd5d21db9363551e5ea23a95a928a532e09d2b59879067059a5974e 4912c690ee71858bbf009a75913237a9ab9eb9d8d683ea3fe066fb2ecd3df7b5 c7cb950bdefac7931a3501dd1dd59c10d45f8f91ff07c7c41361e1fafb605c38 0431bdf3b1e44d21d351cf80d8dc6fbb5131fb8ad1a0e9a9a5fdea6432ec1d59 bee32029965fb5c141768d6f2c624b2dae5c9ede58cb4f522099a96749094f15 07e9a6b977ebc86c877b8c4a0758b69dca966be63e606c8efde1f65b295997e5 1205bef471d087f51dc9ff816ef9f6a4a23226f9305feba8da8baa909e515d85 b60901cd8e958e0c94d2a64c1d9510e66d37d18fdf08c5408032c63ae7a667bd 1ca377a9eab6b0bfd434ccc71b779a6cbab2183016bddbc05f171719794bf19d 0118b9e708296d876e7ebd011b0d49e51b56e10bae4b5f2d07b16e0c83df55ab 42cf85da87350d752cd4522682b02f82c49d08a2e0d47d58374443a63831e432 c48f945cc5e42d807ba86cf3e7b3b09f636c17360c5c9bd7717f7e4909e8bb4a 7efb7a580cc9357613467b64fd0161dc026602cc382bdc1779ce8ebc0587f172 654aff1ed908166f3755ccdc64a183e50dc8ff8b9d8ea9ab556615ce390b4660 1749955a3ac5f7c061d6b9948677ca68373ee7c6738abdd0856c90a91d904c91 914f3ba09a3a8b54fa319b1ba9bbd7441b69f0431716a4156816329b7e09b57f 495591d0d9c9049cd115e5c135fd9e340626baed2c37beabeb735bc14c38b852 9ebbb0a729bdbb359ed4ce7245d6d8add06d35a8177fd5ce1f05b7e64cdd2ae6 9c75b7f88e025c13440a564e79937f34792696e3125329a1c13e6aa86bc94c2e 6e5e152b639c9d2315cffd4f9f01b99aaaefddefafb475bf665e6a414c15c704 a1983104a46d4b430b75e2c4a5aaf1cb81fda5082141ffeec1fee27d5f0a5c65 3c1c3832aa680dbf18530bf1e023ad12b6864e8fc8c23397466a162b2d8933b3 c4bbc60032e215fa094b4cc3cbe328352a42aafbfcbc4bbac391e5574bfabe29 7b2325cc1f23c41583fbaa1ad3bea5f6b8b9c3ac3be4779969c41d9614030f51 3e8adf2e0af205b2779d14359fa32c026545914ad1213d984d28dad7c64c5285 5f68ecaf9c35d8cc74c941c63cc2a511c8f6c7840914f13f7a83d74908bd29a4 1f3d5fe916b62ca9bcd7e4c1fc81a761aded9a8d83195614644905d7fa1dd2c7 c9e2fa995182fa6f3494db799525e3b656450eaceaddae50c747dbb656650334 b07fc39b2605be76fc 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI6 %!PS-AdobeFont-1.1: CMMI6 1.100 %%CreationDate: 1996 Jul 23 07:53:52 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI6) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI6 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 100 /d put dup 101 /e put dup 105 /i put dup 106 /j put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put readonly def /FontBBox{11 -250 1241 750}readonly def /UniqueXX 5087381 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98 74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730 48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f 15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427 bdd7da12534ba078ad3d780414930e72218b3075925ce1192f11fc8530fcd5e3 038e3a6a6db2dcfbae3b4653e7e02730314e02b54a1e296d2bef8a79411d9225 dad7b4e6d6f9cf0688b69ba21193bf1495807e7a1e67ed7e41cc25acc04702f6 8ef703e3d45722c1a91fdef7100a48631a02a6f02a08c6b1f9b4df8310385b86 8632718fd87119a233f219d9411383b7fa9f3e4780d8c27e2e89e0cae883d664 c3eac57a3aef8988a2e9f0f8c7f53e0a80bdfc4620e21287d0390e1975398544 7f3ea66401024bea75e1b4c4437b7bb188f76f96b918ac7c6ad7e8ae7f21d8c2 790f08cccec904fe48ef39e597ed4d4237c1d1f596f5906b19ea308020f7a35c 168e327ec3246b1dfabe912f6b6daac09974876d3996e57d180261110db05f15 e3e8eebba3d90b5764c03df3033a1ed678ebc679569a2fb297378b25434c0f20 5313ecb8a952f07242d3ee731b0cdc086a4481178a3d65129c47c09b22e9c431 e11b3747b94c26a757c38d06001798c6a568303d541385244b967d3b1786edea f65bb53c4c2fe75e4b1b15c2c78d930b4296c80f08bad86012451edc8e9f0854 c3b390a16e27b11b3d45a9f72eff8baded2242dc928a61685d79e09681c97425 5b90a498614cf560fa5b1718981388268ba206a96989e6d0b5d485d9aca5594a e67dd7b34d8a369adb06647f8aff8814d6d9cdc04a4835918e557174c5bc0f3f bcea9907a04cf93c12727ec40db3f2f77596dca477862747435bdedacd9b2311 6cc97fa47ffdd7d897fb6bdd5572e35d34e7e1cb5e7273a4ffd86525323ace4a 84e1297028c2bd5469baa2e75d19360c2c9042139d5e7dd4390a6a3935424711 de21910126d750ae279916ceb71da3591d60dc62db333c5021e2c1cd61ade51e 939a8995b7e0f7a6dc2a9e9ea4fd8b87fa6e5218823aceecb9273176fd4c54bf ea136341ec54d05e6f6c1b89653e78605c80f5926b9ecaa9a601efae0b6923ac 448c3d24a1785f892fe5000d980f1ad2f60a0be6e6ee4b4331619d2ff0d3c9cd 22f189729c30ff61b35d8d1a2097cab9fcf0cc608d932a4458316772e35e5822 597be5573d951c0905e80f3333860c8ff0f283196f794b8b03d3062c9b255336 21a189add9d21d264e511ccc757f646d1647a1f4641ff16df9ddcc18a80d938f a7b07729cb3c06b230718f44e9832e52572059ffff658de5c964c2fb37f50289 7bde02b502df89d4471cca0b7c0b314fda0c51bb0bbf2f6b89b2a6bf01f71f66 f57f2926bedf3ed294c9c7624e451c6547abb402e9b803b452d2a551229641c8 19e235cc7042f72a1b58206fa0795b2d1c7a71a6f6694d3f915b8a812532bc20 9338819483972042fafe5cefbf6acd92b21007891a675d0e904105541df13f15 54d9de794a832b1e06d06c9d83e3cd8d906d8ec48bec61c81da84ae89477057b 2bf52e3176b6b14ebccc65803c03489aae297a17a30e0e46b5723822e508c427 b2a9449acf5a006c0eea841f941c9b4e21f93a7e38bc475497dc28ad4e7aceb4 60c3387f199a567cc21dd084d5634de7c1d4e4150840b6a2591da5a87155f12a 869a8520ec838f78185dbf745d0b46a220886f19583dd3153331d46ca5aa5900 c0a517c0892b9de615ff4965eda2894bcaa146e126d34606e7219a90def4a30b 33963b69013231bbf2d01483e6a0ab2766e823447b2fcfc7c95b89bc18033a61 0167066599a525ff25a6c86774e0f4757d6e53006869a5b8b06efabc7042fc93 0834999b2319ae945d4445eba1af45739709babdc3993659235fb876b51fa43a 1d706ea6b33072ad693ab54f29cf139cf07a505ba5dfee9f34e6e1275bc00f25 b6123ff2f9867243c79dd1cfef3bc105d42980091c034a06afe3fafb47285096 593705da277ae1189a6b64487363da1dc2e2381eb35ec174f84628d129b1e4e8 c2d9b54af1f7447ee146bdd24093c6922318d3d90a80c32adce0270ebc85000c 490b486fca83454877e6389f9759b3bb99267951e877cc298d12d6d756b3c818 d8671d90995e4743eea1dc1f0cb1b5ca61af8697594597ae48cd9977884bd77e 3f595a93b792670db450e43b2521778172836f23ad5f0cc460c4cd5f20b679ee d39973af7c3a67756fe20d17261c2857414ed8c074f210fe25b1e2c05a9a221e f55c7e0a285627437c2df89fdd600565b2258b652e9d29ffe42ddb90deb8057c 7b8c49203050cc0ced2c99ae2956a85f0c538cfb36e5aeabdcd4fe3208be9929 6f8cae781f91cf9f693e90e7fa467252d091d23e7bdd1baa7f26c1670b552591 da5eb1018d03bb8ecf27e02e0aba4f8337d7eae394227e203e019500570ea393 b96e534ba71c86eea04d9235387fe51002136780b399738f691d52e030a6efb3 98036df68d57cfea44c850231c79674ed17af31cfa857bb805c744ad151124b9 f18bc9d287a0e0513c043971e522170157e6ccd168ff99ffb19aa365d1978483 5bc9a200165e49ac9d22daa1909cd5cad23238d2fbc6b0af0740eb5472c6cced 901c12054e67ccfdfd168d08d5c6ffcacc2a8e074926ccb9e3c84db160cfa297 555b406c9bdf340d103a16dcf15cce7d5ebae86dbce763c468f8b5df9e394ec7 78dcec1d651af3f19df11b4a4cf8d4f194f6429ba28ca8c267701a38239aadae 4d95afba75de8ce60c7b7cabc10bdde1fb55483b6aea2c7d0ba2b51cd8856ec7 a6d45e2ff10d4e349750a0314a0ef0a34797db75de2d3e57bb0c468e8ad46f04 3331e9ac3ee03eb35ae68761a1a71dac87822ab30a4a168e7a9f94f87ba1ab2b b4c5d76432199df3751ee77175531ad34d65f355b493f42b5c407d94a0e72457 1fe7150b1070253f5cb7a81e502dc7f47e0088abb0682ce275f77b01c6cdfccc 8c7cf80a979f1d2e261a7e2ed1029d6db5361ffe83278a1be3491e4a7d067917 cf1b211c8df33d6a91edc9c00359fe927b1f150708efae20747350c937c1bfde 25ed3aa0e3ad80ed3e6f60165b526ae2402062357810e2166f28ebf067e75237 903e8bdf38e3847bc76ff56cf134d7bb9d4f3da403b85a7e027ab4812aa0b804 aa056ce98416aaaa687f661a66f690862628c39e8fc183befe3dd93967ee90ca 5a69a2359a2833e85213ad2b7877e4dc127b48eb4d0c8962c95cdeb0d84e37db 90b913f572193e69f4740ad5911907d6d33f08b70db14700a3c88e07b14ce188 b8a96fc4c016f866d7e245be4628c9a7c57b52e769a65909d20c575b6afacf32 f218fe3b40fb83 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI8 %!PS-AdobeFont-1.1: CMMI8 1.100 %%CreationDate: 1996 Jul 23 07:53:54 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put dup 109 /m put dup 112 /p put dup 118 /v put readonly def /FontBBox{-24 -250 1110 750}readonly def /UniqueXX 5087383 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98 74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730 48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f 15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427 bdd7da12534ba078ad3d780414930e72218b3075925ce1192f11fc8530fcd5e3 038e3a6a6db2dcfbae3b4653e7e02730314e02b54a1e296d2bef8a79411d9225 dad7b4e6d6f9cf0688b69ba21193bf1495807e7a196cf14c95a4e02f9cd2da8c db2546c6df52e524745992e18d9ff87aa25e4e1800bbe4ebb357c6ef55ed6d03 6d3a00c1ee8073266c21d2f0ac85d656abf61d7e5a4fa87da8ec3b5329e434d0 d2adab706b42a2e5331be5295399d803ccac03f631f01f39a022fcdf63486b68 7d15ef284a77def7fde4898543e7b5f7ec267756103e477f547cfb8d2311c4b0 09deff56085f5d419697af1846c8b88c1bbbae149f0f19ca3c8dafe19cec48fe 6b38357246d8b5cef80b53bab4cbbbe8bc8318cc462a4158258f456e697f6058 86010493f252073ee4e4c9531f23485415ad6bc901bbaea659ef701f825f4b6d 5c9bed0dce7b63810f906b33ea4955531ca1ed1fc120cc56dc1e277a33222cc6 c3a97552607b865783faf0895cbeccd0df54f57bd162a88494768435eda71a39 69718c0c5912d3167bb0971546d733e735aa9bcd89f5aa154656031ab3f6fe41 94ec225ad03ab8b67a9da43ab365c4df17c23e79f685c3b6fd5b654e4a6f2603 6cec3a8641b0b57f93eb95f9e238832aeac2061f3153e0f375513c974f1c38f7 b59edcc94716f2862cf71c9a2be8430985da1cd813b1e1c1b9310564a2eb1aff 52c190f50fc981dccb64bb2c1f7a62c216f211c162c2ed1c554ef49fbaf12b31 aa3b2a80fee259dc0a2a4242869ddec7c29e2941792b28bba7f2c6f77ef69638 12b07d6843f33b51e01c8626b26edc34e1e0fffadede5fb468e8cd5de7e5a64c 366967578f415484d122834de4a647541d66989f7d8b25d1712d8d16729bd9a6 472a463c237e5b6d22921a950e66294e8ac48c3caa4e8d2685d5dda1abf3083f ca4ac09fe1265b2703ce69a3540aab930595954147dcd5169283a424c6768f10 e3cc2cb5b57a071c554cbff6072a39e3e3622fb7325bd88ecb27d7826ed36696 54bc69e5fc5c5f9a25d35f75c1630361c2065f7232cd1363096f4a9268e9e3f5 68be56c7719b8405faf04df4eb30d27af1bdfb3cf972fbcb975d09872d3bf6ee 1d11e641c53cc3ba2e1426e4737741e86a378136b366ace5941d726d5243a5f6 5a6c6de74a7d0eff6c954f066b9d3e87e0c54d9749e17efba27e8a3cacba9074 a05f465e096f76280cf3fe2645fc186935f6490fdbe865b5ef28097293e2bfb5 9ea01ac097fe149e65948215db12cb81ade9efed4d5fd4a5a2c4a13e1e7d0e91 57ea7b9ada8ad69f43db0b178e4af74c2c8dba79d2c68239ac66d73a54a39819 cb792ef26e2cd48c7cb342706c30d2ae537f02e77d6df646070718afa3ee5721 3ec68b0a45ade948af402e9f4d62a01077b637e8dcc143b47a89dbab1a943e6f 3c5c9733af5bf92bf594a89c367d3f8be34d82eb5cdde8ea130eb52362161b07 a84521ae7edd7470f0e4dae082359adc418f261366aecc9dae6e3a64ff35f137 fd1f6b517892a6d6ba0469eab7b225d459146f76933dd463135fd0913abaabae d233b55b4fab7051987c1700ecb5d1b33234055c1a1b34b7366686a3ee31470a 72966310a6994d90fe5e9add1d716bcec6b9f1d301753f734fe8399b3c994f9d 4a29ed87abcb2a4b55d21771c8a44c06f22f085e69b741525bb2d1c4e792f6e8 b8475901714cff227024c1642654789f3bff782594c2bb65fcd6cde0c879f3ab 4117fa5f6d010578138c3f13761b44db4c8a2532d1e9d0d6a688b5402cdf3551 5e0e25b797f846684fccb6d35558cd497081384b346177bd8c8d0130758083ee 0f708424ac7931be1977fcbf42b0f814da48b7f167bb4ea88b265fed1e61b990 f609c1f8670447eede9caa13d94c0fe3ac5029e8208d170e7e99a36a071c2877 9863faa9006f474993394d2a8346c538427ffffbbe6fc2b0086939be6017e6ad 45d096b80beab6cc02e72b16151c045bcf3eeba926844c1a8058f51d7df6874d 03e4a47596aeceb78bc4451cffa2ef58b82d29ff7eec5d4e8e99db8d92da2ec4 ef196b99addb74c60de90205963375ed8c411941bca83cdf3c5286483a777727 548caa16628659d1ac5a83f4df9b4b4491d9784d9cdff0e475a0382b7c811151 cb77b170045e6c42162d479e3049da28d3b7eb0904de41a78602231d0536a9cb c1b7e7bb1edc7fe56dc687beec2f4e6f2e10b9 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY7 %!PS-AdobeFont-1.1: CMSY7 1.0 %%CreationDate: 1991 Aug 15 07:21:52 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY7) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY7 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 21 /greaterequal put dup 32 /arrowleft put dup 48 /prime put dup 50 /element put dup 54 /negationslash put dup 63 /perpendicular put dup 91 /union put dup 98 /floorleft put dup 99 /floorright put dup 100 /ceilingleft put dup 101 /ceilingright put dup 102 /braceleft put dup 103 /braceright put dup 106 /bar put dup 110 /backslash put readonly def /FontBBox{-15 -951 1252 782}readonly def /UniqueXX 5000817 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352 05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23 b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145 d026957276530530a2fbefc6c8f73e9b697ddc0351763500e23c4d170ea8a2d2 75ad0b6b23097f02fa803c1f46f9ac10fe0e527c431b11b1b9a50e874896cca6 17fe3e255960846bc319ca68b9b930a45d5d0fc36b352c3443ab6f7793b38d2c 7fb9c409ab7980ead55e9f8f6b83c70088d1fa6d7f2214da8928e40b96334ad2 72d1b5db9d1355a579b26a8dac21f021e393d7d837a95deb8de92ed818a8b80b 98ee9cdd8a3c57ad7d6eb7a82f43eaa6ec520eefa7302e750edc4b495f70bba2 24a2182eec37f1a1c5dc8e20973007150237daa6bf03d498826777eeebe09014 ebfe05a8731e1a421cfc513d47d673e3d94d805f5d0668ffa265e0962cb5a75a 4a93d9b871227522d95bfffec89bec308982e8aef933fcd40d86f2b0e4793a2c dc888e013ed9d4b092c352983ad64255a1f7174e39dac18e033b332e037b68e4 b212ffd722a393cc0354e1ab1bf5d940073a3125d877c53960a1db4faa99b15d 219e7ed73ba6977e951bccc126d987f84ca22340fd3e14224d892563a2c7c6aa 42379082ebaf8b6d0d45c91cab88495b3e3844bc436ddd0b93bd4ba96d18d5a4 4950fe5c7701e0e50b85fd4aa5e691914629433ed33a4b063f8c64a25ed56cde 55d5a251fdd348bf35b46908bf872772f40af0034c15df87ad37fccc49d2a657 1a24377354683ee14ecb6aa22917eade738c205c08087eba2d95f5847c8d2522 5ac1e50888a7099e000f769b09963978dc6ee9f274e8b2e247b9039000acfb0c f4ff404168534c948a12c890c2f0d13697c87b4a7c298017787738c646f3999e c06497edb859a9bd4736045d654640dcbe374c6995ee9b4acc80a3f86d464fda 0a6cab6b71bf78b651959d08573815bf3252a6f346d6b8cc379364ada357266f 3944f0efb5a370e610e5692e05b99fc8e13cb7d224b4e277170168a5475cba91 1bc8b858f34d2e579975b680560eeb1ea7f95ee7fbd84bbd303c222bdc04b36e cd0447088861b052e9534c8321a7c28bbb7da670e23ee0d568c8ac98015609da f748453dce4781a6dd053af74ef28e1cc034f027f9c656803b4f3c7a91d763f2 1cd25d8d7c798f29f82824268d6e53c20e6c715e4744e5fbd53f73d1618d107f 973a5f504833e5fdaa53ade21c3b0c07e47f46a8117c0bf6522cf80fd2e4a7e9 1435d729019baafc59984ee798cc77586bd3d0365d6206eff603a0e77d56e093 f21e35dfe7a0b738646a9a584eb996da84fc5c5d57ec818a6b0049822b9bea36 9b473f7aad6a38bca94e205b9c77c3674236b4a9d87729122eaeb888b47c7994 a278369381d1105884f3c885eb4183d6bf7619004e3c2052c6af784a55528321 5e2803355349a8010bb48def69dc384a410b4bb219dc7b1ecab49fea8a638630 9f0d4f41e7f4867323e3b0fa5992d5bfdc5896e5399def54093a3a57e0248ef6 42d80a51cb4173073aeba493a205cd208b8f1e1aef95275a6914b74c9391bf65 70276d205371494fdfa828bd319a9f45711f0d73846d9ba81ade40281e057d2a 6e67d1f592e821acde47a9f32cf2939806c3a2f87068c63b52843ed61c7aa898 1adfb94fc429ff817fe07709f208c6ed4a67773fc926cc5ee7c6341b06d40f41 4fc0dfef327f064a3b42dd98eade64909dfcf3ceccc5a77b48e123071e8dce5f 31dacbc06fc3271d2e1a002ba9bd778df7af871f532aaa89e6a06d7c0d4a00d0 0f0cf31ca38306487e0d6ab27efcb797cde7b12e6d9154209d27c6eb975f5ada 8bf4325df46294acf3b7ad30d651d5698f85b81d72dcff5105faae2c2cd26219 f28ccf08fcec2577a7d37741fe175e2d08c672072ed02603eddf5dbafeeb7fa7 b9af38cae72a43cdaa1091662ac81a1fbc429bf9d40218639c0cbb7fe20b857e a1c23e11149b297998f5312aa01a4331d3f785457458f8a10063dc94290ddce2 a3b80fadfed279cc301128e1ad97df066cb6adf07fcaf3fb1decf0d9993ac066 6b7db028b28c8693bcda8541c5197143e22178ab753246b7459e0a27b6d6d75d 5eae68a16c54f8dd951bf2280e851149ca1745effec45f6ea5a8d68c44ca214d b733dffe9069fb0b40d0caf95b64aa565bb26acaf7258e70998ac0df60027ddc c921a69b5e16fcd595c77508e2e139cb1fdc18638ee6bfd0cc6debb75c62ef9f d1974d1896b5b997d3704924fdea9ebe4a9d2d725cc0ca86d80ca8ed608c2425 1d13249716d79e61fef1b81fe69802803e5113d997a99b3edc159769a4d5fdb5 d23bb2e3778ed2545a7059ea0b12dbb93dab91b627ace92a6b2ca1212cb55aa8 ee93a219f590ef92829e151a25d38204bcab34291ab18c148f62c9b36c3b3117 fbcf4d69cb4cb6f5977d6f1d7d329e9da02fb53aa526bf0a9d369f2882c2fb60 b4a272e13721cbbda919a1b794ddb793bf1d8fd25708f99b30e9d40f60e80536 f68215b40a4aaee9baf913e8e0b03b281a1811f37785e9110a590f595acfac02 03f64134e27347dd70c7c8aab2e462a4a473319de9f04e633e507e73704a3096 9553237fd9c47053c68c34617b7a1b72cf3567c8f05c7cdf55c822916204e1bb c3ac084226e57aaed62ef3cea7be1b1041c58460a66944eb3373467fbc0a6825 68a27a13385f3cdc8b2d4b3463b3fce567eb2d951eae6164465752c1e0904686 d4f099a975f43dc0367c4c0d992cb4090eae2baeaa8ca056707e5f50730fef6d 88b3e8d494e8eeb051906376c78e70fc1873102078b17daa1208577738ff81bd bfa58c73c00c74589186f43498244ac198adbe34063ec124f5cf9e1afc24c82e 43ae1fc59d9e93cc81796075f8a87ded591282354948b464fc07cb5dc066a6eb c0914661ba27381a7901a8e0c982a091cf669ce33197d254face49c2a7ae9aa9 682ac46e63f55efb4691ee77255c2bbcacd10b607eaf14c607d10386a2d3bfed 9c92c80a663dd7ea3ed7971ce5de59de02369ef9809ce631d5ff0df41c196087 fca2634e47fc40bd5af0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTI7 %!PS-AdobeFont-1.1: CMTI7 1.0 %%CreationDate: 1991 Aug 18 21:07:18 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTI7) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMTI7 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 44 /comma put dup 45 /hyphen put dup 58 /colon put dup 65 /A put dup 66 /B put dup 68 /D put dup 69 /E put dup 79 /O put dup 82 /R put dup 83 /S put dup 84 /T put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def /FontBBox{-27 -250 1268 750}readonly def /UniqueXX 5000825 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65 66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7 695aba81f0260cd5248b9e649cd80219794832af151fe9d5386d1ed91db54d1f 56dbec55d7c48ed295977e18f23fda49f00cbf6b37dbcbd34dd98770e780450f ab0bb54cb467b1038527da84f47b0cdff9561b343383c7cd96f818e10597fb39 4e91fc05dacdb7b418c8e6362ca4e803b563f227624bc4d8e0e1f76925affaeb 710c3b8220db48814ac08cc6a4d735d85316555bd4ab77a1098370dcb2bd272e fce72e2125b0a783a9b1fe202217eae8eb51e4ee2b9735b997af5b43174c58b4 07c1c7a4b7528d6ddbc7091f1fb8d4a731d78ec08e4c996301846cbeb5673597 69578272b49423899ffa88ed9e3fb5511c3e471150a3e257ba5656d21b8ed57c 4d1f6433eb9e04012c52e0fad62312eb2a88dbff69cde9d39d372dd7934fde7f 906a9c4828c1762dd4e1ae410026c58b56db7df324dad8fc3696323900480ff9 09c9f4b9acbf7d983b9429b25d317613beae8ea83b7626fa7b010aeda862d9d0 9b45c73d841e6d5e36bc8db0151d6dd635442552fa4d942210b738d3b6258846 28e541a7abb75c347ec149ecc27a148cea9cdf7f1e6842ec26e2b9fdac2bd6ae a7bb0a594e0298b7003b2b858a51d0da0ecdb9172942c16eec62c8b4352d64ac ee149e55cd6a72b0e80c67782b42c244b955a3885f87c6b7fa8d83a611e2e10d 5a6fce63f0a6cbeac3684f01f7cb60166a924849aa33626d97a1f7c7d2151560 097b8a656f0f84765630fe334c554737ef461bb69a0db61e34acc22b19bbfa0d 7ce72e528ec29e159c244c0c2fed1b7d98d584a95ea05caf5f35b78cd8235628 75c767df1d2646d30851571ad1d51e5aee2152145df46035a6b88161fec4746c 937c828c5d392138e7847eea4a5e9b40ff7bc1e8452c4e6c776316ef71f6038f a7528c0a685b7f960b0c1585d84c391fb13a0188b6d6fb204376498dcc412af2 0e21f5a9113c6a81776936b81494d07e04344de9b050156dd94becf8e6d98b42 13ccaae4cd9c837fb462afe7d766a0de3b4d67c4cbcd95293e5fc8ed906967fc f11ee8d2d1fcee7b5af8dd12a1c560f4a2c217323624c3acd9333ca96c7af677 48d72959663d2525c5539c29a0efd2a9f91f5932b6136125d441bb45ab23c3f6 1eede44b4eedcf2f72ffccac019152994117860321ef489b9dae97c067c10497 0fd33f6957ee3c724c9f6cba52375e601056e6eb8e1f64bb77d13e83553504a1 4763d5b2550923c39e050f343ae542ebf3cdb8a32085098574725aa3eeb0e899 53d191e659e78ce5a1f33cf1a1ddfe8485bade56afd8a43271f0fda42bec2cc7 8648a7cdb56bf5a1db7336fca143f921f7eb9bcb0e9c48d10a5d53ed674d248a 913f37e2ef481c67c2ee63172d38c7ed5290f0f2134ffc194152d9297025cf24 6a1e761442491625e30de62940fda85c53ace990872672350fd1573805942418 bd14caeaf31521660616738b892116075269b33693c83f34a4ab0c96384041e4 4ba415ffd469b6c089e49ca798020e5f47b735c01c0be0f0578ae900a5f4d79b a56ca9ffcf0f01787eef25bba25b885acc5b32e2ceffb2b3a67cf7a114c6208e b9f5920fdfec24b79fc30397ed3297cbbb157b0c88e0c2ba82fc612a4fa80a0d a35d9fb8959bf017f939ed95d065a2307a419d693c7553454fe7afc1c5ef6281 b8f24f7fc89e462d45a1a1ccab3d60bad9d0415a7a4cd58999d43539872ef4fe eeff6eed45cb77b549c2bf4b0ae8428cfeb25ef999c1353e0fbabd93ecfd755b 2122e2ef63a81b99f3510528723c116207c7bef95834d150d73728e87e8c03f9 edcf837af8de27f6f96da1ec34fa02e12524f586c6963cd905e7ae77e04c9912 91423690248ebce6eef5d39c00dc5efbbc15d891612251e7f219983d06a9e17f 804a001f15e4462231de21bade5731e687a0d49669be0d853b0fcdff31f02445 1488805996ebbaebee1c3818c47de6afdad571a81aa49d31cac58424ab8b4872 501625042110da653f9d614e0b0ded360c1c20841b0c4cfa1b5a7c0b77de4fb6 52dece0d4bea747dacd4f20c271791c7e8b446b125bbbbd579569a103055bdf2 a98604efa47c91ffdf36ffe6c656fd3cc4162ca43a678333cfea50f3a634ee31 992c12de370c04c564a3d65994d2a528614bc240deee4f369d305001f1977eba fd348c9d05fea8442558d267b339c8cc08bb9dda724a7b1880ba880f37a60cd7 43333832bdd51950debe2a079b1174088f16d7eea5b59a70e14769962817c132 396f5c01631573bff83effd7aa058bedca8556e92100fae557f5176380ab0a8f 581bd83bbc50c55ec4fcaf1181f9f6c30c16b00d3ddc27a6089d1158c7737fcf 8b4f2a9f6bba973a4c9622f9988cc3327ae484889f42ad5cd6917cc721866a2d 79da14758c72284f7b7c3de874e923b82948e9152fb8037a0a33131f8adeda75 0464680a92787d21d90ad5d3f3f46c720841c7b71cc9f79ebca766fef7f7410c c694f22e0c7efa0863704cf5d89202ff655cf9e4f0c554d835387466fc6772de b8a336d2905b857a56061549f445dd67f8beff1605441e00a94d515e972b4498 07038319b7c6fdd6ea849a83e98f8bb6da57288ef1e3765802a1c34acacc1cf6 33cd9fa4cc65fa696d5676b5c405189cae1a46985cdaac504f13492c15fb05b3 911b455791d673e338eb188e4c9468e1fef7ce861169e4358fd801c04f19d258 44af0db52e04e8d05a0332785075df9cdf43fbc87c41636ccd6ef92cc4859e12 b97a45ef4c503981c26d83d25cb8f6a8b8657a3eebff1444ec66129e5b1db36c dc47fabae2ef74630b42f05c611aca55aca2135722723b8913081bcf36185e50 122cf3015678c9906a6f34362152118dad95352aa20a83abce6df655930ca0eb e3896a590456c5206b5d018d10159a5178edde8a5e1d83b71c956e4880c7d06a 7c1d0d45f3193a3bbf47b9d098fe6168bdbb9047b3954c6b7bc5e5a0c93526bd 13c5fd6de5935a3be69f6f9885a887aed28890cfc8714f3c1a65361ab1855d9d c6ae5f1055131edf9b63faa6d75a6e5670f7f1eda4f6c5909153470d64759334 cf478b669d4171f5724ef2cffb1aa884f795e235f3a8a9bb8b5e568abb3ae77d 6560c862e9207955f5c1e18b763fd451571c4ed0f6590dcc0889418f402592b3 387932a54d0da9183d9f678ff93d0ac07e79cb6dbe5b621f1a753a78ce16ffac 9159010a85010ceb863dbed36764958e7fceb528965e9393da4e9330b94753d1 57ad76e10366fad25da46f785480ab47c176ed52d00b1f5e8d521471f8617733 0a62a8a609700a81ab97a672898c8aab294a4afdd58ba25d6e83aa2814c395ed da904c38d9ce79396f0045f41e5bf2ad19e12bda087d40d460119268ac2ce992 3e75cd66e5dbbc532d888e9d449413bc3e9413eae470aa8ff2769181bb811f8a 5ce2afad604ca25e61559ff46771f8a7d5b7d224b4e246d844e4a89b2e82a78f e675251b56ec4ec28e5a77ec5986310f13d4f5eb79192ceb151599cfdc653690 b00f2d355db90e7977ce1fb95b57e0c7feb3e3e354534d5b4ed9ebbfa5491cde 2734819be71d2bbaff9ffb9bf3a5ee3307a97577e425b3a20c5a613c07b168ee 7703addfd4425d0b0fae5277000cbf241e3addfeb52b3c0d1d41f2782bb571d3 5f1d9849dc79dab0fc70355208be8e113a3452fb0b7910e326cbe003764ecc45 e7a06688bd993954655d1d631d05ad677f27f1268e55ca5ec4b4b350c7ae2b7c 1bbc4af955c15d9d43535c4ea82ff4fdac9c3f51a4d2d4bdd185108167b6f299 52d9a50d0a372e7d720e03f60e1826ca37e20f6b3509ced7d322145be761fde4 034240e4b1576f8541cd81d452639f7989f034ace3f20d6323ecf2d914ec4806 b37aba14d1e70e69636d375fca82ec44cb4daa4613a73a9860ee1cd05e8e36eb ca1fd16adae6b47cc7d44994a673765b8e4fd610551ad27d0afa0b8c9ca8cdec 21acbaee31c7ca3ce3b7b4a5fc4b8a50d476768d69cd5d1d081ea7bf104c9bcd 9d44c90a7736125e923b356846e77549d4cebcf956d487144d914e46b1717416 4c093768e5721d88d7b160c92b1c9261ea9af099f1f9077a930adc4b898e3d41 13470673b2273d80a0042061036c4935461b186ae8a0a4df9eb1d3a63050f62c 0fac1ac15b90ab3d5a8865a24ca5acc0abbd3d0835ce43bd1e1153449c0b8117 c2f537c495bb888b6279e113390ee24ba17baa88ef967cacf7a457b2ddbe3248 07dea1cfaf5814c883f0bdc9d4b8c9099579b12a0d888d6f33d88e1858d3eb7b a45803361d8ca471e6afe44e5478fbff017d31fe969c7623a18ea2eee9875456 2c3c5a91d04677fda0a9c733e77adb3a1fb57546e3a768b82d801c378856a9a3 8fde01b151a348f64f32e871fd34a2fd80af843dcc1654a242fbc1fc93eceb63 0e975a4b2ce37322afb86b7b26e352033c21dcc5bfe7994d5c36f7b9d4a31381 1009c4c015aca5340b326957e4ca25e1d934bced579675e0631b7e7da9230b69 3eeb09cfc60290143d36d9639f884640eeb34ee341039204947e2be52e67a866 03d3af0ddc43eddce4761ac97fae8d73cd1398433e6501241ad8e7ab3230cf7f a043967c9941288c3a9d3898877389be63bfa1441a6fb8a3a4be39bf776c4737 5dee3ca1dd98c5cdd47b5171263c589f42075006c1d48e2f70efe2c946c7e67b e494e3bf046fbf76728134162b8c3137321531ecf97dc1a3c538bf3a531bc3ca ef79cf4cb6f93c37fbbf34e8f96442f18d2f2aec594204f7c86170466a980ba2 70d3c27b5e807ab1208bc19336869b736fb9d03a773b564f178a1c0eb7ab66e8 6a70d16c148ffb8dd8a653bae8cdd9efdc14476a895115d6769931d0a337de8d dc4955761e6af0f097fccd4dc675a336a623ba2dcf771dc8f5a67891ede3ae6c c8644e17440723666adf1b9837af6e949af3d06adeba416f66f93c1d00388782 2b50028a06c3a12317f9f8fd57ebd02305d1b337b1c17ffca73285177d7ec2da eba1af8c24dd85b46c6706dab53c17f6145cc81f8364d9cb47440034c55584d1 25bfb07aff2b2c8876bafa3930dd28850154454bb777fd81567044c71b84634c 344804a721bcb3e824586e331bff5dc3e8ebc24b8fcc7568106a1e577d2c9478 eb8f2f8034e1e9db0be69d78f0b88b1da3723abeeff548186a268ab36d9b46e7 a3780229bc9671bed68813346e0a4df6cdf93533beb101669e064c969f3bd4e5 5d316c5b11307c2745c4d66e737169c4c310b5a7fc7cd1be52e9fff527339d79 be07134311175661e316d60fc4e61bc955b53f70b5c9f5a3c45f5fddab0c1972 d308744a52c5818d1a7cbde644284295c46f7ec27649938db813a0f681cc8b7b 5bd7bb1c5bf7d92fa868873cc83a975a80663728fb2739b861466c23cb934f52 ed788ddc2f4199ec67e67ee16be9e8c08814bc5e07acf35a18c282cf84a00310 34faa21ad83db3b7d0b56e4ab96fb6380f9476fde4bd44e2c5f4912729e2b80a c6027d50920306430aa50adac12c1a97a03e29d48076bea73e0724a1b272c6c8 5cac5ed42432e66b7c91be5dde2e4825f0a3bf505acaff06171c323071ec0cc9 d3b253a4a996f2a06fc60ed2bd7dfae0ecb19ca95d8a02f62e3dcc149f354747 9ce3263888f5b6beaa663a5fa9f290f8dcd660d2dbfddc16e64d335424de7e2e 34f4908b5839a5cb5ed5b2777cd1d21fa83dfccde2f23e1f434d7db271f1fa55 8b3c521146437d5cc5c2cd611ebf6abf62b21665385bc747e9934987fcfdbf11 04be84b982adc07c2756bd95aec6ad5ed8d1804a70b04a6d44f68ba89039d488 c37c48096513fed81f7df274a2e4f7589a5834a46d85034e3bc25a531e00a9b9 46ba28ab75a7056da142a2c2e55c9be69123b300cdaf52920fe972369b78b82e 0082047a19ceba5dc6680c61d486548f3bfc08f8c6ce0ed62e11d4db6cd16fda a600093251ab033d6f8ab693cf575ca1063ca3a30b12be337940300910e01787 0c5d6447d03f419f30b7780912929dae3d4fcb3fd5ac64b277281293d0274913 653cbf59a94718e4ae088085b2e758f335125c02c6d0471aca0db66327c39e90 3b70e6407bf9672b780cdc16b152d509e3197c1578a7de4123447cfb62a378a4 e8d9229b53164e1d86de7d9d4af89532deb26211eb6f9f01d2208f64c148bc59 4f49d54a2b090cfe136e8ccb976fd214e8744430c81cc02f800e456006f04364 b647a6d27314f5eff2e6000f51d0f9b54e1563e3ea49e41315635d1bf949ec91 36e1662476a44b91bcc24d882419ea6e449c4df235a7ea01e409b52b13b47f25 950f6df286849a28f331e6c6e7d34b92b6bb2c501e30d578f40ce24a77ea4d30 fd0200f1028f43185e5c3817b1c65c67b365c9a9503822bb8bbb21c2cc80c730 e57b7f6fd9a9f5ffbfdeb9802bb87bbebd0115ad6bb0e80153c3329549013831 10604d41fd9030367a9c8d8d0d144dcaf4b28683cfb9e3f8327a361a0bfee9a6 ed62a46f3aea1bda279f76e224d17038eb5d14e04e9b198344ac93063758203b 902321c2bdf268b8d1819425b687e4c73fc1fefdb2c20c184bcc68a2ba479963 5c203d93341f806b44381edfc08b157b39320d840a4b9f5558aab378d165510c d4ab62a0adf623a9b84584d77ef90fbc294dd1ead3a1123a1f79d474519b46c6 a86b204ad8003724b4e7403b4b33ed71d25d91a9db47db51b528bb9f24292e4d 6f8d7edb2f4717820c61c2b7ddf75da4662b21819bc4ccb9f1859fa9e0bfdeca e4ae31ca956d96e4d6d4fb9bc55c3bb4d1848ca3439f307c3e8ebf1982423f93 3fac8ecb81a17d0c133bb200d2956c50206225220e941e1989eece082d9f32b4 4760f400201bb9bef8100eaf57047e1ba06c73c56a551c6d51754f05391f2d4f 5cc1573c27fb3c4505a8e1ef9df693ff7244dca0d1b4b20c6e62f309d869bab7 932c3a27f66468bd61e20f29bbf40ee715d97eff8c45483b00f0e49ce73171d0 d3b50860e03c5b49867f41c1bf6a34ff76fe19d33b702d618405ef0650345130 6afb5ee69f2bfd339ebb25bc64a2ce46090876246ad00cc16b513adea86cf6f0 3eb13816342ad7a0c98788933ea279910bacf17d9a9aed336c253740659b785d 34da97addbad193588432439fc0377a78f8b4d3734fab6699906e0f81a854b35 13e65b4a3b1106032d33e4097be5fbf90b43a50b85e005329cb6bdf369606268 37b7689b92fa8f8d9ecb992de549043bd7f512b87323e631f434ea7d7f99a65f d78e9fa9547a1b61b0a68742582fd180fd61c15cb7cf444532ddcfc85260a2da a004b8460a6b3942625b689780cac3d58e8646b3ef09ac22f91b1dea92051c35 f41fafe6535d63840742c178a776323ded08a2a51cf84db12ea8ddb537fe6cdf 262424155adc29d0dda8d435c2fb7febbbc2cfdfcbe7d72f2547a6d18cd649e4 5c1bcf6665fe00f40f4c4947fefe45d5946ddbe129370c91486d1c06c67f91a0 c31081e563beef222cb75c8fdac240ce402fbe5dd4ec9a3e0ba0d9d7a225c3c8 9fb88e1e6d7b186d074f679483163e9c1fe3ea97a75619707dd039a0cc5f4012 ed974de3ee440e3082756836141681cf376c0c3df32f2dfdd98dbb7980b480af 29f0a29d50489faab05727728c69672c0bea7edc3a617529ffd8d845cb107618 822d5b85aa265470f918de1db57e50855c420d45610a246b9c48b3feab3c1949 ebbe8b5bc2f72e74ad2595656b739d4a45717b3cb762bbf3970964add10ee119 6d7baea28d360af93f1fa30beb5d16621010757b0c791a49af0f245d20252c33 9d7709c3b6d9a81d0411240dc1217a44792dade87b7494caeaed3f96da7b64e5 ae2c19fe65ea036da728f5094ba0054108e56375fca542274303941d816521f5 2690b95b28b80c584ccffbe4a31e3534075a7b7c6a8cf71fee0d5eae42f60fc6 9737006e47821aad75c8ec16555c6d02fdc3a5b372840815b44965a3b17d52c2 1b2197f9c1325f6640787b161ebc3e71a7a0cb8d6f24e9d3fc4bdfdecef74125 9bde57cee3a20def39c7c758ea3fe99dcc435b881ac1c5a4c08408292692913c 1b721a4ea3a4976be799bded3e7967df97d3c9451da7465176cb017f815f7404 0fe0825f67c693d0801379d12307cd311efdcae5463a178861648e3027b5418c 73e065d02e728231d62dc8b57b73edb958d31a465d0b2b328e5b85fe0c534b52 b6ccb56b4e472bf29eefa2daad7138da66145c4654b0aaa46551c3acd4017bc5 8d12d34253f858db810c0120acc5deebc2d4ebad867bc19949708a12ef2cebf6 4594bd2b82126d101214447dd77f20e60bc7808c549688a92e8fa7a34c761370 ea7a1e22a0c2e212fd07129781f476305f089d0978747e188ec396bc85694139 677b788ad8dbc157159b4d6d2948bf59ed3d0ab51aa86f243f0557aa8df27da2 e2c5c7cb50dae255c0fa51c6b8a2fded1124996cd0d2985f43f96d9240f13d2c af48bdd5cba2f0bc68ad8181ef30121edbf3da1ba444e26f097562ccc07e85f7 71ec82011b7e6025661a4ab0b7c809c09a12ce5a7331b308c71a227ef7da54eb 53deb2d78f24f27ebaef5761075551f2bac4ff830a3aaa9919d92f6036d8c7ec 38d159e93899154e93da97bd5521fa44876475fcd057aa2c6ea691801abb63f1 1db5f59d005b50d270d7fb37262fddc2cadc4d452032cb47bb52ccf279359c84 71ea8a9c62421ce3d6d2c6839f89734aa65a5faaa1dc22513cb41f3c29176ce0 8cca881dd7c3b9c6f784b13fd32278007082d8a255f082cef552e93d4f34febb 8b42861658e72e3963abb69ec5317e4572df98ebfbcd9876ddc2d36baf004eea 1f7fe8cf89f872ef24139dd371c94bd90cef0d0db7ce9b6144628d768a35504e 7926bf5ad634ab5f2684ac24ba04cf67e12080c8cd19f9d07928bea7f9fd9ed2 b9b7bee500a95b2c7ba12e386e19c4b939fff55198e3645f59dd823f2800f94a fb5b88dbde65af42d14165fc88a722b5a4191f90008665a8d4478fef2f14d3c3 a9f7c0b6680d5140420e8e6643696f411e7fe87cf13b933bb83410cd191c0915 eef5c687005ffa9fc0aea163dcb2cf59278e2d5120d473786ab9d0ca8fef6dee 870070874a456e6eb623184bccc3200bcfaf109e2bcce6a15166ebc8f6cdaa67 8177c85c571b5b66e76e93fd9de5e94459ca7afdab7548e28d40ba9f39381b03 bfda53f088475b57dfcf367c023bcd374916089c2fe7177a4df4cd2d99d2546a a952928fb69e0ba4207ed4d4e84c339b2169f9c14eabb8963b5e5b3de66fc977 18a7eeab86d4f9a0630fe0895920a302c667278ddcc2d53eef906a163b994a0c 28e307db4fadae7ce574e62832a36a1261eae9ca90bf79f21af11014773b9529 ab52903882fc73c787ab3f0de4536157bee1422a2b7bcfad5bca406c27e3e713 a5293ac455494ba29c1b06ac5f9f6a0a3a0792b0e6316dbacb3459e52965ffbe a5312de0d3059b197b95e3508873870c53dfedf2cda305f03835213914503898 5805d71b09a04d66b946617e1f540a73f94dcc84cb85f2749c7aca9b24af678a 184f9929fbb40699480f4f9b93c3e791fd40d8ccfbcd6fdc41a8cfcc434b5c4c 483a14f2e92b0babb5a4451438156d53abd4f067bf8478724e28961b9b5a3397 6107bb64de989e0794005ce7c45e0cdbcd4c0a4ba9f30d13eab8e4c58f596db8 7e9e78eb6278615ac5561d60f6ea95708cbea402f185ca171234067101c219ee 57dd825158a753a82afc703cd7eac2f7688b53b2d335c95561001ee271301011 66494ea021726ee346a173a5711cf6663de9624a7267a7d3c09e8570a9b9781f 90b7a98cd131c967b0ea3cd4462e44d619b073816d00da1ae74dbda12d4a044f 690072da827d01776adb17b01091af77e8524a5341ee30335cefe1f0cbd04139 875955fe167c058812080356d10bfab88fc1ad414edeabe3dfebdcc993341622 22afe125c515b7433c97e2220ede0515816c9ffac8877ec508169771b9671d81 5ddbb3214e61f01b71e7bf7a02a416071d56a9121a4461259a0064a98e5582e3 3e35e98bb986694bb557b1c216d2703e2c549c18f135424cac4a89804ec28aae 5f68b8aceaafeb2a94e225d98ce6fffef3b28f29a2b2014a6d4556a443af4712 96e177937d0bff6daedbd8192a115a38fcef3cf43bae70d1cd288476159f902b 91f7997f5a81e5dd2e4bcf9f7d396b4afa1fa1eb2e0549a3c7c922969269d9ff e620aa8291debe4f6a20df714d7bee13ac5d9e198b3c8a051ff8d5a353e6b297 fc9eeda9604a4fab0ddc83481fcd7bba8fb0277f554aa88dd693615fc34563d8 d1fde4880098767ea6fe094c605e49ca01a6c74fa9cc931e13ec70ca823e8b69 93961c2a041cf0fbc4e8e9ba1898012739c8ec31320b3c46097b693943ae70de f1d1caedf8fee694c044fde4c12514f2dfb7b23230b99523fb250bd5e430a928 c0f51ea9ed8ffa199cff49896dff673938f2f82d1cf58ff8ac91ab7589d66be3 65 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMBX7 %!PS-AdobeFont-1.1: CMBX7 1.0 %%CreationDate: 1991 Aug 20 16:35:49 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMBX7) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMBX7 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 45 /hyphen put dup 97 /a put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 121 /y put readonly def /FontBBox{-55 -250 1289 751}readonly def /UniqueXX 5000765 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b4486be79011d1f5bfae5c1f476ee6f05eb1d2caeb 269958b194521197b1ee2d9de5f5346241e154574f14a4532b35968596ef7a20 102dad629475cf5d654585d4caac68ba7b2ff21b103a98af3e9ec01fae180804 26b73d62e93f0328ce7775e81898de587dd0fbcfe98934a58afb1aa4dd8c6eec d19373ddd360a5e85cdd4b752b2f2baa13b48a282214a05632d28e915ec90824 21ff8f2166e940c7122c583f235bfd098f8aac0f1dbb9a625b02bd889869664e f1856608899ba509d6eb8ece665afc34a459dd5b54dc7711f6f04a288214efe4 53095e239bf19cd36b7028d46c07a2b8c17d452d8563ea88a3bc5e5ea29a9ea9 a7e38481679f893f9e6a983ccb5512bed4aca5888793526701796b3fcac0fb62 f69c66d0688eede0fefd590fbce954b2cdd2abc9017390077a2cf6f6fa7d0db2 dcb4b0963e3dfbf02be1dca9cad104f3d29495d19337fbffdd745e1729e7c0a6 41fdd3bf42c30d715670b3ade44f481d795071f1b24f4f03dff59d91bf9d678b 4560da27ad826c9fc8f8cd9a333248cb2007b4ac0a9e2d5c044774124f1ee23c 0e3e005a4a16e1d0cba15797fc42fa75cb45b24fcf8a8cf41de8e06388b5f995 04454646c3246074f495564cfc8ad75a949cc477ecf03f0511b90b6a7456b730 cf09773b5544f6ec17a9a179714e47e2eb1142d8005bd228affaa375eed7fb1b 075b3023be6386f3805aee05b47c7f370e8ad410110429d2ee8801d0d2da9e68 a453a323c147716ca588fbf563175e5f47d1086a21b04102cba338a3580225ce 00dfb1784fbcad0fcd11434afcc2ec13337ee24775c2952be02e20572aaab17f d21287775e4a4d9fbf877a487b252b5c880463541489f5578c7472d39fc27320 2e4ec86f9935ab2ded14ab9ea36770d79a1a72161102412bc57d77cd9abc3502 93b3bc8262cf8091c69c0f9b215903ddf8ec02a05fe876adae3d8a29170e865e ec13147653d5dec573bbbcc2bbb09670553271e1ac284fa306471c2b6831f444 41c80c41ef9bbdddbdbe648f8fc7b1e2ad5560335d8d5f7c5d112c0cdcc3b445 575b5798423dc13fce77e174e5e9530d009086d029f0ef61cc295ee1280a8076 49c7a4d3e4a5bfeaff3566ce523f8c7704620d4622deaf65b46b0ac8cf20036a cc13456d92464452146108922186c17c7609e4c4fca46fa91e4e1ca52e720c9c 4cf30a0481ab67985a1f6cb42456daa6ebf3eda869ae0cb2a1f9db1ae477a8af 8f8bb4ab1b1c5e4afcc0efc4da03fa985c0235479902cfaaefe2bb343f60824d 33f6c6295a56eb7578a6e91ba1967cbd20408664aba9345995217716f885b9dc 8b9fca20dc89bd4ba23131aefb95bc82fb2cd4c454b9a5241dd143eae0944c3b 464408f0d349a246ce53a1282130038f6d17af3d9946eb4da3ab2dc27804f68b 43a741c391aec3b7da9f319e1ef228775c06d0c412d92961f5c972252c3d1eeb 125b5a93f2982fb475661a30e95be14aef84053d40f04f01ca3101ee51aa5a73 41d5bf97e21504ed654b5760cd2a4d8282cece3628f5f804b1fdb0be3a6b8080 8fed222723fd8c8ca63d14faf0b4e26e042d8cdf3d01aa941f78c93ba7d2c20a 46fe865021161f378fcbe4edf097d22afbccaf48c33183e32e397ad81bf230b6 ff0e357542cb51c59619b69df432860ccad931de698f6786bb17174f40b21cf9 5ece445021157b1d50fe143455989752243d762109c91dfe18778583245f8226 f414d21fc7936263b017734111716047b7ca1d44c26716dd999af7db50fc9088 d0c4b66528319ef8f066be4fb2b4c8ff2af220517a217703e1b88ab1c640f7d6 e7b427543941ffb65d74280135068e19d4efa4b049f33941175944b5eabeea7d 17af2334edba4208ee48651c997c7f7a80ab2fb4d9ada5011fa022f9949fe5be 1b640629ccba5deeb7b8a63054f682a8c3e6c86272eaef2d49d372f709f7b52a 6a83082aeb752e7e2fd3cc295bb8b7105ba648544e29bb6eedc8aed6cb6a83ef d278f6b53b30107578178ce7b3d8ca24c017b3d13306e53152ff6e78d1356bd3 617d6e9334fd8f12b5e1f5ac1dffe12365995c8bedf7f056dec31382444603df 6c58ec003f654a67aa40404b95433b6ffc423a1f0592fa9b1cc9d48d0e2acd64 90c933cddc73387d43a936104e0040698c48d0b03d2fdde7326c77f0e8c4f3cb ba87dbe2a982f572a0cf61dcdce18abe27e3c47dd2e60a5cbcbea0adaeb4dc5c c28060f1947016a324329a8a2fc350f34c828ab2a1f88564de3bd3a7fd721be1 5c1e98971dded392276c0aa6be4d833bdb33916c62d88568777c2fe0bf7ea6f7 145d60d187925cfe1e8a6b63732c748202713f4d4135eadda6a6bb07191ac987 8721172be8d871ce09d74975cadef89f5af804a8f7d0f2347996109bb2e15718 bc3fbc4b4e7f98cc63b8de16537829b4447bc7fe11711f775644476e16dd3e02 b07b7a47b9de48b5d80388490b3a01768aecdd4b154401d5c66f1ff93f2e5b36 ada87011ae923fb35b48b95810f2b7422dcc66564c52468f020d50b2f341e2cf c5f8368c8d5f929d3d90cd3fc8d79c0bb3f43be4cc6f1f44357ca11108ff3859 ef2391b538e05c81f4ffecc9933ce5c7582dc7db3d97215956de0d828e52a13a 98b15d33da505133d2f6d5ba6bf122f8d48e051aec884ab5f94bbc9d78126904 22c96b2d33b578d2518c55debeab3d4b6e349fb5286dbdcfa1b77bfba39cbedf 23ee728ef00a16a1f215ff0aa6ef831ada31647f73fe8834d711ba3f81fcdaf4 7cbb18fda155f3ac2c1220e9324e19e1c26f02c3a8e48a30c9e833067751d95d e29e89dd36aba1098f333b4728e753276d058a8bb47388b13ad4147ae606135d 97a75f5528c212880e762371e3955e5eacc39af692984a096b546675d675d7c3 68ca7f6b2e3b7ae723695d094aca8f3c295a9b36354aedd6f735e54ac41f4b21 17e6311bada612f25ac1a4031de985d0d6f4255347c2d35795ca5f7449217035 7d0a582228f3dd3d8ce57ff5c0f490ccb92b1956713c59b8ad2c7f07b4f2a728 8a5ef6aa40db727e78718260d9a003bf7e60d78411f32ba322073292564a329e 6c548d1435161511b6284718f616f2b7c176040d134dd23ecd61189ec3404360 5e6f5970c7ed15637c8b63caac8cdb977af118aed3cd45fbe383f9300882f571 cced7d63daf245fb65da22e79b67209ed1802d1e50ab3e8469ddae52d1d9118a 6e79da653377151b1594e97a20f13c886f2839eb63e1fdce79326fc93173996e 84f21e52e9e2831298f1ae3be8ac67f2dc76b5e173928c584b164e86bc4ef350 cbd24628c026e249b292723b88991e762afd185ca0a20108c6f64fbc477b0ffd 381950613a203486818034322bb2bc950e3be79ff5fe35d2922f485e89497306 560975a1366ff917a6c644474e36bf961f41acbbd1aba11eeb33614655e9fd6c a9863fc03304518676f22b83f017fad40e46c8f0d05d6a536102893194dab55d 78be4812e75aa2034be34054ac0db28ff7bd66a837da09e02ed188d34b0be16d f8eeafd674800afe353980e3f0c723518a86732c0761dd359c70f28a33161003 25a8291378d6d7299751aaa51dce6d3fbcb5e8d9e7fe1c743d6a6738a92e40ae 2a5051c5a9f5649698550755c51d12c701bf3d47e0e5af4668d2d23bf53b1805 ed23b41d3b1525aa6c41ad7b935b31b39844280a824213344399b4bf539898b7 06d522f6a2c25f614bad8dfa990ed629cb0bab4a83f1a7a65c184d40ad9447e3 37debebdb7d0f6fd0e22231d3a8ee86c542669e857766bc34deef63fc9423ec9 9b2a57cc20084d3fc49d0ae95cfbbef1e07c84724183123adc51eeea64d594e0 5d540a734a00d16c2efc298db0328303a6c93a82bc6d2f2fe7acb3a0e232abe2 de2cb701ef641039d58c969fed4472c5db96e483621c70e24cb115b6b4e693c4 cf3e0b679766e4bdc55074407d897114f761b066ab02b1bbadd8df52857758cb 420877fa4eef62975b0923498d012a72f1507d6cf7ad3c5431d93b0a998b6bbb cb8b04d64820541c1d1e9b672cd6321fa667604453d9e2c769cda7ab6b8b59dc 9f4d31e9582b144affd8a246265829a25646a44046da9f7b6765d81848b87d18 c6ecae466ee26c5679926698910e9906058fc6b81bcb6a83bf4668e32ffec68d adc3fbd12fd72f3482bb475962a2e3cad9bd2f98b35c033e8f0d8be5ed316a1f 17c8ab5239dbaaaf752eb1535f97bbe1659fec333223942fbc04c56ed35a6834 a93aa4caedc675f9a6e7c397218670d4557f5b1b75d1d5f6ebcd8ce588d70a93 f958373a0665937290b540874f34eb5665978436cef3eb7b971b60c5515b7ecc 9e371bd2e8587befaf614cba3205cb53c5382b6bdbe9475c19aac7868a297fe8 a392cb56dd6e76b69306ad24e3a069e829632168774e63c0b37113b6cc4a26dd 287c8b2335a4956828510d0f5e3c2d2fbd61347e92d8ea2439e95ecf88262ff3 7263c39dd0afa7f22f809a8b09ccace44200b732d1cc78dbff1a2dcbad8dc999 6abe6285cff8c567e23820c7369d1059ba82804daf960210d1c50f478d12b8cb 53dce04183d0dd51ea8096477dd9bed1e6629fe7771e192845ff8241d6988278 d021e7c9d70601cae8b310a739f3c9de106cc94addc97462a82ec99fc1dc1488 5e72975a66654c778cbcdc94e041b7e07fa77abffcce4b246fe0b3241907eec6 e7afc86daeb941eb705eba4e9c3fab3c51a4eba198cc6984689591c048f57964 43522acbc053f02efc1b83c65dd1fa563963152c6e46ec55e7a6138134e85570 ab554b2264b493400374ba7909e6618c6d847a6729537932c1af91393bd9d609 8f0e69e1d230ce738585199cf51bc2551d1fbd2af185249c620c3321d58ad290 78937ea28399ff1f084a7688cc496b353ce99129d340ca5561c16b38034340ba 24f1e20bcdddddd3eae320656d18a364bee899c5fc685a5a275cecaae6909b7c 65d2226f568bc73226ff6566f150e252a27a003d0c0051fad9e6aef28beae03c c5418af9945a7cf519ce45400c9b188d4b9be44da7629333ea896c12e849d6ea 3eb8071e38923879ab085820add62786164985e81afa24faa6b73e68068d4cf3 2db6e6662fa850880bb6b8f3c7c4500152420a378b4f973492c9f5b7 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI5 %!PS-AdobeFont-1.1: CMMI5 1.100 %%CreationDate: 1996 Aug 02 08:21:10 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI5) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI5 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 112 /p put readonly def /FontBBox{37 -250 1349 750}readonly def /UniqueXX 5087380 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311e252234d51741e18db3a68e8ad10242 29e5817a10e796a78d2c7f7c1f50961b9a57aa604c9f821dbf5a9295197bc666 31678d7d2c7e1f8f2151ce0c29efce46270570f4301c5dad1b38884732e53dad 05dfc36b020e726ca575f71f04abf2b49e1f1d6d2a08a477658ca9a48f1c8cce 14382f0a42201de56e2821ee2b0e91a818b1b753d810ec2428dae5153b66af66 9442192024becf743a8f6264a58a0b3aa823510a4957d1bab3e1b83135362888 3e392f49926471a8021fdb48637baf0abcf31204b1b214f48c99f44af7782323 69d772ae4f49be53a1bf584747bf29b94f530d59a5be5370b8dd0691e32a21ba 9d0d592cf3bb50a99a3ecd18d6c4114cb4cfecc49705da90d7edb10e3a28f9eb a49347a09d31eec896f2a28e9607d99d42914aea16545c16e136bdd0b75fe486 61e24c7a9e9b233a76754c760822d0a88c575e08ae3e3f081d7bfb80ec4c03ac a08b65fb6474f71fc95c7c2462f2eb3754e647c29498288f2ced0bd3a2bca5c3 2f80a61fa667802d376cacd34de1f9572d1b3ab09d6f352750db4a768f869638 a87457889aa502850427b40e1294c5ba33e6b17532b2d13b5f50e71582f93daa 231e86597872a2a968127afb0f36257a76ce1eb24e6c4f29fce2aaf6532fb5cf df84da03f03a45b915209f67d398c7c4f7a3b0623750259087a478dca684b29e a8b7f52060bae9394369ed1cecc645d113cca3772a8dc36c6d916b5c5e65454c 0a188a33395fd3da67ad0a31ddab6a8434dd80f0bd0ea1a2a62eecc331d88b3e 369552daa1c575a98fe84383548626b65be7c24ae7eb61159f149872cfd87cf7 6c1a7c155c7186c7600e58cb61b8cb0c5dea98268a39e928bf6fc53985eaa763 2b28c1eb3d82e4d3fe225223f4266d2b6147e344aad2d4884a9308aadc7801af a606838925e3e50ee7aaf73f090baefcfd4e34b795cd92d83c944d91a4940f2f c955d727ea5bd76f0c8057b12621eceb0947b0a5dd10dbcbc52957dd978d7db0 c794660afdd4e946b3d7fc1ba60907fb3f756aab0406c0e7bce5a2238fb3e12e 07e2c0a7f465e90057642d704434ae0b57bd46c8ea91ab2a386e24c6deaf9cb0 8cdaa8fc4ec3fadc06bf28659cb878453db16f4b03925b2127b83be8fc240f33 23ea950b51d70c8fe861e30c346efa0a0125137598caca5478991e35f5bbbc19 4c787488ba339830bca15f8333431902e82b66a514a41c0bff92719a6a0d9587 4cff62c622fc61a0308a69f9fb7ef51bb274ce9e059c04b64e817abdbfedc209 bb79b42ba58367eca2d70f126b3ec64b1f3c21a7f7c011be570643c0276d3e1d 03f1d0574d73bf462e2ab75004d6207d5bf13e8b59f3cc9edabac15cc7782721 b7b5da68a86213676fce51143473846eba14351a8948f8d8e1d38f595aa0a93e b67e13e0053020e2803ad3f0f886d30d64935904b0aa7d23097c12f3e1a44457 2076a3234ae839d72ee12fc3adcce794fe6a4a67a7f93d207c771bb383b355b0 242320217bb3a2ee71049da17c654187e376018ef2b60763bc29180e9767a847 031dedf6042cbc36bd70f4021a6fa0b5932700436bdec66c00bb8d99dcee6f56 6d7809fb8b470bcd608bbcdc0a1c726b460046a73c82fc21f732f4bb5787948d c9cd444708ba7d181fbc0d5d07284101d63ccfc071441a7f59a3347c09cc91f2 017c6bdec3b578a7907e8315cc68061912d753109079d1cc602e034eb43c9baa e29cf3bbe178ccf9171390a6b08c9a4a06eded05160b584c6a961fb6fee78fa4 a72e89e7c8290c8270ff43772aaaee979eb538b0f9275490d2e082a2e6a95a00 42475eb3032a1e8efc5dd93bca13b5591fce1d27f0f40f2544b5ea0562afb7c2 0d0e4505badc23e1ecf2fc771edb9d799ebdc7462bf93d3cf195206f8dd7a94e 9831f86a87bb1b74f121cec774bf7c0508f44f21bafc332377d6855c0ac40703 5e1e0956e34f5c5186448cf906ea27976e13c60d7436b6c1f115bf7c5c3c79b4 fa7a3c142492c0e8f8f41d3bc454ac4852a874bd88bb10848511f3af6c686c0c 714828439878702a800e35c87101ead16a0420fc40f5f19b9d91565fea9db912 056fe58f05d8443375cd6b7d938e09299e1781101ba88c21866d20bbb0945978 db375ddd76806457139a772fb1f0ca99c75ebe3db9f4d60b063d521f937740a3 108e37dc203bdeb1306ce58290b613c982830083c4295ce5b2336fbdc18667a9 f390c18e56a5d8e2dc9ae6e5fafa31f3e7be963c86983d2b172c3ea22c7762ac 53b36322265776db9967fbd36577eb8f63afed943e7fac884e5c0584ad31e335 ad1a543a234fd44e77228ed9a173f12b30b323c6fd650e3c0bf3d50e1727aa23 7f4dc61c0386b541bc68007cf69e5d7da3bff8537bf6e5e13e552d98e288d988 0e5f4c10cdcbc87f5df5e26b370ebb968a2e667a261e29b416ca14dd6642cdee 45871379837eb2163e4785ee0eceee27b6b301be17f4bb1cabaa3f4754e2aea1 f77a610400a628fd79a310bb168eef0ff22a0a9e5d76f6e4798f6db2cf448bea 58f1337458047af87fdabc3ddcbf0ee82f0260e5198da905aee820e62c962e21 85a0e3d1017a778368e2808d2a7ee426ca1c95b1320a58d9a4a90a68259405fa adbd1078d2a8910174bcc45dfec11f515e761131d49ab83b768bae4202a8c713 e4ba58e243b293d3d60d56f755c1afad9d635a47d12250d2e96e9bc402504e68 0c623d0a5ffa6d90b34ac929cbcdcc97ebc8f2117a3f28cebda59e80d744b9e9 6b406443116cd649ed878c8a6d869849df291d2ed409c685259428ba7a117217 dda2fdea8999e055ba2f095591e075434b75d1dfcb7478c17ca9a9b55c9eb9e2 b7a6cb12c63e8e2fc6cab4b5c051bfec813ae85f104c184c2cc99b2e62791c6c 450f8255bdb0f78a650f1abb94b2512968b2baf7606f1f8fb9816f2882e4ced8 65cfda0ef5c1d298eb6f820b5b0156e365ef2dcf214d19262d44988b3446a8c2 54209af964a9d0f96f56340e3d0ede 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI7 %!PS-AdobeFont-1.1: CMMI7 1.100 %%CreationDate: 1996 Jul 23 07:53:53 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI7) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI7 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put dup 59 /comma put dup 60 /less put dup 61 /slash put dup 62 /greater put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put readonly def /FontBBox{0 -250 1171 750}readonly def /UniqueXX 5087382 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98 74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730 48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f 15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427 bdd7da12534ba078ad3d780414930f01bdaae649990604a33aa9eaffbe5b5489 e5c7c9ff9d9be01b08220832c41caac64816b53bbc087ae4b621d2b44b21ae5e 3f7fe4ddb05c675abfe30510eee4a7c874bb57b2ffe521a6875eddfdfd18c781 25bfca5a097aad361dd94df46f14026c25ea988194899b95001209cb7009cead 4b4ea03473ea120e7a7e341d4e3926796347fdb3a124c29660ac09f4648b313c b58e824884382f24ce08d2edc686923acace1201c16a07a42803288cd0b946f7 546510e95b1fa1cc96f0bf72aa823d8e83d7c68c752c82a54c752eed2b1e699d e9db1830272ffbf2f4996ccc2d6fe2ae272798989525ef3b67b0d09bffcef749 a805e5f76578222b9c4a8a09b13189a16ab746ddef7875f1ecf83e568f493d82 ff729baa1e0834dbec30a35d3c49c9b10c5e1d90c6e3c8fb737df5ceb3299d96 0fb79632f91f257753b4d2e34e3f54a26c7b950981fb7fe4dee3315db63e75b0 24b4d318baec8aac9cde186f6d65767df1dba35124287c2e805bc660a3a22772 0ae4fa097f1d75107441c0a0fbb9eec17d5516fa03b98756b7df7ac7eff9c7a2 364b9f691ed5cb692dfff9dd80c761e9c4d5d6061782b327302c053ce1cd09ba 0605ebf761cf9b730524e1994e7dfaa956799d522ec53d5acba27a35c4d28279 617771938ece58c5ab664aa00c1bc4efba2d15504247a68e3af0f9bd59a387b3 80db88cca083b06f5af70d768d1699826fb12ce12efc2b4c70923e052dbb964f 5fa957c3ce225c0fda64d9b5321ee1ade207c1cc93105096cc73118f4082594c 8ecddeb0d7bfde6f70bc62f10407c26a476ed88be7999d64a15912493829a9de 62c71f5a34fbf5a843e311873cd98817dc9f8a4aeb7e0738b5de10043f5cfea7 147f27f2aecc0a3a729fdc63a29b5853b3a8bf01c727c740b909b328e15918df b99cd3c98252d10abe5e02620529e85ca1396c912a1fce599fae7be99fe1b4f7 5ae58b2106456816819c244a51a5c9d4514be4342297e4e6b8dda38ab07965a5 dbc9e15aee81b88bbe6a7a51b7b6ce572275581a035879aa8b6780020c377c93 b580d9f94bdde37ceb7ba2639a04083c37b5b988a04a4007b6a648edda39b767 9e3c6bc83803cf7692b3bde26dc0c818417e203665311f170df2a891090c8154 55f4f3f7560fd2334e8fe9cb87c652f83df5e84280fce0906bea9d70be2a0caf 00b1e6f63fdd83a986c64b8166ea4473c1c4e1b62aee99830caee4c151b7da0e ca32aa3333127956a3a3919279d520a0c15313ba27f5e27326a8bc331bb72b95 4a7300c310dc13de2915201840231c7cbcbea1591957ec8b97009c3b0602abd3 e2d51edfb3faac7f6baeca32865aa376900b52d8dbf76f93bfeec1036f6a919c e4c801052ce15d63d181a88ee2f5b946911e0802432004cbfda833aec0b6fc12 456a301b32919880941c8768248ea43b1d6ac0015fab03cdd967c48fd77200b9 e613c39f6f90243d093261ad49d9125646f652d04f41e94ae356f3bbd6dec16f 2dfc85691a564c96ac1d02f3bf75a79c00280147274efa1357799bdd2f2405d7 f73cbe22d15d4323fad1ea0fa88ea588430642cd2f4ab9f9d8514aa8fafec73a 872f786e8bb3d6e82e04f75c96eb85eab17131ce37b5a7062ed4731ca69636e1 1e93a4120f22d9f563470c963cc99a9a3622474101a715928b0e12cf7c2380d1 6f9db359f238820a4916065cfcc4ef8a1a2877d5c18d4a130f2853c0a6534518 174ce13e6d2057feef260c6aff1d6328ed219f7478c69be44f2d1823fc996804 436f79790f66cac29e3eef674f0f0399f8ea7fe6c4891a2fea2cc470952ad4d5 65671c20ea22068ca71cf7123c2a1ca9d1766bc02644c02c471b4cbe61b1e908 5a184629b56f048ea23327082c1c556aaea2f9f95e695e11b28d9a41e3a45b09 d12b39f5bba09a407e3280d8e9f2d7dde2367ab9b83977ed2ae91ae0d0f463e8 d16a9a3b0beb7622e24d292829b063cca615f7648951dadbefd7d26c4e5c5522 ae44d091950256964260d8d7e1fe628d1eb86d51e9ea477be35c219e5a55ddb8 01292999b0d7560206827ce357021b16331078c95a4e7bd3350fef57eddac2e1 28df637d97e58a6dd15007fc12b6e06363805508645c45d47b3ae0c09df540fb 2e432f5a3b81fc63c1af8a5bd8c9bc26665d9b96f9e135f5638f99726c8f0d8f 5f161643e3c277fe5eea065d086c378e254ddaadf8644e6cfe5bbff20ea81284 c297d0ab7e9ba7a60d2f25ba6d4a2b86a78a440ae5b1f0de46d0dc443e5facd2 cfdcca52f3a06da8ab292906a86daaa140fbeee87610a33427ecccdc1786e158 b881e11c41404e3f13693a6ec0481f76252f7004f43deb423ff5fb08b56f4714 14b42a99906243889b0ce8f8c4752b90bc3aaf3eb8f9b62675192384ce1cd57e aa3569e09891a0cbcf5a4fdad0d0685fa4ef455b1c6d7b26c9b1e0d36e8f8c6a 71e8909adbac7957c9f1dfb5a1fc7aaea245d294e55aacaba24a2f009afd3eb9 d798dd0a7a0b3c1cea574d409edfefef5cb1c0fc2efdc612b598470da7d60b3a 3d97e4f547f030391600d7306f4de2ad18d6870e3160c271a51670d187d9a5ee 590be12271593ce0f4e2d73cd5f627f37879ad44cd08f90bbfc31a48d9ebcde2 e7c639d0e47297b0c0481e9740a0873bdf5ffc1b7a6117ee6da02b6d9aff7830 6d6be0f8319b93153de775b987b98aca777f2bc08c01b3fe39348a55e10b0028 b4de3a58f0a10c47c892f08ef9dc79d0655dae49e49942b3c2925d2174e4d006 beb29aa2eb44ba76b1d00b66d5c42dcefd61acfe5a476e1e911006a66dd9389e 90168adfa5ee7d930991fd768f7fcaa48a8279a746b8aaebf272e77b7c3836cb 65b09a36c7411f520e822477063198fc50e8999c36afe9906f3ae065931aef48 5cd4fc95b2bf4a51a2779c2513fbef215a87571d86e557f7ceb31db34a4b3b97 c25d1cefc6cb4579b9b6cfb7dbaa4a171a40b77e5b4afb78a1e3bdaa1edbf086 41ac0820f6dfd3031a30879dbd2996b561ee8a26c2d99a1c3d9a9b73eb694b37 82559d72b59600efd8111f68a7cddfdccecc7b19c58f7406c662f376b31bb7a3 0aa639e9720f76b615469cf3b6f471f898c15d50085eba7f84ee2bc5397c10a4 c1b60b78b146319b8bcdfb1ffcc6be38fcb82f272a93122fb99388c96e238c3f 7b6067ea7b530af323d6420320bcb6df0924c4cd92f7544e729cfaa73feee01a 2c61254b019aca31d2777f98874a69b9f4ed3314a5d9be4701b58a43cc8f3631 4fee339df28ee73635e4842f6c170b78a54af802a3e54d2b9dffff923a3f80ad 0d02e785786ffa8faa44424e2eb9c651b6043cd1cb3cf7bc4731893c24a64a9f bc73d11d253181fe252bab4dce87509549dec70f6d80b0fb0d7b668ec88db096 f312e01881eccff1b0e7d44bf9735708e3bd1da7174a92ca74b1235a01a9e0d6 d28582fbbd9d000c372e2aab319f0aa0b268770c9cda2d6266911d7e907161c8 b81d2387ff987c6b61a07b8c39ee254a199afacddd1e5af6326473f48bf77ab2 9dfbf5229f9d469defeb8aa2e61f0694ab2c485e528a16c9a34da37b6fee9d5d 229b630704fca5024a11d7bc6f4252ff0f7f4c5ab992c3d9df300356d910a977 6bc285b90c5a1ae46c4bf98c9c8a30af7104885f7ed8b079059e0f5d36390313 61dd589a588ccd8382a70b4667961284f9e38a4e297e57357d2836c99da0b0eb 9bc29c679edbbe37de21051b956c763c8cce3bf1c65b0ca84041a41b7e0342fb a71cb8ebb8507b872b1499798bd0ceb7087ad0fbfd108350d3872591a4cc7aa6 01977c29df57e42b8630173ae112874d3f502fd0a554ca559680e3c5caa124e8 3a27912664293f6db475ef8f7d53cfe5b6114f9b18c7147ca6a6b17ede2c7527 8ed1a7835795e603f33521c8bc4edfa8d53f82b885167200c4d0042b5a120fd0 462a6d87dec841d6152c5745915bcf7da77226c7f73ca672c83c3f50ea2120fd bc811a4c8d93ab609cf60e913de5f7a750e3dee660159d189a5b1d5f03687cd6 4f81313595ce02e88833b662804e8f2e7af1fb0a8e70d51c5813e541f2cfa8bc f960279c380c4bc36cd0318eebee5b4f541540986de815ef9ccf02703a97139a 4d2ac12013231d9df64327e8fde5ae542c44dc36b688663367a5f1d2a5409a9d b85fd1874a5e09f9af72597b1171fd446d8e7d819ea600236298f25f197b80e3 dee05355f786255bb98d55fcf6297e3fdd2087cae39244fb36a0eb9c2eb65684 2c0c1d25d52cd2aa6a6ab987d8a7eebfc4ba369a9707ae8ace21a9c90ad7b742 028ef887bce65701d511a0680390624f682e0b3938638797e95699a6af84bb68 61e3aebf6bde0e472f21d4a6eaa8f8fb4d470061822accc192c95b03328c718f 1a9bbfb73877e30bbbc4a4b8e613adfef6b1c901bc7537c0b9b96a085d7e4b32 6ff3861636284130261eb1ece77ee2439a2f76c2df118813b55434d3cf7cc14c 53c51c485aba5ad0ed52321873acb7ee04e4f361914b9902232e49562f40b974 8f315e5e23a913cedb7fd317cda581144ec3862bf6436d9564c484c7c94561e1 8211b9206a34cb72063483e7702436c685c1f22bf7e3d916dd39f7adfba0eded 87fd393c9b3da215966655585403f31ee9441ffc372d42123723f28c3d456d5e 32d3e727f3e42f47226be6968208fdfd761c4ca0032975dd7284b4f67d822922 97bd2057ba3de73a46bbafe22a96ddf928c0afd85f7c3e3df63a2bb289f809b9 4ec23ba265db54ffff1d55247dc9fc42a6745414cfb1a59d94450adb35eee12c 87880d7e3596862d68282c13c03595cfe7c591eb1d575e1947a1c4f148307091 aeaacae7f8f93538e5f30ab167370deea476502a681ad6723229467758b81af2 33ab9679093176906cc6a121a24ea6e81aa955252eb2000421443dcdcef34309 10afb315eed68a9937126cb971365e0ee0626140187b4972d1ccb30a3d221164 5d3ba4701b1bdec8a97eea765e76cefeb9f0657e1f0fb4ec1eb74e9fe85ea540 d2545b46eae0f091a17063f53e31cc802df46b42c34ece554d09c7020f7c2ce1 e03dab86a1e5a312744e3166cdc72f0cabcbd0d8b1ec7d74a0ba2cf4740b74ee dccfbac2dc955aecf8f99eb4f25524d20462dfd109774fbdd06937d518b9b042 a2935bccac6e4434113e5bc69c7e5983b6f8ab58e4751ffeccee11407e24c3cd 17ff637472cc9cb58d58896dce6695ae400e12d6748ee81915f7539a28d07d7f 40c86ced3201c6b389b696310e72057e5bd39c19482bbf2bd2b003b73395f07e 5bd24746a5610d13bf5fa019af11eb1625752ff0fb62c08a06a6331ecdb6d9f8 50a1719846cc092f3769a9659efc3e455cbe543bb216d0f1ee30b17d60532efc c1c858bc8e66b89d51c6e1f8d20207c5e7f6501e094d74d091a29837977c1fa9 ab02a8405bcaf57618cb4801596f4053688c5d431f23fd8fbf4c6f7ac8c5b8f6 0187cd0558954130791c3abea5150d6b1225078565ce6510c8ade0fecef7e8e2 34c3d7262168a073970368fbabfdb85e3f159ee21ba057a9f6d7f86f95ab7ef0 8cf89202ab4ae180c93f706dc54b6507a042f7540dfa30ef071be926c05fd79b f60c9ad147e36fe9b49dc721aefca95c15cefbda880019bf56fa5ce2f8788bdb 3b065e69d79506ef3f2533463796f7ee0732d77179deac50744b03528d8face5 79923f8332f5619e48adb46d75c94518a19fadc50b6c9b58b4390a4f84790532 b3c1d499b81754cc77b78ab29cec9261838e54a3c987c83ff4852dbb633e952d 1a86b6ce77480d1be11d6a712dd59e18d711acd3d2399bbf1ffe2db87ada8022 27719f75d4f63c1f49663dda8f58f484b6f08244d1c87bcf2c6720fc0ea33db1 1db2113d81673fa160a1273e9634a349a0bb8f5d9ca42eaec0d7cf130ab8fac9 f3cf58a6c53f04e7e50fb2d9f8321704753de55ca89c4f66c0b278a1841b8c2b 7251f1f58dbcd1d1da62e628a22dba72e1353127dd48cb32c345b95952cb84cf f39ad4144e974026160c702c30b49fce40c2389334d92a2c2e893ab1ada26531 57e44486bf1c6a6f3896d139cec4ac4ed1c35b2eedc46744894d8a0ecdd07370 0e6dc73417847d4b289a52b4f71acd5ffad83a6bc72b71cdce041a8d75cad052 9e9d43ff04e2c598c3aeb2f1a47be1c9ab5603498ffe23b33cca5450d941214c ddcc971fc00bf1fe9d10ddb35f27862e5e4ec3e883cd690d717d3d29acb1995f 4fc247181f14d85b0f798597a72bc3004668d9c76d9f14aabed05c8a3b097dec d9e504427f98a0c11bc23284951c89d7bbe66ef4b7a1a344f429ecbcaee3f86a c77d5eb41f2797e0c1d112e5f8fc94e77c78fbbfd06be557aac76ff8665c9188 f45d4bc9c760952968044c0487d6fcc2170d271760fbaca2f876cf15633212fb 27f0bf43b0bee5e5aebf95b6b920698e7d489a78a8303f92ff3cc3501c39e3d5 d8c774e4cb517f6537a5dcc793f85d8e5b64bf881e4f403e777500bb04dc1ea1 3859e4a539cde918500dba82d33c4a638f24ed8a89ca260729d04562ff849334 c9c33a5f7cb9840d006fc2df16d4ac6b65ae010c38519622fd9d0be7f02e950d f91ac4ec7b70a99c7ed25ca32a97b4f98ae9c4f81dd99d3849c89e27b793f22d 7f4ce5aceeb996740bc286fac0b2b5c08c6c4ead48f0c56acc995b5eb2515cf8 b2e5329cc4cbb13acd2d715db4607a610eb44e0321fe1cc5b3d13842ed984943 3ca6b89a26425136495ecd8daecda48fdd39ed53742f413f58ff70581d649bee bba19755fa4f262d5cc8a9e56f90d78b865b01c4e921f1d0c739b25e3dafa3c4 c334d6a0e8ee550d60565f1eaf1b0df9ea8f2c018f3e111af10a64495f552698 e607c8445e1d59b8ec0df870461e4cde95cdd6f41ed678805ccd11ddd1ccf36a 8b8bb6b0a7c21165fd9d291a677e284d1eb04e130532172b43f2ce51a59b8b19 689d2dfcda8a8ec6f0e77db302f09edf0c379214e4f9bc6f7326db53d10a0c0f 2ef421458eda7e94d60d7ee8e18243970b9616430c9041d9e6e22c5a757149dc b3512e619882706c91d85c76e991218603b00654cbf1f60f611ce4ebea7caa04 9559fa6d39233098e8d258dd8476d2added7326dcbb690bdc2fbe6a4d2b85473 d008fc2296822b3693b284a3c7ea389def0002a4c2f2cd3a49ddd3adb2a35073 4d790cd6796ed3e35e2f0cf2ac67a9ae82fabf8b43c1f2e3dde7895b512df81e 5ed2153ab0be307a30ddbda8b086f96c93100a7a113008dd7a5ffa77a9c24e69 ee52a36d50d6d49bfbdb6ad90aeb0f9c737f6a40b00e1b79785a354d196ece07 a6134e2809d1fdb3d8edc4d0b69c8079385c16281e537006b9e4af92fdc256a6 f1aee941b28dc888a13259bc4854f618102f589072eee922ccfcc97d3ca7a627 c03b70ef5c076291ffcea21067622197acae23079162be6c8de92b24bbadaa03 bb1b35d7ab2819c9cebbb5abd040303a51f5f89f222841c479e2891780ad3455 3ebbb828c44420524c46a2fa8f3e33481c52b199d3f0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI10 %!PS-AdobeFont-1.1: CMMI10 1.100 %%CreationDate: 1996 Jul 23 07:53:57 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put dup 59 /comma put dup 60 /less put dup 61 /slash put dup 62 /greater put dup 65 /A put dup 83 /S put dup 86 /V put dup 97 /a put dup 99 /c put dup 100 /d put dup 101 /e put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put readonly def /FontBBox{-32 -250 1048 750}readonly def /UniqueXX 5087385 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98 74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730 48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f 15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427 bdd7da12534ba078ad3d780414930da4f8d58abefd45db119b10eb409dd89792 3c6e705479464a4b310b58348c4b42393988fef4925cf984423aaf65fea9f0e6 4629953bcf50b919d968d99bd185f83112b2759cc411764e9bde677f57c5ee5a c555448d5f81a16259ded1e11bf4119d53e8ab07a802df900d3a2d5ccc1c6876 d29c5e9effb7af3ef83400b0910c07873a8c56fa7b1eb1ba426043b00cc95dbe dc6e136cbbbcb3f67509964f9f281ebf81fe5b018122eaf66c4a838487e82e18 6e006093042848a903efb3469ab6b4049767aadb95c30408dfd58d8a10f4cb22 168decd9f3ee100f07b49aa44c92139b669cc312ba20192454eb2375be6284b0 26659d964b96ae82d4942e758027fcf23c25ed01115af27ce7f20efe2a822bb6 84004f20243a49c9e93301fc21b80815c033c3e2ba58ef53da2157d524b395f2 b37abca13bc6a2f42e824ab7e47106176b0d6db267fbb795ac7425582df2e3dc 55863468a9200742bd7b552c48f8cf58bc21343bd3b95abfa140f33f37c6f3f7 8b0d8a5154eb7c1f62ec598267f13e841a3e64172663935ac8b665d86540d316 ddece329c008049c5e74b27d59022c5515059bc3b89370b1bc6a169c888bb325 e0b74282d6f053a50da4024ed1e433271a32ab8c17d41c632b41cf9f3ecd5fe1 24daf7aea7ce8a63047b245822930d517df7baaafa69d2d17f7d93cebd45416d f3459365434123a76ccf883a4973bab19807e1f0c4bab03a45f7ed69ff2660ff 3963e4def11001eec4238c368a39d874fd30b3c14f4186ec7700fbce22abe468 eb32baf7b0164f8f21a9b5e706b91411faaa44467cb2180ab03de375c1ab93e9 76e11ab92fdd4a7280a6d1a8dc65c4c89d04c8ed6988045a2a3de9a4c7b1efd3 75b788255adb8b108285db827957adb0b64b68aba5a40b07babb77e4e0ef4a3c 6d991d34b555bd27eb92a2185cd1abfa5f54424779eeec4a659a953e217819b1 d87a70380b0472046e92c4bc2e27da41de83f0b09dbf4079425cc49fdf513d31 3693867ab56d7a747b02a7b7c9ac3a07643431131b7a75bf4b2fd5416e789b0f 3c05f00a023a40fe50b8bd345d9e318deb3abaddddaa9587dcbb971ccbfd336c 160c61728e68cdc8c7218bd761cbe19246cbefe3467d56b8b3b30dee5ab2a904 d382c827bf5273cdce31772c68fb5990f3be5f50bec2ee57e492ed8de6ca7825 73f3886a5a5253136d2e4f11cdf5cb5d9bce88be62c54b21fbcb1d38fd722f07 bf9f4e01469bf98f98f9d2d8a467c98b42c8118a410af2165e92e66612d60e97 16f588c82b8e1f466bd03e36334c395037be121201ac3e6962c1b6f9da4ab8a4 562a626e22379c1320767e0ad3be465bf6f2ac8e89b3cfbf1ebbf1574887ebeb 994ff224546cc25787bbbf6cf0019cb620e6c158b4550e08add15e49cf92ed0e 87ef7357a91e9cd2f5be3e967dd5a13a72cdf3f69f046f6c99bf42304067f091 63661ffc31204bc9432fb8a458430c9e3ff87b22bb6b8d1b166d51027cdf9f6c 2e28e066751356e9ca4452e479eb57b6fbb1192899f188769103fd123f6f4ed4 5e7bec8838c3136b6b249115efb56a810a9abf2beab6f81c45391e4c026d005f 65a4ef0dcf37df8043c8254be74129798d0fbaee33b3dd3ce408c5d099fd2888 8dcac39c246d06cacb354ea12be7077a1b4df2120b7b8b0d67f78a9a70b2e7e8 d83a24b649a24bc450e3b6cc646ea8eab837c4cda487d1ca024aad08df51c515 5ce61e16bdba7c03029bee16dd904ec59257dcce4314dd14217e21fdee68ec30 f01c82c17c9e8f28ca0a64740da3205809822511ee5a729eceb294e0a640d401 4af3050dc8aac9098aaeee821d03240bf4960d6808a0d29f764fb9877acd0772 c14e7ae10e5a9f78bd73a3ae4e9a7d4593ef8f989b7ecff87eae2898c7fd662b 492303ba19ce2174d2f4550b09dfe5a8108976cdab751b93e0ff868641a773ed 722df7e27a5b8227e76b455178daa3553651b0c68e1e7e2e1a1abf262fe78256 3330e0f5b638f4e56e97f90d7eff2e543bd59e6d0c0b188953dbcd40b7783167 27ae98c01330b90b8e2ab0c5f4fd75c6430b3c5de324fde9720fac07e384e92f ddd9607b16a33d8710f1ba35923d10afcd6fcd8105c432a173584a826e93d40e e2e0c5dc0f5ab675ab2cc6687b04fb2966e44d6c4c5bcafb0c969d27c21bce31 1cd0b6c4012dad06753fb953684f39bb511d14a1991d28e954e90db818b67252 dfbfbe5263632241bd6d65bc65d9430c0eb22e209374d5cb2105737570ea06ee a2d3a850aca5a430dcd212fc0dc29112d28bbf9e6b1098709e1bea4fe62c8d04 3af3bb5f2ae10a9ba28ee6d97e13d1eca14fe198127a8fd8a661fa7d0c68a971 61b62c3d1e83583fde1fd7c726d948a54e4b81ec71f70942f151a3d8eca40f94 6f2ee13e32e5cebc469db77b5ce8b11741336fcf107343e44606851edb3f310f 6b5839431c54eb38f4eb9635ecf1447fed6eb55ccde0d8a9210401963fe937c7 daa9618ee756b9b842a059d039b0d87168c207a04971f60a5ef6d77d8100264b 9eb60a7ae89caecfd4769e7812904a23dc839a0a761a21111963421676c67045 2ecdc8d3ff35efa335a53b3b192ab8140ea43777a75edcc2d8b1b6f6aef713a8 5f811edac371dc2d27c711e5eae17a2501afa664e6af5a2940259e8a14341168 1bd566d1e7d9a1ed2b248a5d42dd4acf00a4401e1f5b9b0c9347ddf55758a801 59d740d20cb1f4bbe0fb74c469bf1a7c4c134a42d689b045f4d7585497b2a980 40ab92e4996360e19f5d049f898389df0b191ca345a34b061a80d36ad612b788 f54d8b23e31ec5ac829cdc7e26640ec476dfec9cd12301c1305f8dea601a8abc b2195886f778cb2bae7fbbf7e5fef15aa1e0a9e5369fba0960291f043ecf27be bd429b1d4c7d949e91076bc7cfdd1a4aa895774de041086d68d7dc99d08c73cc 869b0c03476697201fde2d5712ba2202c12513100efe9e532c76316dbc6c0c6b 7a43097e057fb6fa18c859b17d5cc2ffd527b34394b338439a2f18c483b75461 c0d162fb2798d184764b6db93645849769de2188e895479ca8f79fe58833ec13 b675ca2b8d08ef4cda5ecdf5771f3501433996830b8e4cfc7b888cff724311b7 b06b83fad794787190cf1093ee4ebf45f29e9d08eb5468cf5d7323fa39084631 e5b82efaa21fc34a9c9e33ad3ba8cc6cedbfef9e43c445247f6590487c4865e9 ce1c309bae7fa70a10bc5c43acc3c08ebc7f4bcaeb1d1cea79a39d2203b1ba41 3f84192f98a9aa9cae3f40f473c7935df45882625487da4e053bdc0c504ca3d6 73de289e8508ee83f859644f61ea06de531b861122cd1f07394be73d29e30c7b 3c9256c29c0305f7a1e9b2126e6ae057141073411eace9cd00f3b629802ab5cb aa1c88459a9122b338f85649475b0ee60081e6c68f6dc97d942637e0b534a26d d0699d6e9027fd149dde671eb447173de5c217e434c798b1aa2e643ebac0f8d6 a145a36478aeb850cd4871adc15dfa2fcb16228487350d018cec0748fcb98b0a bf29c815c22014b7ace3c1c75ab9d13d455e24182fb8fe17b44416b5d17be8b9 3ae29bb4d1a7af48442ed17920ebc2b5f85ef3be9e62be6b5f2a721d056f06ee 289336528852be3d22510053ca83a8df0f96e58ef74c68d14d61bfa9666d4696 14935248b317a31f7bbedbfc31de52cc9540959334039c29b11054ed8dcdad24 eff1d8f2bf1c486cc62fa1ff46e62e80c93a84013c91cd4209ccadd035f2e594 5357fa336def90e4464c0b030026acd6f01a3e9242650f348b804eb53ef99cf2 5f5891d54eaccd14d716cba9cae19968b759ae17497a566e9b7fef220d2bdc5d f752e802bb871cc1dc3934c224b06c2a35a137f454224c2c8349f1c1f8b723cb 682d2b19e1ea648fa8ef632aefcd630d52e6043cc6342f056ecb3fbcf01f444b 7f810726c8817ce353004c4df4f641493c8a7af33f0471cc3a77406f97029ffb 658a52b9bfad76360eb9ef7d8b8c07aef7dc455088e67f6f23a0f1f1915747ce 50361450ecb5450343f83373e8113e550340747752ca29c79f03b827c1530d56 7a5bb0f63c637aff866a18c9255142d7bf8dffeb60d084f96e856c547620ec95 4d6c291550ad5fa10fb4f855e7af3aa8bc8ca425070129888af7692d2968d6ab 2c889163066cdb666d52524e92b2cfab4f3f6d5bab2f399716a1ffec84356f2f c35b422c2f6f17fac6a6682db5ea811a5259791c78e8598b68c147c869baeaf1 061c236d98e04f2ee7861c5389840fc43f5de398e595e554adf09bf7c2be2b1d 4f796d67d87ea6e557980879541a43d1c6bea07efc09d823a4bde15a94a4c0f3 2a48fc625c49972bd02aeea37e8056dd3d578f109265a72d7fb181908b9b77c1 0e07fb57e794e5b9f2431055ec340e9a261a4ace232a9cddd8d9eb0247527215 673708ae54e79ba6fcf609d071729a273b94bd01202d1d65bca9e31de58e9662 6e52ecf66e97a2963a93bd5a468d8ebc5895e39d044fb90ba12edb2a3d01044f c892736acae8c29be1f464ecce20fa642a756b863eece315f2d88e122119251a 3ef04b1cf6caf2da28eb816b5392c1bde653186a687bfc71fbadcec4fb944f99 0c7e3b3da780106bcc90e8da4f16baeb7d5258f88d0bd759b4c4cf4381ddfcd4 527b53e0030df79bd8a53eb5a5346ef4427e0ab26e2b6136791ac0985ae943bc eaeb85ad8b9e4126bfe7d5f2bfdb54fcc6e42ff9c81ec59387adfd1d31393d32 59c745d3c552e6af0376718a1cb59db6f96e4d76704bee8191c08f4d1eeca190 2575ef9a34a5dbc5ae6ab384db218a1d0e6aa4bc11f470e0797f1cc6269d72b9 850f012f3db533c1360089a251ac8c794bf7deb4524f738ea52dc240c15d12fc 0dc257928424977bfa308c5c12eecc0feb843ec231824bf6f83a10750398017f 90c58b067ca5061746398b3d6f418d9484044413aa2837117960635460dccc1f 44393b7f90a0ca7bdc1215b597a116d657911aaad4c615096cb049fd91293f7a 3b5188dea4840173a6aa1a7057385a36a0a4b574b4865218a83d7e6ce3abb117 e64bb092323b65759f07dc7f1c2a96b37ee2ae92e51108b629c83a20bfca80aa 43cbeee999cfa5f361c067562037896ee19165c6be4337f6bb23c26c940678a7 8ea1df26f7ed8b7ce10d3c206ba8b8e4d08b4a7e3360f04aae4151dcc3258699 b7d58f27414b7390bfa979304b78ad27d01f46b1aea718c10238aa594cc47c58 2c47480640982fe7f3264a232d8099d46ede92d949b8351621f8dc6f1dd96100 0d491a5ee10b11161fa1041249fddd80f8182ed9a05d40007fc455fdbcc3250f ae13fe34677a5507dbffed6c942aea23f01afff9146dacae96de85792dd0b67f 5c77b70025d3d2ba57ecc2599a896d6500e30ae48c25e5afbe6158bbaf094b2a 9d5283f272b6274dcb73639360b4b88d2abb40e0fb139b75c40e7f702e33205e 83c5ad2f2d88427afe72583ae7e243ab9bd8d895764aa4577f7ee4e83753f71d f0b2163359def5c407decccf38f93e9cc78ea06d00c5ada716c17b8064d4e9a4 f31988cbd66977e4cf687600632beebb854742de936c962086b006a04e56f277 df4f76fe6e612d34a5df57ba2b600d06b4046adb5ac917875906c336b7db9e95 52008e191ad44eb3df27023d75856f65e95cc7b9e2e7c5b010e411707f31f19f d95c895b617c27c4a75b2217d62f0e7bf32b849668c4cb0c691a2915ce3ccaaf 3e0912e0121a350e92ad9cfcac3ac7561a2b1a27ec392ca8b953d23c0a903cb7 c856150267cf15ffa4c3c3e9e490c1788900de1bd7d40989a135778ea207a559 21b298448f2f2a2ad23fa4a1475f56dd2860f93133da1eb9b2be9786449af1e6 d1625fb3f6f2bd30e3d3414adb94b09195f3422a93161084950cd7355f4b6177 d478b9f4186835eb39a3f98f9ebd4b6d5e3b4680228e58760210424f6fe85bd8 f1e857dbb1ab47def95f70ad7332a855eebdcfc1f27d849f5d60968343575572 9569693c314b26dd7ba5a78d86d9c8a0b6532e1f40a91a3d784b17e5b56d7c86 880908866b6a9f75c947c18f8ced1b87ca5d8fd06314091d7355d697aeef26e3 baee7f273bbc4b1f8c7fc6e331f0151f59a953bc75b1cdabdf3fc2072a7609f7 795ffc505e24d5c54a4c82d15cbbaecce3486cb1a11f330f339eb2adb32488c3 30e2384c6c652e743bc2d42c49d1902f44d2a2f90a52bb2b2d4c90e9cc8b10ef da7df0f358b586df9eaec6fbb3325d3d5a2fdc84c7b27b3f813473de5a2a697f d59ea34bdc2730e150ef7151c573581f81fe634f65630ee07caf5b830b1087b7 0882e8f1962f4f0c78d08088787e341a35fd241edcf6e3d0f8fbe3885f1ec8c9 8a76e8f5c6568fa4fe520c8e0d5ae190c06d60d9b0311cd827b265cfce35ac20 c3956b28cbd357815a4dcff0c494900357b3dcf1446a132aaea5b72409ddacca 346b2c30bea7ca7af0cc176c1be7bf33988fd67147c5dad91f1b92bbba818b39 d23e968f75ab0ea12be8eec53d92edcc2214bfdc397f11acfe8e0e483d22a101 2e40014c1f5faf7a05d25cc7a935f6d8b2cba38cbab9e0852466ea411b12065a 8af1e5c9c8906253cf788d215e1e016e2929e6eaeb87a93abc73af1ca28986b3 45a173c9df9a5c4f395339aa9b53f34cc15c641f7fc7faa288c3df6508a1960b ae9d46881cda94c278ae35b03055d35be754f485d957848b58d0e7e5e401892f f3b9194cd888a756c06027173b23ad2d89f90430b6103c4f05eaa64d0e21be87 85988c14d5e73a8becb3b7fc02da7d265397973e10dfaee2d0aa4dd351173d19 e3ac1def5ee904e1b5cdce123796a678cc4feba2052f34fa6233a089c4ef50fc 3859f7bc44f4b7fb2b78dbc26c4d5cd39602c6fcab6698b3b66b5b8a442180e5 69f8ca1fc2eace741dbb9b9e2df5a057154b6bdcc9a225724971c51b290a56f9 af5ac9332dc5df264c4ac582d57369e8b0ca2beffbdd0cf0c59ba624bffe1dc3 405ce988b4e64129dfe9c4e61ea6b92bed85dcc2ebf0e3cfc9af865feec60ee8 5db65148bfcfb78cf305469814233fc36b5e7a2ba20d966123ce0903de89bba5 d8746dace4169c10f51e1e73c85ad3db067a89f72d66e9784a843a069aa8f9b7 fa32e9fe2d78b215b962c53671373a18fd41f84a503f76c654373c1686c7d5d5 1d7fd2da8720d6a39c7d7dcf7cf7d934f603a15172e85f1ca5a1c2a3adbdf499 2770e3ecf9181d05b98f1cebf9fedb64a52816ce567ea721f15f4570146038f4 42339091c07a378a03d3cc01d754441d9c06d97e9aa97edb16c12e6749417b45 31f4a6abf46f14c8cec1685b0f8f48a0d0469a3ce5827ae007f0d6a2eb04e3d6 d066d8fcb99f96fa4d60dc1899bbd0d61daffd95e288343ddb674144 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY10 %!PS-AdobeFont-1.1: CMSY10 1.0 %%CreationDate: 1991 Aug 15 07:20:57 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /minus put dup 15 /bullet put dup 21 /greaterequal put dup 50 /element put dup 54 /negationslash put dup 98 /floorleft put dup 99 /floorright put dup 100 /ceilingleft put dup 101 /ceilingright put dup 102 /braceleft put dup 103 /braceright put readonly def /FontBBox{-29 -960 1116 775}readonly def /UniqueXX 5000820 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352 05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23 b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145 d026957276530530a2fbefc6c8f67052788e6703bb5ee49533870bca1f113ad8 3750d597b842d8d96c423ba1273ddd32f3a54a912a443fcd44f7c3a6fe3956b0 aa1e784aaec6fce08dae0c76da9d0a3eba57b98a6233d9e9f0c3f00fcc6b2c6a 9ba23af389e6dfff4efec3de05d6276c6be417703ce508377f25960ef4ed83b4 9b01b873f3a639ce00f356229b6477a081933fef3bb80e2b9dffa7f75567b1fa 4d739b772f8d674e567534c6c5bbf1cf615372be20b18472f7aa58be8c216dbd df81cc0a86b6d8318ca68fe22c8af13b54d7576fe4ca5a7af9005ea5cc4edb79 c0ab668e4fec4b7f5a9eb5f0e4c088cd818ecc4feb4b40ec8bd2981bf2336074 b64c430280667a8dc19b02be416e3df183688b40f613e16979535d073d4e5ab7 eb209e5c64e96c26a4def183b517cbb7660f0a6a7c73d2267528886f4572b753 e6a3666d9f1416a553d49c455573471d7c32b8096ce700aaf1be95a9b88fad52 f469db476fa3e670e6b46380fd51a10ea822a001090686574ff4beb178b2ff08 999d5f6d287d3671685d932e41f0961a5851b1bf037a482f96e8938187a3a193 2d3c6a6de69ecc7d36d2bebd240cc3423fd350399f57a03e2c4ca76a1bac833b 9d345bf3844be447419aa32edf3857d943100b01a7fa4feb11a5c4ff789226e6 1c886c644057fbbab7fef1ac6f6d4c2a3f5fc14a6cef83129e30034d05645b6d df192d5bc8507f4852554a9ae6268bf88cec1172d632390bbcd1529d524ee52f 3910f4746652b8016ef7a5028729730663b5d96344c24fd0bee09083ee01df97 112d6450f2df69e8740c3c8ad7ef30a646af779005ce97386435f42c7ed05b43 7441b4c2e805d1164f0b9ed32ef2746d8868209baf3e9933620a2a690ea721ec b0976ebd3b20b3a59728f771646cf0056a142e902b719840befb1f1c6c70ca8f 622bb5a76629c6fc76deabd044fca304b00b3ae95c91df5f6f9d515de97d1ea4 320420f2eca976cc7dfee62adef165b6c696987382d1a0ae798f394b9b3a5956 dbf1240447ef158d14f21bc0f67e224b667d3f4a206c5088f8271650d021bece bfc87b7b9068d278d89e51ac96f48b3f1c3fb986d4b1add5873c47d34d545ead 84d23a4d32cc5a89c775e930a08d1dbbe956f2b3e53ea8fe015098f3e2b85e3d a3434cf2e1fd43ee5389a10755cf5f8ae814135ce818f9d46797785464bd41a0 7a1553c916879bba1d0d7681182d91799468fe655654db40bb10ae5b742a13a6 dca6885fc2905cb8a3217ee092fb38bdcdff930d175638a362fec1c60af559c1 771228930f4dd02582a74131e7ba5dd208ba8395cdc0c4a5fc4b9e0c31801d05 faad8fbe83a674da8b0afdc4840c388b6c79d211530d729e2896fa7d9609a8d3 a6e44b8eba80d21ed7d96013004f2726f9a8645adbf3fd49a928c4fa8b88584e af1582e2aed798c9d2fad590fe7f90cbb89544330975b741cba84bf54764471f bc39896f35e89bd1d8ec667c2928c32d985dc76bf68974cf393bfcc1ec2009b8 b1e295ffac8e3396ef96115990ec5ea566087b7d0af390c9985073777d2b6f55 551024234139282fac1e5049dc2f0189a3453f3ee6c184b7575705c2af8683a5 e0d3df23322d263de8957ba7837189b50438b7853fc2d3c77a50d5ea56e374ca 5bcabd2e1182a113008bd150356f3d69436d115e446ad7d95071e3255152e5ff 00de2eb9909c5193c32176767e70571f7e102f82e06524a5abe08f2bed50452f a72917ae7c815c6b9e433f9c800892d3cc552e2a70f4f69dcb32509b6a214eaf da16f60c2a9df52960c22f3c4dba5af5e3d3438cef4212d921b37bb85cf72b20 52bff96bb31f2f1a1949c0fadf38dd80ca2dbdfc954d3704512e99525847ccfc 4797ca7104b1eb668a557e1dc224bead2321917e792d2ec98b830faf360ed6d6 50c4cae79ceba736039de21d1580efe6575433728d67a8d1d64ece735750489a 7cf23604a9ab63899dca9fdd61623bfcf5af4c0ea0f41dec638aeb4059c51525 a3094817130bcf073531b9464afbf87fb13d1d0be988c46f4aac7404a0ca19ef f5a8f7a49d6ed0dc6a12c76b6a71b90cd30f96bbc3324c9568a4a670855e853a 095c67cd4bfde07ee17289313452eb46f2bc51ed43e2aa93ba4f0656503e48ea c2ea43483968440b3b70ee7afa0863d3ea2ba9dbef86000d2b0724cef0f6fbb1 66b1a63e2f0952cd86d8b9620b8e12af83311a53e3823a455481040f8ac973c4 2aa857c6f016b9e9f6286d1092a5aef3d700f41e3b50289c0d3a820c71db47b3 c21cb0a711c7b7f5727908ebf45c5e0c847bb5c5302178d0a4f7b685d455d47d ba 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTI8 %!PS-AdobeFont-1.1: CMTI8 1.0 %%CreationDate: 1991 Aug 18 21:07:42 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTI8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMTI8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 45 /hyphen put dup 68 /D put dup 79 /O put dup 82 /R put dup 84 /T put dup 97 /a put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def /FontBBox{-35 -250 1190 750}readonly def /UniqueXX 5000826 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65 66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7 695aba81f0260cd5248b9e649cd803271dc8bb1656323089e9e2bb50f2b95088 87d31dc36f6372968dbd0df8505aef5b22e57f2b9834fef2c2798f9d715aa323 3e09b183f8d92797bbd3a990980982018887612cdc5507a47581f07a1cf99a5c 587021d6b67b0524e780517e7a088a6388097ced01e5a59aa8779c6ad82af704 f6283c0a8b62d57cc5d24220e4d52a7c736389ff9d77df48c0de3d3db6482774 72a5e726bf4d83d29751b70eca9ee9d04a18fb7d011542a2b2737eff052a4eff 2800d8dbc1aeeb7273d9172927c2912b597c90faf4eb15f30201e026c5d06c94 122d69e4c81882d9f10b74f81d8a85a329a5946464c9765706a4e979e3b76913 83ea8ff66e4608e5c6fa0171e0c14bba3efb8fbcd0285e6ca408671bf068e1b9 f1c040e0417a92557f6b43a2b49c772c5d6e1e6fe0315378d71f1b762c987f29 6ada445624744ef29f727436345875bab3b78eff3a86027026983eae46ee5cb6 baefe7a95b00007094774550ad81f1b2c7e3c042a77548631e4baeacfb244b62 80922062c83c0f96d439448951a8f4e8bdf68d60245c60c8a8cf3e340644ff00 efbbcbd9abfe6018af21b3fe10b1381325d2599e22b2c5ad47bd6d5ecf1f55fc 7b382f2bf4889af9fb6beb58dc03087e9de3624e2e171c669acc08ff9a88f879 48749ad40d3c781c14e04ad93b147a89b1f29c82f756d9de7c26ded8977921aa dc1ece18b2010fc175172c626433eabd9a8d3aaa209ebe02d7526858ab012ff3 264e153925baefe32978a494f3708718a384981d929086b146bb99bab1d6b99e 0b6fef5833e88137a805ab776f7f14b4cb1b91f60c618b3575902e57d7c4d1f4 a40d4af6b4c901b8ccf101cc0420275fa38bb536d71a2f8539f0b0a90f53f6ad e2ac0661c06108ed695895ad31266e3c3fd066cad3d3506685c8e9ff161b7933 7ad22547634c3f36c2af8ab1ceed8d80f46a6cf7f49be342ae483e198997e805 4aae1c7dd748b8f85c8df09e4bf680e9eddff5f17f3dc617d3a75c94725001fb bb543e09c37cc2770a932e83b64593c7637eb7f2eb1286e201f33c942acb03ed 2dd32d704c194a85927da04cf65e6515ab0fd4c2d740f7348e44d4f002ef54a3 c88e99c5281386d0dede90a38284091a0ef3a94f1b7c929ef18c1b3fb4f7c3cb d3ceb32c4b15ff48d9cb9bd0fc450627c39c4c3f273fba537df58c487fd86ed7 e44330e9f9a1bb021df0d80884ddf91894da98a60b37df70fa7fbcebfa147b84 b9f1ef04617691296d45a391255ed9e21b5667456993518d677090ef635ce59d 755daa87edcf3cfc14301203c5de6ae23e40b3a608e6d4dcf8ec160f9c2fe0f1 7082e54018e8a3f01eb9278318dd752d508b17ca0c873a26fee7b64058c57dbe 1313ed866f1c7a7d6a4c48f20f5560f942f9b45531d12de6055b7314070e8daa 9872d3129bf8209e64e2a8de04310407bf641973c55479521c42534927144149 ca672c0211bed828b354b347db7b82cd78705103476b269537d931800221d369 75916bd16feb724055dea39676462b781217a502333d93e849f90150aa06a48a 6a676824dedba029e872ea76cf6738173de6f6146f84cb2d0e967e9fa56da9e8 e0190e1dfde906b80ae1c4198e0d34b353c21013b057675f9c3c790e4ae256a8 0b7d234333b1465aea73ecd3be52cf88a9be011b49b50e152752d4742cca88c3 9aed5a4384f9d19aee793d4b86ba5b953d6c89a18f6882449d47233c7a4e384c e680e59d93977057be8e9cec50eee10c8c5df34d3e29cf7a8385be1665339f38 1ac9e822a821bcafb1f8caad3dcde268fc4c7203b288b046cad0e89acaaf1130 30a2826a2dd51e94f22cc588a08e3de2273d6eaf1dacf58e09da9d8fd38db127 103eaa46c712f50362279da997300fa3c644bf2c14a422078b05b93e84a909cc 38d2a18b7dc08b04c3baff481f52f0b3d4defeb20da3c658b8630fbe0d540a62 101f9626f63fb156fd3d8bd9bdf4b25f40b210c6077705345b67b35e74181536 dd645c7518e869d196f795ee40e56072b79ab2c52f150363ce027390c663b47e abc6373b3bf6f6cb115cebe0a01d9464783f2dfc5dfc9398c83a902fc1d71fa9 3909180a9560409ad327174c4ce5f0ac3c19035056e87052704d32b3e6c85c79 87cf8eb2cc44613478959ebbd0feeb06e5f4138d6b089ec720bced95471912a5 dff634ba79ebc71905b49af6713de6ebc8d584ec79911c735772448592428b29 53baeb346d05243162e05dbf11fbf6e74c8591693f516ee56e9b431bb28f336d 2a987ced2ea2d5452ed2245140844647767b86c01386e817e41680f4c605e2f2 31ad3afec5152fcf91a3b7b796550f21a5febc858c9feb15f34921c45b3927b8 5bf1cc8c758daf4c0b32d28a66d184741d0380223ca81ec2312db6ab83eb16ea 9c0ecc2ed7c21859f27ea88695187fa65e93d987210b6934d74e21b38930b849 fd41cac82b42ae3bf9436f0937f3740c86de647588804b9ecac8defa7c066745 0de9d6ae74a6093209cd474d200ce2f68bc3ed1d21876eae1fe2174f8178bc33 60f4438980133bbfc639539d408d725754373263b5c72fbe6711fc3a3ac14f11 f77ef161d8a8de46026c237e99462932bc8b8ec5bfef7e5067d9cf2c81991369 2e325bc26858881f85bda62c35b087f243d8ba921b08a3ba9c4d59337a61ed11 15e4101636afb9a2876197ef7e19ce89ff1954e4dade759b9169cb655ad7b7bd 6a29611143bc4c4c1eae7e4a1f19f019e6adb511a630e2594907f694d69c894b add8f67d929e69dd4d2ae69d39bbbff01986e6d7889267f0590b8077594a7ce6 eede20ad9cc782d1183ddfa24d57e98a1b8a0a91e8ce80aa53329408788d4f0e e6044377f07f97f6f70200d6c3b8834cd263239a187172cb614c75723ee0b62f f16aeae160687fd52eecf1c6c1af26e42682aeb30314e4f0e4dd51e532b15cd9 add885731a329acb95f7f4f84a47d4b448bbb64344445f1ddea927443fd16576 3a3235cf8ad5ef4bab36dacdea2a8bdca525056d11e30a1204abb3b02a9a9780 c858892f14fe99d4d89b6d3549b8f6476c89119a54a537c999e06b6471f1006f f91582ba499357d7e47eb7b9d7a86a4736e9e1bdc91cac1a30e4a6eacf378eae 9ac5f52757c9899577167aa31e6333f9a5658d9c9bfa79ad5c1547a1d6060111 b59fe11cbed51ee37bc6dec656a4be00e79de83c55e132ed5fdb246a072bb7d9 58086db3ef3cd239113c3baac704cb30c87a383fc7cea648fcdc8965c3ebfa0f 79fc964e7381dc52fa637fdd9e96532e75c24209b5c0a57c2236c6ffa2cced71 d7b0975153151c358c46d928f80203dd8efe0a68e685ec217f8b9047775568b0 11b98f8f3a574be89a144946699b9ce5ab622929d9c34f75a5edccfc9ba3bd32 9263d821d654f301f4626b4d3888ac39c120b2e661367cc701caabf251a031ec e703eeb1b98684b7e6b3162947d713faab43f51f2480cef52fd3547eece33e34 cbd4426d3f87f125dddde96f47ffad34a16af974434a03ae2ea2d7d15120fddd 2b3db5bff8025139057cecfa3c496da7ed16e5201d5368c693b0d311a4dfdfda 712b0bd5f18f30546a1cc1fc88ba939813e958dc7e13e2e4d03714ff43956c3a fc230b25ec77fa8a40f8d1139fcd782ea936a332ff00cf0e6ecd1ebf664cdb16 dd8ba56cd3395cafe61c5400f3d5ae2bcc3790ca79dd670a8dcfdd26d2c21ffd 4fa05662fa4a64e3f85f43e57d299cb92023a301e829519e49d476d41ef3df77 73d7ed7a7ebf401da591941ee0738b5ab82658b6c7ca0ac3446f158f57baf03e 87c067f897980dec7243a43d51629a105a980f223fbca25ce70d7e8a3e9181ff af4ed4fb85b093f13e2c6ba65a08a3d0897815740b87e7f7059a8167d867f68c c5b7c157e57cae2a9448e75157533ff63e1c5968b35de170678294d43d910439 db5bb8c097283fb6588d84ce4f5b7d3e4f4b4baefd3a9dbaf91842ebbb7686ba d05f8799476b87b03866a116fc25511d985530f7a59004241ecc78bfc5b02b93 e88ac9de8a26476c47d22a66885febf664e99b9f7fa120431007c85b55d48db7 7f832c5a6b0b9d681ec3b1eccb972eb7970a85b3c9daf7d3115b042a182ddbde 5e45e1740e02ba3239191dfa3544afde84d9e5802b69bb3129ee5ea4aa59d56b bca1f94c1b02e14ccdd1e57b0d42d32fa87b16251f9d1a2324005ccfc383fbe7 1657e1afd0754a9d201ab9dc6c4a7bb16214dcdf50a09e900cc9acac58fd386c eb18ba4db734c1bb86017add96cc2658a53b604a12bb26c6b192024ed2717aa2 61362c9738b8693d028ad3ba2169f3e97d716f0f3891944fe2acb54fe50cdae4 581c962a3841807494352dbbf966ab2c32cf31072d7bf8128719e7dd20d97b20 9df5a8fa2854e08ebc5371a98440dcfbe2328fe88f2d94c479fdd4903b5ef967 3b86921bc2972edce477781bf5b0ca5f219f10b189d8fc4b10ff4abe716c5bc1 224ae56759f843632a457e0337148d91a311cd9445844d0094ca930dac916ff9 41eeffe2db8dd69456f95217f1869359ac63bacb8477249222a030cec7ad653e 4ff5656d4c1be39ae170f620e7d6f1f8a562c1a96e43cd9b3b2f9f0df4b9ea36 0018b10e08f9f01693de199d53c04a6d6b63aa58fcfdeba15625928fd4821945 9369762bab8588f03686abbe8b3d337e6bf098acd6614ca7338b71199c499f7e bdbc0448b64949a88596c269206e5a1abb6f6c53d86802682835eb314f7ba988 daffc9606ccf298ce241a380f37cd4c473a8f64cfc2b449e274ca42e1c8f6ff7 c533e3377c8ab83c8d8c41297ecc7bf4390ec0f0060c25662bbc206c75f69558 b80f8c73f94d391b63c3cb37d767c35d888f471ca3eca8b9d5cdff4fe160a26e fd7411536a91e2c75318d877fc14ca59b61ca88d9ac61bfd75b4cad078ea2ab3 df5ea55ab72bcf69423ee656f72cc5e9fe7a55dcecd1e2f91af5386350895f3f 0d44d190986b5393616dca0225d14b2f2b342476e25fcb86986e67d915733d2e e80fd17f9e6dc7dd7208d9bb0bc65bb0ca0658cf071b8879d60face57662317f 8d5c153e71e7477a18c5fafd0dc2cabab974209c87ec52ac65bfbdaa0d9e93ff d30b756d92883cefa73fad9258c90328bf005cca3fb6c3d4923419ac517b5e84 c971647686afad6da89a98f5e3c04045223e10a5ab1cd49431850ebf430f5c13 d475defe8e9fbc8d6d7e7f7d89f896ade7c5b59418e047cfbdc21d22b3c2f4fe 7e94e7934ac9f7ae0099e94eea3c000729f9baef423c20968054de20f575ad33 415b6736e00638e932fa71d12fbe1ba67ae9843db83e0a003467c3f6bdd8a647 9a0dcf8c69459b5406358c10203d416dc6be83c77097d0f687b67049979f1e54 089e238d77889980d7e76a447c479812d1c5d9816fb27b9766a96a7e08a1cd49 c5dbae8b8c84e361af3b2678df15a9d8bc6a525d69c1005be264c4c7d5a2b989 51ca6c25917bdcad7cf08863d63cc2eac43c00a35e87e3d16c8a1c082d36f922 b567d559c38b3d718efd8e378b53677a3ab5a1a2d0fc2f9346f365f08e0b43c5 53e1dc9abb2b91548142e577eef4e30992e45fdc27607278ad8bb8a7e6003c5c 987fb2ecb34fc897b66a869d3806421f76d23ec9c4040a18823f3ff60aac1ae2 9abbe84cfa527b74ae7262fce1cef35980a8fdc53f1b48eb001bf2b543f32ccc 4bae0b2f3e5c7f806bbc3a9ac6c1271114cc132644f9ade154dac937c16e921d e91fff82c872625c9fd871b4242b36f9005df725b1b249c7f94f1ad88dde696e b389e6ecba44c585c734172e5c249e10dd32dfbc74f6f4b668ac153502639469 1b1ea67f7fe032f2f9d8740ac3bb2a87c4c381d4327b0990bc678df731e55842 2374ff6ce92c4f4513b0514e3c641cb042c6e16b3ee83c4b15d556838f0ff926 ae5850ec8a53c40b67c86c28db3c6356972ef36ba2c378b4b449c18ee263eebc 0569117a7e88c85cd1b23771dd0be7d2751a3db719907b1d0e04261800274c70 93e70620b83a711ece9cdff76d1bdba108030a963293beb54c5cfdaa570a7f01 59565721dbf1605a3fdcd0970514f6ccbf23f47fb7587013e0eba0ff20d4fa62 ea60a13201f8307af2590e601a02b9a253a1a9ead66694236f3c8156f036e0f1 e9051b86fed287852e5828337f68288c14286b73fe0da1d2b23a941762d98064 6071e88cd1abd2e9ed5e5bc759392866a5a37f5fcdfb755221d2dc90f4ef778e f4f70ca17d8385c0857920b55ff626b2e6801ee291c6eeaa31609de9171796ab 2f360a4393431b2cabea9bb81c080f5a2ac13906fc09c389d4b52624c939fa34 069c52a38255ffbb712874fbf0dd86d882760dc0d22548f360e718aab57974c8 9a12f541a70da19bf004c6a44a53565d3f98ada608dc9a10a5de6ad860e5d658 415f2baaebc88c06cbcafca7b0f1a0f34ae381f1c939ac7862057d0ed7d0ca00 b7dc658a7147f5718d194a8476f57518df8fce3b63e6aa545c8ddda03ae1e4a7 710e96e07bb78b79b447389229408084c2dc557b839dc4d553b4406f483e2edb d4dc1d3debbaaa9279d437f0963397f4aac1eb0ae2c739eec418371bff2e3952 267200206a4e6a5e44cd110b2d5b9970d571924f78213bfea799dd254f2cf826 0ddcd08617eef997e49257150e8cdb94159fb3ae2ef2ef69619db35ad7fae9f1 0c475098cc5edcea94e5d23bb1ff75101c3ab4068384719ad8a2a35c093974bf 8e92d7a485ebca5335ba8abc4829a0f3b9ece6cc64af9c09b23e30393ccb30bf 355132b322cb1d7e5d7f3a4fffeae1f72b8d263e557658f39fa88ec8f6660af3 1ff8712642de74e7dc9873a938a62d0424ed850ef6b5254d0c074ab4ab7f0c88 990920e70237817c55d49ab7a021ab2b680054ab709da59b01151b965e0b9773 866a858560eabb98b1aea43a0568a9289b45d29dd211e214b83fa215a20bbdc6 aba4fa7ff385d1d8719fe9f9de2ac6a44f72c85b475816b9bbbbddf8f326980a c349e211add36a38fe4d9f197fbd5bff079bda176de6622917974b6c00bd4079 7a60351927827ba1077308a3b362e7c2715852afa71c0c344b0c38514f023a4b 2a4eb0cf887ecbc82a64ccc01080d6be5b51dc542e8e5574ecc661f00392cef1 72f04a923c8c4839dee9990cb84ca682dbbb1f3d0be3321737d8613c155e500d 2b591b7cf4bf6048e9c5c32dba29ed7f3dc6a5e4c01c260c491dfd0c6bf87a94 5fd6ccc9065151992935cb7f92098c75f3872506e65101227acbd08e6cf01c57 b88cc0a81b2536526efae0ab2f74e282a14306a47f53f5c5149ecce573fdc9f5 6866d13b4d43b9d19bdd4ab6ca12361939b6bd4358253fbf799cedd5bbd51150 a3d19a2dcb58dcec303e0374a434191db949700f81391c414a403861527e134f fddd3372a4cbffdc6dad1dfe54c481be2025f2dcabed3eafebbf60496218c706 1de3e797586bdc0fcd174c0727a3e0bf595431a9eb83c37d20e6e2120e23ecdf eec42ff7c12bf6393366ee543c3963829ed6125f7e8267e921b1e4f71cb71a1e 8da80bc2872cb77d5b8fa039ed21cf48e89cb8a7522f705301eaa8d26b9281bb 1518e3272585dd2862b7a864cce67b3c4adb38b76741fe2ba992eb2f277141c1 bb3b51afcb1b920d4db110d01ad90abb323e6c7c27f8b23371a5f66b5d5306ee 22a81767affd38196a9948b3b3da091f99f32102a25f2b78e008295e2f24f340 6c817742c01ce0cee886c822065da716846ef92785ddafedab00a6d10b1a10bb 601d586b02dd9b887fabf00a6c8ec5e0cd05fdd6a4e4bd596542cd86fb3d08a1 d34c0966b610d0c6d8e33f4726e18614c534b0103c8b9535f6caf11e905158b9 dc9d25a8fbb9d5935eaff83ac31f50fc35a19fa6396fdb72bffa6d15bc1afae7 071ae06d2f32f06369af5bcbc86a5e824e5fa49f474d582b59ef5524558c79a5 b83cf0dd9413eb27d2a79af5cfda536d1b67dc5111ed6172f7d96788d0e7e1d8 eab0fa5af1287887489329159bcfea30eadee3ec72c3cf04178bfbc75cf4c11f 6dcc52c0c7b49577effce951d821dc9e32166e46fc26d207643523ae784fb458 70bc04a09146765b0cf217fceb7792e43aa8703a70740d145fe10ac2f24bab7d 058690b6ea19ecbb0a8706ba18a9434503c08744f49fa1547805c2a64f678e86 ab78415dcfd13d535bc15609a75d5c06dded0cb98b834d92c2de3fad6a355900 d3d8088077e30d95dc92caa9d2a9d4b7f36753aeb68de1ceef8b6d39da990503 98f4c401655bd8a6d5786aaaab29336b2ed9a89ff5af05b7b2e329ad29b6bedc 072394ae68295effc474d320b37674afbb28b787ad7e3606dbd1b1c7dde12f70 ac2a0cb1fc215cfd8b8e03e11dd801f3e0b06665ad3a958c11190ce8e5884345 6aeea6b1f5b311e1d2b9ddf780ac34d3a3a83e6ed06971d7547f4f21a7b2500e 2abeb83a85dbcfc25c389b93181012476401832d378c5578ff71b39a56196de0 9ebae151087d0359563806f7fd13f6e9ec56dfed1c484ccdf261f38b025e3754 2e8f09b8873d0d608b6e63b576c3355f9e2fd7e6a6c056b5c43c5d1b81c75d4f ec4ff7f3a022e821be0601a364f8addcacf61678909aba203b9042ce70c62005 62267271bcb075c275cceb2ff53e1ff4977c2f4dd0e9275dbeaef21aebf03236 67861363eedd7c5ef881704aa54b8cde00b9c80280f9d744ecaa1d71b838994f 2c3f30cc6d5cb6b533d0493456c23633a4dc57c61282d55603502f3508a547b4 cc2a21f5ecf9027965773cf41b6a0274509dee3ee07d3a1309ef0b8c72aa20b9 d93103c42eece7a9b7d16b4d89ce96542005e3d6bb03da82faac965ed72fda70 08758618b12cb3508845c5e622e64a617b59d1cebfc5906f29e770c784a82c22 02f4ff5113273d054fe0243c7092d33959aab3b64d4a59e0cc5bb22baa76bd23 ef34d9bab7b903c90c7b569fe3c7ede36b00eebab0937daf4d064448f6fa92c4 434716f5175fa2be371892e80855d6dbd6c71440e7a09fd283da5e5d16dbe5e0 814e9f161fa58e07e33f2c2fe5264527ca70fb3aa450a53c327b6a9ee0c728e1 a4ba560ad34f6b13d786a23cf0ea8ac3ac5542c877293d4cb2f3cb2aeeaa7b2c be19fd4966f4432f59b99f774338ed7b78b765902f732c9e69dbaafae43996e0 4c60b23fbba6ef8cc174c0e5e0c0417c3b93dde792f4982a7851b80f9320f304 ab3767a9741efabc23d7b8a381a0c57816219616e19a4ead4bee02a71afe101d 729bf01268025d7d682075ca0685b5796844cea0e902de232b00bbc4a8f121ac eb9e770eab0b0fb203c2041d6aaf 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR6 %!PS-AdobeFont-1.1: CMR6 1.0 %%CreationDate: 1991 Aug 20 16:39:02 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR6) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR6 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put readonly def /FontBBox{-20 -250 1193 750}readonly def /UniqueXX 5000789 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf 5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b edad3b72ad63c2918b6e5a2017457e0d4ebc204b031f3fc6c13d7da7277a94ba 018e9998b3dd888011a5d7c4204989f30f908b95533bda845746b673ab71ea57 65a0d14f4350707e47c8276305b28513cbe1bb0dbd269a53719bda46e536685d df78ca0146b6b93e760256b74d939d4e35b5e77238f04c92298dfdd188feea30 e053eefbcbb52f2011772b3aae39f5805597bbc1e8bb75a446ce014030f4f2f0 f49f9e962ee4a1024a746fa92a3628db5270732b54e43fe5ecfa524f127e5fcc 788e77e66098336ad67fe4cccaf0253272d5df79864bf4b734cb9a5859d557d8 bc11b8e00221ebc12e97de4b1f466ead83a4c894709363bca9040410a52d592e 34ee40cc7e5efa920546b981aa659513a24b1b85c221a1875b62d0b89e57a368 321b8043a5b094e0379760a443d632892b14ad6d19dacc8c78093243ad67e6a3 08e56e6b68412ee690b10dac6e17708754a00d51fc957b500eb80175716eef4b 2ca1ef867614659bee3f2b7319e97b6fdf1efc847bf3cee3156f72f21751da8e 5fb6898919e6799820d3de0642d756e09d6fae4ff08dd3deda3173bff4bb11f7 9109c97ddc05897af709ea199a90fcee8ce4c7a3c15b18170c41c04de2d3fba8 f34296a95b8e1e8de3739b17273f8f2c85e914615e8eac5e8bd2387ba3b1edf4 7968f06e2067d836d0f9f3e085cdfd2de06a62c81d786b304326f7002e83160a 36598589228b4dddddc43c85e1d126f8fe81b828028e26317af5894aaccf4f69 6301e1a9fc45935d8a414957f08febebbc3a72ada80f101e47447d019ade56e9 f4fab969bba2b44e47399fedf5caa1bcea216d7ba713d523dc2b1a89801ad4ff 2a26c7929cd309eeca94b69eca57ca332db286f97602a69bee8e37936b9346cc 0f6d2e421c4e5512be432fce589448f5f84cdfa8f096528c8dda6e1db031dc03 5e66de81a9d37e3d450af0aa8f8333ccb9dbe51fb4a5502fac0a0abb8dfb643b 2d3323cfd843331fab1d8efb4557ad4e5bfe7801b7f7c63439a617535087a1c2 8fd075da8442bf40379354ccd398a111fcdc9d73c3111b31a3b69d2312b6c377 ae21dca966b5e4fc26e60405fe586a5ee1c8a609e245338f75a891c51463731d 867a80d846e317122d616e4766adcae7c5f0a6151eb4da1305969cd321bf6434 818eb8d67bff536da6043e5d8bec3cb2a48fd565fa9e51a68fabbf533d376351 f7c12874628ae554478ffa1cb9de8dd27edb02366c415ea540b9b168507ff660 57135fd2d0e24550420f68ecc804715f65d48434d8f6ec629f01e41172939b1b 6513f142de44863de3bb5a56dfa8d2e34cd4f999d090e189c8fc8b2b7eb2644b e5e8a0bedac5914d70c4384ea11909eafa2fe7012105e423923c8f6aa46ce71f c6519c4dfbcfc84fff41119db33a9eab8dc061250b703726e05bcc86cc5b7577 57fa2f13f00eea413d705581f0e7c72b8b7f8ea60814aac19bac4aa062aff864 b0c96e3165486ba090fe3154ac42d6c7d520e8678dde7a65c469b7c5ab1f69d8 25a789c3f4897b763da31f99f6895e5d6d80f4b15eb7d7ab1086255ae04a1cd9 7f0f0e2d7d76849496b78541a28ee991f9a3325147580aab26d90897640bb6f1 a84860aff36bc9e60d9899770cb607702aa9f71f28ec9e1eb3d373851131331d 916b9d8eaec1225101add4fb091a56338d2b6dac4934144c24a680fd7d322df1 dc246a228ac75a430384d5f91a1e2def9a3decce71ab09056601550e5a9beb81 1d3d3e602bcbf01f991ce66dabfbdca501c3e18527e53e24daf9168f92e70f08 9709b5ede3c0f3005b8f6302c97043ebdf163274624758925d68012ef835755a 477a4f7cd66b7540563a13047e88f063674888fd87263217d88c3c31abc5483a 304d632fb06eb2e14551cd53204ecd350232161b8f2982a744106de0fd09b45e 807fe4d555c4abca492cc0c09920b02a8931454f2d1616735ed9962609b5ad15 dccfc6b57782e550cf651dde7654b2db575254c2e187f5e3b0b09ed44079ddf8 a3f50495a4cc55bef95f2ef51b613b65ac3548a00c22332ec7cfc0e6831bd209 49600c0e7ce0aa57a7be7d91f131eb06b8e1faca502f13502e80ab63a17746b0 19d8bf55ea0d68714d8a38ba2cc591b75a5172cd18aaf26f3ae519d5ecbc57c7 5335d7f38aaa8a25256cdb28f7dde3262d25ab3327ec38ee5a9e8db68b3c520b 59cca53e002ebdb4de62566dabd4c8507a51a376bb5cc8fb19951566328f3718 319b30033c27d88409c4bc6d10d7a47221257ec700ddda6d2aa4248e4c1aef4a 6ad488bc6bd8fd5241022744d97947c680e2c3f1b1266b4006a0687aa93f550e 23e9862d28c30d245edd3442001265c83d9bb8d3a4ee2970da4e2853eae8c019 99c2a660069ff12f3371f90a12a2b767bfe17091a709496a35a694e43cbaed4a 04f0566be69a84f699403bc1ec40b19f28fea5cdf4c5bd62208f4063366c4877 6d7d1656758d24318ceacedfd4fa70cc76502cbdeb58a8071d559a9c43e4794c 94419e7f8f15635ebc023721471131f69ec35123f54768fa00efc5da8779058e 5d6f53415bf0548f1a231a05a4d2ab60fd9023dbdffe2f7c6d29827b7ade2a2f 1e4400b11cf8864cec09b0b74a43dfb2885322dc79855c9048681ea8b8dcc65f 29360a8020e0db02bbd28bf06076dab63c480fa99c4025f2a4671cb03a55b8ec 83c19c9d2cf8cb59cc2188a0fe58d00471f9dea9a832cace08caa73a983f5992 fa55608534f91120079312ec86b6f9da938c4088f1b5c04a5e169b61bd2b1750 b31254ddaf9ca5efa696fb2e53ac1edf2a442a52d1f930a207439c83604d338c efbb3045d66e1c0599c4fc09cec289f19b92201b4eab541b805909f2e7673594 4b41da04eadd7a8ab4416704608a280930917fa81a2ec1b0f6fbddaf07344e4b 256b000dadac578b6e7c5250b33750dee374765de50eda0d4dedc835cb4eec07 447c0fc1dc70ccc6a9674a07fb7e146ad5aa87c71cfea89b2c730772b1849311 bee0567e1e275f23fb745ae7fa749dcb21b0caac6e711126a102d8c2bf87c8c8 66559045d5045daf826f2dc235878c1a5c1bec2a6108ecad8af749f25705a47b 9ba49b2cf4446bdb44ed5b9ba4c198c00a4967477c69a5983c7705fe5e089db7 a57dc77d16337626f4739a821522f8a6f9957410d034ca3a09fb3e47ca962a34 68e0d8e1b7111246a34e7197470e92debe6d15a1577612b4ab5b5b580407c1fa ca33eaaf6a16f3e42e3f43f9e54a272562965c4fbe5493c111048a019ac54a01 a6acbe32cadaebb926dcc2c9a0e8adbda8c5dd2f4032ee56f6c24720b484f5fa b8ea7616808f8871412de1c24d44bb1324ecedc653719eb70399695904e0a052 b2ce2b09770f0a465c9fbc7f2105c0d586da9b 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR7 %!PS-AdobeFont-1.1: CMR7 1.0 %%CreationDate: 1991 Aug 20 16:39:21 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR7) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR7 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 10 /Omega put dup 11 /ff put dup 12 /fi put dup 40 /parenleft put dup 41 /parenright put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 61 /equal put dup 65 /A put dup 66 /B put dup 68 /D put dup 79 /O put dup 84 /T put dup 91 /bracketleft put dup 93 /bracketright put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 121 /y put readonly def /FontBBox{-27 -250 1122 750}readonly def /UniqueXX 5000790 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b448685940729e6e22f4be0e08c6505cba868f7950 93f556b64b808dd710eb936d3ac83e5783b5f7e56d363a59a026a5619a357d21 c4e77bea121eb24b09027d1aad93158edf912940e91cd2f17922b35885894644 7773730bb19af9e70453e1b78d5edc123b273a979891d6d5e624f4a388f3897e 13b045e34b4ee2f5e4fc5e996d3549640010c671de14d18b0b3cd300e57dac03 22e59bfbf7b29422230870f5897fcfaad4b50c7c1c58edcd119218163d6f6e56 25ccb882db7b6d09a1586508e8cb642a11c29a46915e4a96e282079cb21922c1 c2e360b487a45302fd22ec8c5fab63e54b5e844d4b17ca2fff37c69c366dd72a d02922c14c0932f65ed03e4219c117962edbad2dcdeaa9c10ce8af38a4ae52e2 b377245b0be19a77d6c936e7530cc4d0b78d0cc4a92698fa2870fa54f2d8503e 2d17b3d52fb2febb09f2b2af0c2a1892039ebe19a690098799a858e3d39631bd 6925a154d161df3918074ada6bd52baddd0adc3f07e2d9f15e27cbf7fe8b98c4 07205c811121fa91e059f2f99322fed63f359ac9da97aec383f067f23e5de331 51e80f0a88ab50fe8fdae4a5de93c1ae2fdca06150b37246140c0e87cb2325a6 0d2349162ae3ac93144eee1e665a1289105318fdfe86b6e76251cb25adc967d3 d0b97fe5e279e1161736ab22b4ca510b964342383a840defd38f96a7280e6ac1 34e48d740607ff2e7804164a16d47735864db847c97335e6d4215cb99911a1ec 015a3edaac1f28fedd56d2467130d07bae9416c15f0827d27c6c79f59054282a 418c12c157c91223a829947f47592f7cafd93ca182b25a73a9419127e3b12a9e 5167ac3963f2b019b338ac46d63880f94dda4b538835884d2a5538c85528d6bd 977f844d32b43b0e48caed5a4bdabcefe71695d69ca784db47b5b2922bcdf0ae bb45dc7b467b9886c2f262bd3cb14c451ef5d4ddb23e06261986c5b2f5e08134 52b1a02472d8395f492cf19acb8f8369f599c0dc0af6d0d70e4e156ccb3dc784 596a58fa2369482f5bc008753f74c32e466d9f5cd007b70e80b9000efcc93113 51390f5bc1e583dcc23a61b21bfaccf9f00a72d9216a999414b29e1f14a63dd2 e1a2540074514ee60cb6cbde227b669dfa6455ed55ac6364825e1f41567242e2 e1ebc046af3e34178a11e38d55984b6701f4dbb583611dbb5e37800262524277 0e9e9ad279abb8a0ba95b001c0e1fda5797b9a02d96a62acf247bcffa3c0a788 0d455eae4a9e3f34430351be8dd600e7e86141f59bb8057f789a93067cc221ef 38d4af2c8679c33cbf52ef6003edb340436213dd13b754f2b6d6e1d7986b9a42 a49e0f454fbd74257b140b2bec7c35735ca448024bcd9988db6a9de4629b71d6 9d64f9e3a97772c75ec8f3f41dc90bd0f5b159db80fab4e525070c965455158b c94fdb40f38078349718d101f8da2a2aa105fff22877cc76b40b5f8fafbeaf5f ec185631a580b2782208ee13cc57e79e9f3b1f402c51e277f74b530dd8932d39 4f95386a9e5d5d880f62ad4a07e8df7d6231aa4d1af1a6704bcbcffef03c27b1 ff298dcb56930854fed6fbcf5e5ebd59552a6ce60915c8d738a0702ab1c41ee7 710ac71cb8cfa7822c29aa34d2ba7e886456a1c0d6ee7fc35ec1b3ec6854ac49 44c409a9630f83ffe858878e728188f179d2dbf95fe13d81cacfa32e9c90dea3 f7687045a26904704dc3e5b0cad514d42fb9dd4b1a8c07c62a005888416accd5 2e59e60dce65d0292d5c243a27f360506c8aa42e64cb03d8f800df1e729c5fba f501336635a4accf3fdde4e6f1213d1694deb8eaf4f1f6829a26a93c4a9ccc59 e91c8b7cc655564dd37ed47847f19339ba8bd8d2c7d27692266f0e7cc304f1f7 fdecb695dd600457798ea2264cd6d11b7b5b6b331a869e19b8f004a4c655628c 275d7ebd0eeba03ee3912a04b707c8327f6f4cdcfff9496b25683022feb04744 5878d065d3165329811d653783fca7e9e851886da57b524de1b409bd93fdf873 f0c00a30f6c21df9e180abc5a15d528a265492614b8f3c7d7ea48807cc127832 42142660933b032cb0e85bc3fbff36b78c05781383b5d72cd7850811d69386d3 bea2415b3501e2fd813e40c054151491248a1b6a7467e709bdc015b111c6faad dfe4532f986363449849e379f19abf90ed4e78961dc3423d39b097c5f230d003 60359d8956b991fe18c84c1f57b890ba55b9bc082818ff282c6e5732c8e480db c726981b55b4b073e682fbf2773c3e49979f7c6d2f84a504629a11d1b861c2f0 9094ee9b24d41a9430e1e5642949509ca3b312a073e7c3d1128d9401c2d19461 607d982bdfa5f4938e615f636018279e7255b5035369885262538aaeff333c33 27686ab2b3fbbc2eac235b89aa2a6f7b1cb980a6fdb01681be590cba02852bbf f5a1f86d99095fb0370a155f933b2695afb5646e4435056a6b5d7b9955423a9b 76bc059fcbaf3160137d8a33498fc58829fa682beae660db658f376f8b7c7eed 99a177a54da95e0e3e823cc25aa7e95286ffe7daa2ab42552892431294ececd1 569b3e5ab25e116bdcafc32a8b801e2e19e4b2260abec19d92926e6f0eb7e7f0 5873569993ff8c9e16f26a29c34d41ea0a9aa5e5ef357d7c35b785c7d2bc7e18 52224d06c341e88b6bd069ddd14dc184727325622b881e200e15dc18c3f8987c df4d3f549a3fc0865a89dcf68b476aa05b5a62fa33ddc1dbf8a3e8cacfb3c5bc 29a6de6aaf52af1c25b53546261b846a5607bcc9eb41658663254c23a9e19254 9c6796f2a48918c9b75ff69ee1241284ca39880c06ec4a0e12dadea08625a1a0 a84f4a2aba2f43027ea22735492b347a6c78b2f28a611c79de2684ee9ac37e39 eb07d404a29dd226910b25db451e31cfaf912dc4ed41ab9ce3f08707a1bce5c7 5987fe6c26f744f31d7e3cfc60c74a6294e87b5b93f3d495fafb6a4a8e5665ac 06be66252260bae660a06e7527143c6f676cd68d1749b0c765de89dd5598ae9d bfa207677638e138b84f29be5c301288517c45292fc6e757781a12c5d6113e48 a4d1681d3709c21eae513b72aba01f54ed38f52db781691c8a97c97a5f68640e 90f0a454d1776963d21db562d9bb302043f21dd8f2afb4141ba0de7dbd3655ac 8ea894eacca54657a251719341826d9af7c76868000fb1d5e2649e8db652caeb 6c5f42db403d361db88d7ebde35836fd9babaed8cd3521948cb851337aa09ce4 4b9d46fa54f4c4307455afc369b22af2bf1808c525440b7c87eb84556556abb0 4ca4c80c38d9acf872e06e8d54cfe45488981f409646dd2fae9c57850b5550bb 13fd07630f637f1d98f43223593ee530f87a48be62d44e179ebff4c856d433cf b7ed3ac2e7163a698d1f9006a0a77d5cbb4d9d666da3a441538a014b0f0856c0 4e383c9fd9b87324503a147968500877980a9e82d77f83235ec665a6fa2465f4 8255508f5c7bf5f2589c33f59ff16c6093957b2b19d65584d3f660b287141a3b 43048a3cd875a79e0325b1ed9f31f9425282ad30c9ca40da1616cbdc6ea5cfeb 9e33e07b52c7e1db6e7ddce40d9b9c65cd7ecf5397e2a06e1102c83743ef1e03 c21e9a719a1f43aef165557e5fb0c5f721fa92a708244c012ec330f8083425f5 c1d978b5baa5882020fcd25cef813578c819eb0b6fbc74175aefdb5b9213cd30 040c43963006c87f0b6921b87fe499a21d45e7f1aa23cb134fac27b48f3657f8 9a73b433dfc1ceaa0a7e8ac4f43cdf7b4e900416d8b56bfd3ac5d77122042042 b57613fbf5129079f7f9126744cc3a6c0c121231fe7455085fa29126e5a28f69 501b79125c66837ba59edce42abe805faa57e2a74a2978750d3527df0d14f5bb 121da3d7c36f079704f3a9d697bb3bffd13d37f9f320c9bccf2aa06fc227dd24 aa53b0dfe25d9beed8e1391b075e17495441e70a46ea407aa815907afe08e3d2 94c99ab44e60252735f503fa0edd4efaf09e22e23726dea7e0be4d41fbe09816 273716136a1899554ad80f9555e7c968ef5f451b68b39797a921a86d3b393fcc d837fef2588140f544caa90cbfe87d86b8cde503a504f43a578cd40db0323133 44587a174c33ab3d9a724ec1335b003ca46ba7d4a7b652e0165e9d8dc89ebf32 4304c811990ea5c9da62bdef2aeb2cbcbad9ec1015236f0ad8fa955313f2a892 ef3dbe8a0ec5fe3c6754de561b2ff33bd1afd1c8d2411b2aa959e764975f8775 68465c4be062cb618f33a540adfa0043f09bf5b145d68df4ea337b3a3dd45bf9 dc181a7bbd5ddb8f42aec2a7fbef01f8f2fdeca1c791a04b5e59325b00abcbd7 65b4f0d7047e14d9575d534d07bb82b6af362f5c682673f713f2f2f6157c0646 14d1db191e04aedbe35d6131884476130bba834789c9287ed780b024bd1b017f cda24ea06e6d61fa2d54ca1f730aab8c3ca18f3fd85558e0f49f3d7ddc4fcf33 fd19005ead9b20a0aa7f3b142bc20847a025a50d9d137da5da4893c43018b6e5 0db5803cb76a5b1ba9224f4f9e619c680702d7a34e91e6ea9847c7c9b0bc9a7a c97c820c52d5a3089d7b8955391798285c2af6d1cfc7a44f51d3ff3e61c0ceda ed3eb9e62de3172cb4ae4dcc640a8eb387e0d65ff0b7fb455274ce733ed5012d 6043ef8efc35a538e44b9611557c37f4c5bdee3823ef23649b7fc5fe53816248 3b17dea02b250fb159d4859db2440240126793cd267d978b09431c7fb21ad51a d2f7f19651e464c2021505fe0913e9dc672f67fb9122317412c7b749622b60ba d93a4d1ff1384867ad37e784e7a607ace621543ae154ae381474f324c779240e cc15125bd7ebbae4b751e5e66900f71f9698b510bdbeb88ff72536329c772db5 5b62dc18a472d554f2d12a7cd083338dadc6104ca8e255fa7cb5865c3cabdee5 c5c10eeb1ac928d232e22097de860865a4c5296f5c3b28861a17e69db50fd33a dad23167c2b4d206296d10c3632100e1be91c83d1f347f90320c156c459ae720 c06b716956867048b08b9388f0a424a59436cd257b7daecc00118803e0eccb4b c099fb752566de315cb216946aac794acfa7b25ef5c6da847b9476749b53720f 416599548b53e9691c86d280a47d047dffe448f24d1f5d314c81042bed97d4e8 7243d74cb66bf1a312e0dd2bc038bb2c01b5d7c601fdcd17f780fa5c3d34d3f0 72e771efad513c9c9febcc6bb79661930a7bea98872b00ba8b5b4dd06c0458cf 51eea0613390ab48607389b641adfe7ad670a6bed89cde2597bc86d3ee41dfad 81cc8811616d46bdfba2e33c222f17b0617c2dad245a44d6962100968b025242 93ed50f289449bca801d10783cb3687e6afe1d7df1fc4afedbde4c852859954e 169bfac42105847a2f4e8540a6c6c7b9962733321823f8754521e92ed06c4091 a4d793940f4bd33527b7d3e96d1158704f492254b18cabd3d21d99365f549321 b1ff96db668a522ee82ddbef6310b2e3f72fd01ac490ac8e714e1b97ec3c8f1e 211714816028ad90e850494fc92ba74f231bf0b254eea99f9d017e7dcaf4b90c 6ab218962723e3be70179c1307fba49a24a8039d7850bbc73b1f0bd02fdb9f27 6b88ec9b42a18d1082fd251170eda16c4c8341f5e5f34fb175a9b31cd8669e76 d88034af9282b8d8b1480533c8c6f253bc31c3ac4e1808700fa09ffe0eb928af cb05d71b99a0ff67a209eea981ad0b3784955bbf7d12acbc0f0edf8f9825be25 c9fb979290d4064f531f2445f733d58083d3de0b4e9daf5593a11875d3ec03ec b338865024b9a1354a9c8e3fbc355710098da99e721396d400ad8ec07f7c9658 b9fb1073f13daa8a7c663d818e7bef03b519399a22f238d963a40b39e1ff7d9d 1701f2b288a62f50f49ce2df5a90757fec3180d3b80f03c996bc2bcfe3525172 8d9fe97bf34c44aa30e5dfeb4128f76a29ddc6dfd11208b2701839e8aff3044e 910b545ba3a55f29f2ecd10284c7430309df454c37f7a5308203a1a7dc6897af 4fa94fb0dba1b82c499d0622423257a6c85719324b6dc08c45ac38618389be24 630291694a1a4c73cbc64ffb6febc255648bcdd4831ab4c107d3791fda84d8bd f043c941b76abdc9528838fd2b65917c885718ef4d7cd76fb61b047de2831643 53f0c987b64185361aebfa44bfee83e6f471e19b0a1fdbb4c33886632fffadcf ea3016bfe29cf0fd7fcdde11f8a0fe2a17f9e4b74418a6a0c0eebc1efb10c8d5 fbdf144d6e6e593b20a87e0c33ce83cf89ac69fce792ec5a0ebf61835ef1b08f 0a0d2cc81e00076396fbe9aaa45fdc980171bfdf333b6a188b82fa649b662eb1 57de28f659a41c80708adfb76d483ab751078551f32d4f15243b93369b08011a 29f09a45bf7df73fca895d2dc753b17ab5b8aa26e355f437a2267272e1763311 d99f8b2a9f3ca6fb3914d0d11c55b679208f24571d815e492d288182293498ae 60ac98f7afa7c46b9d1002038c79d88e13381366afafa3d07a30efb2bed2a49a 2b014825b8c6b390303fd2462161a359a1ebb5faf36788629787a2b1ab52779e 2014e1b971363d62e47ba2cb82a7bbd5b56d5e307d194862747763b9e5835ee3 8589b556ebeb82d28cbe72d0c8f17793d1d471e5641ba043966b028caeb5d587 3fcf87bede561d816247afad12ca32129f301cbc1876d4a0612899f3c2ec2ddb aeeecf0c0993339d8fbe89231328f4b2ea7e7c0b2b3a021d12d19f4d0c28aa90 e328cee9c15fa91a4c8a2500a4d9499dcb965c8673c2d2544a636af279314f9b ac5aa6103f362be41317ac215c29f725c88d8d3f02578376b859d4c627a12c89 334db11e3c66002fe41d103d95aa206855cf0c901f32f12d1e039786df83e789 9d0d960d691658e1a77463d554cfaf43977e1cbbe5b96274a4effc113749c57b 379ae01e93b041bdf152664d94d2d53c17ee018e70f5a54733dbf90740fe082d bad548cff4ed69b257ee8bea0549db667830a0b9427269f02a194d0de9154d81 a2dd0d0902e43bec3152bf240131b9d7ea1250985fe152e8abc96c58870df99c bfbc271afca260e10814969a9e3b1844b6fe82e7bc1c6376542c9d6d20213c4a 620c357392973bded3774f27d526d887e9e309e4e19aaf84036d15a26284c567 8fd56ead8a30c17e880527484843487c546a6aee6f6522290bbcd2cc6dbaf4e0 e2abc4b34c502b3c256c9be948b67bac2b2f4b75d759d3644e4eea28d4a56008 9ef8194dfac228fedf3e8335deadfabee062da8019c7131b875ec27c76e0fbfc 4ba83c12edf04215358cfb7f6b565e5e15968f8e2f6f196360f7ac9d9e347b7d e0272a80528be136011f4a39f45ee6da4f2cdd974a1803999663f98f9292ddd7 896ab8d44e26d6e9fb1315ca5b2f4a05204638d55911f1a83c6d6acf069c7709 78ec87f09e3a6ccbe6d1d523dd1d6955b0baff2e8b279a21ebbf6d3a6756aea6 aa97dd99e90ae6f393db37d6a76f63a3886c3234e7a6e9fb0c13f5f3c20bb378 8a3ebf630222985ff0eb04ce9e68ed20276a5fc63c38bc0b2b727c3dee8ff65f 7333d3731984463e1db5216a2a33cc8f1932c0b7491596e5cc7843d7b31109b8 9a1c596181e654ce8fab3caa8570076886c07d0c1703422bdec33f095bf029b8 eaf0de6abc48618381e3e61590e4cde12b66293adb9e2102dde4efd7d4f52f44 bbc6002b5c84d211b071b8067c5c9741eee25bde69b7a2af2c429701943205a2 10980f1fedf7f759c2dc649988afe11eb0581a21a1f18a5738e9c2af97698a45 dc2c736a4190131817db691d7f0d5d60ba03131378603a441c8f04c3b772e569 967aa99fe86318de1708effa01a5b80d6ce59fa141d8c3f52d73f4331c859e38 45d0539a42592861245804fa9c0ed883f3aeb9f1d49884b3a8413544bdc95e1a 03489f67657da6db264d91f418b93f941b4388b54c4d2c3bc03b57c75dd03445 3cea1a53147e28218004fad005c69429bf8d9ce35cd2c465712787053bbd95df 7929b477f4153c547f6f27a3616c88045c2fbf86b7d6e8e0c6b35427ea445995 2686dc4013531868007c165f1a493a3471ccac4d3632fc3139025607fe75bc2f 7a3d9c5bcdfedea2a248464e2e5515c2cd9a1ab1b175a158bd84f3d0f7a9c8f5 f6b3a652ce654babd62b00a2faae641838d940cd0062948eb557f08f70d2199a 7abf942c3ddae0144aec8f792bda49ac03b8c9e98fcabeb99664de18c3321dea 0657cad1c41ea0b85d864e5a39727ccdb4b6edf450cfb262f88e86f302a6254c 6864c2421c2f82ace3cf0d8f928fe310878713a3febd8c5e4d7e221d58b2e662 8c53a1e38739201666431c128803194876bf732cf96b81b4712f21deaf2d4596 ea93135c65f6f7671122be5c729d552a1e5a84bf4fdc3c969b57bb98adefb94a 525adf1b63c1d178dc079e611ec5052c749bc385370f39158f50cd810ad01ad8 9f3fa838cee6bdb014a2150dbac5dfd83c677e1976499296a175cd90fab9c161 af92def8c6d2a2245f7e3f7a3c653aa513421ad5fd6fe3b98f2a3b825e2f3246 ac203770af8a5dfe6842ff329c06d62163d51c26ce46fd909bf02222191571dc ce3af651700eb1e5ee21bdb1aef24331c00d67570695996cde3bae5d90bae30a 39180cefe4415b26b7679ae46f7be2ddafdbf4509ccd218fb03babc80e0d2748 0195bc09295fb8b11bfb7d0f6f92ad63299b7c17ad703d8cbcba2d512eb72417 cc4602863ea61cf3a9b77910846e4dfad60d67d6d83d534ac5e6a2d459916901 fb10d7ce40c9938ec38a12e463ec15f93c89a465e901c1036078965fe67ac67c 143524ef6fbb7eb464a02b357da3299c45d68f5ec935f8499e39c629a3865d8a 0266212deff3cf9d43a09d15d5ba4e1283e1a87e382abbf10512549043862847 5ecd6c94d13edecf3c00120f2882d607fb0158cf0c0f9ff05cf1d23f281b71aa 54d38e6cb46c05312983dd69238a0b8f2d91c4fc5ec057d19a18a9ee72ec984a dde93ad77f0130a751e4269621dd6c4db8e2c845aa40e1ed1eb11758230beb65 c394c8b081becf51539eddc1bd59d63fe69aa2564d6addd4f12047cf476ae87a a59357f30d07f70c28976abeb7f021cea13211832015df28bddb11f854517db9 4a35615882e35b4ab9e14970ffba3cab23362317a32734fbd4c59cfed8d768b3 4c9e53536f1f4ef682ff82c279932118c74fcd3d6ce114221590c751eb893840 7ebec3debecd6abb8ebfa28a49ddf666f5d04cad1b2f01384ef6ea14a1e445d3 c5d520be9b64c5109d38e44ed473454c7072a19ab781064785e4a5e0c59aa1df 6426126a6a7cbf3f8a6fa4f1d1ef711216923fb255b75783fa3a8115d5988574 22148b620bdf73b8e38b8e74ee2dfbac1ee2755e0fddac78cb2ebf80eb3ad061 4c195536ca3e73ded234814138cc1f7806a8b122449f68a5944268a38cbf50a4 51aafc791866ae229e7299f3e42f071d8e36ffed90e6e275700190372f995752 d229d7e21a0f358b28f5c91db72ee04b0e63b4933157a02892414c8b543706cc 6c5e3ffe7ec5b113d734ceb8ca8961331fc7375eb59822e1895c659d86ff6d2c b7698341f62f185b75a8b84f7954995c2abab85b4517c39b15d747e1a82c7537 28a100e584cccdb5d21c8b9d52815879f4236e6e1b3fe8ca1290eea95fc6fbb7 9e3bf598b9e64ebd2d099d4f179b70ad56c3bebf64ece11c4e50a79bec5e2cd7 f339fad79e1f2c852ad5861d01ea9ff6819b65c4dc3b01cd3dab9e27cc888fd9 94887058ac58f2e02b3b44e9e1fefd949a377cf2ff95ff31cf7e70e4baccb560 c70d625f30135c023d8068e28fde975e7e8f18180893797f8d5ab9e681f016c0 41e4a1d2d87da2c31748f10ceeeebaf2d1aeea785df7c256818f48f2b7a6669d f448236065db1b7b37652efcee4aeab6b4a5e650596fa8f7dab16605e9f687ed a287fdfd24daaaf6671c7ca67c3ad8f8041a36b4a87d80b88409bf1db4ecc815 9c28bfff3f551e917f7ae43efa65af853bc0234686ad76bd197417a0d28cafed acf478492bd6e47d9d76bf4c77daecb1df48e9b79bdc6275045c09e247386f71 a967a8d52edb3bef2d32b524d0730a2658e2f4c35a4803fb6cee728eed68432a 9ad4a13559e39310d45302b2af8adbd2700d35a21f19b8a8f7a8d1bc03eb444b 5013696472fb89bf66baa62c3f4e1056a88953dbfa5bb46a746825797a3153c0 0ef0ac28a7d4e2d782a5b6f73829f230ce6b3f8f2a6be8867608533de18135ce b95a0816a13991bb407b663f5b2aaedb9d939c81eb66acebe9adb149f866d730 6719967b64b97c65ef852ec164f450d6f0452234e98ae054e9905c54996ffb56 25a41f2f7094bff2c31a9110c6d9ebb9d9d9bcf3253319b4c840dfd71a31971c 69aa4d09ebce533712f56d58d2405d51a2cd728ff80884a974f02e3f9c03d4fa 6201105564ac3851a6239feb115f34ed5d59d349b86371d8ff613c303966b106 f56afa3af2c144f585c5d7d21e252062e3a9e34d10c98cd7baf67f997dfb24ab 959c6601bdb120bbceebc51ad15be16e8af66c7f030a0827b675c2be28bee5fa 8b18fe9d1c5cf32744037eec330aba939d68f6412754fd2168ef36a5aa022947 db109ec6e288aadbdb7201452890f045b91861d81bd3225afab22a9cdb83bce5 3b3e0dc2fbb2144e77cde893be576073e2f209602ef7f4707d75703a5f605fa7 93cb0e7589c1032f66e035229dd1b6315504d79498bf57521840e3f5062a144e 28b6e8421208b571264589f36295e29b98063bede15ba203ad373c9a043ce6eb e7d47c973a2108a008333f36a2a4aab70cf3e933a7ac5f3d691241c9a33d300b cded8507011edb20b5bfaf69e72f292d389720064261183dcc2d3b08a977b70e 2893703c0bf28a7259b12f1a04463ec67f8702ee2609e47c43f2f0a8af556f88 2cfc577cc24017093844f793cf3b344cb0ef94e719e96cab4f53ac6f79cd4c42 99cf0669c7c0306b583c89ed5857b2fada58ca5fefa5a28f5e51767def0b5657 4b5449f2f5630ff5257b85ed7026bd025ee232a6add5989bd35b3da747b71bf5 020d825275754306a129ae3caa9f15ee14fdc88d0d26da86bd1bf235587a89e7 f250b6aa60bdcf91eb965681ca1001c348a379b03cd2c73f5ac300c3b7a05b40 33493608cda0e40a4981f1a25f80d93564b0f812fbc64af7ab1f1cf2ae447a28 44273d6c17d7270eca21a05ad0826f2819c159aeaa62ff4ddefe102cb25486c7 3f5442f2e95da97df6b8cbdb4b4dc56ae6ef44978dc36bbaeeba1f5e4a6f60c9 0167a1c3b0b37693630203d8419125ebe4b61fb1f233ac4f95fd30cd0dad7769 c6122d93ab67ef1e225e1d50c96cb989d3c54fa4ff6a87361f2f095e1f96bc65 f334ee744be625117b41d2a436f40ddb7271f68c85535d4fb4fd9fa12e764635 127c6f4ecc9109527ee85817ea5daee36231c4dc5d6adc79fa28fbbe23c65bbe d635286b82c406dc5d65a1361bf3a5714241757d4010e55bb6ac963d5e67e90c 05e90c3d4a88d3a1dba4328bbb1ab70e046362bb1590223590538dc9f6a1b219 782eea054779407e8187326cf2176548ffecd4e40dbb26c946a37cca2ea28f07 ab378a28bb3125e69f18e2c7fa8dc2a1efc69ec98547cd73a7af131a9e2ad78f ff1600dd338c4bfa92f6f3fa443a776c5d45b7d8c124605fdfe18da5c53f73fe c03362e88e5c455886db4efab92bd03b30931f76eeaf4054b054f4f135101802 4dbe42045d3e66b46b92c00f5aa71140cf25b16e8596f83fbd84ce648a280bcc 85ad80d336cffcddd5f2988d44325274bc7352c45ee8e198a68a4d23c36f8ebb 2a3db9c3f7d7cb227a8287f9ba58d84300c59b038c652396f82ab34171fe781a 5de8fc871a0d9251b2b7017830dce13fe1374c 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTI10 %!PS-AdobeFont-1.1: CMTI10 1.00B %%CreationDate: 1992 Feb 19 19:56:16 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMTI10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 12 /fi put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 52 /four put dup 53 /five put dup 58 /colon put dup 59 /semicolon put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 70 /F put dup 73 /I put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put readonly def /FontBBox{-163 -250 1146 969}readonly def /UniqueXX 5000828 def currentdict end currentfile eexec 8053514d28ec28da1630165fab262882d3ffd20326947b1065649b533eb5e9e3 a88a87fe987918a687950b26f647d6e08bf14d983ed1d4a8ca1e2da8d985f944 2eb916f5b6ed0697ac7c33e1e36a3bf460d34ce45f1631871097cb04f18e3889 4cf4ac1538eb19481311d24fe3be7beaa4a3730e8b4831fe59d6d9ce2e46116b 629c7ba2f9ce3ecba2f43bc162a5a077ca1b2882a42afdcec3f4b75b5d63e0bc 8e5dc95257766d8ea467ad9cbaf47be60f797580cced6884b3a68f70c91f4fdf 80fd00ed9139e7f480dc3a76af72ad9b434187730bdfaefe4cbfe5c7edcaaf24 9204fd703011932e5a3c27be468b7dab69daa18dbbb6335ab8ddfdc607961c7c 02582763fa069d43563ba17704029945cf42fcb19cf78c51df0ec4d851086d43 c1ab38e865ef36865fff3a08b01cbcb070ba4893f7482dc7819ad03d337e520e 7d8cd83bb8ac7aff4df36751f4f12aaaea2b6d7260c09a26e987c904003e0723 7dbcc4a8e4e85cd3259f40d3caf55c742cbb40ad0db1044c20a4f122a63f7b81 1d945bfa69662189ce4d089464d2ead9f6ed60b581b04114d5d45e97be27a576 35154e9b8464f2a0df18da855eb51b8f64d3054b0b2e84621f025a0776d16fed b988a43d2d64c32768dd106b9f541ae8e68ac0bb7399e16f4d4ba074b2152d0a 4e9b5bfc21bfa0d531e28165e518ffc054dd4ed0d74eca079d20e79670419f92 e03bcbfeecf3554d661596f6f29e12170804d15a250d917ffe7a8b6e8fa53047 1ed97ba56481589a65ca13619129f1e26affe6c22f0c38540f8ce37efb6e9e9b 60b51a5a9cb4454fd7c7f92f2f9437159687ab590f35b946a54491a7739c9269 e0f1fb48b129811c82edb3171cbd5105fe65906974db8a7da92f4f43dc7f6b36 6981146d86d23613a0b38d9d6191db9fea0172e982cb1cc50e382f69da1b377c 1be9407f88a2a761b56f398467a057f35d18c01cc377e006182c891ec80272e2 2e3a5c7123cd27eccdc87392a9fdf63bb40f02b7649cfc53ef933c6518744cb8 9cbbd437830ef5b1d58b00b67bbcf4426dc1e6ef583b0b4ad3aebd741e3ff0f7 29ae271f032019b1e7268043fd215be590f9cf24da14a90f1683afcba8006cef 5d5632c2481fbc1bd8224e8952debb7c4596a237e5505ac143180956ca1f603e ec70cdb4a33e1c4ca174436a38b06fd9d2b9196f02114b77a9a5f66595727faa ba323668573ae328f1f84e5a3e0e7634d559479c134207aad7a949da589970c8 da77d71a20a8ffe72beb0643b81044daf53e79809e17a14cce790765c281b4c5 cd8c35a9f87a34fe5981c199ffae7fe41503e38d5f437d0134d3a0a7bbda0350 4bbe59c8585052ac7c18ce6b421449d73b16961298c14548b796d7a2198080f3 45be1b247c5a2e454e47886dbaa56f166a4b875a9cc7b735bd0686a3570da5a5 ae911fcd2159fef835f73b4721f47d4734828e4c7e30997976d6c457941ec11a e59c8de8fdcd954c78ea7937031d7fc78b2773ff600cfe51766b2d67175e6d43 69d4b874cffb5495dd49dc34fd71466cffa2750eb4d989f14db03f19dc377716 6a0cc548125f1cefb68d46f380cf498d95d68ab7d027af957421bce6fa8addc2 aa8d516379f76c43a9aac57282ec2a99edc3426f299ab1f7d064042a3ae7d736 0529aa72bf42a2c9fe9fd1c7f27b0d76e4cf15746a51497b7b5e779e0a6e38f4 538f0b7fcb7fd78f805eddecc825309aa9261cc7091d222fbcaaeb73c3391d86 54e909ced541827022d8c23bc55c6c1c93cf348eb406cf7a511e97fd31a0aa4d d58fe93eaf5d0d5eb1c2d587e89777b95e2f6e5fa3ec90984cffb2a4d67f0ac8 69ace7c85728cac1189aabdeae737fc1784cbfffa0f0d45f4baac9be63908b8a bf07b9a3592e374f7809fa2522f3a43c63939400a6f54764fda5a9a62e7370f9 712eda7ee11e2377a9876500688e0c2fc6273e4baf153bd9ab034dc75af38380 972d0eb40396e386d5e41a58435f1616e0331fada7030346b59e43f603999a16 66fbb1df9100705b5b3004cb0dc6dba3b79e13b1b20ec7c6695accb1f07a086b 477c8079a444479a216597daf0cf4d7cc31c5adf215e7baa18ed977744c9b597 e7abc05509b289f39a26b976fb78e591406dba02a4bfd82f41729e465fc624fa 166c61c5770eb62140245c096a86dd74d635526bec1efa69109affba7ea88d61 8697175d70f78412d97e262b8d8080125b853a5047ea276e35c918514cf4a961 3b44470b3a073fa86d35182a5f0a1ccdd45b01952319648ecdc0ab04461fa1cf c72861ab4ad2c4bb7342248c7af41e0cab53d2446e5a7f678c1e5b83940fad11 f35233bea4409feeef82164301326186ee0f5f2a1e6122d17b961eb5ccafd168 96710b6576fa6e14cfd40f1c03d178cc3f4f1bff190feffb5d08f9346cac1bf4 3929ad41c04b5b8f23e10443893cd08112e0f71aa91137564a8ac01e6641a5db a5db50a53c2f0b2387cdd35e6c25c21f977497d8da6193c79452fd371ee3a140 a66094a79bc3678fd2ad32f75902683bfe152fff5090a5839f7cfc2eb25be80d fd8b36e38b8c7f2694bc933380c46ac9583a04e4db534bc2ca0288cee654b06e eed1dd6fdb48a72a3ce58ec29e33c03c9784e07a3290b1e0858b2ee087860aac 7d0969d54149adfe3800ed9812b81280cef40ef74a0217fe66905c223593b92d 034f0958045c457d011c65c739880620559ce111ce13b0f0bb6b3f9debbc6fa9 5fe3c6ba6b3e831e31127dfebc5739c8725eafcbecb1c3e278d39bdf954bb752 159183281b951cc55fdf788e721367921db1819caae265d161309267033e246c f7ef6824868e9e2a1dd3927793c1de52c58f4bd1d972b4e1736cd2f2f8ec3486 9e4e578f90617993021483b9029b22ef6bafaed9a9e104c08e92b777eeb833e4 3804cd0b9ed0ab7227ac5eccb788e8acde8a630c58924668d03e778640fae1cc ead4bc48a0d3993a2e22ea75fa49329986f6f46ca634037bd5ebfc5e9a65e105 1b3ddc15e9a6ba5fa26313d4757748a71aa22cc04000754778c652ba5d2a048f 0969d60262838e3906e39a11927df1d87cd690ac0f75f4eed4a9fba8daaa6632 9b0291864b4b7ceae84f7b3541a15f8469d4d28e5aaa8b4792a1e51300c494d4 3454eade8da530f5ed7c691508d29d92c59dbec80200a77c7d64be3b7aa0b7b4 f3edd941ed34f6696468c0e359aa1837dd472b0d1a09252c764a66c7a23c3313 4677364f66786ff0a7c6024016780381dfb606fed7e281251dbb82bec4d76ec0 82e03807379d5dca655d3166b37da44581cf759ebec8a21050dbb742f7b24a84 5db1b975752cd720b8baa0375974b30f7741fe92a738dfcddfe505af75f95ea6 09ad00275abbb2da749c3b141005b34840cef939a4c0189b98cc8940953157b8 97864525fc66edfe4e0936978325b9a142de01c8928e81ed93c390acdb1e7fc7 451e1ae853743dc440ce789bf8d9e02fee93f4df421658e8a169144ab8d13668 db7b2bffc5d545e3498bc4ced50bba44e4f2b0c06e62467dfe54bf44b85f932e bf7bde09ef9a215b73d8dab7a5d5d4016328e25286ea04c0f7e80b27ed95cea5 81fe11bd872076c310ed10efdea3ecc37aca49409e49d8eab0a79014507b98bf fa01b70a1fafad3dc9d80ed69146e3e1bcf76ae8ed73e5ff375078f8a0f99c87 7d341f7d42bfcfc91ecea1ce2f03fcf9999c794612770681f83d5fb3a3d508cd f5741817b4ebcf68534ce2a43eb759a54992e78d0dd50dedbe5234e7d29b3605 65de23213fbf9b9af2f03e39a8b0c8a5aeea0dce7194af3386369d3ca01c9f0a 3574f45832f1fb62b78af395a21469f1224a21342a51dcf8083ad2f81742ff0c b7eeb170521d74e6c205967fa580eec70a2bee4d5a3d14c23ac8ea063d419677 806a1b37f020c8a0ffb935b6597507551ae7958edac46b87a3bf54950e2f6d3e 92886e5d819864530e2442ce1089ad1d79911a52131385227fc2f7f1f631c749 acaf935c3d928c50dc9d72259d72cb91caeb5fc7bc25693abf317f816d3f2aee f7237765286928e4ee2814bea712b42e44f40ae003703bfbfdd3770f67da00b4 98ac013877dc427c1802334714d4e0b939fa7d3c9b793247a084d0d805b5089b 75409fffe61bcf11a58070de532588f458694761aa0324d4f45e360578075dbf 72dbb46a2c125d3d5e95a56977a17c18c1836195d31aea76473a27ab7b3c11a0 bf05f8adbed587dc5bf69d7eb696e10a63114655342cb4a14faecc87c4410eb4 3684720c1e03b5b011bfe65ed87f73f059e53ae6b43216f7041ff4681dc8eef1 4702e2bbfacb50943f561c1adce583233a93eee1fe5dfc14a672a84e268f21d8 a36b2b0ff14a3eb1fd3b1e8ec6a208007c1b511629f4929aa9f0e5ea870e243e 9b60205870e7d4eb4667baffd43420d0e8e1eb1bc1c2e2169f6bd29dcb3726f6 8a0443ec1a261f0c477e858695ef25d065718d3c8452ab30841fc3a40a5132aa 829193d8e21612d6d7cf0b61e8cdde30bf439ed444729cfaa5fa445752610650 771fccf8c1c607b692e22c0084af7e2c6dc69f11818c5249f2f533736bf8a103 66e87e51b2b76670475efe1e1fa31593d115485b417500e2e798d4400cec849a 0fe8b157e283cd9cfa696a94e2983405fd34c86f34de95b3b60acdae6cb8eaa4 71b0e90f681cd58fa859e9a5a123eaf1ca3f7d9b167d4c8b48a3ff2aee5bb9f0 efae126201cfa2ee636a52c070a0df70f9174d1eca6aee28a7ee93c007312ce5 4874a5a38281a70f0bf1bd6b23bbac03639b00ddc71f828ca1bc777d10fece58 6223c462cd80435a4605e78af029fc8d309e90112ae5a0c599f378c3e30081d8 ef0d38ea7b78cc5fd694d2338af411875f7ec7ad1c4940d04b310247fb60a5e5 886008a8e889fe1da70fe721011a7a3d91d97340302a4652571056c2c7a38738 9ef2fc38c3b5ce8ae36413be49fee70d4fe479912f3ff3973499a60853657722 b3a3474d395541e3a4789fe991ee7a940a90ff921663131bdfed6c7fcdedd606 65a1d88ab3b541c9444747d424b2a422e8f6b7366a85c023ccaa0f46b7b19e00 7cbdd9a105c74192c2345e5f1b562a0ac3dd36587056e8a8df6ae7ba3ab5b88f d83848a2a7b5b54b4665481318faa0c1a16fce2b648a23a76e5a1e7accee16ab e9cfc11a260448c164cc7b291d0276afe818364f66d0bc705b278a4b0ac9055c aa830bff22bab18ef634daf31e4189135322f7ec236d3ffebd618e53b16d1cbb eb5524102cba7b2129c301c98138012ea2377bddee054f7c3b5ad1cd3181e980 35d550b3dc30d17afc2c511cf6181d669db3d5d6250a3ce22d1ac201bdf8d8c9 c59bbc37e059e35d22cfdff31314ca374f3db1e179534b72eb481b348e32dd20 df70bfe1b6ba6935648f7bf414a20f71b589b40b0f58fe9fbbab58d6f3d821c5 374e4aa7e0272c58001198877827f205412f201c51a779d8131e68abfe5024cc 544f8f23c4bb525782f1b1064f0659b1c7caf1c99fa3b4354a0f7426576c563b 185699267d8c9374d77743462eaf009c2efeb9849060a4e10b009e6ef7120bbb 84fac078d216b4ecfedeb1e5c360ab3a8bb5a69026d594db7b1a10ac38c1e63a 044ab8c00b2e9780bee7f154082a6ef410067c47bfb1f6b30622d768595ba073 78eb32ed843ef9ae98a78365cfbc7d1340e230d7752f72dfab6a90f22ef2c9e1 006cc3a8bdd72e95647a4f75a84bf39c9d257fb8d15e877a96cdb8edb4e165e5 43b7c4dd59d46bcb0ac1401a563f2d73e21557215d6aa44738e184ed65c5855e 96421b0146d9cbb93c9aac31e1c4ca5fc13653559f3331185f0c6bd22d4df5c3 a64527600b0b1f21788fba101cc90101aa98e35808067a91c42d95bbac6ad726 19e6d0b44f32037bf252c9f20f8fd53675f9dfee8b159b32fa51483b0bfdb5a2 0b518c2a37e58c7dc522e3f58cf7bc7f2428139d315e0fd6a7adcbfac814e421 4bac8123df7e5e42de3d982754dcf0eeb5cd0b701484040447b0aa513b4e188d 862bfd79dd2e034562d925b9d7b79af031a6057f92801eeb94055e4a17317d72 516a1e2a4c61f09fbc5dc1d2725b73c8f6f655f9b8e566cf0400c0078e2fa268 e918d416780a68c49c8fab062ca4444cc0c89061c1f90d129915c03e9b3b313e 548c67215bc2d68f88836262a00d59ff1409a7473b02c8712b94f1954aae066f d709d981add51d27961e1ad06bebea39f7cad071ea62675973cf9f668cb4a666 d8831bca6ec3cc5bcc61a8b7eb98a244ba761cdf1ee8f94d106d6b67bbfc814e 85753ac982615c1445ce0004296129eca05a4e56de73fe879fe9b6d3e2e12613 a64607fdc30ae5b13efad426a2ee03e488455feddbad1bfc0b577d25f6feff18 427e7a3ec984a3a04ac8b03ea4b6ca67e75a3d6895de76c06217cc48a7bfd053 5659af009f8f761d7e927fe4f203ed585e5e74ebcfe9bab4fbcd9c51b6db67d3 4f7d78afed6506cbc4e7ac008e777da806b46b1ad4fc59b2f4cc26429cde4fea fda9b92bc0025ed33ecb4d0ef420f4b1211c415c3d2577ff78bba29212f82fbd 35c1b365d747d2b4029184b929347797f3876fc05ab9d81390ab207bcf3b3be5 fa1a203189dfe1e373a09b572ac9bb70d1faa26c92d1f037f5a1003627373e55 507e80eff841fa1a27272de50f5b6b727f01ad5f71d94e206cb30a75590ddf65 bbac217c4bde44a92ddf9d5333593380c75580194c7d784b08ccf6209ea61c3d 83111478bb3115f0dbe43c25c842213d40069c2a3bad4c9fbe42a267ffb8b072 83323cc2bce753dcd93c0c53ca510b408deb5e41a3d5fa66d04c84b8a018f183 841e1799e4764dd986c4ed9c4233588dc817a4d610252347f30d2b6574ba7f83 70d6b3af8f48f41dc75e06a4cf4d9518fc839debd39cf18b7591140f7b0c310d cbf7c41a4308263244ff68a6cbeb3e789ffa65f31bd2b710b75d20e1363c9c87 b66808afd33d8f1fb2cc4fabb3d54997303af862ec5e63796e5784a7f3dc9cca 746eaaae69d5e9c207d310f881610d762365b90133403c38da34e744825c3d7f be47b402e6b581ce564d4fca2eb2e231022632bf4c2c542a1e9082ee7efa42b7 09f3df615964552386c59bf6e64a9402157986db8acc55fd77baf1ce2b5cf9ae 602c0e656105222155e4f762e991bfcf86b7ae0dd616f90a53b02545e6288962 88dbe432253aa5c3a8f11ef07d972c52611586274018270ab70192bc0fca5f9a 873e814fa385b1cedf8b16dca2c88e3f516357e3514ab94fb877be200eed3bac edae0343a1f97ab8d9bb6000d68faf1c6c6243ee1d63de4b0b20edf784e245bc f2b7fb81915eb085d044ceaf45e9c41d8a8b2b3225bca63d297a16552b539c7f e2e475d48fd61fd9464c5d3b9baba1d1559fa1124480172690d7048512a18795 747551cf9eb36b62a40d387aafc9d12828a89b894ba63dcd621617b057ee2be5 5fe9e1e10f029ed567494ec28dd58ce74c5645247c3406a6abce76480f48bdce 5bf764832dd1175d1117ede0631328c90b607bf8c1d514d3a1badf5ec5e920bb 6612b7bf02a30a4ef49496d29baaa863870580f28c0b4975d9fe7f4f05c5b0d6 e7f1c51c4a3f054ffa8110702698803ebc52dfe8dbdec375061b42565836a386 c2a89d803dbb8c154dd622a39e5e105f16b0dee354e3d32a771378dbc794f784 f4adeb2c7bb2b558c7a9610f5322f4c47bb8d2f969b43b565a496ab55b56453a 0e3dc59406f69c5b0e49e6960061eb3f2cf85b5e5c707193a2d828d04fb8df93 65a02d2fe1ccc8dea68ccf301f7d36a57b664fad22fa5f4a5be6bb6903f6faea 6517cc2a0837f5f9624bddb4647cde2025c8022885a196d74e340abc9f15b4f3 a6c80444a67feb0f16275e8baa660cf07e5e26eb8781a5ddce352c6e8c50ac7e fea824979ab66374932c31356055e881f5f8215f786be44f84022fd9934eb7ea 858df27a3c2d27270622699eb708a973ed654d40ccd812a8985b31dbf53fed9d 1af6fbef15e0b11b7963dcf37c4e2f5ea92ddc1829c3bc5d2e2b67b1e76ad261 12a3c8259a3b5c27474f8b07f9dfbd738689915f5b2309be2bdf5b4622a474e9 367479c5a29688e23beeff6889d4f4f54753fcc353e992d11cf3478954b6a65e c5fb2cf4b4b58cd603ba7f1b6cf5f6c81a587e846016be94809041149e8ab4dc 32779f6ddf858f4d1d6a7296cbb1a981ceb35db05d636e8019ceb917d67ef7e9 81646a9571d354e10c19fc376071352df6202995222de6a029c4d96ec116d289 8d9deda79ac2f69cf32a1df6f90cee96d57cbc7f352468ad6ec24794143b9fef d809894f501e82ae8c00a3da633767265c7c63f2450148ae5eda0ecc9a931788 aa7ee84abf071dc7cf525d8600369294b9187bad5f6ce924afd01b1791ac51a1 33aa93dbd0508f15987ad6951cad8fb4817a224bb26df9f98ebd9444b04b2291 c5012b732d808d50bf568910a47dff45b9564c2a7a6d1f86c052be3d59454afa 8af86ba31a6454c1bd05928833a10f6dfc9c0a70826096c23d5817a40ac22229 e1694ed6f18fd51cc88a795181bc4d7eaf0d3653b3fe4e53a4b91249126d353e bfb24a6cfa9f6185b4f487e5a609e9746eb866d5ebf35981abd5b5300b0eeaee a45fbc822448ff5268db82920dee6bd0bfd54a354b1e0ebe2c6cdd8a33699835 e88f14f165058572bea93f85bb644d784f41eb314154152c74f8c731bec8073f fbe0cb4af9602d6a6f74d8374316b9995c4d5d874f33235e5a15bd191e32403b fdaeebea719536ced7e51c2e2b91c51c4f24b4e84a69fee1d580043581ffefa7 48bb0c1da6e5114f9b52e978ae8f0c58a73cdc97cc91fb309ee1ad6308a32fb7 d1014d01790ac9214b822a40b5e1b464aa0f57e5d3c6e36dfc5dd78ac78c2cb5 19c4a087d3226eec35967dd61e538a0ff202a42cb29c38d4e1ba9c918f7dec2a 7ae2a7e01c2858bae53cc3205f5d5815342ad6854c6351f576ae80eedd444bb2 ea3b4d0b3de4bb15c66b99a441f5f53b61de658ff2c2e1f628668a182bdc880c 6ec213b13d18d1b19b5a7ecaab101eaca9729ee1d0e7f0f73b17ee95e41a25f7 5cdcb37470597a9b235e0ac3f9022bf88c8c80e483f7fa257873653fbc6c8993 860800f25fa685294313c603cb99717a89cfd7263ab272841b0e7c115eff3d26 30090525562e57ce9f768ff2c36223f5301d3728484ffcdbf277c2c6bb781c8f 006671903f1387c9f81038528594326daba6ed35736afddc3aaee6cbedced7c9 a852de9370c7aa42115b99860be0fc595ff47db930fabba11c7cd607cb5e195a e6756a0f7c3e9312f43d88b76d4f43c53db3fbaf08b18a9891238a588e3b8998 c00a72acbfcf445bf485df3ec7981fdb4ffd4018f3e84e01c317b3402d3947ac 07b2a8aa981b49ddc6787316d8740fd1e7db1b595c4c1ad71eaa6f1809f1f7dc 609150d3c96a1e6de5d7b36f249ffed7374eacc772b28f7da73f479cb29be961 6e406c89c285cdc58a298bfaf9d5606269a211c762be4b711af466804d2858f3 5ffd7654109e3a3c82a6d7ace333d2d9d707b140f1ea78214dc7daab2a130cd4 ee35d49fb8f794e64b0f9e90c647c7222abe268ba6291ee9d754699d883a4a1b adf00af366cb194bcfaefe5e7602acbd348fe378e2d9a5b271d992b44dab4237 8ca4af5051387830754ae7f0329a3519b64d9e5178351acffd8d4548fdd0b584 3408a54a3a8c348061f599b3385414267905b9136cceb50ea78768747b06f003 d32c884d20bed50c486a694dd2be1eafa78291da6b7de6679f9973732eebf6e0 a75072b3898e3062763499a23eaec00d94aa0eaf1803806d7c2ff5eb60bb08da 6171187db2b172b4b5f16ff6ca5986ee2b02686b7a4ad971fa45e7c0e99fe311 d62fc872a4d152fb99744c26a8d8e65604dac9dee3366accb786168b1b432593 97b0f2e5fc18ac16e707c2eaf4662b30c8dabc2376412f2d16fa7336500496bb ce89510464606e136899de84d3213c004f741efa0f3923605773de6d3d4133ea f0d7299cf43c857ed8e71a8c99bc7350d60747172f14a890cd538efb71257e1d de9062981b20af3d3e1a0e6c24340c4a01a65ca9dab48d502215212d483c77df 0ba98040153e3d2dd4ba083df7cc21cdd86549293aa354a324f82764e66f7b4e 5814c822bb4c414b4114cb18884324682c9fd3c390c6aa8880bace2b763ab9ce 567c0934998409bb8985601c40474b96a08490a38aedd8d7679d26f570a50970 f8e4a62b1d2a0b327f15817a05e81989e640c029e8f47703feb3f4bcaf5568ca d8ec94d2840baab12ed426882a25d42e89c550d411771048122065a7c6169f9d 7a6966cf539e3054723d73e2e60ca2aec37fe7e290719de16961a7794d49b108 93dc7d2d35aa53d6567ef8239563121c867eea25f999d0dec0d56667e6fb0e9a a66febe774ebcd83dd603d5f442a4d2d5023725a3cc560cc9480cecab9b44f91 1ff1a3496ea7c61a0ce1164cb447e7d74695982b78afa15b17012d00274c4cbe d9ff3a3eefb7d5ed8552a9458e9edb2da51d29e3714745dd63c82756cea8eeb8 4549331c00b8df52a0c25555a838a0215f74a8dbed8ba48a0833ab01ae019be5 250b1c9563e4238affeb65c199bedbfc46b643fadf7ee9cb6e7a98272eda3c4a b7ee0b96606beb6b9bd75475b6fa1cff0f845565fae425c5c43daf9cc361c0b2 e6a80604fee1862fd54b3a558509b3073093ddd467f7922db414799e1621f088 9c19aa47190e3d4d4a5473330d0cac16376814c5d5107354260fd7563bbaea71 54e6a9545ee24ca92a23b87d0fb9bd1081faff587282492d95f8fb10cbcbfae2 2aa02e8b8b1a02a10043e9bf5728bb5a78184c096ff710eb604e991ba848f9a5 99dae13f531e0bfe0cee5829ff162b424c84abaff382945c83063f21496bb964 0b85767869249eeb0d92f907489c75637af153e8f787fa507b32d39af1eedcc3 ec7fd24339acfae15ddd61999dfc97eceb19872eb5d73f95847efa4b4fdc4dda 3e83167cba3d2d6bb6039a92190e8d4acf25287b39e5c1f8bbcf8d54d60d735a 9d8b7e150a994bf9cb46b3bece3ccba17423b33a0c7865e7608e638b7f2deffb d9db03699973bb5a64d0283b5474ec1dfbff8470d956eee39296b213d2a755e7 6e7db86c0ac729b99806bc02493318a3d968ca8d79f5b923e7e35aa5d1432f24 f085495939604069403bf272b1246184d1a6a06be742222dd31dd01d17d66960 7908676c22d3eef11181cb567883370fd00e073415eabe3e81bdeaafb88d8ef6 bc12f7a2c5f8453f5d28552fcbc521be2dd691262d4f0730c4943d3725677ae3 34c1c4531c5a71b1263a96138f3acb9c00dcdf950a43b3a9bf8f46722f29a610 81816f4df0dc8700f3444dba2be540b08ca3be3bbaba0cb915a42f9f04cf8cd1 872b0321e069493ad80b0adbb814ffd9dfff33b192af8f51e468258ed6b9ffbb e9fdcbacd4384c05702f3706f54ceba766ce57bbbec3521f51741a73819b1a7b fe53bbeaf9a8359e76c6572740bfdea32fc68df364b8427b780f55185faaee39 00299148172944b9fcf65fec0d9846679995e417eda1cd366dd79c21765b43cf aeba3e94ba75196a3eaa2e3c42b8a5d7aa0c34de1941dbee4fe6c0ce5e8a6842 968e9d200db81bf71300fbf3b00d03975d8dc8c4335621657bd4ee76e3d8c576 38b0e77cba5b781ec48de11a5a5eae180b13407e40aab4951d4cc719f735feac d4fe3af23cb9d40f8a4c46042b03f21bd6001f149a868e4e392f8b0dfa83c714 936ed9d002fdcaa680610abc4bf58bf67e76886e9940bbb9a8a46c970019ac35 e7d0823e74b173b323e69c9bd3b00b6f6893fd17acca2b3e84891bcc45b16579 ae935f44373e55a7ec8e29a7edcc2a3ddd121310f986acb78956481853be956e 8e04ea044a5489c924d0f7b711e2484917cdce18495c27e032e499a67fcefa1e d935615d5b35c7794a673f88af05edd5c71148bf220b23bca8cd5a29147fd968 c37e798ed4328a6dde914f5648a45cad1f47e091897eb41eb6dad2d7b68f6f7e 5302f67ffcd7e077b01f392f21d52d3d4c440b4c9c54eafb0176bee8bda28afc bcf170875ab98d86d71fae55a02a82e9a4106d3a944eca463b1a4782f33715f9 dd8055c4fce7a070d8fef57b389723958529ab13875227c924036dd72e932a1b 215e7459886db664842d54ab86089454d29f1a3c07edd7ba75365545cc5bb795 4c2fb188cf65c9af643d8dfc467a6c1c2a9211deb28de444288cd38302eac65b 930742057f6471f56dbe55d47e77710e39508eb6e7c42f660c3b2481be631343 02201282c8e1479cb8bff10b501922081accf17f77d560e4136bc97426267141 ab8a29b299978b1a99b8dc5280cfcc0589732cdf7d79a38cabb6568c9ab81f17 8726bd67c823d9b82ce72385eeae0d06b5f8996d650162bea5e5a104af304e64 9c9c7c00ab8793fc8a2fc50f03d58edf57b2704d23523fc86be7d4590946ecd6 0430363df2609fe01c369f5e393fd0a01016a0d356db120ccd9cd62a69b80bb7 cdfd946ff9c56f27b10d92e8f0477fb8643bd29083163f6d84589489d1b93508 e76a2425ee7b207da52644948f8ad0ea963049e67b657f2283e79af44a0a308c 9b2b3448edaaef70ff9f3b236efa5f53e65a5e903aaba400067214a076b8d7cc 4ad20a774b840cbdd8e7f985a036bbfc7bb3e4be94210e89a4cf714aee0ae9ac ef614605543676cf989eef2e3e0ca97234bfbf6eaf5834c596b99bc1267e9705 e6777138945076ca70be234fbf07b54a07077b0321ad262ce274b7f56e8ab03b 5a5568f7978164858df9ce98c9c141336cc0b0d3f9fe41e0908c64e7571e3231 5be746b7de5e4b5cbd7c0fcca222aad648a777fc57f96c2f7c03727a7d66efb0 41dcb182d54af801b3c9a4329e8353de3bdd47c0c84ef31dc1ed28210dcbfab1 c033bc3aefc29a57ea38f836146211fab64fd701058214df91d2cdf7f1d8394a b8d669d6da181bbbb9d23ff8934852e4526c38ff199263d65faa2dedf564b69a 044d0054f9227a4361afc508bdaeeeab5fcfe7eb17b92f045e87119a37ad12db 1f6f21cdc8ad7ae5ba06a9f5b05b8e809c7f83be5e54afbe8e26f07e7ff141b8 2357e2708c4734da15fbb2dfc2b5dd2cb8bc50ffbcb7d592b590ec2b94c02ec3 30dbab2d725e52b08feacaf27778344db940773acde5069ce6ace094f3a0a21d 5d128e9c5a807f75a89e62ac93e1aca4eaa7e9b2be54e1a4c7b1a25a3aa76edc 86f3a8306380697ba6da02280eea30966367ed7bfe75eb28b90b4c4e9aaeb518 d5e978974c132cd617917a4fb3014d4eb012989b66f0ff9946b258caaa54189b 57f419f9b93487701e64848ad9e257d79e3635e355383ec93a2ca33dbe619e3c 1b2e07d19f34d170bd8294deb4eedb08a1b9a1835781dcd142d55ccaeb81d5d7 25569957f7ba9669c81fef2d8ec3e96c8dc3f565082bbe7e7d8154cdba40a66f 00481e95d62528150e4289392f56de7a95505fd4a88d7bb2e639be44b6bdaea6 62b5bced15f4c09d5f019f24340dc8cfa63fd36324dfcaaa3b7b976c13cb6f58 f50a05fefa077bbe16fa3b90fa2cdf6515d6080ce009cedc7a2f9bae57dde4a7 9f03dd30ebb28c9bf3a7f88e089aba3066d530a328bee51c6bde7667c6db75ca a27fea4678699445e90170a6e75f189ea68d06b0f26b68ff4ce526197ebaba43 b07ce95f89fea42857e4265e715e2a5b225c887ba1c15154017a6ec336addb98 36e44cd6bbbfd1542e8640a4e3a149b4cd54dbd48880db99cda10375937a58c8 c2abeb39b483eb0f5cb103acfc99c70b5b2aa29f6b9a0e8d22450cd12e01d887 c8121af20fb53d879d9061afeb6f807df34f3b5866597f8c32dbca318bf64005 7cba858670872f1ff35a27f426b59f79e0aef920888e6328d37f5b3e6fa4052c a23d500d6a41d4f49ea68493dbf13a18cb7b888a3e87ffefd350388566d9677a e8779ee7e3af524fc088e4a60472b40b4c2e90eb2e1290dedc2240233ea2b62d 488dce4abb0e8978ef6524f9451b41dd8146236dd971835d598b25180985db1d 8a98bf7ebaf32fcc9e867cf26ebdf014ab19ed1f35a620a1b4461c39e518da5f 380e3d146ebaf71e2a3c7eccfd19d60f265c5490f7d4f3ae30d4eb2d9a5a6dfb 42958c3f4781ace151bd6bc13db090621d042232710fac3d8c43022a62542a7b a8c2cf0b0090ebe7fb4572d4e81f17973395bf7bce91604cd7fe70d25e0b9a1f 064b18ba3ffb60076e62f1b9c4112ff10ad6beff38eebec83273625c24b61ab3 fbd24e581e60bee1689f3c9afc2c13ded9a7e2b38243878d42d042a9c00dacad 769d8a84f6ffb9f98befcbe6ac22d7bc3c5b80aa12bb05b22afd43f9da031ea1 ca891621e7ff8bd0286f723444745df9bc6c036130d1605f8ca9396ed50816c9 8decde0daf8513e38f457ec4625bf7a0eb51ea11f6830245d83894c7859d33d2 3386fef8c6314f0d4ad93ef6a995cc64734e52039b8a3a2ac5963708bdac45cb 10672b0fa338a779f8bcb6238e9cfec1e7a7c8cfa8e8e52d2d2e6bf6a2bcc0ab a3b226ccccceca1b97321c52cf056b438d03f7f3733c5e8d45b695e09bbda3a2 436c55d331a0f847101f0e8fa5ac05eec63d9ce14fcc307ee75afe16dad956ea c8520fae099caedbf808e34ff398f0317f75f295607bfa65f81cf1be1b2587c4 d2e52bb036028e254e6b842c03e7ff55719f6f406d78eb6763b0cdc738f175b2 fcb38cf8f526883f7d53f41e4944ff0eff3ef93248e7f9b22ed932c23223c429 b897e3b9c19ee9a8f2563a61189d3300604709d1f3ae5f71fbff0f5175538641 05ffc130db0783cff16011c65892108b4006cd4f00fa4068ed61b7ef6cd454b4 44866265d71b8269835dcecd8cd81ebf1a87d3243f5c552853a9bdd621dac8a6 f3f17e54b4abc199343cde52098512e369036e1ee46ea5f3788fcaeeceedc557 febebeebac0d74a1782a25f317b59cea9bf993af9d8a224da54fcf1cc9c73b98 7dac95a298947b3cf9bd8d5ba679fee5bc17969bd8de088d2aca241b7cec72e5 0225fa59d6b7bf06b6b2e8efc646ceadd285dff654ff18747aade56c6064658d fb7dad231de964845bfa08af757f51a3577a9bf12a3960dbfe6233a4aed8a3fc a0198a430f3e1c49bf52b590dff0d8ff230fa3e6026a98cd716e74cd6394e9b5 fd8d8415373e10fabc7473a9e7b07f250e9686547c78ae4e885eb9b89d95392c 26d92e060af9f5629cd23b775c96dc2e0084b6ee1e5f9ec717592749683a0597 8a5e89f38ad055810fff30e5fd87e6060999f270a342a01d76762f6efd444793 97aae03e7d0dbb88d5d6386f0da11cd4e722f86bdb03e1614e5d7f9aa8a21f05 e34681a83e5c7bacab01373a7ef0c778d14cfc09a6ea07f79f645787e2005dab de422a8298115f880c5d2d25b13e3607346c11ed9b314f733ceefd3c66000149 1f4fe3cd7558aed9231e45c4fbf4f7c7409115353c762fca3aeb394818886791 c1dcdaa2de62c1a1af90e0ab459271722f88897f253933d21de48717939016df d11138e249cd5800f7468ea8ae2960da3f6599b28ad105dad880ec47a14d939e 767b2688b2d4058ceba1e9caac81e6ae44098c0e5cba37fc062a490e41f97077 255bc1227d2c856285b202a3a3868e28c129a9913bde9793757ea88f20db6f9a 75a19442e3a86ce5f6c23cdfdda32fbcd456119b8b0ea5c24edfb80fd9b5732f 971d57ba594987f0fe1d3d611bf8c501bd86813e80af22796c37e451e60a24eb 48b42c7e841b63367fe8253540886e4a0af4c05baf45417274b391f46826060b bee8b949d2d74bb63d9568ddbfb91d4adeb1b79c17f4bf905774e987ad8a79b3 04f4f56108a5d4f8ab861ae067c4c0d2285506c46fffbb7b35e3796285977871 3aa1fdf864f8aa05c7c4c548dc89eeecbe35e90be66b60e2373de886b63ae11e f22055b658604b76e059db0531a88c6942fdecf4bf0a5d3d6454cb17ca969675 bfb917e061a92bcb907b8135cff7d5db6b968df5a7e37bea9717ea22128ba3a3 93be8808d9d7e7baaf008767bfbcd7a0169b6a597f751e27bb15c23a1d31d8ae 22eb2be0d1debde1a29be1634a1ce06db6a4486a7e8868090871aab25b8e3fa4 6083fad54cc80ce8453ac8c743aa6dc08973f3f7742b21ab379950281835b3ba 00aca45e18b078f608afec922e807c170ad6fea060f1bd027277908f5f16313e aac88f2be6f618ba51cb1df81cae42d91cbdfea628121258b101fbcad26cf1ad c00bd43f92b872a0e9960ed5b09c79647a613c9a2871d501c54969bfdd95bcd0 868744358cf764200d81266078d0c67ff2134f59f4186256cd46d6db55a2cf44 2c8e5903f5d07e9866a2c79f6c0d47bc4cc6f6ab6d809415b9fa5eb0c370cbdb c6c7fd42bea090498129fbccda7be4d49a6218ff55babac3806fcde06a8b5219 39fe5bef25ecd8a4e59be5c4a6fe1903564df8a8eacaaec5200daa799704068b 53e63634dada862cea4da30b8777516efe24d62b13edd31494bfd3254da029ba 8608853636fc491475fdd1d1f7200794ffcd6ba0b2a7cc70e1b0c6d16b935d25 47b64485932c76233b9d1ba05d8a0286f7767775eea7bebb4114dbe139c5890e 621eb50b0f6e01bf11a8cb89a26ce5752c9874c5ede4366d21e966f123c2a3cc fe25f6cd17fa4dd6707821ef634ab8ebb783813fbc05bf38284218561085d702 2bcb476abe83654e65f5048c4e9f2d36ab518016b44ec5a151eb0a3efed4463f 3c5bac1cfa5af27edb563d72c0debce4630abf16ef882b09ca14d92694ed076f b0c0d5fa5cdbe8c52cb72990afa1f4863391cae72286896de5be8521bca68927 0196985cb2b62c45e4958f0bd071a18532d621c1703924931e6d4e13da461580 6f 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR10 %!PS-AdobeFont-1.1: CMR10 1.00B %%CreationDate: 1992 Feb 19 19:54:52 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 5 /Pi put dup 10 /Omega put dup 11 /ff put dup 12 /fi put dup 13 /fl put dup 14 /ffi put dup 34 /quotedblright put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 61 /equal put dup 64 /at put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 91 /bracketleft put dup 92 /quotedblleft put dup 93 /bracketright put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put readonly def /FontBBox{-251 -250 1009 969}readonly def /UniqueXX 5000793 def currentdict end currentfile eexec 8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8 97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc 8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011 b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415 50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e 784c6bf7389803d9450b0c21756a017306457c7e62c1d269f306bd3402e266de fc3b5e7d8a8d2f5bf0fe6ddd40d07391df4fad4a6018dce29a2b8f692b29f202 3a7c0e66de8ed85c14f1f8492167357f51a7e84cc5d92e0fee4d81cf7fbc8de5 2d2e7bb57142033993f9c08c315abade8dbc4a732e84e142d3bee51557910e12 cd8aa37c459a5e6b7f5269f59078aba3be4641a11ac48d0b625c8325b38ec08e 4c9e5e7fed976a5650d99d82114f449b9ca14c4ec957702295a39a93ef93f618 99b8ea06b092c3c1e503e6e436e0a9fa22576c8930ab3dc8c20f5d82b69cddf8 ff4dacfa9c54bed5a3aa3ea5b129fe96be632843b9b6bc91b615581a985db56b 1e01ca60ee69ca92cf5c0882ece62edad3e106d835348822400f0b66af658f2a e56ed08f8b0010571807009b73ab12a8cf14ca6c71f03c2a48c500f9d62266af 154a6375ff600d9bac3f05ce34142d6867a79581c533176bb2f3117336671e2e 44638a97167e2ea9644e31ea16c2ad2990ea33c54001e0c8156e6de8ab6a4d40 a7137ba275f39589fea2e2db8256adc103d6f9cc038037a47e8fd469c5f98a5e 3c15bd4ace40d340018b1cff7d1ed8abb0ac57b5b5a2c20a51957b96c453edb7 dae5affd91a46d938fe0a13363001d844ded4323f1ee6d30012aea19b024a552 315505535c85dc26bad31e09c50e6512802976d298c4e90d0044c362e6bf3ab3 62a454ee93de25ce54411090c29e9d75c80ce26a84404bd9de3aee0e3f921ac5 87f907572b8354a5c3165eea7e8b2ba4e333802132f760b41a900c698eb3d273 8bea0aaf7aae96a558f08b61aec7c7d65b2889bb7b99800cffee5ba19ac90fce 11437be1ddfcf0bca5670b543b9644a71c8726d0c1005abdb96f6e0cf7caaa31 95017ca81519151c2c0b04f81e717c0691b63a76e9b25329ce2625b711cb7bf9 9d23ec2bb5ec8aefb8c1a3b422ad617b3da4d49685fd44cc21a1fe5e1541163a b3e1594601d63c7e98801d7746474377ce93f81404f3570afbd5dbfe77578605 917ab96963987e6efc2d3f99fa56ecae6422579852567f90cc90e4ef6d6f71d1 858270205477e221018a375ca83c572b3f972c5181d18643cecb04909d84cf76 7174b3c0c8ec69bf1e9fdfbc0fc7ed97ec67d878ea4ddac8caa522fdc6932df7 21b81af837a200e1d96e90a7ad7589fa917658d7a173a511db53af1848892270 44c4603be1a5ac1893c15a21fe5979a09aed3473a98e06c98356dc01ed3f5e14 1c3c057c3f97e2f9e8718b12bea7715a3432abe07df50291d1a395e7ba2f06ba 7cf20988904310104fa43c7a1f6d32f5fd290d4d572cdb5ab4b433bb849dd1a3 58b292cbd5c762262751c26d8756c7a3c4e6bef14ad9a628fa2ef5c0010ee4a8 d530f3786bd4e0af07d5587e90e19687d1a31921f975bff26ec2cf07f3efd4fc 54fd4f92f08a60ce2b3beb2dc8d81a303c8103283e6e5341eaf61191f0122624 2a4a88caca606438a767277972e2ad7ddc9a36f43d5b2d010b30cac07a383c1f 9c18c89749e610d026f48268eb3f80bad4cbedb7eac3c18c0d50b5b75ec2eaa2 87e2b192f97a901713e955d597e39819d72f34be949c010addbdcc14d763552c d0bb091ee7bb377545c97b70cc479e60760d1f2c57b47b59755cc59198b4f92b 4c55aba7cb9a51888f5e4a8a7c5c9ed2ee3a22b29a3980ac64dbedaf17f322b8 fe35405f3441b03ac099c601bfec9ad4a835c46dfb3b658f72ba255563c0fdf7 628aac9c69d73b3a03d9959b4260c2d075d1f3ca63518e8e49badf8b4b01c633 77b4b1b1592350e696989754e6db50ebcc6e61d8136a9aa1fad7c8016d0fbdf9 ab6ae254ef28c6b10060dfb3bd48c2581297472f273aa5b4737c55940f91ee19 016c0815b86d843a7220e81408b258e19f149a5625b018dc58ae74addff1756d 405c72eea14e978a85716d7b192d35e8934d9a9f7cc9fce378b64b7c81374fa1 b00df1ee14c0a0b77991b66193e717ffd45c2f90feda68dd63f97b51de22314b 0db6a6412b6ad406ed1b9698900804454c039eac13f414068bdad1ca0d978f3f 58e9373e7df81245fe977a107e36cc4b89a70746115d73f8c017c4071eb3597f feac653391ca81623285524ddc9f9ad22d3ae1e482f6884a7b35e6766dedd84f c36d9e7f96bedd3f9205e5b41e1567e662d47d39d1be0588b5079b6de95c6756 dd7da647298b59d4b9d2a831fab919eb3f40cba02cf43fa530f8e6af12475105 c9d8b8fea60d32784e0987a41b6d82c8851e8d4d5ca000b79eaf10ebd546de27 fd6dae5e8bbb9b08b0ce3c32c37d7c65cf6baf2427473b1293ca5f7e05c35cca caaff9fd1f12f5f195fbf60b505174a3bf50d6cddf4b83a199073edf81efadf1 28a08c3fe20d945f2c9329c6b06d7a6f30ad0245f48067143680a22d36b1b31f a5ad2a92da3a18f187f3e5ea4b1a18d1c55a596ced406de854cc992a7dfc1ab6 76e66ea2de98be920f560bffa97d48336b35d317ee751e2789cb0ce5b361bd1d 1e86d8a4f68aea6bfa56735aa292e1666c8319e59eead4fba3683cf8241f9275 93b6a5695e86afe1d8d38ed2950249955e878242cc54c121e092ce3de4e99806 919344a17342bff2fd216f4a360ac649b4d46fe25825a8c59a33929c4ae4a6e0 c155ae59aec3bca97d47f76ff7f1ca7796237d0bc32254cdecec630539789edc 95ab31733185d940b470f46bc29c35605d69a27378513d21a3edfef9a078de1b 169c02e0ca0e48275d3c001b577c37a1572f735e9a67149868900b878ee75817 9c5c3f0f8d673a01650ea93b9553d8aa2c84ae58088c679ebfca42ea3f2e28b7 f4893ff81850082f2ca622ef1d0a1051cf61b89235f26875f61ced8cfd5d5578 d596934507d98e3629ee39c85a8b5305dde27f55bb171734252d9d80857e6f54 255d8b2cb0746a55707a85b61a8b9aa7c2d8ac803258aa606727f0b822ea19db 03e84031d9a6064a5d069dd9ce2e234f38c1f59ade2d08d66d414df1dc9d9993 9671ff7d03b11f304839dbfaaa0c3e7b6ffd30f9a75ebfe2f80caecdcc458b35 265422c5af49cadc67bfd8062a5db6ee5c9db553eabbdec64b81dfb7006d561a 7a0ad4da5fd56a88dd40a7bfe01155fa37d288acc406786e461ad599ac751f08 4fbf81927b92947e8ea1d413d0808af4d904e8434914c37f8814c00061f951f6 37d333d9bf510e3035620af8337876d3798889f6a5fa4af4c68aa5fe5de5537f b12c6047648b54288f8fb16899406c427d7c92ed8ec932711ba48068a4c64020 518b3e0a0617b54536a38505fb3cbe48ee014c674ac804b39b755858d4540e75 027102de28eece10497a88d07f2442fedfd2ed8ea92db0ffa161b6d0c542d421 5233984e08b4b4c3923f515ac7ff3b430edb92ed40a70ae378cd84ea5aab7739 bef65ed333ec756ba08ffbc72173c069ed39713076c6b16ce6226c5ff2eaff6f 7b1a38a9a3fb9d9cacd7d1a81f8d08b1349530ef59ca0a7b150acb90b5eaf8f7 0a396704e896725c5c1c1db3d007f2fe252cbc665a25f18565b7baae52c91e2b fb19930453c63a88eeb569373c40c3948af294200568fbb62482b29cdd726a3b b689f3a3f731060b22f754c9ee7f72b6fc94fc59885b6650274d409a37e0b475 c73a5b27e27bb07b0d7b1174094a52d37d1e797523287915945a3daed0c72bdf 4cd047379dade41cae5c8767b54cc522e185558587e66f1d21532cf3f2550e3e bf7dbd91c2f1c8c3036b6986de03a86ba3cdaec041fd83cf474b82e2db5aaaa6 4b9b6d8184ac5f49b716ade655250a51b2f5108cbf3b45467dc28099abccd826 b14ba665ca313527ad95488ac14871baa2995bbc6169094c6ad3bf6b51326db9 0b3e8354687e75d9521fa0fe9a086955268781cee80d4bceb07c6ebaf8e36b7b a56b0d971458b8be442990d45458fb751402a638ea6b7088686e4fd494747699 47447784b147d51222fa743d44e1a3fadddb91f64a1168dc5c135b19e1a3ae3d 6e3ae7fd273d6325ed1a19092491ee63dfd7c34fe0cad11e4b99e77295e9f9f4 80805a704ca4b7c3bffa231aecb1d2c2e29fc41ae2fae0e090095a5cebab187a 37464e65a763f0139e0eaa809d04274420406440363993c74815bd18d573fc06 db4ca755697ca7bd7c650647bf5f608cea18ef6fd86b2c2a9fa9d2880f84d73d 9d48bc53f0f64a1da96e8b9ab855af9208d9a707c7238f80321c6a88e5271375 f2bcd125d1b1483349a5dabb55cf82f1faadebdb49ceebce8b305759d5019b18 7e37d2cfa87680c062ce5632a324fa28bf895c0a6585ad46ac204ba7d3b68483 fbd8bbd02388e2086a89d263a7cfe86f7b464dd5a5fee74ccb1b1aa4afb211ed d9e73ca4adada3e01181176ad147a1dec295399ab3bdffc92387a927fe46544d f6c2dd34b260a123c0d4c144723f3888ecf5f8fd588195d5c40886740162bcd4 6b95c29347d26fd302dfee04fb0862f87f8ba9cb0cc7c19bf9ec3c3345e23960 7341df6423202567e27c5d7107b97e990668410e346a2422eed8c41181cc002a 13b26f5ef512fa006a3cc48fa3080cc6106214457c5e12e48c2677bc33ef50e6 134d93fd8982608021a8243c4effb873ec517bac71f894fa43663d676021b197 9176a6f72fbc564946f68acb4dd6ffbbbc73febc417fd8fec83053926b91f0a1 4c309ab3bf5cdbffdb2ae1e011c399fadab31cfc5b0affe7a39e75e1c732429b 41966b3f0d4758d6429115c91eb7401ca0191b22f6e940a3b2d3326533671adb 9f1a3867ef6f787718fbeff9be7880e519e4745f5742f53e4dca3b675454db36 3ea47e448fa96308b4c3d4c22dd5aafe07c72374c921b1d22dbd29a3071ca4eb beb3613ec0ecb9db5c1bbac64be668ddef9ed3f61488b1f43e1a2e05081bf978 9af4ecf0bfd312242280fe16483ecd76b35354495cf98ce88db2610cae112d7d af2643fc160cc67268b44d5d602937deae6a10ac8b80407810e1fc1fcdfd80f4 3999d8657b8efe9381ddba3c2796ce0186a3a27eeebda687dac731646088e14b d7e25bdbd17d87a947482e875be7aa765c36c74eef53f18be2eb092072d4c3f2 b72ef78a540e1c9bae19ad2aecabc890dd7e5e7050266c4224f3b1db68999bab c9951d53152b57e25f94052f492a42a76ce7a696c0b98471ca2572f62e609110 0e63c0c851120e1f6b8cd7506a567f76b52dcf122e040a4dab394838143d0819 8d0c7b1bca24ed2a0d791db48f470296ef4e9cb0b8a7a03a242f681c3599f7a3 ebf914b0cca40c41294ef6b56d857c86b188c6fc9b3c3e0b6a45b456a38cca7f 3e63a0e86fcaa1af3bc85cd7767fd15ee12ee47040af23f533c81124de3e8589 6609981b3698c980b4dd91ed47a4f12ca8c45c610379bb24b77ea6ff4c527322 f45a57f050c9b4f98eaec4ee120931c7a5b571ae9085355625fc9f4865e6eae0 41e0b108de635d80a287c1d115a129922aa3570d10a25f3287551ecbb81f568d 066936cfbbdfaf4e11132bddac3b0d9d33cb43fac9c2de2edaa95330186b27b4 c4482243f169b0e5106984778832b225d6a10c3e10521ddf1254ba2141ff06bb f5174736a07760e3becc8c5845bae6589fb8730ca0dd3bfafadee0fc66baa0d7 9d0186ea13b5fc730b4d121c9064a62d41318015f324b551d93d2a02e71294b5 9bc7a98483370bba0a839f2910ca840b8ada6cfa78d0776dd73344e9f9888996 8778397c4940753041d18b41ef1724b2ee47cf989d8d7ce4aa42f871672b54af 047299ae7258a3ad407748bea99e8a5ec15f1026c8f8987cdf677ba07aa4ceef 6792890777d6767c6264ea75f7caa4130497134c8eb1f71d8d7e6dbf2a4e4437 edd2e313e9d6d5ca651657b8f37d12dd86305940f61b722b4c3d6e1a43a79d54 c347477bd93c34a1f80fd4bbb65b800a349487cad0de18c4ce34ad25c52b1bc2 d98706019c2f5e7f125753f192d5a0c5bca6f5e14a14c52c12bd8483f563caf9 5ab109c2cc8a1b5107a9513eeb2e5444dd5745e4155b97748a6a269544bb6836 5f764e28cb354ae43444a442c006963935cb38b8814345548ca447eb8853c24a 8c832eaaac67722fb5f87b33874062c91bebbe8da51a65f095a4a3b6fccd72d0 d879bffc947f5ffc345373008f554aaee3fde1dff048101e48dc922bcee6c835 3dfcf3d90af3f6a670c18a2730b0a6ad93145fe090243b64f97ccf2e9ea36380 72aee8905e11f3eb6eab145ecde6a9d50470a33e43be5b7c435350a3bfbb4f1d fde07a42f54adab85d22b4ae174b525c6bcc60a97f6277b7789bb16099dcf8cc c751ec017d80a6f4b99dab6143c311a8ca4a722114008f762f55f8255ff8fc46 0da87e08b90e73e625fb2f12d2a541eec10fdf9bcc06c40edcb1659c5c3c1501 b92e9981184b4f083dd8bb6fe53e6245c93a81178be6135eae4f76c5f72110c7 7f97aee2ba336a86693dd062dfe3d4b51c80a4d0d1bde2d1c8e929297694d70b eef4c2307233a756cf32f63b6d2f6a8960bca8e66f9e3df2f77c7fc56ea45a9a 639d2a306c269d081d646c6a0b16cf99f42ab1a374a8aad4cfab26742f5b71bf 7c7bfd5f8c23a16b41f2612cc8757572f92a7e7963825a43cae516def07174f7 74a4ff4bea7303594d2814d4e4cf2466a0e08754831d97b3e83c4e1ff4b1df66 a8e0b34f2c04837f89623abfe3ae8c432bfea913902a4758e7b22d36aaaa930d 36000618eaab3f710d31d080a2fe72b086a061d8c9c085582241107c87260fc2 afd8d0656150ddd4ec066100d0b9538ef93fa4f857440fbe5b690c05a3bf6e86 8149fced6d319d3207d9e76b33da6a921d8db63b12c4d8727302f4ab2dc2a333 e4ab86f1f569a79875f97b171bfcb565e0e74373d1e33da0e4f1f93c17434da2 0f3a150785d8a5cdcc55c67612459974f0ce2965026367742bda7a79b09eec85 4feaf74518d22d0ef7be2e9fcee4de62273107353e1cdb9c2e1e2fcb3967fb64 9144b221f91cc284712913af7f1a40af385b2b9f3bd7db485ebc9f510924e372 cb1697bee8ef8a67a8004581d3686d3e2f517aa1a2e9a105a369978567e60f71 1a9534e2d99bcad6b8843aec1b4bc1e9249cb140b208e8c0281ed4234d507f16 e74400286d8fcf4e90f883a87dee9413efd2ab32e9a26c5937c8ac4d6c954b59 8b58eed198cc0a00ccbc84c428b2a64a4edb2e7c3a8d9bd2d734fc723d2e53ff 3d95e7ee23873b27807b27edc4bcaeb5f6ba5e876af0ff474ad425fa68fa6a8e 9db82d47bb7f3d7b3b82ebd1c231821c6d472dccd6b8a1d37a62ea8344715f00 3f37a42243e629623fe341aaabdc7a9b1767e11efc820d3f31021c3f6315b5f4 416123751d965e7fd86c92f2720fc6ab6a52f1218d9252f67c5062d518deb7c8 cbdb9756d70f0628705a2e158dacb179593d0679e505f17352c80868df904caf f002dbde46be4c64a91bb18494d1542c36e5fcc0c830ed576d017b8e2c784ba6 f010421dd92eb369024a1b79e0a0b6f7b7dcf91b1c7ffecdba549fa62cfc54cf 06c8b15d1e512f6c570690de9ad83ef21a3a86d398a12c17419efb302e2076ed 00e2348296f8ab0065ad08930d8fa3d0d3a6d43a6ce27aa2d91e326e3f734ace ee5bf675c458cf51ac099a137bb16ea79706b35edaba0d6a6a25a9bb367c44fc 435ce95372c39b384c1b941b3bb63741d88c45899d8176ecc3d5146c4475c84b 7ae466553686e63c5d26a340a67b94315ae18f9fd5e73a0c5bf4894588ba25de 8ed6a1f0d01b1c3450382e35ffb35f6faf70252bf0f6b09e6bc5a88dacc24b52 87d31293e009548d232e9d2b0b039eee473b2ff582539cc9c5832720ae9eefd5 13a5787fe2630ca3c03c43707f4a5ca9e9bdefeb100f79710e4353f6978424ec a87bf2085ae1eee76564c20e462aad03a867f74c323da549939cb100189485ac 5fee73737751727ce8ba71370d94aff38e13ca810201be9b06774d2c292d8a73 bf10079569aab00381977e120348cb56a94f6acb7229fe4f6e50cc0d632461bc b56e1d161cfcfdd23b06326e2bbbc99ae4260203c470440c3d3b8c2b94fc4d30 4db1197094035fa2e71d85685a0d39687a4c4210b8117ec14490f974e72cb227 5a4d2bd256acb7857affdcc4a78d53343d2753e3031542c06b7af6abe05fb70b ec60070b30b149ff1a9326b718f952e7455964922cf855fb318a3d88d0f3ec5a 20c1978dd1c08f2f37d7d0ccea72af2842ebc1c3fcf3aae9e211a5ac9e6d2c34 7be7e81ea001906a6a91aa51db1dc372e5696ee1fbbd3914e5e0ab1c9ee19124 ac8c8b37caa2ed9d78ed17c02663456ef3cb71d9d9c09956f8014b4b2cca8478 b565eb87efee69bf576613af358ffdd992d3700fa9ea75d65d882cd2acf7129b 5693fda445ddf1fa73f9dd4e49c5e6eb5cc7a50cb0e1e562a5066b25cd94eef1 3686d71738debf1e066624e5b8822dad59ec9c509ca6f98835c8d8e887045031 9bb028699b66762f7ae3ae8790250c51c101ca2f08114538a80ac74c3606d442 ed4839dd6fc4791512d2f432b64dfb7c5d651357b53dc4c5bca4c3ea92d40364 2ec582302bf6192874e07c0b1415cc7b18e37f4ae6bd241a3f87a96cf9ced8bd fa081f7d4d06b9f02991ae1a6dddc5e568ad24af2999d010053d62d8758949f5 368258517098d36aa39ad31f3ceee83eb1d1cda97276096dc0953e51eee47307 cdc40361be9cf1c2e2902e92c736f106303b002c47870ed372f25d48bde9c2f6 ab916cb16795ad7c51078630ed26b337258275bcab83b7212f6886e87c633df0 e5780e65d4c54ee93a1595e901ab8107d060a83c90b0d0c044c420cd5e213f95 59fd45525a041bc560b4c2e49867c2562359a989849f9bb8f92dda5ed84384d4 e862d4481176410b9be2e31af5eeb44581d8c5b5cce0ddcf24d4320c2cb437bf cd88ccbfd0195ec3919681ee1b994b87f24bf7ed39e53853892cd92af50f3c9a 08fa10dbb73083ee71489fceb7607973f1518d4678434678248992e806c2ea12 4db7c3df830d5ab743bf2c1b1fef630a6b9d1367285f964eebf9dd830edd1c1d 72c147544d48816fd956e1b4389b072175491463e23c7fadab5cd03268d981f9 803d592e04f5cb06712b2b65ae23ba526dbc76d4c51d28960bb013639671d63e 817482577e7dfb0af46d0dae9b252d4771c3546860d74606b0c93177143cdae7 744f3c1cae813096fd85ac6c9691f974cc6e037bfbc0afb67ba5e0d5adcbed50 8ed4ad8b6d86002ea180894ab86e118d675ba21fcb6997e1587f226abd348ecc 02909dd0d1748e7e8d7cca5c57e1ef99c9ed390f8b3cd42de3e545fce6030f51 ee2420269cc5dec79f1f0ade79a5034201e1df87ad86710f9d8ebfe9a0728127 427ad5548cf6a1dc370b83ac9078be7cc7c1db2433cf9ad16aeb270bd44f9557 85db7083d6e69b577c0688236311f84b049e4a436ee028e8935e5fe14e886fe6 7eaada69cc6611c8ce16f99f834e3cd53db7223091d69246242b5d63d7b93fbd cb95634a491619c28833fa422d77466fc22783cbe298bd68521fb68b2069df3e 0e7be687c5798660c0a304448efb8e5c1f0e2868ddd1506567fe22ae0fc25b37 ebf76b7e0709c55151fb3b6b6578d0d5763d3e571c29e535a2636f8b0a21a443 eb2473a700967c3e907bfd50d9789875974d01fce6dde092b49b43458bdc2e71 13f8b372f95a59a70a0f5a0de3f2504fcf1b50a0173746178b1fdb1c80eace9d d2f8c8c1e5ecee4d88f914a2bc7d3c3cfc3e3a47b15fd6616e3d9e0df861f973 12aab105b310caca0251654c319764672cd73ee0cc551096766484d4df355999 4c47a8648a764cf59d67d14329ed1281fb50c07491af69e85abb3b614c012260 5a07082287e4a0504c9c95892628f42fd832e3352fe2b171281f8b74a60c913f ec225cd6a8f765af889d0a782aec419db9e08706f7a2d65082181741fd960968 3419ca8afead4b4e6e54f4c7c178c6e63d23ce1a9623598e3708ed13baca4b9e ef7074f164202683164a04b1b2ea86afac29be00678348d9fe414744514d34d4 466b72b6e35bad047193ff1c673f6c71c3e243b860933214e81e937780eab721 9827b937b3f22491ebefe7204b7a12fad3d8d61f07ed0c4fc9a248418b769e57 6a7a6d65adcd39a6a239473bb7aca1975f67795b3f09ac9df6b410f2cfb4e595 ea9dab7e0ae176e9e4217cf9da241834566626d84f367d14a5cd8b3ee8176534 1cc731caa4464e98178864ea19a3e3dc207c0b70f7e611d282accb69e6992847 b63eee8ddef87b77e51570cb70eaff697f04c7490972629e0b3aefe6b5aed014 8d3fcd51430861f2f39b1bc55898b3f486d36562c283413d8d3778b5fb974c34 41d3c1f3ce13c660b411eca201362e474385036e2dedc576d592fbf15f3e6220 e55c80b46e7b00eaa7e1b0faedc31ffea90c4fc22da9ffeb401789571e327319 74dea5067e185ab95a833ae093e480fc2934f5b1b1f7a7b11d76f61201773d8b e69b12d8648426fb5bea780df5deb4afe92dcd33a851bb18a3b557927dc25628 09c6215129f0a965c4d092a3d88ef854ab4af57afae8e959c3bac6eb8fb70b61 8b52a5bd52b43d81f655416830d0c7af26d91117eec0a4435b942fd0678b8ba6 6039d8f67b746eb04ac68a6a17f2afef055e30020f81cf98f9dc0925519bc0f0 e51168e8686f15931774087124a6599100ede1794adb0df7d540e758484998d5 f84c294b5f401f4d8e35a74436a508ad5c670d50126180527866e5bff7286532 812488dab37511754511b903a32cce5bf11a00227d266ef153764dc684054d16 0c29dad44211f6898463a905ae2372a0afa065facd929aac353b154ea92e17d0 ea51d021ce67bd7f2c5dee0eab620352f2ba36131081b6c6d6781aed1bb1fef4 560d0b30b500d9fd2913d80a03282294a114e8f3651584179a9e9c49a1ca4f92 50fb1f527ab87e300e3f3b8df38f45be76fd16b1cfe307eeff6a14f78d88a4e2 8b0423a665becab3ad6c6da6473575dc562458f6be15a2063bef620d4ba10a0e 6c7fec11f624104f652b664f94b92adfd7c31c95d8fe3d3cf00a31ddff9a1714 e2828ff5612a90c5f0386e89ea34e8d0f43355d8f64086d6704c029126832fdc 4281ab35ef470d7a01026fffcbe963054ac84917cddb298e7becf1da915f4490 755a7138bf9ea81935f12822283a33fef3c3a97f45b98039e080965661ca59af 4fe2f7c0fee08e231a4db59fce93dee658e2f7da041d0af23b2a01841d999c47 b4c44eabc5f64d1cbf02fef6cb0b8c0c48999644f3959fe2f93d364afde9691b 29132e90c3041d38d9c371f0e0a1eb62b27b4917272d9d1d96ed3f793373f43b 07cfdd7db0f5ce437b7bece32327681e6d66e3e2100c1e080a6b2c505aa32d93 1d4b8a9e96fa4521010a066c453dc4c15d717ae4124b97a5ad1cc585bf23d60e 7e1f08c3337a8fa331ac81a4ef64c15316bf2f919de59d8d8c9b1279d55da319 84e96386f96ccb5364487491f7ff68b843ffc8a269047d17497e040b678d28c8 8024df4144d977f57f6277ff7174a704fc4ba6504876dac8848c5fc283425629 365c971306757f19225661b4c36d5c9bcec1cfe4903c2571a1fe573911ba24fa 8644e92ad1187033fc62715a5056c093560161c0db6eb9237be7faacf7390406 042ebade573bbf527637886eb80f1c342931e33a3ace1f30c66e2685099db696 61efadd225827ec450b8cb4ccd204d92ecff7ff8f9e1c858b29d155af4b7299e 914f06487f1c2df33c3d9ec57717ed9c15870449ea5e1f2a6c48aff976dfb368 85198f71129c01d7fc334f32b56de8b3c8f2bca45e046465209888954c2c9c3f 14db31ac8c07e63de1950574676a6c8963b603c5e19cb9ed69331a29b880bc26 2d7c629289fa029c84b216daed564dd2d5e6090193a54a6f3ffa40832bdd45b6 47d29287eec13cb19965d45be1bc0ad3ece004dd39b48605581b95db12b93e0f 872ad7f34134d534f3797b7262e6acad266719f6442b8f9fe9ec719194c7a761 376423ab315b26dd8221f3b1895e1e41b379329a0d4a3750e121ff23935297ce 7d826aebe9e800f2de4aa1d25d7c684c87587c8b0cd776ddc61919d7ac9fea3e 2d4da1caf8ac89e80a2d9c82174dd15641a41569b9dc68e4aeb8f484cd324e52 8e97209460d9508780dd65deb51cc2e430861dfbdda978b7be41a91f5f1c3cbf b27e9503dfef3e1af08b62fef4d009b80d0a5e8c94e1cf3194f57474d003dee9 dcc142e888478da695dc963411bf1199acf53191b5a63d96e5f1c81e0bc0b8b4 8930131a5c915ad715df00a654b6fe7d340d71f7e413b72db5bbf06d984cf697 d2bf780c7366777148ed41b5cf2ae0e9149e94e23299ee1f81110ea89c2551f9 7ed8a49b2e59899ca76ab1a9d3439e50f661a0de7ef480b49f691a2bbd8ef8bb 53120931dd9d8c53be91635e44706acb1999e22876ff1ab3ae31e5a9347566e6 e799cfbff2e6c128a355c5dcefd840809961d1c7a71dc08d7282986c6fc73a88 c14417bd239313d001b4151dfd78b285577fc45ac56a1bb9a86a7fb770b6c2a1 a8c4108620ca27ff026b4641b790768c0b1850eabd8bc9f65311feee41d212e4 4f0a76856925abb4a71acbda29f2947e872605e0b079cd9a81489609dd598f9f 125bca338d7591d465aceb8c36a3b55c9932dc09f7914c061361677ab9506d38 84b08f225f1d6d5d1ced2dcd700e391ab5b3257d4ac102039fc605da659ad67a b8d4d92125ef0c7abf72635864a3402d7616b46b01746050e2922cfd9cae5d20 3e1933fda6f8ebe9d1ff377a02b1e1d512e454732c21050aa9071f2809eafc4a 50f2c3629d000b3d9fcfe193b07eb6a257a8236a07512944627535f4972268b7 2181e8e056ebf31d8f0a89fb1a6c56ff92deefac4cd6ecbb9e53e481e08f46c9 9cbc9f196452154b9f87f9688aca325ae91745abe46d0243038d22ce4374e8c2 dc6c82b4190c3c6e0f19c8ba7ba6efb73fcc83fa9c689927cc8e540a5356dd87 2a0a4458e5d32b5ebb415b8dfb7d8b305c15bc0c60e606c7f1aa5bcd9e41b2bd c4a6111695201673358bdf3be762dc843f1d588466abebe04222801af477b416 9cbfdd74502ded37fb2ee97522da35e7cfaf90cf91c6308512d19af28909d276 a5be6287bcb1a20c56cba6fe38ffb148bab4d26cc4a55edff69b46ceca0dc469 6e129f31aaf7882bea2b1fe69d77f122ccd141857369e1f7d6c0f03cc573bd54 0ed70eeb9ec6b4c2440d4c10a1df20f7f41ffe4d8da6940313415cb3e3300df3 6ee5cfcb6021e254f2c8852447bc358fc6a6d6dd346c3ab4d41aa1bd3e2028e6 850bcf128def1bf0ce66dd2504a108e660e1e115f85224a4e5950599742edc68 ae0cdbaa232e8838a0912a2d615094e6241332d17a13c3417ed1c5628b5128c2 80932b2cdcb49bf8741e9c3fe027814a75ddf659af6f1b6562300820c658f1dc 7bb985d61adc835d4bc26d9e61e64c82d9842479cc1472b006a838b9cc74f93f 6612fcc47a40db52111e5bf841e8b85669f216f02d5f80979b100be8b9787f10 f1c2cc74b432192f219eb3f87442c828b37946fd2507aa076649f4d5cc8113d8 1fea4d6e203d79b960564ae2302ef7d5c85b7c71e321ed3b496fa0b42c669450 6b56a4293dd3be1c2bf5eef7b0229d3667c57f41fc55477f1a70a6926b838bf8 25196cc431114eacc9d329ea4f3fd35bf04acb3a5077e302051590e2da7b511e 397c0ea51503f0721ca917b10b12391cf41f960badac1aa1eba933901b064be6 36d63430b21129b859a12def647651387db4098b625689d119c3bd42ea23383b 97abbce0d7b5b52145b95a4698ab03a8b7a1fbe32edc4970b32caf5f519e44b5 26bbef5f689007c230784440d6bc989b98c48f0e6576f6feb07d9c5a54960e4e ee3344ff25af1f47e72aae8ad3536335f9c3d22c39732f0a88fc3c018c639e74 0298bc5d9a8e71d5dbf6cfa6e3cb60ca8e58527ce6ae0d810bdc56dbca173d96 ca0335153743a03e69b4ae7d79a1b6a0e9709a6c4964637f94ccb1d7a74c18de ab9313dbaa206efbcf584d9178fe0e264edd84158c28bd3bb1b432569acc5af1 30c3ac71667743bddf4236c139ca7e54fd331127aa998e527b92e5d945a47aa7 a25aa72938b941b3a33ffba781e7a9e27b8ba2977da17ace05db5c1a7f43917b a6abb0d7d47ec820a98edbac76826b364ab8a18d0950c5ca1bbf40d1bc0e426f 19576a38cbdecdb665a749eede7ae57287597f8654a3a5191da42697feadd864 a959f63d28ba0618e9c249df45f8cc668273fc9d64869c47d88dd97af37f664e 0bf741460538c178e05c51d0c63df43304db14b17171cc33cc3cfe19e3a786cf 19751efd0fbc5f039988e02505e88683275ccdd3319eefb17824171ac8df3023 af3957affb215574651d4f0aec9b9a01f17e7abae056ebf456994398e50f57ca c2a6fd26a4516fbd2c7af5682e3f1aab56892a4b93eb2971ea88622530e1f3bb 1b626671cfbd97270f6c87722782c60c00072bbbb3cfeb6d71fb1e2161906208 eb75353d8fd578c8372dbc002070730458aff02df5ac16dd31e84bf7ad301823 986b47e5126a15d798ccd49805a5c5d177eb77c24ecab42040e5feee58b35197 2dab3acdf4e976d1ba4da2503958a128851c8ee9bdddc80e7481857ebe369a3e 59d99baff2c9bec65f8db9e06cb4b927163ce5a387db7c823f48b3eb544d7c89 e893f28d32951e0c3795ccc0fa94673857a72b8db3c215800215df08cebf1337 20e795ba2b8e29cd5a94bf55145ee5b4c08b9cb2193de4fc7d5d50124c87d2a7 b11f8009e540617ba208520ba378d907e5016c5d04dd4593df862ba06ae6289b c683d24e84727bf60fc177d6b281a11ef6012e9bee758bd3c8f5e5ae5d0f5a83 63899e10f5f670ed740c9e793506a3ba73484668cf9d05eb3b4326084e5cbfea b511b1b390be02bed69fcbd3321243a1a9efea1d00bfee0dcc90e2b1f8c98bd9 aba71440cbd4a0e56e35ad754b2f60f170c599ac7c2e5132dc4a8c81936ea7fb fbe9bbe5368cc839054032e0fbd13ee07081562cdbfceeddb5a12499c82f2b04 191d6d9274f54d5ba783abfbffafdf4ea90ac9605cd69ad94601075f76e6cf31 981fd92531f89d659791eaff0bcf607f0b61b72a148510a04e019865ee0d772f ac7566fe6261277b9663112ab8b1a41cfc8cc5dbe1ebe1848ccfb66e8f687153 e1d46879213b879b6620c8aa843170978070fd88450b6813b054f2d2337d8f27 1e84062cf97f468653d931ae55f01b43bf76d72ea7ab7b0a99ab7707d2619235 35a01931d1b149ccd062a16ea254198006ba9e041989280d59dd903285277329 521a071ecabbeb47d92a5eafd51a9eaba11bfb22a8853dc7c975397b325ced42 ee5d386ebfeb66e4ceee4abc26697e540058fc748f726a82baabecf56ecadfee 709519b20e08d5ac246c711eb693e99a0c8cb5d9e78018065a8035a9de3bcf9c eaff3ca5368582cad146cccfb0e6dec5514cacc1e6c463bbb1210202bf14ffc2 62366dbfc379960d76337b9d34983c9199b4a12f4138bb8dcfff45365ded433c d3ac2d1524e7858ad31fa3f2929b89fbf3a2e218e03bd33e1d7477e6328e36c7 5e80e941c57ca81944b96be34cf2b8e8b9a12ba3802f7be844591fa0020bde30 b7e36ac445767e923dbe9345229cc0bee6e0ed2f5a01a1f3c08b4523c8a7d92e ac47f3868a4b5a9fdfb450a170879e29e90bd8384c5fba7dc39f14eaf35d7d3e 10c178885fb4523163ed13e04aa72beb8f3b6bc3d96710c0854c9a668f11e526 78ca5c9ed380e266f6cf568901e46cb5f1dffe974353b3d4fc35bc132dd5481f 96353ca2b95d85402b216570bad970cd76fedb03de58a65eaca1f41d0aa00b16 d09c27329f9e9866ab2058b6482e30c2fc9c93d203db6c45bcf4975879d18099 265d16b61f6fd62a12fb00bb65efcce2839a35a3e39d463093b3c2f28d0940b0 3b345f8bba617a1a4b088aa2695cbeba8fb4957cb932f38eadb62e7feaf8911b 2518ec77152a58dc0ef6c29b48a390601aa918b1f266081de3455d7ac5b316be 4a711aca89817acc53337abecfd7ba8512039cd2144733bc5914541cf990fb68 b9f0c441d711594f53a65f011bfc18ace65306d4f6f463ea54eafd5fb1e827af c57c541cd4c3f0925d01220d7786cd0858b1117d0d046480e65f985bac848ceb 7e5678c08ebfd34a747a9f321779832a1317d4ec0e9a145fcad1042729b9b413 6e830b46bac3ba080f9c6e94ff9261719062089a72f4af27c026ebaf5d6ea556 736227977cbf668b59d754e4f131f222c3d4a00882aa80de791e2a133ea7dd15 12eba349a4a35e3e686a7a81b18f9bfeef283477f53c141216bd08a2d9f3dbd0 dccd6533c6f03f0f4bc049f45730fc5269a5c5c11689eb1cb3172e74b6b1c53b 37a4bf21a0f84ad8b104843e69d95afc07b5abfadcfc67fea9d3077b939d2eed c0152862655b9855476d3ab48177f02c7b6200b0466985964bf2c0b548bc3c2a 1c606270797c0cbd58a9f8d8a951219fff54b6be4a1592e06ed5f680028a2165 a736ee2e38350589ffb4aa4642c4431b10276fb6b63e548a41627a31818794e7 8aa9cfc9d2f4af3a950b2fbdcbe286d9e781eb9667bee5f580bec4261fdb84b2 741e84ae50c7f2654ba989cc72fafa861edbc9c327b4fd6551a1ab800d7a5847 d5ee82438333617d24964ffd2b43d1b639753dec9830fddfb20e83e43e5b82e8 e623f9e3681fee961328b92307f19cdd4c6c9d9b5d8937e329b643a5018be6cd 4676f9f2d74020b977b126d043ddc81dc68448754e37727cf820700257598b72 8b9aaee8a67409a1d476f9f905b85eb7917186a2f8a83c7d996f423063bba73c 16b52b7959d96f936d779b65b140fddfdf75c15883b6f1c3c39847821a24d1f4 36309aaa9f5c382ca791e2820020ce0387c0710a1ec2bdc1f8cafdeaf1973511 26db25ccb1939cfffce69c5e3dd5c6d40a80a3ed61f705b172a402d82eb974ac f09957db426cd2bb4c76845aaf4f07827638918d96829d27acad3e371ecdea03 c8fb0b13f6f2cb176bfcd465ad4259ea82215c88e678f438ae6b3ac997e5a7bb 7f0a0e1ae9ca4e9528785086c2dfa9c3385a241e3d735eb4fd47225f6de63fc1 ecf94a79e7e1b7f8b47ed369bfebf8e2c7c95a24f9a13c8930736c8506abaf7c eb0b00fcb49ff73b7f25da87f376ab25b8f4e82c5541f65aaea5a9050e351f9c 10d7dc572bccdd0f3f09ebd5fe8bef0d39c0330451e549abb017050dad85ef8e 56b17bf6ef33fabb3ce95ac6b343d27ece3b9dc7e2020d8c3f3ace38dd450344 1f99b36de815db60a1c70dc095baf7757f917cbd7864e34d6eecc907a80eaa5f ea38a035adf4dc99f301aab753130c7108d727cde76fec07ae2d6b64d5d2e042 cd320464d40884d4e58f407803f3eeebd9fbfe84359d06a3c6c54a18b8e2be3c 2bc382b5d3c7f0cbb66fe3882d95c4a00cf9b6572cbd3f06c223dc6978b039f6 b0956c16b6d431d0cd2d4928c41f018f44da844aabbcb9b093d8805c48d694eb 60c2a85c6a8506ea524ab68906f9bb2d568ef8ff3c815f4e95d3f0e8ac459c72 cca4a487d908e9806c59e6e46709e193ae2d85ec30a32ec4d3a5b841224bf27d c821b421a12e7308464e7416a5bfed7d241f2873202de2476801cf4da4fbf83c 425b8a0a735162e75b0982575c142a90b96c103056d5a42153de95e7508c70d5 da60cb4fa2c296a7b5728599cb5b91cdd1f1fdb1cf031fd18af6cc69bf13c5f7 6a00f9144c7f3c5f32ff36c02c97ec9d3bcdb99069d30b55cb3e44d9e5f7e628 66e06fe4ec627e4a1732936bec50e678a43d53ef37c37e0f7963e94900978669 187ba211518005df1565ec379bc16134e4f69d6f38d2e5c15b882d7d488139e3 20d78e07de8b9d5f07e3aa1b5b71f56720257ac0dfce847ef45fbc01e3d148c6 8a1e5d3ad9f0aff81880fd91a3b5493a97634443bdd2284da9f6225ad54818b5 c2ee9c0c48e6262af091adefc47bcc74d0656c57f927a5f6dccd0596706c8cde 0b626c17feb7388956b9c46ecb7717890b323351b0d19fa914babdee2bc7ea09 0421bda20a89da09ccf2fc861f63a10914b58638cbc191b87bff152bbb5a97b8 b5d5b26f21bb04eab4df2ee9e70dfdcfaf79b66fb51045cba9438d41166b9de4 6c33d491b9754d6a1bc27251cc11c143e31d6f7c3bad4ad7352871cc64b71aa9 af70a0079857283c560ba2788cfaaaba07808f5f31aa3afde811906e4896d107 1614d32244167740c79c0d77f1a471fc7d8c2620d140caeb25044d2ac49bd588 01d6e3a25e8819d530477d6d70f53c7a7e3c57ec6b55b5cc9854ab07a1ad7571 0b859c5a3868bb6e8bf875fb89857e4f493a040f4a7d7aa763e63cc8e2b30617 8e91dedec4bc7761260460bf5b5ea0cab19105edfadf816265acb66a035a6263 1a294ad31c6be89efc3bf078d89e214ec0bd3f714430acd6c7bca643161d4d8e 51d58864619968b6d9f84ef1598606c86d93334772d4fdcd43baf9e7ff28fd22 3d37eb8f072617ff49c2c56f05f243db2ca70765b4d0f72bf182bd440833dcc2 a95b5af44bdfe1cc8a132c76dc23ec8f2a5dc5424fd0c9a2e4b4b838a8a7639d 624a55ff472eb7b62ff2985e7fa86495ea32d795ac6206600160db2c39a44b31 50e926205e0b307763de0a2d64a54d193ebe4f72e901622f9bafc5ba1a05e9a3 efd064702cb61a66edf9aeeebea139f8c9c9ba9cc1fc59e2bb4432b907c0e557 b8071ffb6b8f0b1fbd5e999f86b100fef90092e3b058fffa4b666646686ab6ab 9d3e3d0f38985ba26d0c4105286a72ddfed48327f8f22b109e63128b32008c0f da86451e92ff62cefdffd46c3793b3f541700a29c89984973bd3a0009c67dc13 25df4bafa10a4c6ecb887a7e512ccfef0159ebdc68321c4e1989db4874cd65e7 944c8efeaede9fc696ef7154460c5f0afab2396edb9c4fa4b500b221ac8e5fe1 023f74c3657f6be0b277bf1f13524073e7b6f851748712bd726cb3ddd0e7f0cb 976092cf3b601f19774888c13b2d1b411ff65d9af32ad139d80f0184c61d9a7c 5220dc9327dc427536c423f7163b269bd88e41c16d5cee5d5232d7599463922d c4a007269887bc676d347ccc0c3bf209dcc6452fb0e581068cc12f32cdfab18e 17c243d835a47e42557bdf684c96a2570957090e13a5dad76299a46f1f869967 e0fa7d2cedceca93dc46df2d743e37bde6f7d2c2c2776e27e4c3bbf3df2bd8c6 e4363480b37e2ea0af1389649d22df36354090214851cb26d2d645285abc53d2 1d491bf7ed062a930ab2bd3eefe898044cfa4fabd1a85418e79a6c079d50b37b c0fa6d6a9343b2ee0722404a3a2f205ced00068516d6f744f9f44ab793b1700e 6256d07cc067fdb0b11c94b38568decfdabd16f3b7f712c3661018381822eea5 dfe8bb128d37493336efb7307fcf80dd0a375d6777bcfe1b0a92d2d38a3ad16a d65c04f98e7fea338f5cbbcc140571d73514e18e650c2e4c0926d80aba048e5e 59e589b7e6e63f4cc9b4d557c984fa8817d67f6f11e3b54c172a2e9216ede514 e7165aa13288b38b6b116df797b101605280a8bd2975a34babe3aad71964d518 2057e1693db1be1844778d7160fed220023e8689ffd651b8edd9fd29ba7fca4e 9c90f10adb3287c66c46af8a98851ead72b5411b2458a8a4a8d49be81edb0326 81314f68216c5fb7eb03d3eed6c205a224c06384d79c2a4f2079c2898066518b 19a092ac2974de05695e7ec96fe3eeae739725c0e4500b31aca45a50eb172ab1 80ce65ab37343151d9e4a9dabff0fd167b008c4e5dbe4b80d8b930f2e76630e2 6d73c411a0dd9e19fede63e522a8f6d5e448546c160672b8f1ba3c6d015c3fac dc1bb7e9d3e1f8fb0ad4b78a680c3f09a84297fa438d06bc218d90e6f361c7c4 97bb3d0130fd8c10820257bdaaac573c565bf2ac0de341b6d06b2555cb47ca54 325d86f2aaa972e1f9ad90da614326e001232ea63573624632a35ae5b6f046e5 6a9a362d25261aa7c19d23e57ab73e77879fd1a5eb2e1240284cc5881ccb25ae d69ec1b4fca3742f90dc6c1ab2476c3760bf73e52df417b377ae1608ecd5de91 fd7ef9871f4cd2457c558a16419897b4a6fb088dd1e43476019011d85206bb5b ac6a29868b8fe4c88989d11d8c7dc9c06486eb60bbe69288c2b5876baf212d8d 4994f709193a1e129de6c33b18952e47a37f216e32a676f753cde0da9cd0b817 a0816a252caa4aa2efb2924c7029697946d0a381bc2e05c0fc00063ee764d1a1 a39d358da07d04310b2e21b3c0c394b53a208e2433894a60838bb1a078984aa3 9c514b532ed5b9128d6efa5d316d290c19e32322136b79d69d5dc22f26e3e39c 00a71eb15eaef2bf34b99d126d092ade699dea662356a7e1db087505d2ae7a0c d300e97c520705cb687916eeb19622a7adcb928ffdb96cf8bed324efb369a347 97bcded795dd1c1166a9a6318caf51d2149b11e3f8f6a387fea6fdb1ac1d900d da30c63a517ac8e670689ed35889e79a4862ccbb06e54eb5a7e87e0b9d7b5352 9c6ddb4bc93cfbd3178508280ccb2a44c890949e07b1605bdf1cfc29a864a968 301ef610379fe4a79d4befd6b876433e57ee1b2428fe9367366021eda1f0a91a ffded39b0a5f987f97f339d8b0caf74f87602783e3005aca700259f525473e39 392c926e4754fc5ed484b13c02d2b564418fe157c238d8daaa7a710301621bbd 98801128d330f44b78a90656511e0c5f 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMBX10 %!PS-AdobeFont-1.1: CMBX10 1.00B %%CreationDate: 1992 Feb 19 19:54:06 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMBX10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMBX10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 40 /parenleft put dup 41 /parenright put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 70 /F put dup 73 /I put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 86 /V put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def /FontBBox{-301 -250 1164 946}readonly def /UniqueXX 5000768 def currentdict end currentfile eexec 8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8 97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc 8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011 b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415 50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e 784c6bf7389803d9450b0c21756a017306462c563d51ece66fcc9c831843ecae 1fefc1a232e2724f7baee428ae03aadb95c3035345c15e9922fe49e1f2cfc980 237316572dbc57064edac9b0db8913a5e2d45e97e19a91435ccf8adfc835b585 48e74b291446d689c7f2f8c4325e8356e974ae30c3e2977477baeaa33d141fb7 80f59351e84bfc88c87b3a4a1d25e168b9d134554f6a581378c7d2d6eca8ac09 045cc3a5e0ed86f147133f094029e3483bebc81cfde69942cf645ea20d0a2b64 5140ccc2f9cb4a3d969f4b0a79cd3329b440dfcff5285494406f3dd08d804c86 df191e57232f6f1f83df6430f214e03fa5412b1e13d83c60c52a698bc9a38159 19a64162af7b83a9468fae9507c6cb55ea80df8c696dfbc3296c663902d77e89 a181502627281181ac8624f65be9de5fb32f056cc7dd7cbc7366a91717b5892a 34ef6b441871c6993da3a81afc9bf70ff3842a21a29c0e49da1ccba37dd6b920 2702db510b8b1109acf4c27ee8d676bdbd16abe189f34a9b61532eb777457698 cee0561838eaab2d3939c5093afbb215bac433d1918c739b62566906bb2187f3 378521fb52e70c18886e1aa15f53a1f8a169528cf2ddd54c203613ff88e619f2 6c9c50c2c3b8b8c868a88afab1dc8472e7b6f3f992a161723a3c0904865a7c42 3281601eee91f35222c4a71f343739f102eb43145a47e4fac3bd666e4c114a90 5950618ecb1bdc29f90f6ebed1d8325fe6b52e14a8870e9b4bb088e585c71b91 493c12845a101937e3473ac5e9ae24f7c358f06d590d7618e1a1d5834d87621f e3f5432b655eebd4ca61a7b00dde0aa740796ce88a43d1c6952f8d2ca63d30b6 dcbadbb0dadf13150a442714675dbe51ff838f2e47ebe8cd44f1eac6ae5b6ceb 0b07af03f5d3896ff935a198aa635e337e367e1e128d15e31afe3ffca8245e41 a3e17011340e49d52fa1e322b435b4f7f2f49ae01f6a319f68d3d786c24be810 1e1c975a8ba3d62b34cb9f5b9a42f36a24ad1453af977b0ecf5464960757498f a1fb1d4f040738689d4892980bc83b2c317e95d5e2480661f7123694194f0f7e 49f3898c0f3bce817d7c8aa74fc1bf2980fe3060f6dbbfc9a59111ae61d7ea77 2327140c845e975d349160a42e805d4063b18cc583cad0734963ac154071052b 7491456c4becc645986c242a501b1bbdc2b58b52562474e304e8ee19e02d67b1 d27b93c1ead3741df9da1af0211c5f912ec731acb58fd3978f8d9d1aaf7bd673 8b999a626964a1b3ad7d83e054f6e481929712ff1cc618c2b0604bbd85269c3e a4183b33581df5db8e665b4a9af9b991329fa0971dd9d9688082a4bc7041a55a 1a0678bc2a6ffb97ab27c044ae0b378cf26e8436fb481cbf229e49b5f2b23da5 f48a440097a4fc5a1b4fb71a2753a76cedb700ae11c251fcae9d3635e0a8f510 13d3cba6a16e941cbbec1c139d68bfaf28aaa98ea4e5c530aa4358bced1792b5 1397a6dc2807ba69dcce0b50673b0cd084ca516a0843fde4f12c80cc4e115e09 ec24b0a12ecc488ef4eee8caef65f4ff0d0972f5f6b715584ae44b5cc76baa82 2433b0e8bc6f4de89fc27cdebf70778a05c8a0ed586b769092f07119514d98a4 63f47ef84253b3141843eea96705e7e5f7f1088738b824f268b60a509074ec30 523749721ffd096bd2b59bbd660ba705d8299b2adea8594e3b0f798db62fae34 661b99b429695249da9f93286fa8c24603dd143ab5d8997285e1620a245c8a34 180258fa322f15d1d137e4a16204ec2a5c7535ddaf0e5cbf4e8332befbb7e417 6daf6a40aaea082bb0f17689a8965bcb00de979acecf7062dd5ceee7f8aa641b 99b94f6fce991e848cc7b7b0783df55c1346bbe8f1e5c55c1301c12578eb9dbe 6a9ac7916a13ec87e62a5958355558b4a90f405341c401c565c8d4369616263d afe3e78e5c0d2e12f4587ae1366885af1d9d5bb72804ef34f2bd1e00f340c9e4 c21432673f819ee83455048fb60e8d206a2772a5af7ea0da1360014bc433737c fea55fe9ff5cd9827ab2427b7f8fc152cf9919acf4b34008daafd1aea6e8b34a 7297f754f063878f1866174e3596db87f4125ed95fdc0c8d38e66a0bc62fa5d4 c99a9a99e975bca7954ff3455c5a49e1ef63cc4e2bdbdb2d13a7fd5681fd886f c92e4da183f0223cc9efda615ea4ad9c6ba7f5e5f962089b4c4d5dcf960485ea b576d94871dea9750f5d041943df84359a258969ecf33073853dfac422afac51 6557eac99965969ad4f9a371ea08cd3f0bc79d28609c3e3f83a60ae18f07e401 58bece9bf2ea33cba9637b8068829085e8f49b10811b95fbdab6811b714d18a1 30c9f2d7afcef1223a306dcc49b8af68a9170c5c7e8dd9db7634f147be987d66 1dd79a30fb7c4907f212949e30956319d5bdf55dfdf6a33e376b0621c8e9124f 020d53c44086ec6e46c8fecfe124cd5f670629cdf05f259533292e6be85fa706 52a420c1ed18d2b93e40d44b146291336ba74383f307d58856a9bbc7da7c9f53 32f2d55ca776eb9ba2ca74c56ccd25d3db3209749f8439116e9326213110f74d 1692a8d00f2fbc2fd84d34a29c26535633a9d66bcc4ef33119a04b764431ea65 f0836f0fece2bef19f122c351007ecd89c6694c5ed29e73fb17e02b11f431da9 bae99469ad4344c2b4714bd4c6a73231cf6832d53d60de43c37bf7f624fb2e97 6293a0496a486861717a21d482fb1dd8e760682acb2a076180e0387eebcb817f 44503ef1cbe189573243f23a453be59c05c03d9282ebdba20ef22af0b2283834 5d4c8e63b02263c95d75ad652adc87dac7888ec782551843016387040a79a8f7 765cf5b07f0ec126bcc1d20186b0b0afb7946e42a56b154f520c9d7303f76d3a 0095d54644a1193aec9ee2a01ea53ce558fc7ff08c7ffe79589fc7da9c618973 cca610e8484c4d29aeb54706aa9e9772700703325f49dd2e6c235232c13ad40c 7becd1d383a823e13534144a01e09bf6071ed5f1b866775a5815949d5b4c2389 cda954e7160681b78016de20b01477a67dc19bb92198283f0de5da9e69ffb6c2 4776392f8b905ee7081effb1afcb46795c583753b0d06b655aaa152a3384b3bf 610af839c5c6fa2a94b1842bfea59b02910560809edd7c095614b64b2fcb11d1 14640161ff016c1f0a1989a3f4c1745598b615a15fe61d417be695a38e77f26f 67b76fa2da2db806d28f5c8c26098213f9c82260834b325de0ec31ce2f17acd1 ad814d38b9426c3750c0932180960b1350fdc2670334a3b3b1c0260c29a0963a 3a8d72f0165a940c7b68eb1c5a1d470d90574b23b90628455091734fca05a06b 98e5b6ea7eafbdb52b67b1a34f4921b94aa7f82f78de5a55213964dd22c4ee3f 2a07481fe1e95ffa5d6fac6185554a525eb581723b7c4b20f33c3674e9709346 591d965f955feaad7958ca5bee467efaa57f6c87ce6d8a226fc201d5c74b1136 1d30d2f49c1b3bf984120a6144294d560261d91a6c947fa66dace8bf2c85a2aa 899128b83e0a6a1fb72b44ef7e77a8b490acf100dcaed91d3218383858a6277a a8de6365c5c47936f9dc88ab7840644f2a89b98fed80df2515f625a60e3ba8d6 e61dbdba90eb9bfe655328d6cac1cc1a1ec8bc343b063fe5a2ff9d2c862f192e d82cc59da9de855ffc90e7ac8995912e855635b1c760d2fed3c9c73b02e89af1 d6dd4e0aa902e95c52bb60e8a6bdb88db93c9fc996d5a8ce927f14bbe99eaadb edceb88a5e15677dfc1e8da914c47bee5e57ca5c1fd115f6634015a1498f270a 14609b3e61b49da527d5f2b09fb0db94b23c92bcca65d74b653199bbf5cea1d3 f6ff2ba6ad8fa8b01c5b96fedecd7789d757fc4b507687e076891492852d4359 e502fd20d726d688d94f07eeb227542e633359c3617ec0be5a823d87d32dde2b 78686dd6c2d3fdca9f99f23070ff502baea41d5e5cab7be2892bfa842bcaa37b 1cda036695beae7bbc688193a18056a13c7741575fe1d96f91f1f41b19fbea6e 3ee390dbc3f28073cc938622d26a845f4c20fc91ce46dbe50314d8039b88ea4f ef4ac1da02449851d8fb6d4a005cd6dbb89990c3268fd1c114f1624f33d055d5 f2333045bfc6a31135a1603ce9141264d62669f1449b86799426d09cf94c8cc1 48757e81eb0a8d94e5a43190e132c0ea19ef47c50116c0c596e92499ab131e49 4cd579b0ab62b673bf2d626d4679ca1ad87725b6e08919e1d33d1ad17cd42ef6 3ca0850efe491dcecae8190eaa4b8beb41428d2b0a429e1536f263928935482f 7eda9ab062443e7fcb8bd51c497ff0a694ced0b3eb7b6a513ca6549865b3caeb c11d1397bf7b885aaec1a213e3921a5e93b1c08ac297dcd26db6eb2d5be452ce d08a734b75e2f6825450b9ed53731667aa0c2f4f40850b483707a255a5329d2e 6e1b2e70179b094d7c5778ba4dfaf7bb5161d9fc54dbb915df2eebeb625309c3 052f97a1600632b8d464992d5403ee6bd0bbeabef964aedcd42f4c0f7c8a7709 c5822a547b71c17edf83554af03e495ef3e4eae3121967b7640c92d5baf59bb4 861dd223da7281ae01e80f384b05f55d38454e5e1c6f81f561680ceb23db2288 6e85d4894069684889e3ca16e698836a5677d3608a844fe9e3f7ebb984ba5c5d fd5b4ea8e13190f77a017df9f83de0d0a504bd5995b8d48b7ce1c1e7f6dc42bd 0d27a8da76b9346533b249a1bbbb10300afb0e7ab75208fd3e028941637691e8 504b7fd0668677443eca040f318a0fbdd07bab42445560a978f4abdcc67ad35d 091e4418ab9f39a7728305a4151ef50d799f8623d5e62b8d372f69f3b079494c d481c8fa4d23711c967d0e34ba2ed0d83745522ead235886f2f0766b8f09e416 91f44bc6597bda062da2841f25cc0b1de434cb5f06ed87d1253d2b6caec8948c 4386de1493c67e631929af033f8414fe7266efcf3077b415a2d5adf6f1e8fa62 d7ffd4e071fb8f4cb38400b51f23875fd0ddcd33fe81cca849b805d03c3a8e0a 569831d5a2c829da7354a46172d2c80c83f03155aa4d916874e7b62acc1852ce 02ccc74ee724597c6c96b5a693f7f2898e42d1396c2120680162f7c849512156 960d7bdbb3cef6fead5b577f20394740bbf3e8d02e3d38009566d2d9224c7364 2c50278348617cc9783a92d2dbced68f0e8665197a69c8c70d376629ea5c3653 5c414a1e09d41527dd7d1195620da656cc019450e74618b6465ecd90cd197c87 923c6db4f6b65212825620a2f3fb9ecccfc045e2d7dda95e3446d653e2250f70 83be817b6c27cba07143aad7a35850c14d72c0871afd1c412136ff969dca6d29 9b2bb41e17e1dcc07cc6a991b9ce2032ce9e842f1bc6a0afd0b15fb4bece81c2 b2b18e3a79a7eff110260ed5f4afed69fd7da64476cba18f062b0b7c87bb3ccf c7554cf7f0f2eb211b5fe4c7c05058ab41d2bfee21f83af5df820f2ea04aeaa8 e8886b22bd56f280895d5a9d9b793667930c3d98f855793e08dd42b972a07123 0936cf9daeed1820d7fe50ce5381737d665effdbdfed2596700ad4457bf70fde dbe242481e01fa3f0d19bec9a49254819d14fe5396e7e571dcc15bff21e28fc2 1ba18a0edd4f8d585d7bf6964391df5c18e9e2070cb6b13b7a6c38a0e75956c4 0a7a58da6e4ff973f6e4e78a009cd4eb84830bac370341343f6dbbda9be5e1ff 4f524ef2d9f39fdfc9281dc820a5d988fd193d459a2b07d57974699781b02410 d4e3b9792bd7284a5c76611b72be1613f900799380b83197f478191c54c1c62e 88605c4cb8388191d312d42e7209b2eccd5e9ed5f7ecd25f96f1f5dbfd5b4015 4fc99ae942472c520f6dd779d8343636b9862c9b0f2270ce72eaa051a92c9077 bd97861f4b67b11bf968b176aba7438c9a16d30f8df4344c18a00655ba369eab 162b8330fcdcf2cd43b3cb8fc236a2628215ba7e2d0b7d3c76dccd677d374ec3 7644a8e6e2e46ee30bef8747fd8a7d3d076da8622bbf13638322a097a8a83545 9a04cfaed2f7a88695eedea485e31a6d58c496463d8a95e94c1eb5fb627e440b 2cf636992b2a6b7614a3831e8593ee2d20464444102ec79e3d47b962540847da 68b50c961a28330c506523769ed6c691dbba4a0b3d3fe26a86e096e602fa56ef 9e20a79180527ac6784244a7d61cf57cfe0f7c4425df0692cf437cb0434b7ef7 f208968d81dfb0fcc2284692aea7b69e416179e17788d2ded496f24c7b0d4474 b4c1b9229b25d80321e2540b37ca0f85b33a8726293a1c146663c7418b6be2a8 019121625dedbc772b60fc0417e0989a09eb98c05ceff4386e3d83f8cc9d20ce 8149243e9027d609d4e595bd7dc3a959d78c9b2086fec94a82c2b81c042598f7 2f4ff2ca59f46c2d346f9459e5ed4d79bfa4b0cfa5e5307878a38ba5a8b5b079 e1394eedf830ed8144bdae1a4595f3190992ebf659e80a7ada3751c6fbebdca9 fd29f3bedb57868be43093d2031d875ccbcd60012b62b9a2131fda7c4deed1e3 ae539cc34255723ad24007e3fbc0898913214a2e92e19b3af73d083d5820c3bc 7a75ad240d8445961925fe6a3441fd212c7f68c39bc53ffcbf5cc78724329586 4e74db5ea413ab9ae30b57a6bae0d27776f96b4f00df171197ded39086d506ee d5fb5dbc116d359b2b1900efd66482d5f57e1c66f0017108227c2b2e04e79b54 2bccc444b2819025adf6b990b1952a0d3316ec044ee7e9f0864478b21bc67baa e2b18abef008a102392b8f5df633c1be46889d977e6c81144d3a14d160fd5d36 4e8996944fd7d79d7139999675e8e240b2068320b5818749c23624aab03fe3bf 2dffaddb414a78699c6f57edd38627f47e30bf1d4820294f95ce4fa85b4876b2 dec6b46b0787f2cdc2946dc3740cc5dbe0e7b39f46992194feb7ddea2d5f64f1 d796b176a4315663823b344270bab6e07aa4c4f60107d5f448d7d6b7f996dff0 1738a7828bc77b5ee0337a046537b396208b1f4d2a9ef988f16330a6e8f13ec2 8766dd93e5b3372e172d3fa30a1fd01b9aba2a503729809d1469345ce96d45fb 7cdb77b824913fdf3c2607e115dfd490e01b359553396f8591e4b69a59dbc5cb fe06c950149ebef06ed84ad1f05042110a98ba632ed87e26ebc615795367d642 a7c6bae0cfe727e658ec874ae901d6198957c70dc2a83798f63fb9bdd03064c7 d1cf11c71ef8bdbf8617346ceb5732d233252cf80c2f5b120a34004839ad4431 d3b9f822f8c6bbc509568550c17aa8b2a57c243d49fa9769c771bb045569cbf0 aa2f345b738e5653d56eef736bb9b6c8ab13ad625e8928462f0d97fc1498fe06 5ef754bc34d6c6f1ce7d4eac768c79f92d748d3073cbf19334b4664c52e3202f fd893ad224437382fbb64d2528312667fed17249dd2b9d8532c42ea39f90740a 5c169618856ea3c6f4c277fdeefa31393f12f645d77c7104660cf0708aa1d5d0 b210da8bbc527c9fd5e2d30cc235dc12ac812bec5f15afd188234432a711860d 387f02cbeed23d245b1db41ece372e60c3eccb09f5f937dc1fc3061a2c6f3655 7b93bfd25097beb33c4d7e4a839b6a648d9f6d18fd151892f91254bdf4fe3be1 22263765904a9adaf3bf07e162f3104dddc5488bfade289454c7d4f86abcf205 b630c77081dfaea21826d86b9c415317dc8ff6438375d268083170813c03f543 0ed50d2f4ab70579bef51a94bce0b7b217a106983d027452bb18817ed52fcd1e 2c25c2bb744cceb3ce67dc6e952af8b943c822daecd18a76e9da0f8ac4a4a080 64665f3c1803322488c18effa49a7bb33e43beaeacc946a0fb812cb694283a0e 39e687aa50db8bf854beebfa9e60c4b10cbb70e827e59308736f72d89ed97d0b 92b8a76dab7c6bc00518ad4db663db605c8d575f319b130145c6baccc53079be b5f7224dda298d1952cfedcacc55952e41b9893350c6f79c67f1a4ce26c679b1 108a0b736eaa97ff928b9349e28f7235a8d8071cd82ddfa7c9c1e02efac97441 bfb8364ab5f8db2eb7a3a3d4bc33ef57209d8ee7b01bdc251d3c9f9dd3c9bfa3 140137b34f0927be41e1c32d6a4deb38c6a271a22cead62c4ecd4e963245542e 1ae13004802f959d0b5a1104ee49c709856f9dca06c78aedde8b750c863aebd4 0570bed4899889a5151985e526619d14215bd04eafd45a2143044b62c5d96d1f b6c11fccf11ac0bcac2ceabb74b200ee15572bf036719898fea4bb806ccc4f59 906fad15b88f49bd98b4a40299890b6d30c0785046ec4e89f5ba0a4351ac5247 162b9dfa9d63d38f073d4cf0728c261dd493a5ebdd9fd8f351ba06ecdaacef28 a7e8c1016652bc8bc4746daa36abc65965067e1102bd3cdc76beed7e682d8175 491a888200c8eb47515ca6873300f7c847ea829500651edbf5d49415401d0678 97c8ec186075c69922a0d4c129746f631aef711b78c2b3cc02ef3129015f01e1 47ccc740a383880a3dcb1d62b60d661f13e8cc8ce14145fef9633f8919458f26 d93ba3e4a89637cd2a12b2a3fcbcb9ba40075288ae3b31bfb77a9ecbba48a95a 96d2b8ac40a674ccd4d1ae3947ec8ca6071fb5a7807a2cac8b2ae616afc2c07d 7e07559d5a58f3a6dfc0e9e0677b5a38b056e916f72cc66b8681845b194f2f8c 0872696c170f6a8e12d3ca6bda83e72432fe5e0b36dc087a314be1e3ae5b4c18 fe114fabdffeddfb7ffafab23c294f56703218f675e3d7c72712fdc204b3b024 6a6722045e9665d36c053ea1deeb56d4118297ca248542a33a771188c44ff209 01d1036cd725af5831104a15bb34ad191b3bf633376269dc9dd64e0fea7138ce ddf89b830b872c13159d2396255b2f5778ebdbbdff2d5ef34a692f3f98b46a20 eaaba6ec96a93c8967a5b30ce60d4638c3ff93807e168e78e270400a4350f6ee 73eb907b15fa70e44403ccbed93be74122bbea6f5cd2a6f7623999a6da75c31f 0d34075278401e5791a6c8b52ccc36566f9e060cb14354dbc1debf8a4b87223d a0d8fc0832badc8919227663ed5062637dc502129704b8d687e11304021effd7 c507ce207d76c2824de5f5d0b6f354a48651979e2080f0de864672300aa81f9b af02cf1b039afb773aa4d25b1a183bb57098868771fdd60d66a28454b41cf470 5e2cd9227c563d12566dcf6d38bbb0a826626c9ce94fe1380fe9a5a21bdf64ee 0ada2f1dc09c4c6c289b86e75f08b02166f2a5ef8b04759a5383ea9e0ed5f53a 3628201fd9858203e1c0d5bb43c1b780b150699249362a8e1807c1859256c977 c21bcbc94405a0efaedc0e6177580a3d750d7d4eb3831a423217d65655f420de c5ce9dd25c6f7b10f8f6aa77a65a074a10ff97ebca2ac5ff396435692bec953b 9887c52b0f90b80455e2a78f59680659984433b84b922cb5a224e2167f12b9bb 87d4532f7379c1399c6dfbe529415c755c0ba12a5d1e2044633fadd38bd66608 74e5be999123ed3413184efbc10cf5663d5c6e4c481f06b81552b4bbba8f044f 7523cb84cbdda664933e00e59c7f06898db06be3d3e8b2d21aa72fd38a392c5a 83430c314dd2c3eda47b96b294e870a292edfe278f81f88742e72888f23e775e 53e93f1ea0f241f4e06ea6645ec48ef29667d1e0cbfafd2392ac5528eb86c6a6 acfc9de27eca8db2a40a9603f782ea6b17fc04e14ed54a170620733870fa75d8 c68f32205180c3714357c772a39f3d712f2cb50706a3667c3f4cac433d272c10 0b8d33d56dca849c8682f6d7f1c1c8383da64fcaaa44ffb18c50030a92900c59 112ba1409363af22669131d173c408910e092569a700323f3afa448e4070e7d4 aed22e1f39324a08f7a0f8175de87c6176f9d89414530b1fc83351f192b9c8af e4109deb3688eb35bd7b50ad39fc2e257c760212b7ec49c0c4209c839d6c4f32 92a7ceeb2bab691ea03fe71d05973264b2df9fa3985753c9c3b3c497e19222fc 221b7ef8e2ca59dbbe87f98c29f9e172a7da6b0632f139cf92737f146b0250bf c62161356a592832425ecf0bd3dd9d6de647f3b8688ff748a12b5f8350accd1a 59a726998fa05ef9f5d4d30892f3dbcb46028e57a5d1ba409b4db63d3b73ac65 4936a57c37632b6c012c51792338b853e307ff59581dfb1830d7bc98c5f0f5e1 16d7a2a94b90ea766d2e2051cdec4b53639fe839cef11fcc8255a42abdf67d95 e0beab580a83b52493378e22db37f152badcc43daea8eafaa0630bd61356d12d 7b4c39016c2e4f3b783c654d798c6d476616184ee2f8c6044b68313ca444387d cbf87a09c05e144b0feb9c7cb057f1b6efac3a98395ab9396233c1239585e866 c77d5c776f2dcc35d1ebe9065fb538c84f8fff78f7f04f99e3ebfdcd5cd219c7 5cc61b8b9c5edfbc379baf378cc7a79a4511db441ed83e67936751a4afe4dc85 7b96bde5e29e303b0b3938b5fd16dc880af490167cfa63a2d5394398a81d2f51 321b4addb7fd012f1550dc615f2795c1267575e104397350af62ccd0d92883d3 3060872bf5958f6ea4987a83155ab5a731f22567c24ec0e3842ccddb85e84f77 0aa313f06b228543372bb2968097f0c4364ef9c8bce47829c5143bca4c657bdf 97b26eef77948b6517e34543b6ac49ccb10a73197df12a80d8d2c931c65a96dc a3c7f1ce75d2806daafdbf9a84a3dcd683d6036a3fa23bb021dea80652688e9b ae9ed934bc02102a9aa1cb3043c8a3363dc48063434b64212d46e1c603904a9a 736602eb30cb8c92d209ee11d7a494dda83c7e959f431f27f1a62b2144e55355 2af6d3a229434ce2a9bd9a773199e865dae5ff7c9ef9723adb2eeaba01fba600 13baa2fe590e4f8551f15fcb079fc7a78848c52e8c6857cca12bac1e21720d43 802abede2928574ad67e87f8f87cd0dc11170c0d5a824da1009b47acaca4c99f 0cb867f134547c9391481b1ca822e44892d95466576284d769f7b54d1e1e53f9 a493407ff826cf85b8753fab01dcdd130bad1f905b081a78551d0bdd051492c1 1e160646f3cfa0578478dc7cd4359229c3523adb0a5160333e8b55340e79e5fe 4aad356f82b64d3996ddb34552e9e117442dd32042fb5f6138a54df6d32e55e7 7c75778d011983c2e113e3e5760bd2452face7039ee607003ecd6592d5c0e6b9 0d68fe228d816fa6499fbc81500d4cb90398f18ecb50b745b0cc1849be099b2e 505196f0b749c337f23f55add6cdc868679c706184469849a2c39df1ee683d47 5325c12c4a37fccd2e2d8229e728f79c54a0a54f21facc7a32d3378c42d1c7fe e04b4eb64cd2dbad360ed341bdb5496826fae50a7183bb534640624e3e07a55b 84d0857adbdae254950ed623442eab6429ff14b724b74a126a5b68a09de281d3 9de646ba38e9f83ac4c57d14d5fb7ee6fab6f93a8b8275a3e850569fa7facaab e30a8a03344a82c41720bb652aec778c5212d3ac66f1cb0234c8c5f5c0c4081d 71d6f15cf7dfc052a862ce4e1392ae901b5aa31c1ec07517b328bbbc0d01f11d 83e91590e6e41c0b61698c5b7763bee1ea5e07206063793c03202b71cdfc84c5 38878d47177f8935e2c39fd76d68a749da416996d0316364254b88ea84af2521 d78213f1b29821f7de2bc4973e64b073f8102313be98b891092b2552c1263dfa a1e5e0af1e32e82532273cd78a31e103e6bf65db0807a14010af37db2d7251c3 dedaca121cffe1ae8fec4f500b8e46fa5a72b28b0e424a0a66a1cd60d010fd47 c8c8c676a51603d6382771632123c40c0a4e166de26a5ddb2a3f4bda8c6279eb 61ef2f6e1c4c13e4393be753c9406fb439b896d4c114b91ea24fae3ca2aec1de e9838061c4266d0b423180e16c5811b1d2648131aa72682c692a0047cc68e0e9 2bd8ea3f3cd2db6638fda8dceeccc7ad11e9b48fea4032490484ea91f39d581b e09c638c5564bd060ebf8dc388bc24c0797ee5682e2478687c36f0b029c06443 313f0e382a3ec6184fda7d5c20cfcb962068ae98678d76f1c72d623c21827061 5c11ac9c8e3bab19946911fddc26ea8bfc93acf9309ee8abef8e05bf651ba8b4 d7ac60c95f821e8787e921c8e3760b46414330231ac32de00deaaa6517deb201 196a6456bdf0963c3541849a68891daafc8c464f3f48724eaab710861c0509fd 084946babe06132089bc12253d86cc5588bf329c0872fc489178001dbe87c5e2 d9eefb76f5f697eb7181e787a71fd1411f051343d1bf1e6bd158964eb5da2aac c4649740ceaa5bbb7779acdfe125ac892c7ec50230055cf27c017a53a508adcf 4b0c16ea464b20fe18f49ae0abff62297a9ed6b2f8cb4445823828608afa517c b72a39841462ab8fb7439766baec9700f878b59138dde7f6b784f19dc03f4cb7 f8c30d217fe319cd2a18762a350f19ae7808545d4cee2c3c4ce5e434dd6ab382 bb9019c037189421541ac3eb9cf7cb6c80f3601fed70b76cbbb50f4db2592637 ae60beccc0c6432107a8ab4fafb1416edff61c6559f8b06cdb91eaca9681def6 c13e1c8aeff93b330dac2ec05f48ffdc9340e40fb16d86d451f397f20ef906b5 11a4faae50838657b78b5defc3ddb66847742ffcf37991d785bca68271e65351 76f0222324b2097320a3c18f0c921f8b98dd1ff33536a0279b651f8223b2abe2 fdac8be5b8b3b41c8d3561ab62f7d3b861f4800d28fcd7d95c2018406ff74707 7baa339bb987c06f86003571ec1ec000f85064726a3fa7a87714223aa8a5248e b38e262265f25b5524432e1fd6a3cc59e9c3a355808312df19b25822a5c579b1 44febb4d6c67103e72a872e74b79c4e9a21c33c1c5db48e61fc4649f808bbf12 08a22880e212dd1a13d0d6781992bf7459fd2d0a1746dbfb60e5ab1fc1d13910 9015c36923785ddc3b1abe4a7864973640588407c70f5bcd5cda44ef3104cfa5 64609b1a4e800d6decec7cf52474a8e9a93a9909e9dfc93853da6dd2a89435aa 66280fd538f57182e32051a03dff62f7879d76f06df918fa937d4286cdfafc60 ca4dd29138eecfe79b97b1b8173a31353c8bd8f00652919aba3291a2723ce496 13eeafc4a5abc8b83539ac0ad05dfb5da7a9a5744d28bc17d6f718407fae3b08 fb98bf6995c17d14f35f7f2e3218bbc361e7e4e2483301b9b11fb3171082efdb 4e867940a7f775220d7d7b4f9e61054d39b50ba4c8d5a58424118bad45a10a06 c5c8bf8b12a9067c8db1eb057f32a7b3ac3a02a464f39a0d98952887551b81cd 45a5f4a83aee7edaa64b582c1b4ece36f9cc3b4c4a636ef6f1f8437b9c63f7a6 e8d0e5700bed73678186145b7f674b728d68c680b9229e49b5a082248f512fd8 a308e28d2583179716ed6bacc56d61fc04a28198aad243cb6c57c024d56e8688 9896aa9821b95fe158f1fc3f5354f2ab854aabd44f06cdb5e2b9ce06b7340d2a 2d88a8ac4af26adc52c3d4a54c49be2bb0dd590fcdffb6bd946898fc587c6bb8 a4e30720f6114647c63d0a1009bee905ef5d8a55691b00bbf0ae748196f901bf 02f1785ad7a4133dfb852c002335c33569c73e550618fbbed0353578fc1b5308 7fd8d2867571e1ada2784748f394d482397034708f44978125310d98e96827ef c7ccc47bf3d982fa6567b630f8adad2410368c2998a64144183cc1bf10074774 bdb9dcf7e444e5ca5ecf0565d7d6407b0d013102a88169746af3cff4f6ce1d0b ba39f6765a4f868797bc123993177df29e318bcea29239f9c25143ecfa409259 94608b533c571e06687ae02cf698a4e1c596bafafb2e8e9d64f079b18c15517f 1a7ee1ce556845cff8d4fe0c5f9f1b58a28d8be7d5047ce508e5c2c048bcda1f 791795db4188e420c37c839a495baab2e3f58e0632cefdb7c610f060e18f61b4 31a67d5ee9b6d353ee3f6853be3cb299bc7529b0759e5ad3094123aa53e90333 5da8174e6a2564c5e680ecf945d43d133c22a921312ae5c0566939a3e245f634 605ced1263f4fd52b5a6081c844965e158cc327b2c68edf182b2e13f552ad3a4 45c797e7108cee5f04d373e314b25cebdac352e842b8929f948573c0bd899c00 1cf0396671a5ffff43c24f1d2767d33d31f0298539a7bded3f0563a52931332b 7451fcabf01bf0135dfa4ad66756ffed0e3e359a8f0d42e373ae9558940fd3af e7b2ddbcafa762ff3d8afa00bf9154e45052feb39715c7a629a76c85407ee069 df6362ccdcb6dd2a6eac5282964d62ab06c1973e31bd385c47d2db0c0110db98 b3b7e3f590acac2207a6808d3e5975637a9914b797e3cc17264683b747921d2e f8ac37272d68cf050e809e3e90d1afb8a4666c3fba80ffb505365bdd4d91f19c 322d10478045a79e85fd4a05938de36beedef4f3d397505216ab2d30ad6ec626 24b85bbde14921faf7e47cd2988873bb3642b618331014267fc3197c079ff8f0 f1532b6fabfae3d4ea215df789600d61dbfd101d344e286ca65878c5a1c42351 9ef62013c281384e7a1e4a7cc8f1671d500acbc0bb744cab 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTI9 %!PS-AdobeFont-1.1: CMTI9 1.0 %%CreationDate: 1991 Aug 18 21:08:07 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTI9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMTI9 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 40 /parenleft put dup 41 /parenright put dup 45 /hyphen put dup 48 /zero put dup 49 /one put dup 50 /two put dup 53 /five put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 65 /A put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 73 /I put dup 74 /J put dup 76 /L put dup 77 /M put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 121 /y put readonly def /FontBBox{-35 -250 1148 750}readonly def /UniqueXX 5000827 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65 66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7 695aba81f0260cd5248b9e649cd800bcb325468c79ffacb9cd3036f2ed7bb65d cc883aff8d6350d6e8af1a9c1d2d7fcddc4c554c7e350f2420586f43e2124611 487cdb176d453854b51cb8f9100bf241899bbef87d57f1135e589813995c4d86 ce91db2b3757948f365186c2a4f32d845f659a8e95028f9c0168851997135c67 ce7654f2de4f22f51311aa78f440e5fc2c58f6df901fd071b2d53b2697bfcebc 43fe4508828b4756ebbe1f3e8512514162b3bb44493a65f11ab56deaf152fd01 bc8b642e6021af01998edc76b6a1929fbb9fa4fd1a430bfd4464b53f75075f66 c726fc037fc23cf09a178ffc60908f77d8ea9dea79c1e21fcb5a6a994e5a8e5c c6d6291891df7695db58a2dfcf3bc9a17888c29559ce8f37dd35c0ae35def3e8 daa6d8d574f457b0385efd1611c048b9ce76393fbfa006fd23d742cfe7016035 5fe95302b129a824c7794a9de47e463a7fdc42fd72b9da3fabc3e65d90258ac9 c1ecbd3654b103a488715f9e0e649b57146b786aa399c6ff39f362816306a1e0 ac83a4c83410030d740e15165683e843f69579ec1824c36935ed4705962f494c 401400303b590614e5daa8dc53fdda083fc854e535fcd575b38aa43d3d5c4a38 d56bafa926fb9e7fd69be1af2b502849500693dadd5f00b3185a8b18a0b64f28 9f33f5f1eceb14d6945a22d0def259076cb9b11d899318852053d98c36ce0a0b e347edaf1e4e777c303b4a051e3da7ae5140ce9dfa018a8669b0b551696e194d d54ca062ea1ff406ca877790dfd1dc18ac62288cfff849d4a142cb1c1ac5faa0 ae05f039e3cdec6ede558fa3faebb0d3eeb981e561fde8899d5d4effd8610a21 b1ee990d09836d75ca7f8adf56ce3802bb45fa9a0e9449fb97ed1933f3686923 7d6f9b8ba6e7ddd9b21bc2e53af56e28c2dc8ae41f3869a71f23667ab4871f21 2c30e98813f2c87d6695a2a72e27852dd3e4cd0639f11381359c1b86e299e1e4 3f64297ab73883ef9bdfd80c722b614e9879f78476dee3d704d1bb83f78f85d7 0642f727d18b6d9970353436d792e8157646e84503d9130bb79bed1eb1afb83a c935cf35e7ed18ddee0e8a8ee7bc12ce9c8f1ae980eafb965fb875233aa2c97d 2fc6d91a37827ae9f0c75a0c0a1d744b3e25587d7a82beea4d02181bcac48596 0909515225f7a7ea59a7062ec14c57ae971ad42fe54e1f0400dddbc6f7893966 47e1ee0aed5895302c0c88262f064aec06c99bc896f363b6c9e209cfeaa97e54 3e8d1014e2fdfca3ff9b6f9387130836b0162c5f8f804882b1bb7ddc78ffb70d d4d8b5e411d076a1915bb8399fcf37adcbfd127c7c46473e02f737535535bc90 1766c0ff0f7dfc078b07465f766a485a3b0d1e8dcb1143d6956804615ab2abc9 daf83ca2b9de326956b0c0c4a046033f7e3d628bd54ec4c28bd3f3cbf974d4e0 5c6f88573fb984ee1c14832f913555539266646b3e8b81a68d7db539724e2d96 856a8323631a00e8ce2bd689c62a2d7754bad959cc4d6ca4c704606eb754c8d0 05c7f68abadd04d0c5c424fa336488ba35e592a42c1c9eb1f6c82e3fbaea5e9b a7215592fa89a433dd28f775359eb40e8c384bb3922c994c386870a295ce952e f96e0ee3fa3c526134c81a3505e5156336bd6044a3bc785be3a6404060b0ddc0 85db083d8f708a1b562cadb8df5d48b4de1ca09be98f53e836ba07ef84672137 febbb60b69f6c5bdac3c32ec9406eb195d876823d6a25d6e457d607150619c68 f0315520e1cc87cfcafc15bbaf8a05232eab493a93339eee83dfedb2d76f7d8c 711843f7b00053448cd41ce1671d437c456192a52e2f32620fc4555f508f7edd 58d51dee9c6c2b59b950c2d73107bef87bbe7279036b070331e83213484f4f6e a493ea9613751ff162fdd14bfed27ca24490898497887c15eabc3ad7e8273a76 87202fde837be4b0b1b2f03115d8141056ed98da943462db526e83ba0c1318c7 1f16497ab42456fa6f3edffc94bfe4e7c2001c9a72f01874bea0ed91a859f908 4699a7d3c031e782f602bf254e99940fd5d62c50f44d45fe2f117c5fc8b9f2eb 36135e0944dab53878d9c2fc70f787a6d5191b0dcb2d7bca83b7e581d1bcd598 9f541066ce69a3551f1d606d04a8e083f6fa56cb0fe90f38c362d8144a8230d6 bd8c884f54227f139d77f25370d6528942362d280a0ff5fc78fe568b5ca32dea 5f8c5a566e47cfba3fce9c6b81bbaf88334aa5723e5fa6c4398cd860fcdfe7e9 1dda2482e369c9fdf11e3fd7833aee3de7ed8ffe89de8fb64acee1e0715223fa e4b1882ae656cd0848387e46ec95edc6d57202d2fb9f0f9b26e0367bb279204c c10a149f2eef6a9ae4cc5407b3db0b2fb9c3a589f9942f17bd472acee270f211 1c43f7642ccd3d339ed608c694e51781ff742933d2e599f6d6e7c55c93ee0984 d014605c41d119ef5d30e5606af98abd67f90125c914590e2e18b735aafb95cc ad26c7ffb862b001b9ee8338736d6bdcc5376aa2f526fe48da3a78eb3c28c73f 9c847e34edf3cdcc77398837ed4386c4e1109f385131b6f62ee019a7e25d6081 5b4604216a7d443abab4c096f9844d900045d24b9a5c0ac4a32b1901b8317f71 2e38d5c327c1ad1a881f27a49a961f592d1b5c82cb77e9ce666823ff2694c8ba 32a5dd81e3e922ae5230efd999cb77bf0eae8032651affa04cac0c037ed0de41 b503326994811d705b40a92a6bf64720c14f05b3237aa60199f52fe45d2b01e7 1d62d36c90905d682151425fd0cfd7c4c393de4f79b3ebf3ae46f2cc02488669 eea2328db132a828fd4068cdb2551c8b5b9ce35eb11c1856301280124c1a6754 646dfc7477dd91654adf864c9b0e4ab419810532e6e7d809dcd515d763ea83aa 97f0ec64862ea1aeaf4f5c38e6bc64fcaa453d50ac0e5b614ac330e4c02802a1 68669a1821a07eb17fbdd8b40aac108829e1a5a307dd9718f8dd3acee337cab4 a4fa451022cdc0b19f7a969bd704999bf102d83c4695899855f28906bc3e3319 5e20d868c653b9ffcb11184c355d85e35b17c837021add51cb0de027abacabbe 141323bbd43fadb4115458536ececbd8f6fdb7ccc952aab03af111e03dc77519 526fbe096cf5e34c895a30621553e90fb536d93b2e07002fa5a78357c207611a 427b180921c1c05b8ca41796b04cf2da75082605d169588e026dca80b1835cc0 c353474c6d413ac7ddb42d67f6c2e72629f1917d9d77a8eb8b8b9647156c3c09 47fc91fc2c729ab1c3ba027b72ca1d7677baccbd88b7cc881707f5ed1cdd96f7 12f397dbc861ed74cf3d50db78ffd1c48b80b301f08716cb78399ac11d250e63 383af26053d61ddf8db4e96764ccd8ad973e42c7bb39069a59e92c14c4efc683 c0c800ffc32ae6d6d81e4f93134fb511ec5bc920fbb63525df7a909552192b40 596fdabafad36f591b27248983d0eed163e834e72c391cc38474558f9384e7db ba0ef297ae749c027e2814d204ea62871d03219371f66cab7e1f3b44fc29b17c 768dc5a8652eef4fa41a10b87a6d4513b360d21befe7b2fb766220e9f1459209 5331df4f1136d0ccef2d723945ba3cc4728839420f978674cfbe57a7fb6088be 1525bbb4c36f56987dc6337d3c43d1e9493a80b2d80ca69551321cd5afcf7101 2c3ece8242a57df6a458e33a4375c8b89c1c657b00f2c149af6c393d11e03192 c53e9ec19d9d8f95e46a2cb1503835d3b6c003b9ed17233fb19138afb07935ee d496a485f81643b6dfe432960fde0b46b1c784e7f767d4c06b8b19be4b1b1b5e 580a4bbe27b53cada8f0f4e94af3b3b2ac80d5f735c0fe4d63e8e2c0753c3547 839e5ce8e674c30321600c67ccebec778c5c3b70a9b661ec5b803eb119ed7dbe 5cc3d17cadec36f5f6ef93c08aeda5250faf423555f51f5afae24cd741710d3d cd98e20d7770e30439e061217e0549d467059b60396aa4580a12b51eece61658 54c7627dc5a8c3a74de383abf82b963f7af08739f1bce731ec355f8260f9fdac d79cccdc6496d7260349471aff0e390181665f4035c03cb71cc7119a9a502474 7cfa930e3472223bbc16e2e06592a7537e4a4354324661113de9a51189824fa7 1b44a3610f88407e8ce3b824cd0a801884f6404200771dd9dc5e4c7907b4fe7e 6c721ea93c349e66e597711ddaff3be46f31fbcf9dba08a19211254c971406a0 ed67dc9a9a3eb75e54254a28a97918cf85f75e3162c2a15e8db3fef6f5539b55 0fbca0bb2fd6ff098ac98e7f9bbb6e8c4bf5923da1972e1f196380f6f9ed524b 75393f4d0e16d8bf1b6dbb0baaabe4148a105c19ac87153c1cd8627e3cecada4 1cda767bda63a991feddc4a309cf9dcb96c85873b333d635933c2928de2aa09e 65c3cad3c26b1b91dcc829187fe6e3f762e9888dd91f95f861d004eda20a7e0e 1b33ea754aa12782a824ad926d60142dea5d97a2628e1a431070eaa93491ffaa 6ffde326e8468cb438567bf6ab19da9528beea09de5808c9c5beaabcef13983f 4a2c5dae5bf3f47b3224d3d27f5bbfd190aea72761cd95baeb61729f8c9ec863 7fd2a1741a2fc6255469792d6acdb11c47122ddbecf04658adabfdac25430139 ac8345846e0fa24c4d15f9343ccfae9c920c64bb2b2d2e77cdd6a92484f77ddc c8daf08b5ff65eae27166d9483f9dc6aeb9eba3e9dbb5514b2e6690a646d0f4e f241ad3696661c997a5b24216efc76ea6ad91a49e4de62e91411a6096b36a8e4 ede188c829aae1f057ee5c73fa9f66efb5ee728c72492b118feeeed9e336710f f0f2b379a4200ec112bdee8952a839777a40d78a43fb3ae7d0ab3c97e8a356e3 419ffb064d97894cca88b082bd7653387d6d4f8daa5d81a88fd9ab1a45215d43 136dce3e7db5826154364fb1b994ae04520960c366347872c0a59eb4866a64f4 234d12481a7ad4d9b3d750635005af6c35e8cd8663ddeb72498134be57570f54 3f16ef88aeed32902565419efd71e517b0a964f63d22594a184d9e47ec3a299f 1cacd480fba35500a9cb171d41d9fda585ab0fed48ea9e070094dc2116bbeffa f6325bacfd0ea5323fcb7a016b95bdf5555a8fa2b5fc84a1444ac7d0b08b5834 2ec94da7f093baef9a36f103c03d5b7596e6f5daf7cdd696f9017cca2132b553 12d5641e19f86c24c790a19702fed93eebf879ae298cc59c18b9a7997e3c7acc db6241a936a5e4b8ee5ac40a12fd3d107a38e585b3c609e62c3da5a36231bfc7 affa0042de2277347c50bf3af7d6abe3aa1ce11c83712a86177eee3c51dc955d 1981a3c7e4269f79e2e362ceb9f0fceea5f5e56a7e33d32d20d9d6d173821414 52dad7ff42e5abae31af9f15a22cbde02c2971878dcab11f9f3787d35e4865b5 7bbd826102c5a76092e85e7ae7cfab9b9eb54a1ae2cf25bf5e35a6b0afa99d65 0915ca8e7921b1ba969817ffe5d2d2d45fe66d0e5f18fe3e9ef0ae4c006bb1bd ba09b40a616fa6e68d6a67ba68f39116c2bf774fd597332e587a5605211e9b57 8280b476a2751ef2d20f19592a6c347ac537c171e32801e73482bee3345ffa26 e83f653a7bf5b068d4ee6e9965d247f880a0b3610bb3d661b017f5889a0103e1 3e1238ae2b3573ddaee14760f1f7dae3663ce0335fd974483087158ce3310896 cf79c027efc0d1b7dffce8e2358ed72c5e1290efb25f5366c9517a5bb087b6d2 0f955972e3b1e5d8ccf5bb2fb22e230262aec0a2ac0a2ea79d394204d810160f 36d612dad960c310b7d05a54f0c4dd1aab00e0c0b0f78c3a9f036786dc0a25e4 92cf381c328d878bcffd718950e04bfb17fc7a24b2a69fb01ddd43d3d7a57b2b e75fc44f62ca3eac42bdb9ab25702555f4cd7582b6f98db4384efbbab60200f7 7c583966229f1b3546fa4374ef4a946989de9cd357429268285707b9e59ba180 3e2e5d88faa02e2e6bb4cc6db2c869937d2f6b238f450fd46695c41fd7df9ace c7db70d6e538aeaea5d1e3bb6bca9ac53553f2d0ef1acba756eb7ffc6288b516 85fb3ef4acdbb0cf4aa476e0c9dc43772bc44970fc3464eca98910b5dae2097b d37bef3f5cca45727b68bc895a3426a0c3118b77f2557dbb817a14c86b23b139 9f6f2c09c583aba535945e1dfa3d3ca2197ecc7df4bcb5e26b61286ad3137e15 dc0b337818e8668d26ed226435d4b76f460862d3deddda1524b0f048e2f37cdd ea6409a3abd380271777bdd905cfe12537d9a373cc070260c9bb2522c0a5af5b fb8e625aac54a5e254b338df261a83367e759704b99abd928e10de2697251fe6 4c06af011959beb9a10e6d202ce3eacc3f9382ef12c1ff2616c63434c5efa2bb 4f7e0ceccf20645754d461d79b0e4505a707519b78aa9e712582cae14d3b3f09 79d2c1e46f07fcb751eca450bb9220c074c64db3f2a4fb49bdbf77773e9966da cc403c15179761e0261eebe74e38f105027374784a994f15e0031fc8a3145828 65dde8c94f8c3a25a2ce8828255f8893d87b362606ab5aa2e79e9a3805bffe0b 1b8b82f076b5f536acba95640518e07254e05c37e332ac495b4884f07f8875b0 3a929d6d01bd3de924815d1e33004f290e76f26bda37d01b67800d7d1c01f473 183db285918abcff864e3e6ac9db3a59722f710377f98a2e8218c383d4212143 b1f568bf294f74faf67d5d15a0b21c7a09cdf7b7c54690a3ae2e46cf7dfd50bf aed5935bc1fb84cb4ab8e480ea121b3a608f14c308b19f7ab9128bca3c99ba35 c5d5199677127d8805f0bb3b0396e29f78510307a0f7faa7efdf45c364c9d89a 0fa566a938ee557f1483997fe8d06ca3e4bf8627b32e99283caea5970758ee9a 751b3dc64abca0d50bdfe05848c8b2121dd275cb4c16c585ea9fafb8e2ced5b3 47cde688f653cc908a1240737af94ff724c9e1d01ca54ed0759381289365c852 47627830f880274a87add1968db2495d24be22f6c99bcc2d70345010ce692767 14a4884e0c998db4a5551901d2e1e0e689948850775d71033c7f840df1f53cf0 fe2e22b976ea8e11df58285dc71cf3e971e15286fc72786ff73528a5f4547fef b1bb79f64ea41e9dd5dd3227114d8a562ff3a4d636bade2fc2f6ab7f8b9dc881 b2c059a7549fa8963fd3879de1cc6bba9ac6d1847c47c90fc12fd129024c5f16 c42186efae20d2a35611be3898b2af12a67f3e5aed027f2f0955ed52119dcb79 579a9ce865663bb15f262e0393539d7e3b4c838c6fae2d8070251b7256e9c088 d966a5e8e5f0ca8d66fec36878068a4b20e2686729da0062b46369fa364612c8 85f1215f41883f39b1db4aa19a2069956031279c7c35b702b66d6ca044e92146 7d3988d74940d50548026d57d735ab9cf8f2eb80698bd9605e1e43025c4fef64 ac5c631cc984e1e30217646bb307760ceaf0f1420147fdd1e0debc992b1e302f d2909189848d1012ee49cecb4b4496a892a0c7e43f8b4e0ca26020b34b78d543 e17a81687cda5e73de642a123931469d76ce2e498b14ff3b3ba024ea7583925b 1b73e55cf602a0585b1b498e5b5500cd1b732165309d5d2fb66222069c49f94e 500d0a1e0d36eeaa609432a896ecee604ec21f89c404064b12ee4e090cdd5d5a 97918637169abbc83c89c632691d12d5c7e09db97995310a8abd265734887be0 0687ca624e58887ce829fa5ce505ec5b89f48896c926386988acb3090a362de7 02d64d5c2bb4a92306c1ad8c7160caa1204227168778b455d2d71427d10d1cc9 d600204eda6e845b7421f67fa5132b5c7f9d94d104bafa61338bdcb650ca9ad5 558015d5686be002c26d5a5a4d11dd707cf0a6223b4fea108e36dabd2def1db7 b5e10a14bb878004a56462283e78924bc39ae05df5183161f7610c19bf0b3567 46cb5190eac0af3edb6eadbcb09c24f48f2dbeffb2af959888c4ac6db4579c23 0c6e7912f96a991056e3ee983b2c69530886ac4073b69b1d08101ca94a163609 8c32055174a43e81e77d66e6b842619288b71f3001a554263c1f66afd139749a 66f9ee35a93b0e6cfb0dede8bad10915f03b3848ef0110efe194ff21372c6397 b2e2ee548574d6f909cd87ab19c54105084a26902d1910d07072d5ad346f5636 b114ca7ea12b18f2cfdd667e6223763ce13c40326fb321eda17487d64afdf932 ae315447611106eda01049fa0050028e0f3247f481245d7bf0153747bac001ce 8bdfa898618765526ff04ab209e9eacde4f88548119e36a9201d9436e54a8aa6 a7238317791d6ce1e07235af610c1162de4626275d4cdd5288fe91aa0a625366 2c8a11f8accf79a3894c123a998dc3dfcebd6b5ea47321877c615486a22b0837 eb4b9af23756d33f0ac84cf8e13b8f2c330b1cfc4d641364f03376051b65c030 a5c4c0ab5c0b9b19c8310df42f0570aa35a146dbe6a6c40620195c6962e020d9 1ec19f055c5efed5067170e9776f32eed9a241fdaff9449b451103fecfec11ed 852bbea52df3912369200b26622cc4dfee2e520683157841a4d980cce34a5f6c f590957598bf763c701fb1646d3edf4372d999b7b709731ec5cfb1f78efdc23f cdffb844d8af23f9e59e63aa52dc5ffb890fa1c1052889055df1d3f324f4f3c5 d626626dcdaad74823f519e414a85429cdb42df0d9c5201edcdba4d14c8920f1 976eebc0c4636fde47f7930fe25495fff93599fbdd9bb1007936f33803df6ac4 a7cac140bc814105b9fd04f28c9bacae248ac789e8f8bc0d166c327d7fc4f497 31a09ab6d330508f10e3e98cb8ef7f46e1961f10bb9b67a55e96a2e9a4ff22e1 5658cb0864ce59c73f4221c3eeccb5071e6329f2f47ce34dcd76863fc133a577 0d8a035aa97225034a45f92a4358cc1db138f045043d887898e2c297aee3e8f6 42ae9c04acfb19b1a660c2bd2571afac93b70f44f4671174d228e40edcdc3de9 0a27ec3043a67863a274b168ff9fa6ec895ebfb7e6e78d1933d4ca4a6196d631 408d1f130b0d70c5d619c861744ddc3c217572a304b20c8f81db64f4b459e2ce e8f4bf245d5828172f3f5c6133c3f856cf84d1ba636bbf143a04d21dfbd1de9b ad98b4f0461447be26e8cca2f9f3ba5e8ca9714bca85de03a2b6bf5296ab8fb1 03e854f99f6f838cbcd8caadd2536d9770a9f4d1dade2ce944df2a179865c2fa b1a9781a530c096366e134e8b5ba6fca4c32cb7636333a7b77a8ea6e7cfc49c5 161495d39dc304d11996f168c5a83a49ce7dd64350176245e6f8e686152eb7bc 83e930f802c63859a8250e1ccd4961f149241381a24113baa40f0c6c0356d523 2ce91edcda2eabd30dee18a7b07f1b34781a908851900b26eff2476369b5f421 b45fcd6a7332a5d09c1739da03ada3cedaa63d81950cd73a41e36b8aed257c72 8035209778a9bb1e0d4da3d89232567fadd161f0746ba2af8d352f093171c149 ab994d17a5401a2da5150f7b2587c6805e1ecf53fccdc8ec1b4fa1c09f8d84bf 51ca1537d96416a0b0654740fc7caa33a62c61a333ce2a0f7681bb866f8018b3 b24651971af60de2573878c8d9117a2c252106bf7c9da7d43206bf76a7ee3d2b fac7e5caa60393bddfccf68698b58a1d4e4445c6fe2586cdfc9d4395254912b4 cad0a712e3143518f05524743cd640800416ec10fb88b89ea8b5f463eef2ccb0 cf7d3bd7e0cbeda8862d33b25ab7a31a4c2270d8688becd6d0a9bb9fd0a034f4 bb3f0ad33c9e3032ac5c981eef799d49c22a64849e1caad2f994ae2319617d48 7c6badbe35037948ac1eb3a805f0526fbddbff02a54e983904887a585e91c391 081f0e52a7c51e94f11225a3205eda9d36d8e7aac6703d009c4f6fb811f46df9 50f51eb25ade47f62ab4606016ffa0b5a344c0729cd61a1507e7202c9ef85d73 462624ee9bbc08b538492de839f43d05b3bd73f69e11d28c66a0af283ae2c78c 04f57641e571c65ffe817b2b6c19c0ed75f4ad80901b32d8b8fab643382bb7e5 5d59c7118c3845bc524cfeffec1f1dbe8520bc4c6271d970f595c8f6ca529347 527f6162b4acad35a5e069fbcb7cfabb1d2ee8c1d978794833e5480ae7c508ba 51ebdeaccd594d0511f691fb5f20ad2c0c0048b75856968642364db6b499bd08 fdd7933db65227e7dcbb1c1e6fdb03f4e7afc28c9d5666a465526491f821be99 758d4919137360e21780c0d43d7915e5a47eea86ed959611db2735369efc474e 9d81b8189514fb1825c43fb1f8f45b098389536f0fd853da6b85e7564c4f4154 849b1d764d797ef553e2995af7551c698d9b5dbb211800c0727906efcb586ff5 b0eeeff7497e36838388f5c78842278207445e4fee111bddafb25972fa91e414 9d36f5ea6ff5130c2eed7168c63828556b8340e22d14ce94b13953228fbb690f 92110cf367180f52dcc889b5a85fb5e45cf26bfad4828b57157d3ecec2ea8b50 520a9439fbd9971ac9eb814d1fbef09c3e163ed5111fe5ad491d217a91ffa1a7 c64d549a3b3699b83add689426fb554fed4feb031fe1ca75ab76f1a3ca8a1711 4464c2d56d94fdcc605799a4f63baa71f94e378e902892b27b211cdb20d55662 a977fb499d7dcfbaa72e02f3bdd0d2e323392363b30a76db77f5d161220dee61 752a1e4f1015e3d1b7f6b5dc75006a805b19a46f10549bc720235ff2e8885b3c cbe8671ef4b7709a54781e9e1694d347187726dc7344ba24103198755c1aa8c8 61b88626a80893a51e810ae141cde5f64312fb5874e5e77cab0575ff03e70f33 fb98979fa56fca446f1aadb178c6c53f1fd12edce7b4f3c5e289e218e0cee37b 5afb917870f4fae16c4c4af96e8db63579eaaa738592f8f599a6a412ceefddcd 8dc008028d3ce89d90abea98cf0563fa6abbc881046c0de103df27887f967bcb 39dba093ff9f80f6e0a8d24450a1909edf3bdc62dce99262e429420fd8314a23 9f43bb9863fe34b8fb6a295a51cdff70166880892bf254d0d3d08d721dbbbc6c 92e85cd06dc6f55246df6e6c110ce3d956a36fc03393b7c80227d9d3ffad3472 abc96d8fc0248e0b05566e72c56d94c321dc4050ce8f04b7ec2bf76b4a04f9a5 38898769e227b7c1bdc09c7ad0ab00b09a6d5843c6d235e7c4b763cdfa52c8c0 3f5e6a509a6abead45e53e855a2e04a01ef54a82dae0219990951905318dc412 4f996ac3635af11c0471d41bbdb5b0ac0d6a66e1c1476c72929961cc6a9876cd 51f3e365b6dbdd29132442bea8708029bb36db3db6389ba830ef01d568f4b5d7 0035a71d743feea9e0e4ebbbde8f151dcbee21e07bf5104ef2ca27687b55c64d 1b955858a2c840b95e208ec321a551fc273b7cf8c27878d10fd9602fc9f1e188 acedcb95829a93e7506e93e4ce917024641f0a7502d47e27b773daf00a751a76 80d9b27af191d5b8e140428579396b980002ab4bdb081d3f081e3832869c2a12 fc400dfac6a0a837c1bd89a89c6751b7c767b8ad93f9a4311b2c341f802b2a4f e3a7bb5b4752b1bfb95d30e19039943a7cc7f0e40be80f792392934105ae5522 05d9ed6c8f03942e2f04173acda511149afeeab747a1016920879ad287279e46 b39e01f7b62686861c93620cebaa1b9011d18296fc0030ad3993482fe4fc0cc1 d60e3e87b0c5059a425ddec2c55d747c4a7c82ede40d938039c27595d341bfb7 493f7451e50cf1cad7a9519285da62117a9f2a35b44d659df1bb63a83b4e6635 f141dfea639dea0a2a2a23e430f7f9c46315b212e037d12751dc812f459cb283 46728bbfe1809af12222f9c4df597c437d1ad9971eddf2dc32642688f480528a aeefd654a876b7dc0dd103d4877bd04c11d94227019cd697fdb73a3130294e5e fd47873a83fecb22a95fade5a5a60dbad6b79762eb9adb75c830ea01d66faa03 18c280cec5d8a6f6794b983f4af1d55f7dd78ffc547f71c33bfa6da001ec8fc6 d5cf62f5b54463ed29b6a326d4e39f51b4e7447edf42c7864c4c10fb5a2c2d7c 07a0dfa0f5e6482b0fd9226acbf4a47808d26cd2b8270ca5e6238f133fd6bf70 33397a1d002b167cc1314b9b7c86859e48bd8a13b559b8fb5df094c10b8bb5e4 13c4d2fc2b51ba3bbe8f3f4b109133018843f18cf6c027af19377ae44d941553 08ee67ebbb9cab4e7f9b204620a7c25c12aa847b8091dd8f8baddd005212c721 23bf20689e145d69b3ae49e304f7d96fa7e6cac75c715174a5563101f4a85425 894c2a258c3098a02a8314c3714c501a26d896bb49abd90f0c7bd2c35c3b3952 c910aad6fbf54394d8efa36eb69a1f7cf6dd0009326221bfce6de7a20bae66c0 c119f957f3927e7f422e2dd874ae95bce6a7144510f4ae90fa096f4dcc21ca26 1034b089a2badd5918bbab12659717bce5475687cefb91aaad9639d9c5242ba2 7d56f2867ea95d584df9adde4ca3a2fdffd8d2a5f6d674f859a43333fd2f3433 2cde1ce4d9836b45e3f317b930d5a4f85f9b5b97822c5ba85a92c6728a0de846 248030f8749b63837efa321d2e0410eefaf07526effc623eee1225992090b32e 2ef12a1a12b5e26cae8bef5a3011e92d1b7fa6cc02a55bcb2a98853d151f9928 570085049421073cfac96df892090aa1cca8b019b286feb7f068393eb97a23ba 2d03269ca7ca8876fc464ddb5cdf7fbc07263851444bfa661d37b4678ebf56a2 9483b5903678d415f9a60455d4820e9f38aaa36268580e4536b8c1627e77946e b496603d594cc407b4230bb21e7f3cfbce064e6fdfa307369b18fc18a9d8e6a6 03c9ef08d693a102534a47310cc653c5f07ad16d5ad6af35034c7f49d83a597b 25cd060c992b26d3383a19a89ea5e89a7e43719edb4efb06c385dea00f0c0dda 919bd082e104ec3942e444b8b1fb6094366be509ab605f1475cd3b6ff51bc97d 401d128cdf10f636a1a437e985f478b52fe016c12e93f41c5d48e5f5a8e9b6eb 1250a90ec77a5f6ddb54bae5a0be2139137f1f0e9493ce1ff8c978778cf06774 5e697fe3a02bb966b40cdd8334db5dc46e9ea6d482f68b90eb41e1ca99fca2cd 7c7b84e6139bd4aff1e1492fae7c1df9172216459b9a6e68785b2c95389e9866 e4b008ca0324430ae814dd2bf634fede6f98a53b0932c68f571208e2bcb3b4c6 08feec6143b8c87b7bab75ff352aa283b4a9c1c4e0f117782158847f56e87b79 42332067ad62648d29d36fddb39cd7c8db4e88957d1631c56d953669c1b2bcff 592051e6ca176bd64f5104e30413ca701bd52802c9625274a8297fa22503e516 fcae6922288686bc84284d319b0ae93fb652ecfc83a2eb484d6ad89edf204109 7083d82806c4f26a3e4d5d166883c3380807ce43cdd8f79f7050b6a383436b43 d453052796f996356b78cdcb138d5b37cebb0a5e0540d38da29041948c8b2887 81dbd71324b6a9c0786549baab646f658e51badab176770bb551d218e32f98ab bba370c83ccde2e657eb5a67f3ece95195b48c69ca45030886d70f1f58d98567 6e72f54ecc6afb5421dd065b3f018916d4c71fd179e3dbf35cda9255031f8fb4 f99611b1b9770cf5e7427f1591d16e6cc269879858740a3139cf3ec22dc2f57f 4be904fbcf1f2165b3be9d163637062d63c5da5d668e5fb3953358fcd55747bb 6e6fa08a3a09305302d007a80ed5c73faa2986005789e360a66bfe263158ab97 a8af1cd39b72178c85fead8959127a60d6ca1eead0735891f1c20c6708e0e791 09c39eec6a19b2863ffd28f05a311895d8fa9e45d869d7c7da8320e90e9064c1 66919a5f9466cb6a9cc0e94cf93e64722611696576f8969c52a8dd510b77d15d c423fc23094957a7111025e7baacaa0f182634b7357e9fed1af6e49be9b4668c 1b31fc4e2ac04d5e10b30426a6f9ce7cc62c187f4ade39612a28614c1d8c7485 9995a9bfe7b0eef649f1c06f897d103fcc89bfa7fab3eaea239772d3d308a0a6 1665968e26e4cdc5084ba7f94937ebaad98301d45cd61650a4bd5b16fa2dec2d 8d4e86e2059a87f77060136eba09ca49b14e3cacbe12c1a749480c403f95a9d7 00c16bc8dadc406b6e6026c10cde047899421e726652999159b1e3e0195f3063 f0d9f610855efe37c7ba58b8b5de13177d97411ee2b831eec8d44ed0f3eb22da 67ef7a43e82a9b37e00a380c422eda6dc14c42763f38d00918f808aa355368ed fb1a17aa67683875fff3b00854a5b6365cca8ba555fa2b98bf47f965ca0523ae 42fda9829c9cb249238c4db0e26ab76ebe65a7b82207078f6d32314f81df2069 8519ff33548d2d414c551e269800210c6f24cf0f5ada7020ead07d1042ef0e69 b25c5049fbdb3258d0adb615ba64b15f66004067ae24c73fe359e21723da4eeb 2331e42bdcd8fc2746b3e9773cf430b7fc1db3a5c6270ae618f2ca4884c84c69 6bee9db676338be15d4f46e70c9a574c16e6d15ae1e70755c4a242fdb3505a9f 0542923142840b9fb58cc4aa54fd99da8b2883bb882acb9c878d14d801ce2ac3 4ef1094be886108d31aca2249faadb4c339c9f59222c40b51f235db61591baaf e8cf561e0288350f45c2229106d67fee9d375f0538796e31f0cab7f286e53518 f75064d0f5cccb356b5b7a269db2addc5c2c2f25d65a82b6b1ec6c9e381fb62f f4219980bc805321ffc97fa8758743332491c8a6680770fa6f20ff2773492967 1ce3eba8043f52 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR9 %!PS-AdobeFont-1.1: CMR9 1.0 %%CreationDate: 1991 Aug 20 16:39:59 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR9 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 12 /fi put dup 13 /fl put dup 14 /ffi put dup 18 /grave put dup 19 /acute put dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 88 /X put dup 91 /bracketleft put dup 93 /bracketright put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /endash put readonly def /FontBBox{-39 -250 1036 750}readonly def /UniqueXX 5000792 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b448685bdd20eb05d5e7c2126132e33a59a7170609 dcf4871a5d023c9ef57d3362d9f2d7a440bb69bf653364105f16f4d0f03582f9 aced3d05cc76489b16e3fa8a446094d30038b06ecceda269f2eab9d19a99c7f9 39f9548f206c5a457a19270b2b82c43b091dfc5573468eaa3e7a4a32f8042891 d85e4b180fcbcb3091d2800e54c87d84ce9cad6869b5aabbbe47f40c68799893 d22b765295e1e69e33aa048b7ed98ba480ceca91f3ebf8ef85fe9a3976909626 b95ac5940d53f9b02215d84a44837ba25ed15cce0d504f1d335065594f3bc824 5405407591cccb11cfd4645da60d960c0b93f187b0cf7b105543c0b70f89af5d 264b6c026e3ae646acf145950202ec73282111e3e601cf2bcde22ce3edf6db23 516481420f26552ff4472d749811f27768150450d0d0ebe3c79f999e99b5c0f2 2eaebb12d97782b1bd91b2a1f62a76412548ad53c0dd411d4a08c0f071c2c218 63d9adb75a4621803ecb84c2bb235b620b658984b2d8e0c4637e2811bc8f0d04 6c8935afc70141e1b2d9c23bdb251d304b3378faf8928bd09686aa0340fb0cb1 dc48c996ef91530ff078666fad227a3589f50b605267212d3a65ebc1019a8eec 9a0739a00279471a01e1505c17658c10030fae32f274fdc8c8774b0d5406c384 a1d17068dcb0c2575c562fdc5a2176609bad9a2c255e426a4325a4fc3053c7b3 2f35f7bbc9aa50135f30223360fa2fbf019294b2e1d1405e078341097090ddba 1561f22f8738fe105c0e3b84532bed145d51428c9cb1807e655408807dc69161 1109a98af82680d6dccc987cb312835dec4ea0645f47a15b6707d654ae54846b 3d3301d61150fdea8ae2da33e79976812c7764050a3e86a2a819ffd3c64c38ec 16b2d0bec3922847fde375ffdd82f8f8bcdfa39c53068da393b35277ba7af682 9e48b1607f22eeefd7d0eea93ba1e2fb9b5ecc6c6fe1075db980999f0be7a230 635f614babc85176f2f0d5c3eca008b773162009d0425cc05181a42e020b602f 968432c7730461f300c747b2f1dd1e94547ee96a659974cc9a5e5f8a74e31425 a2001969b90378e5e5ac76f37c2ea2b6a6f45d92c1ad6d62857ce3af00288a42 1a6b90e20669a0ab3e97dae685f067ecf673c4b5d2b52fe7962a276cb9fa32b0 de575d46607a63f1de9c0443d431349c8a8230eadd646daa143c5787b4345780 256e62deeb3a4adfa38cd8a214d477d6d0bbbd82e8ecebd696748dd6478a7c20 073d3b454b17a5182429d29755250283d3745496ae17cb50e353526b8e7a98ca 77778ef6b1e05f59ed5c9a8b0dadd54c9dc4b6e05831fce4bc5b1678c93796fd 50df04616ff091720ea1092db0171b30367be8c1885d6158980ac46329864c9a 0e44f2d4cc71b00cd54426661cdde5932eabbd62284ba08f0548ea9cbc3c2eb8 9f2466668610f5812f1c342dd251701f0d3445c4d2a75711586801cab61bc74f 0fd62d6b2e582b6c5422f7692812e417220f65a8d7bc7895f28256ecf17ed362 e28f4aa2a6e47e711590836655854268085fa990d607a682cfa75dd297b0b43f 3632dc8c7f4f071bcff7579377d543418805f9f5e543a90d01c17de3ea87a828 e9ddf4a290c0e8e9269b8ac639c981c2ada463d68f4e5a49a90dc869ddc5eec8 e55f8a432cc6f1f43e9c9f1a64cbea878653ebd6e4caf72325e0235605b749bb f8540594cd36ae37d54204b58d925bb1fde357f1d4257806584c9fa5da9a3831 6e30ef9190bfe5d1f6c8710ef7bbd1166c8429c1a2e322372252cbebd1778982 dc6614e257bd384ae55699355a6a494f53689c15d3e57dafb57ddda6b0302a99 1ca4031f77f9643c7ec6b73caae6bb212de647dd6da6d4dcff1f321f6a0607a4 55c3fbaedcc05c8123481a171c5d4a8e69fdf2871f278086d180ed2048f732ac 837d934d7c0c6415faefac33ea8e68edad309ea41cfed4822f6b23cc107ecacb f758a75a4aa8f9f25e814edd4451478742b06f5ebd14a027841f88f0757fd076 6b6acee96eff2747fa1bdaca1088949ef360a7b4c94049918679d786fdebdbda c0c8819a1df0109225f24f5b0baba9cc0815ade54b1e65af3d00b97fe000dec6 e4db4af996f5cb19ed154f9f49fc9a1e2fe93dbb8fa6d752026c1dd7f9ff61a2 fc279c1cab994d0804ee070b6a3cab0129396157c658f2239e822621b7a1910c 0548cd8f83034c31d021ba32d5d3135b4a2b8312725d19bb7d247f492e02c9e2 058991169e7cdea54fb8e7c9f5d0fa96d5b9ea8f439d3c30253a9bebdd738d6d cb9debf7e0312891e268c5f604ce0e0c97327bd2c0de60c6b11c6dc71ba7abfb a0578534c75c7f9c17f3524f9f4dc8cb44cb98b74171aaac2dabeafcdeb25975 fc8be714937ae3240a34d7b20967e7ce244b33185feb4d3781750eaa894942ac 2e67a2c975069d1facc35358880708ba3f0e509db6a4cf146e68abc2439fc9a8 1c340c71f9e77ac6dc2b53ee33e6358eb3b36b671a35c5276f55c73e39477751 6c0304b7404e66071c01e3268c4d5d914c54a08332b3281dced3ca5098cb7d30 dcabc22598b813d1455ca458d0abfe2f5fa9b174cd8c2782107ce3607231141a b4ad45d370df84154152c6965fc7cf578ee6b5f1c1e1babb37a94f58df014411 b16767f5d3e20193b21d32efe99c4ae820d38e1f7d32d977254953713d293f8b 7bb45cd5557ca0cd81a0a54f2966952da3b9b4c5711453f781023d212bf4ed60 e63cd0ad9a15225f6fa921e72557a483fce35bd5b92939e0e0dcce9522742a6b 5cae518882aea08b6a28f1b021d2141d97561f9394a7d240f88bf5c6891e12fb 26f2bbeacae6c5afa91d6fe7d8c1e33da45c2f15262ebba8a946437696698e94 08bd6ed92ea838d24e69fc03d93d2ff5cdc39549e66c2e23df982f92c040fb49 907cb887d16b54a909bcb769ba0dabf66087b302a5b359fb6855ecccf6ef3710 467a26833445255d16a38b4f819080672ae81035ac4d81d973cf81524ab546aa afbf1b2a43dcd0790a410b8a3ef695e986050bae346320cb53b83feb258c2555 b06874713b1d8a8fcac436153849206e3f4609aba2b133df8979678acd9bda25 2af6ece7899223dbe2769afeefbc698a7288be44223835d4e8e914a8a0972c7f d9a3796d76e01d27724ff00f84f76a5d286d53d9d38d0ad1956f606b0f3de15a fbea60eb117f99322dc86ef55de3ccc68545df0e55878c83dc1c4c21a0c67c97 aaae4f953d841830964fa8d6b1e4d9223a156f7ff21ef5c61b65f93fa90ab4ea 67ecfac46448d31bfc2b54f2750ac25955f2508d8a9956c12700851bfd19faa3 088bd39aa9461e657c236606e4e49ed1bd3ad26aea0d115fd6c57ca96df1a043 2682525a05ab41f7ef1876961ca44cb9c51b766eb7a2439dccf974f5adf0c580 85f551d86bbf557eed9fd5657746adffc0a4fa615dd6828cc277f77bf5afd0f7 c20048937721cd822a548b4f0e6f38bfdc5d6138b954cf7aac997bac35f6b227 04e51ba25120519ecb395e6407ed38f6c2ca68b32690b30c4b0a41c1f2552ae2 6ecec65473d4862905016a6f145b0a0ff80177f39859baaaba974f4bc1ad2b2f e0582c8b2bb8b5c77e3e3deafdf205f72c6f5f6ede5ae496cafc23b81f83752d d6190cee5551340d8c610195dd0888795ccc5a849197a043d3818597e9f6371d 6a4720ea8c9c6f81eda12045ac490c833f7449b275bc7fe8b51882991a0d4c90 420f6d31c50d668e944f4e20067c33b7335475ad707ba3495e005839ac23836e fa423143888a10ba0934f17ba9bf03a1ab043beefe0058f4dedb3f18a7d634ac 84d0bcaac48b74fb74a05e533a707556f3012aef9a90266cb622f3c82a006919 b60dc34854d797da6f60a24a27a823e6c0d6f77c0e16b281c3a385d007290a17 39ce8c9ae919a8948b3afe7991953aea6b792d977817bbaedff3492b7bd21dd9 98c351e51f95da8eccc33e3f46680819cfdc8a44699b8dcaabcf99229d9df3d0 9c4ed3dde59cf37287015357e8cf197e768f9ca555e5118faf08ee8761a71fa6 8abf7c4ed91af7b291026a46c1bb0e2af44fd0588aa02339d9dd06e7c00fa24a 615f5e529a26c190ddfe3e38e4c93a8b6611d60d5005973ae630b1fa3ca14df6 d32e8f245c9f50716e8624420660f427c2faaad7d890ca9d3f02743dfb418ad2 85f47f3e5f1bb8cab136d7b2a7326a2ea9a9062de21e432d778e7204105ed4ba 272c49b74cb54feda5533938af7eb5f2af28a84e917ac9d122c6a931f477b551 a1676e3ceff7d6f45504c81a343b1f67cbfcb07501b5b562d4892a017557f922 6bc21414328f17c4a2c82830dd41730ad00c84f378653175e604589cecd07c1d 6f9692f1502df656e00f73b633703e7d3f064f78b511bf7dd0cd8dcd7c7fb465 23e309ac2886feb0f9da3b6d44cae76f5271eda2d20ed2361b1703bb5a15b69f e2303dec22cd3c05c4049c6b41b632d4246497932eaba5c925ba4ac63e5585fb 05ddcdff8fc10c745159188cc3ffc88a4fd06c704e887a0bab2e2817bf8d5e2c 197e08998d2ce78c9b53bec8d52ed559d29b6981df54e05d3de8dcacdd619eb4 3b8b3f705135b9296e18160f74304f9a5ce126e73d12d15f6aac02c7bcc708aa 103c5b2d383d77d0765e0468d6debc8b0d498668f137849079d676fda4a7a94e ec25191485c04d11daac2b3628adba03a95e1becf70ad6fdd1d380907f8ecf49 5c8adcf12d44794d42638e55cc34ce429505fffdb35747d2f9c8c95e8b7e341c fab710bb96160950ad8b40ea994125002a05694186c7b201fe4682d6c3d5ffdf 1b58bde4d0d7246f0a34220b2e4e8bc2c61153b39f6372eece61fc77ec32a1d4 904c8117524aa5198efac5d0ef0df3b9e71be8dd31465d07f2bac5b2a8b0026c 3381941bc22301141142c4579b24637b5b4074349e1ac29b897bc54291673207 47ef500b0b864d53876235b4eaaef0794b1b3be460ee539bcc54464c1454e2bd fd856d4b7ca6eeb642a0a7552b81d5882c5a38b11981080d286eb77b79399b57 6066b1b7afa091a6bde25a8e71a10d103264ac82a38a0f47e5956e0e36c212d8 13318fc6d57a217c90b9e528269f3ae53f8fb01166b8fa78a170c832ef624042 817e479a64757026887a4fc5829a1521befbfe2ac928fbaa0b29b59012c23bfe 0fc3533f0ffbee2e479aa1262f7baef6449221f82d8d4e455c9559fb6d0404e1 290f6822eeb07a54cc1b104f96efccd5ed9f4fecc0b46b7ce23ac9c521ad71f6 c6021c2b8e98927589d99ffd9941cbb2e73b55d9ec627ea7cf3354d68fa6bf15 861d0fe7674fc620bfe4038f5075d58694094a8ae7b9539e2e93403350f23a1e a268554c4024a98f62ba700dc38967522dfcdf27cbbed1d6241134e423d58d34 68af2419445afcd8646ce3c1c9d776ec8d225758a3c6a11b21cfeef1fa2cc898 aa64348c41c899fdac7a98fc8fce996c371171b91ad367b2fcc3a80993322099 593329f00fb4a4ab5b17c5976a7e929995726565640bfb9c558339e77f20a8ad 19868e784b66cbaa6a357cc64368c65d54b822c20f2bf9d48abf0724869bfbb2 48de6d593e7dd7dabd4e5b1c7ac071d53f54b56448df636b79bb00a3cc7af4d8 d9a82551e276672e2423015c7a160f62d00db34981bde6b4914bd8c9a7242c62 8e2e9989927293444e687dff0f4f917b2081812f2b3259c745d3d8a190050427 304b4b21a117424894bb92c83df02c7793c502ca74259726cc890ccb3d4c06be 0d9cabdf458aa84d1e2213429ab4a405c1da56309e435f70a6bc6e91bb4f37ad c745c434ef71595d41182e9fb6c5e493f69a254b18bbc8fd821f55dd5496f40c 8dd9f5b52b7dc4fa4c3d5cc3218931518334bee29c406f2c18f87e2166fba28b c41d2e8fe34adf64ec5270331c0d6be3db612633c902bf8eff135e724adb8f57 05bf03e13efeb3491e07d341e3c64bd5b176a0245a61aed603472f58c89482ce 234c2551200a8c1caaba25bbda6fa5f0cfbb7f2f84d016120cda9b200aeec06a 708b942267ee0269b7ceeddb4d6d17b63bfa309863ca0d233ae812adbfef5aa5 5509facc5e0ce599ae602c7eda9f00dd6019e27be6e29c02fd601aa058cd40b6 74bea299cd091d3cd1d729c90a05d10a640fc5062754a7e1691b742e0fb9ff4e 76f208a6393c8650a7e62b70b3deda6ecb4f04748308599ca6def6265411ac94 c87525bbefadd5ac0c2ee268ff6397a6f6ca8441bf31d79ebfbe48b5e88e0c18 fe778fdca2df70bbddfab2227953a70b6d40d3346e1448cdef46951660ef7888 6cf9a6c6f621e5608ad9fea875a525d570b41eaff85cc341654f9254ffda26c7 1cff5d28c1b4f5774f02a5a37bf950e49e53c4c23c60e757e4b7876acf910b2f 8e966e2b45cafa307482571bf69757cac1b98a7a437541c249ab33a7c5bd0344 bc0a3f181c49961d0d439ccf9b848aa012e28dd748ee80a0827bf527265c1d7c 48f46122f29cf81106f12614d8eb25f2266d79648ec2646787fb6484435d945e 06bff7d538fb5ccf378450406fcfa8d28c8884bb340c3d4f57079648bbe1650c ac28725b83cc37a513120b36db86aeec2760a3bc76d668d64e0f15ee53088082 410376a29c17616f7bd479be77d415c2e67868302bf1e803eecbee93da8d8de1 6dd7c0effcc49f9ec14833d060079b08cf5a909633a27577c736e53fc67b8d37 1805838c25c4493c73715a323c722bc16166502ffc031360cab30db6af3295a9 a06cce0d18921de57b93be909c4e4075e406019985e304ed51da9a44acfd938b bd91559a4d3cff5cabe8d7776b0aefbe1cca295a40587265e70c6a4957c0b1e5 ca8d95a1a4278bd3a5ab553a618d043654ae4b2cff0eb5d48f07c74b2ade73df 24bc374f6223e8c492162dd57601253226b637e34fa8391e91b48c53319fb5f5 fb62b0b49d39fc945def952ec5c68310b3a89e6b04bfb4beeeca6721819fbd9a 3a98b7d25acb07e71b4e44f6dbe49dd87a2269058b19dace23687c7534c8a676 cf4baf70597c091b4291147004895faf40795bf8939c52da2df19fbb49803c71 3a2ac91e5c642a8599b6be8545a8347c66d0566f0c3ea8a775530754de8cc149 947e7e660a6f653e08ff8ce61d59c85ecedfca2d6fbcb46a606b908f99b68f22 39d0467372b160e5ee67db95aa0b3921305aa1a0e22d02ffc46db2bb157a4570 5eba026b078fc00405d69e789d88914d9731a9ea4bd2ba7b9b377089ff574a59 b1f1024231924973da9c585c657a79c448de1aa0cece4ae491c20ddd31c8846a 23cfa9bfcd4f589ba194afd18e5eea4d08b092e26da4e45378353669788b2b35 d6d9972bd754f421aa10510eb891935c8018a0c6a8f750ef4a76bd633cedb5f9 bc99defc6ea97edd9e45c1c9ee3fdcf869692bc8cac54887a6825e29c042e249 e230452843db94de78488d2a7c0d6fc2eef926fe1b5cf0d66e605a6ed78c9514 9a720773166118f60d550cc6052303f8650f8fd2093d4210810a0beaa90bd092 d4291ad982b5713868aacbae1e4e663f2510b58871e110898284c979f307be43 b9c9a3a4bb6aae81c01a90e7425ee9603f3c562938387d654acc2af654cf96ef b770a5a86e2bab8d0df8024023a6db1eea2d9a3558be0166f71c5ced88ba3c01 7edb0baad662672c390f6bcb84ad4e4c7cfee37b3e58b96e10662cfc87fd5549 3c606f88f10cc0ea01603e01a705d46aaae8b38564ad321a77af46a993941812 92f2552b881adb564f8a75afa1fcb76805b82f268d24ca438661b816f9412ed9 9b25dc7bce80fc46caea8192b1c6590561b9a0b0a382c15b14366af87d766f3b c2da1e8b3589733f0f54bc47bad95fcb76e320d716b341f971258d3670c2ea9a e1cb64daf3d067ca7d95c34fee0899850a6453b87efd7bed0aeb5bb4ea2b969f 430cfd4409c82a5b39698a10e3f7aeb69baaf40c781b0a124a739a0519a0e948 dfa184b30fece24bc8dc487cef8c13a067f8b962f20b2728b279393cc56a727d 4228caa5ec3fe448c431864e4e27aa722d1dd006f0ce71fc974482b8a5fa99eb 4b84378294b798bf84c360be2549852063366168f40ca1a0306e6365b657624c f1e26d7e43b898783b86690fbefb51ff97600f9d95a85e2c9a6bf4efa987e469 1353979d9c86be4688675d020588abdd89a1f6f74c4f2926581d90670cf9f86f bef237248ae841aae4eea4b6e5e2522fcf481ebc1a6a3adf6044b92a31b610fa 17703da36caf2f763b5f0b970d9159f3b28f0ecdae117a40c629e3c29728c91f 4cccfb342d8e2620cb4d37db58972fb84a761891913ae4d3a3d513122e927e18 d6ca39f5df0b029b5855ab597fbfcf454389e5e92f4a93674c173efb3a7f9439 267bf2b0154d1443a42d5afcbb889a19ecc0d84f2373e924f10741c14c32088a 2c85907981d8b2a4f98cc0db90981fab6a174d1ad305995ca2204f27a254bcd2 35c034dd219374a545a35b4b509af6521a71a00cd72a536ba0ea3264a5ec4963 9e18f2e798b4491961eb53d5818044e0bb090904cd907d48d95a209b81703c5a 35cb67cafd1a7df0cd1c75718e7102bb24bd64b9cc149c2b7ff411c636e56e83 29609be974522dcada9519367cc941c0ff8df942d585c4bea56dd6ca60f0df4f a4d902f5f68b5ae1f84ea517ed4fd649aa731ab1d195324b2b60ecb4570d17a0 9fa93c6ec1825db4f535bf833502705acd1c57448d0eeb56c078b082dd5baa88 183acc56da9d5d6dc68a0f9c4ed1355819fdd1625540663b10902b9229b939e9 211537cec4dc7027865171d32581d4d5bfc25899aec1e9645afd8d40691a67f7 ef39761261a383700e55cabc8a345076acb1f86d3992d2bc96379abbde122e34 9b1d1a27b4f18bc29abeae68127baf3f70801def359422e02be9fd91fe981f45 992c85fa3f4254160319de2df719737eee148ec43ff6977e2edde41923f7b916 f82e4513b5bc1674764e856563ca646198548b4b7df19a0eb7d47238514f1e78 7c89284ad91adaef75cfbbeefda8f48a86059a9471aae348deda6fe8cc270510 97ca13ceba96f646ff3df9303487db3ea0e0a321c2071319974a50ebd108ffb1 fdd75823f5c475151289fdbe958a21b1625d4b8c7d182397a50240c41fd05df1 82d7a71a47c44815b16c4ee0b5832ba89595d7991066a2819deef841e68bd0d8 41517eb85d4cc07e649b3264b3423557fcc4cad1e5cdbef65a725e5934e0eca4 2c52d700f142b9c24dd13ff9fb1e0435e5420ee1a0f8d00ad87996ec663f7c01 4b769785387963d5ac7a290302b4e2092b71542b0e6d0b7128665aed3374e22a 9e93fd3d5bcf7eb51572849337f38797ebc4289e9918dbbb2a49bd2cd7dfd266 807e3d657388a40abbff0596af5267f5c6787c550d495c203539b4f827472ddc 045e01498e76bc5e03f750f13ceab8aab2465223666f9cb96c2ee61c11374fc1 544fba93f033d0b627b0e748ba60ab12295d73192020e8d71e1985d927987a58 9b9e584a46c8458aa0de24c7f560ae270358867364f624965c06d113174cdb7e 1e6434e6f4925ec8ad1119162c64ac01e6a76fbfcea5f6a2fcd2a2b0f08ac17e 36175aac7d70c050749bd75563d2273d1420d51f12822e17904a4eef7aba7080 d108c8d1d77dd4f915f1ad1b8b4630f00a9194d08eed77bfc5db6c645fc37e2c 2d6fb032b7bbbd1ef0861b06c6e812fca4525e431700d17bd2734a03458c2c2c 06b85d940daba77fb9194d816b85aa889aab715cabf7213c7a02082fa5a3ac1c 8528e1c126053f7e43d608dcd9f78ad37028f5ad48342553bb3af6bc90994bae 992b4765dddc1b8307a774b9ae94fd10b25a8864c059e8b17a5901dfeeb1d724 e44052d82b210229ed0873b2318c748fbbc89f0353af840bbbfb368c7f9ee20a 86570e9bd2431c431ba5b202eee926328eee200e1068a9eab1553b4b4523158c 8b1b0cd4d5a25d69f65ad68d201e44a66e9c67870fb373371285c98fd11ef911 f19ec7ee30e344ce7536e3bc601dd495f44a3025df8a5387bcf23a02923a4bae a6070f612bf89d4494a910981445c0232afedc3717e809ed84b0bbb5b2c7e2ab 6e8ffd4aa6e83620f0e06a206acfe86e41da557d59b6fc260d024d5ab375133f 4c251fa9d300b0ed571591f06b3f9b848f84d64fe37f9d8118a933742cc42543 fd699f6a332720cb76f6b0ecb50b5e79304a33c44666908b9e1a4d0e7d742444 0861226cf7f4ab1a1b1913d075b01f433b7900fd9302454fc93e2dbab3609eaa df5494e874ade5d8cca3660e29a7f5332d975a267f1641da9ff349737c89a982 cc0ee9219378b799893a07566638984c50050e1df8bf3e6b20f7818088f5fe75 a66dabcbf62607bc06f5a052a19d9b28cb1978d3ee466a7d81def98e5a36d8d4 613219a7bbdce0259f9ea4136d596ea8d9d2e4a2325ebeeda226e2d7dd76b167 4dd4297ffd2a285ed7ab77a4fc6429daf93ee6ec77ab212b6aed61cd45933585 2a939764cce33587123394eb75c9474b2af562836c5f1615546434a6369eab0b 216e35ee0e3d7aa7352f87e1cfe3dd32d594ecc7dc8ef95ee3020891dfe823b1 2139dede39376ffce6a54fabaa7c029f1be75297958a40f54a95819f9ae8fb86 aed6326335eed8f3c9a110a385b507e45ca03a60296b1b48cd0fb01f5fb9b9e7 027b74cfc450adc4160334bb47dfb773e44fa809691ca6462d95e44f33b58d49 ad461a81c093cde38bdff9eb2a49209c9548b37c57d65f9ac2d2526615201c50 a6b368d123994d173cece3ccb79cdba6630950f2dd5959c164bcc2eee25cd63a c7211289f56fb34006115a861257a3c4293289b82a3b4e09c861b4cbc17b0747 8c43fdcc6c07f496c37d08492e92665528e07ccc4b85ba9185bd8982787f7d6c 97a9fdde047c34460bd2cd9f30d0064faf074ed8fa888da476d54ada2928eb63 c719e4277a6024d64dcd197df52d5a0f1e0f1594e8ce871dff9fb1a557aeefd5 78134ffddd3347a72fd7a69d87a417e85286489420d7845944fb5b04c19f99dc aa150b3fbb0def1b092a16f98f281aedd3b044c1af5f8222336af597bf02f574 46165b11db25bc1e5266325ddabc6336908621baf73c4fc0dc8651d38a8f0356 95034c8539b4e2b2128b61593d0f312d504fa4a779ef03edcba3a87547159cd4 8979f1ee5936c1b68ba8a464ea85d993d0f7df7a445b4ced4d19de48cab18cc2 641d3c38daf177b6225e995d972c41f576e27a31f63bec9125ebfef6be8d4131 dfb98e2923e736a41b06e6fd4d8414bf8a1f84bed10cc020305f8fbcd009f84e 8604de11f025c27a1a81bc686e783fb25986581b936b0a924c660a279ac747e9 7a804bc94db7efdfe4965d300656d9b78ac234bcf440077d543ad60257dd6d96 941b231481c3b5651eb8be932e67d64128a7871507e1e02caa2c9d9362711c0a b7fb64626bebb1d81d1ba4ac8455397abba4aa2db80124ac31180f73f32d5158 450cf8069223a401d1915cd19d5a954980ee97e03f2a22f829a8f5064d97c242 0d1b286bc4b2507f074241021a602926d44a6cbb79e8af5d00caacb4ecf87900 4a6e6df1e37295dc1c1f242c3d2c43feae4d6b1c07bb5547ee642aeda546ffb8 5f3019cda74e28c19339468f932d6dc729899a91a0e702083b292da540fc190d fc80a942bdc8da8f79f1eecd53b5bbae4378e00693e28410e10ecd88f9af8fc8 21bf899547cae68e4f4443a63562742168ab6524ad9d3700a89a4ae4831d9452 6cb45514f3e97bc922e60fa3c4b0c7a1bb0f1e007bbde2bf6490d95db9b436a5 d121b7cd57177956c3ece75a52b4b946a499d88bc50d0bb2b23d1ed6a3a229d2 416cd4a11670cafc57397ea1134a5c22c62c2ee7a5acdea520d9503da63fb00f 4e1a0598c052422809a2c8f8e756b16532f7f5cbe036b572068d8f563ff541c0 b156227340e424c5f9b8e50e5bba0df6d76a3fc5a00be191fe5f297e40e25860 0eaa7a4d8e948c090cb3595df1d9287fdcc1342c3927192779390d99809a441c 128b866b56f1497400a7b947b6104b0ebf95e4c4b48f27c17538e41f273d186f 9c4f2d1e6081365a70b009977d2b8b04b52f591ebb4c6b59efa624f2906f3293 23994ab09fcc910555fe57490b4f090ce557b6e689faa8ef86fac101a0e8f9bf e7cc1fc28ec784523b7e23a73f4d07c52f5b48de500d3077d1498b88f24d95e7 d50b452f928470da0dbddf6bc1c534d097cb6483583b8fd8ceed93193ca9b006 ef8ce626d1e8d49da675ce56f5ad159b5fdeead51a30afdb4f72900b917fddb2 cb981107a6d311567dc922c914d19257dc4a65de68ef633fe7390b42c21cbabc ace8c9cb4da4b2cd8ee53a61cf63bc4734cca0a75e2057d7a28ec60c10f2231f e30d822c472bca66ca203c54575a92ed0537c748b3e0347a71c68b8d601e8565 41c63216bc3dabee4afba060658b0ff06ed0c3be1e71b5464e11fcb94a7fee20 8cd568dfba52d52bc53724868910439fd90d6ba7bc485f3e5873f462a8a7e5de 74755dd1f21b5bcc469359cd3024b0ebb5d004a02e2fd759d36e2ec199a99eb6 95f71114bbabe5c4f12b20083f4098df583aab8b10252d85bd4bccf98b4828e8 1162b531694c556bdf2871c1273dc659a456e9231cc57f3d4502386223553ec0 2dadb0eb464b699422e02c9dc2af7fc7c7759586e5734e14cdec5a0c3b98d41f 928f4c9edfe53459606c641fd0dc5cb4f4e74b68c66fb562fc731f9b16a5dc2a 547cb537d318fcab3f07504379eb26959e3187e64f8e6316109a19f31602cfbe 3a68d605831e38464bc1e733df61a87283e8a0612a59b71e20bfa74c3c18ba24 fa8cba6e4fddc096f2b7b79365f2804d50ff4d0bd5aa6bfded9cb05e161b952f c392bb6f9aa1073eb42e263d508a6435283439effdb2d47e8d7b63cac3fe951f 4cdcf2829e194e4cd720782f20861624be5031fbc244ac4a89041b327d8fbee6 8cec1a28bd901792628108caa5c117056bf46a1e26fdbe5caeafc005963ebd05 0730a4cb886d2a8d384cecb450bdbf95eeb0a724086a25a3fc07ca7d9b866f3f c930c55b62b2c6acf2bb7c0cffca4abeff1f7619a2a07396a85679c1d7d0f3e6 26a27eb940d32b4b2c276458c5ba820e59763af35965d5a26e28bb5b88a4c54a cbea01778295fab036e7db9ac2156735fa304efb7eeca20ae6a5417c1ac0c5aa 84dd89b3632d037ed5c13ad75034766670869dd5e439e1e2b9d07cf05dea4ba0 b1caa2af6a378fcc33a327ce4fad6b3d627f091b4f54410997fc61598b6dbd6b 5125c8e994879c4ed0b43fcbeb1865593a2b76903aa89dd5223dc9986a9fb914 f57b1ecd486e08fecf0d3ba816062a128102fc1213dd2fd022e46336f5018de2 5da5b79d08c617a8bf1e99721f88b5e7988b712c132ecfedcc1c9466555d1425 ea8622a1ccf4d5a92038998241ba33b8575ddad722b4c4ff9dfd4afc61cdae8b a34bb540beafcf2a532205a95da45363215589a9427772e2cdf7b5980aa977af c7aded9f8a8babd73cb1040fd198b07b2eee2c72345a6f75c81a92f231b8f3d8 03f9093643aa7115de47b322cd1a87fc6e41fa611362565fcc1523322c38b061 61c6861635b5a1eacbc47fb52aef70d288332e90ce74b0094199d94dc4a56b99 f87e82cf06bc297719b1ed8551ff885b7ce4734311d9a9f7be3b3d81628a0477 2c96817c9a39a984b0f54558b7c654571f173bd5609354d1faa0995dbde67b60 ca94577ef4fadd27cdca029af2233fd9666ef117df31cc2e6cc8a9ae068fd979 2549ca8373d5e081471b6b51fac12ed9978e365b1abb2604b79e2ce5593f84e4 a7d3d8d4a42153f8354c693faa906611a024abf0f4e404cf65adf5c8868a59b9 0545c2f50217869bdd3eb04644a7a5d23d55338a80e38684a99718e6fd9f9b0d 6f89974a2db974b728ea0901fd52fb53b56a06ea45f16843bca2703df77aac6b 54a7a00eaf7406987eea49aad5baef61570b148e98569b65b468af30eef797e1 24b43b775326229d693d4e2e8f2ec86e985640d92deacbf432094fa065626619 d05b261d1e7e2e421af3ffc883b95db56153ea767d3af6fd1d32d96badac8a20 2a926abdeaaaf323779a8f7b91f96c80be6f64963f21ec7be203579e49b83242 890e8f083db168d18570057c158d9ff45a528fa4d5bc7e4521230a5f80a3f45d ae98a75c422605eb4afa2b4dee8027c6ccae3b398f0c5e657c4e1f418c02de3e 5255a315c407f6d4afa555cac8440220a08c8232dad9e660e7a862fd33df6027 4ae74f1d5b3046cfc81ce63a5206731347a2012b385da9a849cf45a7562d7e74 01693426f80ede66ab9a98127999b25ecf4558b7b4e8eee669d138ab748b3d94 c88c6359c09423117da56facd07b845c9180dcde7d1f6c64c75fb367f8572158 c7ab6268a491276be3a0aead48709e321e93ef392a15271296c72c62b743daae bb616e25163f102739ec45b273d0185101c4e65a3236f9fc209b56a9e300138e 2950644ed4aaae3e9c220d412122d5528372e0d4754583ac7f9469efcf291e91 719472a4a3c566706b814e243c01da979108780565bd400704fa56ab421345c8 4106b4e0cb1e6921eb6e375fe995fe51b1e1634224e3dee401e97a4284c072dd 94cc73160ae27d1f715d672d6d8ebdd0c287680b8249505eef104271ead50e57 cb40681c357fa485f49c8ccbe57cbd6551baccf6e86dcfa5e8c95b4d06d14e4f b901e8af16aa2ca5911446f34e4d363e1ced846189053f1d5029f92adfe4f878 0d973367e6ebb19eb9c27c7f05eb4570fb6ecf89b322026c85ffa61879ce1b22 67d62690066b78a46c1c12b3b78f35415cc2fbfedbb00e75890ef2e53acaf836 5af75f5e1ca5756ea0d61320dbd27aebac1d342876d95cd5c60e53ea78d39971 6b7eef24be8ccf676af0a06578712f61a99c794397c77fda45b01c83dd758ec6 d3ab288beb53e1fa160d53efe02a3fa81dee5c87793c5a4e9ca7d597dbf442bd 662e1f0fd054f90a1eb132771354b3d3175130646a30ad5ca1b3e6f96e1a4289 3f9ba22ae9cfb58e2c50689adc8a08d6b5dc6ec057d8af3c25d81a7a86fb67c7 51fe8d38a34c8be2a1f71243e38319f13ad3d06847deede0e9f3a588d1a3c641 d6f51c19ec147740797592259c29ddada447f72ad43bc9bd204c9b42259a7822 2a1490196b7544377c07c545f89d93f470a754a18c94637d9ce17301432d9aef 0168ebede3810fd394060c72d5e95d3c7e15257f1250b4155d27aeaf288bea9e 04c285aa8d08417067c17a8665e7cbd2c9cd0bf55c32f5922ecf919118e5752e 515bc2b58924c190300dd43c5fba687f79d1ede9fa2471eadedfb4648ba9f3f4 b00934a447f442e38b64d479371f7f9d06ee58f3388c6821777d7ec1b155f4bb 3dc725d2291dd30808bbcac92335f7f8f53c406524536224b1fc335b7aca60db 7a2d992122ef46db40016423c2a2fdda1d82e016dc2aae874310bd66d4225914 fab1566da2ceb06e10df9112e4167390d29218f0433e99e87035279d9cdcb155 b6913273940cf2a95effb3123d9dae50e290d2e281b5554079a1a4e4b9f82ce6 4a6802cb80eba118f8fe89058d0484255c063f9e7f6c12febd4ee355613080e9 9f55f9b27a8a59eee3bea7c3348a0345530a6c45afaccef5b1357f6bead9fc5c 865ad9975184f2f3e55f8dcb71ed56f5cb0cdde66fda7b1fffbecb72dd86146a ecdd120a1a900d6bd041282ee391aaab332fe2eddbe4f531279d4747b0d47b54 2a5c4f7006c69f01f49c7c217dde819e16586cc93c8d1154b00c16860c2124b3 09a6642105ffc690fa01754a36244875e531bcece96b1e5bde240d2280aad19f 4e5c39a350febbcce82bff2c81ae35322efd71fde4516f1ed42bd12266c579c3 5289e6d1ad7a5affb160b36cfcb5caedbca8eab7998e8cb31e76e33eff986f64 bb6d9f54e267cc16931cb857e149235209923ee1b78f0dd15ad709824681e892 ed698a9739bd73901370b9ce33624b1a2e22e665f7e22c1de80d32658cf6577c bb3a61745bb428084ef7ecb95c92aaf2c3c0dd42708dd306cbfc0ba23e08c570 cf5333b8a82b4de69f035f55b83237b984291b9c7d972f47f92de6197ea84190 f29fe6859b047a575c53b07a1e62d146d2e713879d9c4e2c889d47319eae01de 910a9b9bab341fb68c342efc03c9e2421aed83f1c209d3e6bc67d51f6514742e 5d29ee522cabac14fbeef73a5c23c29b59ec41e4aa3bbcc5b1d2bda92c594dc3 95274fd2f70701f578efbcbece9d100ffc06c76eae8f9345c400d10bcd7b246c 895a2335bb6b8ae64efbacba489d3337a504ab82678a6234eccb6798c7f19c26 226ca53743bb3ce49f93927cf2b4f11d1c411c0341a92e5c531c3963173387ec 8313d0ca3520aaea3ae997ca609f9d90b9143032e9a3560f52f2bb350a57a8a8 0680fc155b127edd5e3b5478c32661706200c04f35c06636c78800aff443cebd 60ba50fe9b996d0430228e82cf67721bb620e828a89ca40dfd264b52e5704983 437e987d052a862ac75fe7b4d553aa92184e7bdc290ced0092835b0c4aa02ed0 33e36157e60a8541a672427164957c207455a4b7696d4a0665b114926cf6e920 bebf8228ffb88c70b87b8d293828b6dabdbffb8794fab16878b311ef86e22629 e9d772f243367b75949ed6958c4125f6d372f9d9dd94f93b225d3f17305636ce 6ee78fc85d31c5d6e53c5f4102c1738a75c44aa9fa523c3917c529cb72bbc8a0 4c8de62cb3af0a8dedf9929d9462ca7a7b25e1e5320fecdecad66db3046f73e6 6cdbd044ae0f0399701d0b26a9604b823cd4013077dab22c1a727114d8e6033e 19cee5e7166abf68a947eb321826ac902cd970eefd30e8e28f98e3f3cb721742 4f65cad3f03a546a39414491685c17c05851847ddf4bc5b6b0ecd483bbd71ff9 b485bda4512b4817fc30ab058d0a9bd919209c1c87ae7f07436bdf014da1a260 264076d6e6cc72b353b050402332fa80a476c89dde2d275defc973752b15afe3 f930dbbb5425f81fe5aa020035af54714629619305c439f864bb07fa67178a42 10d0772548a3d32a7deb2755758bdcb687a8c5f489f826264c66c075b8b67f6f 5123bbb87feaa1927ef314d3c1276450cfcf911295bc6f35e2a21ba4753e9b03 9bf140524226a07e7555a31c81f8092617491c4080ba394c5529581c2d64171a 6f4239bd89f088942d122002fbe74a498a1c2edbf50b6a37103e04c71cd06c66 083323b30914f8350ba7295c35207d6bf8c8e82bace332c4ac0705899c46bfe9 df79fb914d372ae0877cec9bda25047125cff25bddc149ced23e98882cd98f33 6f7e0b9d7f37ac4724e66b0726b38764eca3e0b2e471c2072e7f52bef00ed589 3e5046ebab4edbe45bfb72879c53bb450d25e7f2d33d7155116bdf343a81f6dc 035e528f1d1ba9c875035306c4777ae5087de02bc4c882b7bf59d19ab0dc0a30 aaf766c8269216e28a13bf2180c8de5f392e399e04eaeca27a52bde61450f600 24b9d02c45c58b8e247ec40db3f2f775a071e822214abd42b72d95b796c5d455 310ff8ef3edcbd1d06f1e2dab4f805976c8fa65629c3f12d4a89a2ed4f1764df c086cc83f864b543bfc3a492afadc2bc75c6633ab7b1b6a61816e7e7fa28dff6 6aa98ccc69969a09668d1452304c5707ac84971468ac17baa22a65ed3fa8b539 93918b5fb3f2 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMBX9 %!PS-AdobeFont-1.1: CMBX9 1.0 %%CreationDate: 1991 Aug 20 16:36:25 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMBX9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMBX9 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 65 /A put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 104 /h put dup 105 /i put dup 108 /l put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put readonly def /FontBBox{-58 -250 1195 750}readonly def /UniqueXX 5000767 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b4486be79011d1f5bfae5c1f476ee6f05eb1d2caeb 269958b194521197b312fcced4867f3c8fbd030bd715d8ffda1dcd454b174e7a 1a97b59fe770e67702519d9d9b23d61ac08424d55fd4dda249cff0b56b9f3aff e9d0de215c02a52a6bc77155ff6b8cba5cd6646ba331254ac58ace650a967d3b 272331b87b6df06d5ab9d80fabe9f9ceac10139b61244814dd9fc295ed42d1b5 cd11c2e4beab318b20f51ca2c2930657e5343ab7bcf0e8870a0d12de4ffacb6c b3fdbdda481c2fcb84408d3d902e9a32070b2af6cd9317a33a42a43857c114b3 f4c3005cef9401f1c2bad3e69150d7145b79f95c9cfaf7a335b277e6435ab374 f6a3e78e124ac1e4615511f743ad65c5d778403a840310ac4902985f107fd33c 0049623e4c496cd353d2ae2a4804110c6a420a38ece5d5b235c5e35886a0987d 284e6110527b653b1b2c68c636ef423536180acadb954843eff4d9a82568a713 b682c574e30f793f093aef755c650e0e7175c2e3138695212d9fea7bd4b5805c a90985b134c6bc15a19afae0bfb3066363ca3e2568c2ac4559a69fc32feb443b 61243b4508b7524d974636855c83c8149d489b68fe18bd497116a953431251df bd09fa1d2ef66c85b997ab2f6b7c6d9d096cb43931379ff9782fa00c5f3cbd06 04265d16891ffc4f66e4a0307765d384c32aa83a4e4f89ac79ef8e76eed08450 e3466fbaf54f85324f0a4f04bd00ccc22d32e4132c51749bea28f112c2051857 423ea203df902ae80224d75efeb59094bdc5f4b6784ebeb01c38c34b695e681e 57a93ae18b657d13770300bde28833c732010ded4c8e79078d17acc3d4b521b1 6f2cac338c4f72e2e07c667227ef142d0273e5b501f24b02e9cad75fe9d18741 b36bbb29c9cd3d46964e00d8ba318912e69a6aa7ccf823c12a965eb8f6b56f1c e4751cd4661409710c12709c6eb9a85915d9b1f79dbee0e03c7dc0018966651b 27ea8d646fda7dc3d93d434d0b1cb61ec6c864211b79412dcdd198ffa66befaf 9d1852b1a26c25067e1d4cd7c06229f2a27d62b1a249314443dba8b7e9cbbe25 c34351906824f01b288efb346b99ebdf87ff62eedfa21ccc946588d06b5a85ba d063c579278403bf9a9a4e7db353a11999a0ee26313982f2f7c6791ac7827eb1 fe676626708d4313ca23929c17fc9999cfa5d71cc14ab4874b8cf518c64dc049 fe6113ad1104f7ff5559b8892059255261ba9aa053ebb8e085187c38502aa2f4 d38266320385bf54d6281a5d60abdb9e484bfcc79fd6711f8a9e364b892380ff 756fbffd9a74ce46ec97e839e0d3ab3020b6109b23055d8d0b5b01b79543507a 3ba113969fd583b624410654d7391dc02cb91d1b4232a455e259ba031793e3a9 e2e9abeb451661c6efe7a51e85f148fe4f8ae1edc41922ac722784f29d938ced 380d8373f2eebd39d2c8b3389c92e087fe46ff723fa6a1e65ffe2f45f6e7dcfa 70da60ba376f62474c6a448eaa163dd27410a585d26a8ad7e7dc6b353e4d9a95 85451de3dee767c4c74956af2458ae04c90d766ec9a56462080327855d78fa9b a4ec2420fd1032c05f8526cb1e06a3b3647a1ee4c73fb116f2c653f14878d619 5cab3d84aede65051ca9a5e2974ef610317b0d86033022107b426a861e748158 cd203782b17f2eda8898422efb178621a0f6647aba35114246a7485ca2cd4e43 1a8cbb15d64be628a39fce72bb9eda87e0cc089578ccbae8659a17e2da62c064 f032d6f4838f6065afcc8d7396d27b229a2609588cfedf66fb0c718e2e4a2b5c a36cbe6f489223cfc3d617985f02be92aee4db898b90702ec66d4bf2d48f2962 9b9d5f3e9f244be7fd9edf08853ec72b052bb32eec5fe9186d19014accee84d9 199f705321e93c8bbed2d5d24296f4405c17970fac3ba1f961610f119ad81a19 a80fd903d00be296a3be72bab5ce695463917e093943a4b9bcf40ccae6b750fe ee797fee285dabd7e852cf0197dfdd0def380aa3f4e664c976553f3ecc63d2e9 37672aac8b9285cbfd82cb24470a6307921573230dd5a76a6a754b3da0e3f536 202eeace18d1d09568712428d45244ea5bdd34fd4e2026f7c2c0909795561afa 1e56aba46827c4830066aed23d419451c5eda2ded9af6c050a2f93c5cb88c8af c50baf959a2de075a552a19568070cbf9be317a27c8dc5330a2de9124f4d0e7f 1080342d90a99f7faa080501b7d4d5a54092c8b8cd29acab9b0fa2c340b245e6 af4cdb3da0fa2cc7a9bc42f0a778cf5f7e72a387a37d544196d76a393393c82d 3806ffb6d86f1dbd2bac28b4e174d0bf1a4f1ff772b27cd5cf0be582af34479e 058bff320beb126fe4cc830cd36a820806d959003b9ddb74fa068abaed3c99a5 ec94d26c93404ad6eae5c1b67c1675a066a706198d7552f8ca5fc7d23dc31132 5f1733d6fe91ae4d871803f9f25f7ee862d04edc14f738567856d42d5484dabb 116a5cc13f960e4975955dad523af896c729e0d164df79ad23548fb741586655 caa3006bb2951fe3bc99e13a921d427df95249edd5f173bc9b7dc242b600931d 625e88a479bda994f2a17d5824f24a2753ce9d1794cbf8d7c5b1b5ff4cd78ea8 58e0aec7fd1945e542d71474420cd2596fdc427bda5783c95d16cc7f1aeed75d ea784ec8b07d9cd3b2efb42a19fcc71dc6838530f6ce55434089e1eaeaf459c3 b09fc71a97e8b5f318187efad3b662b3a8d1737f321692349ea428730340184b 2bd111504f924e6fd6e0ee335b8873300163f90b69df942f0fb8b76bf2689612 726a1404ea9e581cbfe96c91313d14afe2cf2b2f9ae9183bd7c9d50ee4e4cc99 11fc89ae88eb1ec36b81b57535a291164cfd753691790ceb4a98c3a4e813f944 02f534502176a55090273807bc90cfb40de96aa54479da829cf79f7c88fbfe44 235c8e13ae552aaaf88707748da6694e7030903fe7067eb46a8c90adfaf21a87 df05b699c5d9e40f739791e6ed1a8fd654eaafd4d2b3bfc72d8720534cc20dde ac81e8a14dd907ca3f0684e7e808eae8b06240d3117b0eaf38652bba5fdcae85 5d4081346185591247b655494976b4574c14510c4c08a7c0c3fc6f5d2ddd8abb dea552ff1beaf829ac95d290ac42fcd87fee5bc645490f3d39bb84828a1eddd8 3edc9df4588e50a4a00864fe5bf56d6e7a352a2eb0e4253393a21702e11962ed 380bb4378770b324cf25a6a6149710b6c4ea19276959f456ceaa2e661f036c64 009470fa328ffe8eab19bb5456c39c710f5d045073f46fbd7b0c2322bf86aea6 c97921821543f4e019620baf6961299bff93cea59514b296b9964c414ccf8d6e 5c3fff872a4fc9826ae3eca5c6f52e95540f4696461d0774dffd1ee477e18ae2 7fdcb1d157dedbdb3c90a20aac7bbbe64a1a3d3b550f9a02fbffdb81fc8d1c3e 19e97b178bec31378f8559c39639ae9b34e1788027d07f610ea69b757e34ef85 97a7a6bd8c4abc8faaf5a809b1d05aaf73fd03a2fb27bfcbc91c2580566e3654 57f8f11729640c03b90ec24728e13b90a7010e8bd5d2ad5cd879cfd496a3537b 7062678a7c45a0cfad070d86bd8896369ef8cf84ab9c55b0255e98f792553845 bd3ffe8a4d9f726dfb5c1a021381891d4330a1401ce126b8fc4204fd3843dd9a a43154794a74ae38a6e25102b17418d89457c9b8be0b0fde4bc1eca622969f19 9bff6e7117086eef4788b0083a0a769386ef540af2641189234673519351cc61 f79f16adee59c4b05ba8664946f233a67cc54e9f96323de4b6f6d9c179f6968f 2a7ac3e5c0cadffa1d368af8f96a2c7614be9a0728986b498ad24d65dd78e18d 821d61225d429324f266844ab89e0fa01094eab1ae01bd92e7cb020ae44ea3f9 da3d021d68201443b6956d961731f17102c9a8bf37f34830e8bdbb0e88d3f058 06857acce58b93ec98dcbe530d17440413b5c56b506c3adb9a53cee2c769460c d86bde6668e08a021ad5c802a4168becebec43b7205929d5669f4eaf22acb772 81f117b1e0947a4dde09f44b636e9ba3665e0b4b54d46fd48429c2ca78d60582 4bbe65377f894536b602abc1a3eb1d8eae59e55ee87ea2eb429a47577b4084db edbdee8a4107d53b200ae25004b8c93ddbadee86a7c9602e550b5aa753d655d1 485355758158004199b0c8a1d947872b7d39020dc9bcd3237843702fdc56f8d2 78aaf45c3e2a4ffdd05007d65ca17e604fc0caca20f0fd4b103b30b93bd74109 92778555dd8e06c6c2b8e4944276d25ffe8b93d57caa1e6ce1012ed833c8d68d 3fc924f88923614b233d4817fab6b7c4f5be9efd6ae9f19c9337c09effec80d6 ae3077414dc93f47dc2879b1dc12dad6fcbbc2f9469ba11679d3678d59be2a99 a550e9fc6ef3aa59fdefb8ef7cebf743ed4e10f7acf6d10f84de8d65366ec24a 6effb2fdfe9fc42652bb3dbfd99bfa11885634470b081157c118e9eb92d4e700 e9b3f2e037f5d721eb88a5a86e16140162cf33b0a39b9dfd76470d4ba20afc59 8399ca7527d6aa1d0da2dc3ae3e3307882d9c5603351de2edfbf118f736dea8c 144c804d13a602c2ddc9ed6691ccbae5b1de0b900b445e1cebb3127ea9b738e3 08220e19ecece0348bacbd089788c9ba7233f4be58bb032376648654fb48c2 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY8 %!PS-AdobeFont-1.1: CMSY8 1.0 %%CreationDate: 1991 Aug 15 07:22:10 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 3 /asteriskmath put dup 50 /element put dup 54 /negationslash put dup 102 /braceleft put dup 103 /braceright put readonly def /FontBBox{-30 -955 1185 779}readonly def /UniqueXX 5000818 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352 05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23 b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145 d026957276530530a2fbefc6c8f059084178f5ab59e11b66566ca5ba42b1911a 5d7f1bf343015eece988b7a93bce0c7aa61344d48aed9c92c8698d4b7c9951c8 7d103f2414b39e1437f9d2e50c4ee5f218f2e6716926a79ea978f13b1f855345 191dd7d31d8f82c2e3343c7a5894d95bdc492c28226834efcb5c12fea36ac5cc 430e0aa604961e34888adf6c1f3954cbc2498e225d953cf5685852162346f474 5a2a7087d5d7ad486de16d2ca8e15cee26e012671ba3bdc7d95cc8c98bb774f5 08625e968aee27ff7d1a06e63bcfb5aa4876c3f8f13b30ccccee73c3caf4e70d 98e6ed2f422dbb4950bf789680e064150995941a9f4dd68a575949847a7d012b b910bf03a368f97cc4b552b0cb393586ef85adfbe8b725cd19ca66df5d6f8263 1dc37430a75ed216278154848ba63f087e734d3099d00021800d7b715cf593b9 782717ae208b4a9e4f64ed2516069bf11daf74921f8e3cd7017c2a2d4fec4c49 bdb0fd66c982333cc575841e00866d15494bd7f801f720529006302c2227b642 7cf29e7c64536ead66b735a4970dbef55e4f9914e065b5b2bc144e505e23f427 721c5421bde84156c4bdd8eca1b4762f21b19925430c1ecc94461e100aa999e8 88ac360a7b3610cced462596ee377313d4ff163089379a4cf9bf4396a4dd3fe9 d7bc083c9b70450efe5a79b61a750541d0d51460a14bc8ad6e43f221d54e9b6e 7c4b19650f5e4c1a26ba694e18651dc51f63eff1983827b93c84c6a298763dbd 613ab05499df74f61995ee7a942786994e11a12963e2dd4dd0a141989e112a74 7c44c42fc3bff0a1ce8331f9a3544fe0a1a5dde88f72a5eea97918059520f227 45ddc4832730f5f85d3bdb0deabe505d0d84c310b33aba46a973e7addb423b0c cf7cad174ee462555dc24ecfb099a78fa21c19e5c818e863204242782bcb73f5 06ab2510993fdf91593fb5c20dfb4008d770b41be69dd845d9d562e31486572e 16fc37dd62d366d8b2ffce9f15c9ee947d7b7222c4fda31c59e99d11fab707f8 8807e9b43dba8817f053f3d9f6f7373208e969e8f5896408b495456d04e55ddb bc7bb136cce278da354e9f55f90c9fb55df9a671dab5116ddee4c58e84076b6b 3ad9e518b97c48b5986ed3f3d93c59f05da5f94571da7b4ea10c40c163f8a545 b14d15a17cd7aa6621ed5874512bf45cba553dd3495f629d74a27c2780b3b582 29e8b1a378fe3fc2bcc74cde03e082e96601e82db9315c916bcc6ba1236bbaef 5cf6c62e325d9fede8852ddcdf3e12cf75b13b6ebae6883ef2d397cdff4743e4 c578390e1e323ec69e335d2a945ee7853c50e6480c0eae9312dfc02ef6f89a8a 82c42a5fca40b96acd035fca8a6ac404b9c921f7ed52470c53eaf7e928cfaf15 4af74636223c330a0f5d0c8f453d14b48c49f100c0790bbb3e7c4c522513c443 262bcbaaf4ed19e258ed58578ae054a2c98ab4dbcb35699c6b49ce422c3f0f27 04d7d77dc3c59b55e0125bcb7459fa68a0123a376774be2ddcb3b8e681a84820 0adb3431687d216f718aece4943348115551c6ae7394314624d919c9a3bebe8e a23bfabafe46b9443cb6648c5a0975f73ff41e209fa19d2d0eab3fb4ba8da62b 12412d7bc13bbad909d5023fd9c443db3b77ecfcf0a2157fecb4b62a1a8ff48a a4792358676dcd4bbec8630aa6eade4cee5adf56ff4e1b3484ccd4cd739e4cd5 e1e7967c20c5b5c23ec6b67b34128e8bbb9473 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR8 %!PS-AdobeFont-1.1: CMR8 1.0 %%CreationDate: 1991 Aug 20 16:39:40 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 10 /Omega put dup 12 /fi put dup 14 /ffi put dup 34 /quotedblright put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 65 /A put dup 66 /B put dup 67 /C put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 82 /R put dup 83 /S put dup 84 /T put dup 87 /W put dup 91 /bracketleft put dup 92 /quotedblleft put dup 93 /bracketright put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def /FontBBox{-36 -250 1070 750}readonly def /UniqueXX 5000791 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf 5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b edad3b72ad63c2918b6e5a2017457e0d4ebc204b094541f345ec367ae85ca9bd 24568a01d3b9f8095f7420e6c423c414b3dcce6da48dd1c89a56d078e0d0e2f2 62a13640a06d17e44ee3866c3471fb58fedf5a3b77294517651c16bdd7267d39 a54e7171752dbde63ac19bb4b3021ce95eb5fe67390b09ae4d9ed4d704a67443 f55dce17acd996c1f5e023c9e5a18cbeecc3097f23763acb86cdd7cd13381ae7 4e48495ec7fa520539d87f8a8dcb3c826275469b6800876a457e7d1e5be867c7 b1ccad69742a8c9b0ad943482bf2a4ad0aed40baeb69a0233bad36b4ca2d2da7 322956c70375d152653500b2f22d2ab6990cadde2da14b4917f7515e64bc3d96 bf775258fc7dae4e42a4c9b6da8eddec4a800c8aadc8d75e48cae52137e05c03 677f5d6a82fa46d9f2fc7f56d62e5c605a1b7898b8d1401c2cac1a0122a2c8a7 aae09607f2c5f29293a09b9959399283be89051452898238b777db9830ff4318 a298b221c4a820c700ca964fc99e6b1d9eb0bafc39be9aa9dffa2fa326b2a466 1e67261bb3dbc85844e76f9313ab533ee16bcb478166de5502b68e6ec1ea6110 f53206cf1cfea419571b0243244b32ea38b828a01e62b03bcf476a32c2341cec b8a0fa2a3f3f339315d5f3aa7704408f6617d0278d5c892bb12e35c9c7c11c20 a6ddf5832b2ff46bff9cde62a884dd607933864f6e1e9e2899faa6f2c9712eb5 22f0e723416ff6662065e9e132ecfba92a0c51ae000c87515df4d95aa141a0ee 5e16a5f3f833aec3b0951bd68b348f65df291829a67ee1ca79e14902eac1b912 6016755a1dcc184c6087667bc8aa7cd79507d23799c678826d169c172a7567b8 b783af25752af5a7ae470e8076782899d4879c8369eae52c461c6a0dd23db8ea d6a4ca5f9fc1f796166f790a05d78fba94974576dfbb6e8e6bd807578ce26e51 3ec4f922ee8f3d36cbae6d6dd86716b30a8c6e88b6533425ae22506057f2bf62 763de9173ca0163acbd11ded9816c754c529d10f0018491a415de0c7331a1eb0 e3147c3da7818daf8e473873ae0d7fe1068d3c4e7ad2c8ac50cfca600807dfe0 0e178dff7bc93e869ea837ec2adf1f7a91ea470498ac2d196e62a6fba08103ac 5fe6411882a28a8965bf4dd0bb4136e6393d99bec196ecf7dcd6d2223ab9870d c90abe341f97ce4b84c10bc9feb2b8204b3ac5d3d6a0af9438ba352bbae295ca feac39a946f4fad5d3f5865ae6d20e65452d924ee68ae1f36cd2225cf801d681 4b966d51ccdd93497f57728fa0ee6da8744e9e1d65f9264c64b55b55f47fa819 1106ae2ab0497818a1faa8cb44e4c515b84716efb146a2dcc76b6949ba608245 39545399c4b6f325da5e82de55549666f5013b87c7471096d3220bd466bc1757 5630d355756d56bf6c8d3ac692abbe9a2aa926ed51d57fdd1f9423e52dbfbf53 977c49ba372316d3095be4f430efcf27e590ac5f698a2c5213b46bf5c247896c d50c41ceb590a495ca6d433e6a27176394ecf3b49ce9e656d902d9a9005d086c f299fe14913e51040fa3757fd84ea44538f40c4346971b7ae4ee5b4c8865d2e8 b7b09554a05d706395271e75b20c097daf75051458306862a935ef58817383d2 b5cef59b12d22ad63cc11b5251c00837cc10ccac1a7220cda93138e42ea5c5e6 e804d367f19bf11778b4e8b805b5d77aaf9db7fb0fadff456ca5330fb361b1ca 8a468e3c36589fac2dc5a5bd34d4f1afe947ddbf4160c1f4823c2e28e48db0ef d3a83681df666b4efc88c8faa8fd69f6852c7b95d072ca4994ee41afc67f3d09 82ac63747671adcf817d958044e6be7351042e52ac02209b2bd4963f605fe66d cadfa1456a560df99cfb58ed54c9a4d5658dacd9f55d748be4ba5df58f345af3 3bfc7e27283d5ebc233b9d25c9dadfbab5f3aea1986fe46e7e21aae10c496b16 5dfeccd069f9969f8c6edd31ac41721d0f252c86f7809ab62bde1276906bd1d2 83b328d9155ab149c4ef8b58dd4ddc7daa217832e67c4f8086d024896eb5fe6d 530ca5e5d5ed4b2240626e16638fd93273d57a0c132845fb9ce86fe5884eeba2 eb3279db5df9904fa099765030e64aa7486e264bafadc068746a0b89b178352f 7e0ba25d530a70535beab8f6cb1936977d2f446a184e257a2d0938e394164c46 f0fb9ecf55454951e6cd4de271b7bb74fbdf66d3cf700a0412b525bd08c813e0 289781d9d5f75a06094549d44ca2052ad7198834dbc1b10c1fe902ba19ea587a 2a00b397798c47495bf51adb19e7fbc278adaabc8f84d9b9956f926dd23b5962 2e4149a7269d4e8177a451a26010afa2c32ce1da9334611afd268cda107f5d01 0124e9e3e1d9646670b65806b2102649ed8d4e4a72f6723f630faaca983090d5 ba007ed69e622b96bcf3b09c26ccc4fa837b8700d5bf12fcf552242797b2c224 a83e4529ef7cd6d65fb6a80a83062f3020a8743081f79279ddf488c582982aa5 2da97d46d47c390838ea40f180823ef31d1b7184556357f69736c90d712ee02d 1bd04361587fe2bef654f1a2ed1b420c2c5cb580a7f89f30020d0c9dbe2b1549 9b3e1a81f36d0ebee1f16715a93168987ab8d890ee9b77ae619ad90a548aff30 35d46403d38d5ae6b84e2793e79876a49d4e5f811b2afb444de41b7cc31d1c29 d00522e832574719e5376ff4051c17e61527aedbeaabb28e8254102ef1deeb7c e8c139b7471845fc4f4404d575d802f1c76eda02817bcaa015c4d7262d95abaf da1fd4fc41ccf2ae47be8ab5eba99e89aa16c705e03f305dda9a4e4b33b64e1d 5b1c605299e63c5d4d36495811bccaafe2dcc11dd4f23366428076a99f920582 1c5b58b1b65ec3126b0e1d3e0cccc9150d27fd70bfddaf56f03eb0a0cd8a11cf f25f5e48ca71a5337ba7b8aa723abe296df3ac8f16e1f85de3c8c0a96d3b6093 bb52698b0b0bddd13431de44718e23e1fdf2f46dc32bc2536d9fd674ba1b781c 417099cabdb7b125f76c6638c5566dcf6cbbad5f0046c9779b10ee6a509f4afe c713792a5ccc4ef8ac452a552eba52e1f9e59f96109ee60e737f6a00a08b0321 80a686a59fd6688919d6262213e5db03db4d584d2fad4d6998da160bc8077be1 a37ec84ccad6e9d40c9e0602f696162149cbdd6b4f4bb70d30e6bf6c0b94ab29 80fba3f61f9e1f02b40d3a937cb670890418688994fdcce6b6cbfbc61a4bac7b b4752ec5404d0bdc20d5b151c5b7e87c94db3276dcc78b34ea93db00709c51f5 544f9078d39146600b2105441b3bbe7df8719ba40cbb75d42e683862318ccaae fe419726e0bad97d340730994cfc0d086ba844d82898da2de30dcb83ca0443c5 6607419c9b8b94f1c45013a980875a54e1fbfc69089a9d081913445e16ed36e4 d4c208dce3b6fa90d1864bcfa50a9faefdcbbf6cb5d606dc3f88cc04fc98a0c6 eff459e8edcdaee3bf5b220c12bff7426076ab6eed942a2cb20abfc91c07b2ad 1d771f8d4135a9a7a9974bc93eac4f7d4ed84f1751c60fdc5fc145268c465593 7a45f539dab4040db5997c9dc756085481157f7c845388dc1bf73a5b15cf7f75 3a39ed5db44b69f133a0b6825ff7af94dc2252b09faa724179ea3a2abad4292e b7df1530ae80b0bfd78c713e0194c1c58b07882dd26873aa7bf994676eb23476 9846522c975fa30cbe76a62792517330a1b9fb04a715142596825fdb3ce3bb01 2e6e2581b8241bd84f5fc51ff31b88022d77e39edbb88f189257a05469d50c54 7d6059d7cacb5d9acdca63cb171904923b1b02bfaa55a7c39070b1606176ccb2 d769359461c8b0bf885e40918d8f5cbbdce6afbc82667a997a3755b866af7c42 f0919360c40903de1caa9366fc4453278e806c697e16d04b6144c1c4db2a3f08 b8c6ac7ff97c643eee4895e69747fad7ef88324719bd57a2bada6b24d040da09 0d62f6d8467fbf8eb649a39cda9f57d7b96fc531a1a7b7714e144560a368c154 e6a788a0f0adcb55ba90ba99dd390cf45eaa8a4ff60256c67714a49baeb45c7d 85cd98b15c2d747758668d53acacb690ea23a7d4f7b89e950bf4ba7e81ea3d66 a9d49e653443c6b761519254b57c9a8a63530a76fa474fa6f903358bec9045ac eac4ea3d3c7c0452c21c5c98c98dff7dfee837b8468dd0c23ab94bcaed3f1cf0 3e5be59bd0b30782aecf1af6beb95c68d651ea848eb463244ead6f7c32f292ba bb6280365da4f8144f9a3aab79aea6b682647bbb082d76fc7993eabb7f0a3b5d 860d51e848a6e4dee9fda30fd9e9a5dfd9fa150bc7f87976296deade8962efb2 2c01cac567e09f375c17f6a4cb76bbdb5079d99e740a884f6a700f51dde2f16a 96355992192f7443b5317c9cf1339453f7811f62c5ced33aadaea284ba9557fd 4620199dee5b6d893a50e3bb674c795005762dbd891c52fff37340f080242b49 2baa8b2f21be8ee64579fa2b5c817ec50dfed4fa21992142410c8f2f3166664d dfb96f6a6677a0dec650977b38b473d06a74f1cb355d1aeec34e4b8c4e7c59e0 1921cc16fee0b3d3d1782318dac1ce65bc2180fcbeefb6590ff5d7a9c1d894f5 907897f5ae12d71c5c71a142aff0ec7d58068bd7bfa36c8cab7088aa036cbd70 a01146bd8a1d9cb8a5c44b95b7204d06ba61ffb0ce5fa176a85044329c29d8ad 7ef14941da9666fce75a029c4eb852fae8c4a968f9f7f4224c95a974f7cf27fa ba10991723ae0bbc2fddc0745d91921f4bb86f9a0354e371b1a7aafbf1c2ead0 7eb9406070eb9f5f551f0709ca572199f7276e69e6f4a74f0e863572ef1d041c caf532ecb0af957008af7bff808de3cbf2aabf029cc3715429b2cdd714f9ca45 c446d81bcb899839e3dfacf61219b16ac704563b69f1fd26825bcc9133ca2470 cefbbeec3d19f86a2a51bd0738ef57c9e9e6bc655b93130c9693c6365311973c ccb137aa6ca5e989e3185777faf0a5add2a540396370cd60d33cf057ff4fb66f 1e93c87a8101a04ba3b066cca1c913940e1c84d5a936e0d31b53f89a67ffe507 20e95148f4a12a5eb7e95ff07d8ad59c321453f773e68d741a1196618e182ff4 f4e77cb548d0ad396c635709ece252c890ecaef87ac3162e8e1ef387b8200e5a d33b52b4afecc79c7eddf09c3dd6eff32f7850964f05a894143129bf75f988c8 f6e363dd18df84caa7447f56a2575098368fcede79d674eaf5497ea5d9a3a9ef fc58f575a90de3c337ed6ba0cb986872958752ae26f17b6421a244917c4c7f68 5a0ed611cf74fcb57a63e153698ea60854360119fa2ed3afad5333c967a00abe 462f45faba3c089235db9280d8d17e485e7739a3bee5969fb2fdaa43b66eb113 32f61a0f3f3423906644c3d1f3ef41a1403f34f671239ee78b119d30c91f2cb8 778af979ad93814b297c362ff0615722a2e04e634f0520e6ff3d289632f401ba 5a53dd2471333da957e15eb9a4f1c5f0ca98ae02ea857872f5f3d12058fd85b9 1369f8dbdc897682b3f4016e572288c5c5f676c6b2dc6d44c20e4cd9d44d6dad 5be57b701767a5b6d9aea57e16c60f8ba0b674fda29df10c8f9b93749b87b466 f5309374017387b8a2235af0c76e02261b1425c01de67678e93c5331e0c653ff fb6de978979f1c45f664de8f0c9175e6af75cc187787ec14515f49671fb85763 0d2e734e39a39528a560925d1cff96a72f180a1d7b05d1830980e67a547e5a29 4fab8c459fe9f3c5bdb4ac19771deb32120df9739f2538861b66d58c2f74bc14 afa7e5cb89c24cb66a28af98dde4dcc9ba7ef089f02ad97bef33ee93c235c65e da08c02d2114100ef5945bb601a2d9cde3ec5196e7874de31a30a2478f2c4af9 ced05473a96c628fcca88ecf6b36495e82e601e02608ce11ed5dabd72bfdc1a3 2ccaa45ffc016b1d917af33ca25f109c5e2805be9fc696a6533f4df88d0533b8 13802b59f2d2b15e2db149d831c02aec4a99d405be13465cb506b4465d3928ec 7bf6da682fee6a49f729161fe3620a6d8d29fa24dda6d4aec2a40f9aa858dca2 15c96bb324fa6a8f376d7f86792671c6d0e12ff64d04380add38b13af066e368 405bb45384d6ced259df921f372502dc62839fbabf45db66dde112e71aa16312 b57b4f7e207a14b34bc9f67c6d13220fcee5bb3761ebb995a90b5a9aff409e46 4222b118560cdccc8e7d0c18fa9510cab9274ea11081ae6e33e1b0619bf62fb9 45cb0aeaada8136644317cc0dcad9728e8a2a03a9a625b0aa2fadb00f7166660 4fb12c968f4e0f7a54bf0e1a78fe6d544f83be6b7e6098eda1d56fa5a030848e 6b2e12824a4bfdff0d632d9eb6a57acac7c5983e7548265bc84ee0c8c129f037 88492268248a694244514585ef36006334825bffb4ac6c29842ca47e72306026 636de6201e94c3ea3f6fe448d383c920a830699b285233ae99557b214db64fa5 9be7a848818926d7a96d980ff2749c072c6c85237d7a60cd25e2d2678f41156d c2019e69f63a9683084143c6f1f849f83c8f173c1615243d87bb365245c631c1 0ec67b149d8dd69d8a51cf00061d9fcfa2f0a83f1c59c8c7d51e581fea273b00 826c6d5fa82aeda0196be2875ce15c40fe2793a62c87b508d2a0196beab75878 f2b613897d885ca34052ca31d09b22073ad7f0415c90068ed4f23afc3a8cea67 aefabd67bbbf701d612e3baab5e37b7e0329dbf2dcbe848c3dd7893014e87fbd d28ead63c064201d61508719ed905540688c127baa80f39953ffb139b97e1a73 9004e5c9232bf2b896c6152da708a6d454f5ea520d9279a607fbdaaf6c7ecee6 d6b99850d6e1a40a075656e3dc9461bfbc79e53dc8abb3a416a7e84da0d25f34 7f186e00d945dfa134e03a53463c487ca069ce6456774543e5a81e8dccda8f2b 6d21e4b3972a7bf5677f6a9d0b5bb937e874489fe2786d82bb10907595be7c3a baaa31bb471be21c91175e4f6bdd278438f02ab10ee7756936a6aca312fc5ea1 6c64fd9cf8676e49da7d42ddff1efe6d56f4d2242bb9e0382d01b6f89396671d 9ca9a3d8df8f4b8c637ddee861e5382bf17c7054f0ec5129e406229840c0f279 0a95cf0cf0e973c9687440a747083cb3e158779777d2c7892159d5756a8af27e 88f19df8987197f7aa3ce374f68be1eab0b30919f12735efea73af4fb61b4580 9832d565fd287c97460b044cf9bbbe2433725306171883b19b79893837efec39 c3b88b921794b89ddefddbbbb5b49072d78408e408c30812e6869882c8bf206a 236c230981664e18c7f5badf73dade5c58942002f081024fda0e00dafff6c41d baf46621bf52ed69eb11080b79774d94dfe78423ebeaaac0bf59ff49ca2e9510 eb1b56f0b13b6ce587156c4372e6d4d275c564eb3c17a94d50d7961c9fb6b5a0 315803d37e43d64549f2332d0bc5659cada6a52a12f4a3c589474553b100888f 6be8df796f61e5095ecdeee33d288c8b0c6091785834a0adaf675b1d4af500b8 f8c2226dd1628407b7cfe8f6951c9b0e5fdcfa030f88a2760ccb74d044498d4e 49bf97dbda5e74898fe36cc4d3101d2ec17acde0b33be2547176d995c2230360 fe8579bd8ce645cfc2484416512527663b69d0c2d7fcc901c169ee742a23909e d90d8d844457fd3d07a127bd4bdc7436b0996559d9178e87261cf820047906e0 aa041cabcaab93819ee6b634d96f6e9b7f6292f9766fcb897d23d40df88885a7 54287285ab92ecf53da3492b102816849a8c45406371b28f2eaaf35687eba862 6711f36b1f884c929c9bdb0a8d4b1d8aaade6edc752fec24fb22b151e8d493c4 ac56349ce6547f338ab8084417ce5203b3ee257d33bec072a5dac8abb7917de9 669d7621e3d5f9d19eafd38750f9aedd08f668fb24c3a6831beb61dbb4fc3223 072c8132468428f20b3cf2d3afb55e1ee6a78b7959b967ee101f77d7da065f80 73096b1073df9f84f382a20b3d9042941f77e52aedabed8adcc412f72159f5d8 821b9e2ce6e353e8602437e6f3c97553050b1021018208eded323ce26d7a6ca6 82edba2a8056a10e3317d90d6e95aa80e3874912ed36764d94dee24bfec77739 2c0b1f2fc1319590163d71856587d64267e861ddd4ec504e322fb454b2ce94a4 1a783668ed12b048471a74b3f1cadf0c0724d80a6644cfa73c610a77861b1412 021a615f7233e9b7e26df681fc0a7fda283e59f0997e84d7403740b3a5764229 939fbf10c757fff03ddf68c9072454ff219fc026b227384163133ca761fdbcaf cc3c65eb4ee5528c21f607acd7040463745d4e8a24a88607d172edfb5150c5aa 0e213c7b0803ccda96deb26e38299b72f4a3b10d1e90084371e5adc0bd109c65 ffd36664c4231810708af1dd08156e7530e295aa97f9d477b7fdb391d274a86c cb0ad461bed42d55d4ba49d7d57a28045d09740fe5fa8c81c57ee1ff803e30c8 2147d98bd04720ccde3b50e0eb52f8026c5c9aee8aad4188d4779d947a85a6d1 541117c7ddc9f051ea513e31bb80f40f4879ca22a2dcd44f367ea3f30430be3a 6c12284d36ecc09cbe4019a9848c64dc81dc19e82d3206746d33017200773278 4a671a9cf224bd91b0b815cfe0062ccab0c33038ab8d8fb2cd75e60462825366 50cd99f63b709c7a8726a25b59194c36aa71273f14e3d52759003f15bfc2e9c3 e7218a2a9afd15cbf27a1b64cb7605fb846bd97877efe7a456cb076eab9791b9 bd20d94c794242a498b7acf48c0816d34226347b59bdb86d1fe207708aecc57f 3f99e7da99944837a6d49a5a3a4821ad51ef2709bc092b82d74e53cb421d248f 5fd15b4364f1c2f5e21bf12097d50fa7dbde68679edfe43aa3020c6a235c3e48 63b29bb9fc4c2b63a0232a3e51914695e3c7b1cc45137a92d2d0aa2154753a40 f6d40e9d272149c1479e72a4126e5a19ad9bd3e7e5d961006972c277ccfa8e6e 13e416583c132be5d3ccf5b2f1b85c900dc3b64f2849061bfb6537943b63df68 4fd8df30b9cd63e738b498f04c1f3075bc6244e858c5e6975acfc59d23ef5c5c ad5b0fcd87e14386fcbe124446b2466a8ca46f81a1a390e06011874467240d6d b243b9971a2f6c4f5e031872cac9fad8c130c8bf3785027d0633ed19f200218a b6cea12f38b14281d98189c4387a821c38661046085acf022543ad26d824b181 25b456a17b6144988812417c7ac1d68bb589da78dab9941c502905103acdf00e cdf9f7a8d70dc092d861a1c0a6e651ae4f04ca5d2d1368e8e40fd4c35d48d337 a4de4233e98c4d0969a34ad8b0a30601de1a6a97c69b1bd29faa364f0810404a 63764164c7d83452cafc5fe3ba5e88fba01ead9945263e4146259cc70e1b7754 cc451db29cf0a63e67970e371cd4ca159163d9eb87d400d4e031b444938f9689 35782865fcaeb76beddeda3ad70c704e25dc06dad48bbc8981f20c6f8b2d7970 9d8dc05dc7799ae8157662463e80255112372b4c923472344abf645704564540 98bf19e1137656123be216f6452c0df4cd95e8a33c778b009f75526bc53f98d1 f2a02629b6741e28ed4801ab3cd97e04f434948d00117aabf43ccedeac8c016b 23680038e76dd9f97fa9435089a797c2dfa554265305f7af99e8540dc0c1d6b3 320b62b041093204548b01c9eb31d99c584ad0d924922c82e3e0372e6c638785 f644be17400eadd5b02f723afd432ebec2191e84c3fd9c5bdc611c916ce2b1ea 86fa2284fb1b9e64b2ceab654f34ae9f606d5be4cb6d14029ec706b7536916a1 419148a4566e7a32a880ab56b4d09e7ef8a465a88e992978acd4f51293edd013 fcb18e1e8d21db42b9b0af652c3cb031a45b94c360118e9f30c5530fe42a47a5 8ddf3ab444c06f0c367355547393ff6bfcc0c7b36fc2516450f0e3eff3543564 365d47be04dc1555c6644309abe80c9c4653331b7dd3f2a9b0a232e18f6bb609 8a4af6dad93cd8959fb281606524a200f8e73802162b8b5417813e7e52b73514 d7323f9b2f64167813a6b224b028b23dfed0b188dac2dd517809c74e78d56ca3 272421834b6d99d89b397b16329155cf49f6916d54e42d0f300508918db194a9 938ef244324544b6c5f3faa95805808e99c00b643c0318dfc17da50be648cf39 0d3640e1b8d313578e74b7769be1e51b0889e9ea2b8e899624a2a44f02f6f7ab 075288d50a46ef51a2f64b6041ae3256d67e9229ce8b0f6c21c068d7a06539e0 423982a5890ad65134371cb616862e6d536febf1a336f8119d642c04efe09eeb 9168e5c27a9008746da4befd5209ec11b335354ea3feccbedb5f5b5c1bccad23 2cca49d3ee8ed36337ecd30799c84c9176e7da1fae01a37ab0ca02393709d2f2 5ec73c76a68c12f6c3a76b511e30fbbffdb5d38a424ad39d1007da88eec60a24 e7da0aea6b3603a990e4332c4b81b208c6b87e8b2ad2f1b0c8a8eed07f8fd510 4eb6eae18d8469cca87d0ef8fe34630e03a9f01c5d638547cde377396e56ed32 ab4ef75329351188417c35913791bec139729dd2dda19250300e368b2b6f9c2a c66d6a5138cb45ad915924e2bbfbd0e20c490fe79dd9100ce247eba805e7f0f1 8421bab9fd571b6208f9cb7f4e61f6358fa3afa228d85257ebfe68efac0249ad d83e91118d43478e2f5f0dfda15c140deef027dfa89229cf871e050bfb4ed20f 72c8c87a7879803ccee71e069c279dfa39bbe9f308cfb26b4ba8c77557aaaa00 c013e1676b42669d7a674a528f380b60f23f275bec47366050f5f69dcdcd9f05 0035fe8277fd70dd68b3759937880ec8fe6e091af20b90e4a1137dc87e67bcf6 eeb98a5136dfd022a7120f2036106328fb84316f9d188dd3f4ba6e3c9b1591f4 723f396b5111f93b2b02c89758cf1a804bd73791fc41acb479f0f519d52757c6 f065fbac980fc08d7443d5b168086a929027d758fcd9c022e103ecb48fbf9999 f1c43e38f55d483be18b7126812f7220164cc88e1ec12fd117620fab750e4197 264be6827509ed68896c2c61fc119576f7bf7abb5144a3421fda541f12746764 8d179e95cc5dafc247d3c5efea9ad09ccd6c9243425d953a30e8afb52bfac127 89ba36ce2a4cb4ae6122383560a55458500706a1d494046e53a18f6be276ba84 f83a0af42ceb168c58c0f708a6d8d832147a9f52e957893a43825ee9c6e9a9de 8ff11d15d74694ea45e9afb26e6d6c08994b8d622f250c232acb5ad467f1c5e5 7d1934c978543918836b456f7ac5768bac3802899290c5cee966bf63529031d7 93b60e8491e3378bf839d1fbd1c6a6b957731343324307235bb638274b7b4f64 eec70236aba74409bfb406b9d3b2cf79e10f21de78746c321253fefdf06ccfaf 0d2d4ca61bafb9bbb76732d8650445c046bae3782d40311e0f6d7f7d65470d89 06312b4803b3c1ce968971afbcae89e44a2e041d5f51f47cc40b721e0774f669 e74b84453cd49fd690fa83c44f7b91b1ddb71082118e4394839a5e5614485ce9 6669f525624cca2c3cc94c0916da1544d59998e26ca134da17c922fac5373d9b e3e7feb82c0e5800e1a6c4ca98a64b714646459bf1cdaa7a1aecf5a3bb071c2d 08bc5febc0d0c90991b85659776086352d3cdf80ac40589b8b6fe9e88924c211 5a7e4ecb775d27bfd497bfe6e9975376938d133b309e54a08070084e6b1845d7 e08ac21670df1b15ef8a4a3418a5bfff5a99bd05d6e7df2dbfdb4efb4f257458 ea9c28fde34bb540d785e339770b96f56c2b15f72d565a7976d5a924217c1128 bff110f5b55b98ce3f105a3ab28a10843c95a76d6f939bd3c0f42d798a67bf8b 890f6729b791ead491e9989fcb7fcdeb18112a69bd19abfc62a8bd046b43096f 867668b24518e0cf7a46587b294fb326f497fc77fba0681b9f126ebd32d29867 1e697a539f179e5e67f1a36dce4f3af4260420fc7384c31ab919201c1e5de4fd 20579f3204f32941c47ed7c514b808484ab8e32ecddb2f4b973a03f6538f8882 2fa00fe170530d11e6bd0934aabf0807930201488c046678d0deabf71ac8f707 6fc90cabc649df655c250c90c84ded8295e26b94838a799ded3eecdb5916ab21 5bf5997e768d3aa09e4f5575bc40269343384363a0cc9a1940c6bbb765e651c4 44f3c86ee529671dc58df49c4c9d7b2298e6b2e54664063820fe6de7e5df6084 45f60c625e91cc66ac8e92d5f5416165b8c31c404db04b009a6e4572a21eb4e3 7d76fe362f2d0e9388d7c465f3d84a82951d1790df43ca9d894821d4187e5e6e bf15e49e959d3de15592dca0583595bd879a0cc81752175580d103dae8a9d32b 6d39ac442108ad43e5abcf63806ba31f2335decff5a69d0da249065edff3a79e 287b6676e732bf725d4b6ece53b94985b1d502971f8cc47cdcfee2f2c7bd3941 44d630bd12ef5f35561f894eac27ef255246e12352cf1168695960638d619167 c26d56a93736129ed379713cb44231228f33905b7216ba2c1e9b5503cfa64ac1 55bee2e1293fb26e2bb50b73161d180dcea1c9bf34f30b89321ce1a2591cb3e7 e7806cc937239dc2ece4e2c4afe260ac3721decab30d0c0b364e7936ad7371d2 116349366b81db04c83347e65f63c1609bde183193b5a683ede8683494b1947b d4d2cc6ee3c5eaf74ed17cb30aacf0a716ae0d5bc3b171d87c2949f0431d0810 0e91d30e4a00670f3bb2c1c621ebbe3f2221f9f0f8e29457497518a087644a2f b1f5f52e7bc19bb81ecafb4994ef9d87fd83d8d876483ee9e9a53ae84827fd38 144dc781670262bcb64280e22d1d1863cfa98b80d6a4b992804de75b8d6b7058 b21a8c8e707e2b59034e36e38ef92e7f742d0468843d6b410d53800651285699 c4caef26c547697ac979ef990248e3cbce724025dac494e02812369eacc3113b 2a0c47fd2c423a7c4ca314a70a21e451651de29f118a376a23af6b63042a5ac8 c3e5b54dec124cf37072fa434bf7ba567bcfb47b405f03dd99940d8829464f64 d73a1e41a970309e07f071eb3719b735d2a8309d9618639869bab321fb13464e f21b52945fe8a2219f5ccf9a3be44d173a73c89311f27030129bed21f4672b45 3c5d96df1e9eabd20a0a5c08ad6875776dd77b326e859241d756420de893881b d87b25f4acbad6fb83ff66e50f9c2de06f49033d1fdbe0302df799b90365ca3a 7b16927ccf5b287f0eb24c11bf6e834c8a62e1a893d391a1f57032dff92d49d6 6b2200e5f10c2e1543fa2e86671595f3568e857e4c82dcda526d9f2469182eb5 97208444b7f9ee8cc89a4872682b420f1f12db62abf523516ac8097e46726c6e 35bc253ff069e525299462b42e395da9e6b8949fb0d5ae389d868804a67ce144 24c3826c11fe08b80c176e5e078bad8edc82624c28e42ba5b11b31c4f6e580d2 4dae2d32d8a597fb1f6bf2cc2154613e90cec211f2a795ffeed13b3536689800 d411aa86b6dbc25014c34ffe84e8d3a7fb2025d0ff3ebb2bb90852802d0c4e59 e68b17b6b7969b65476e32df87d2f0806232d32c85fe4b8520ffcf66a6c975ed 02e701a0720148a0204fe90a31285950dce38767eddb87623cada46fee7fae3f 56985277699ad89c3e2e6bd3e2dbd3b70c0d1cb1310797aa683d8db64de12553 95ee1163239b3a7f143aa97b4591550f73eeb27409fae5a7d1ce8b9b9db966f8 2a9c7eee75ce43682a5fb73ac6dbd7f0f2a4dc53f15a4e81d3adcc69e590dd19 072456652f61b9d2d87fac9a8a2136c41f627eee98121ed22f01491ea6069b82 431a3f0649ae242fb66193eb83fe5f456281dd75491823d32d8eaf054122a938 da4e924809e808b3fcc46c6471028766e374ca679b71e515bd94ccb86cc66c94 c18410a26783ac94e471a4e5f3783b24101dcc015ca8c4898bb067e27e753ac5 21f24ab5f625f831b5dd3f704f0cb475457fbbe1fde616c3cc766c7d34514f9d 9f9e3384580ee28bb3254b6550127a7d0f6d04941a5373053115c66a01a57d49 56a1d37d364d3a714acbe840c8a529d5a89b995e0df7d4bb8275095fce1735b8 acfd929931dbd0b5b7f7a2ee04fa6cfef81940ecfa46cb39b99b54a601aecc21 463604737781baedeef823069df8816023ac5eaa823522bd5ecd30d86f1c592b e1539e977269d3b8f11edde0de3d73311027836ef6381146b726d8843b2cf4d8 1c9fc55ec54cd7e845206cf86f7fde422998aa52aa17f719f42574202d0c0aaa 69ec817060b67427b9fdcd76eef503a7a4f07011e183b0bb1fbd45ea68d1e13d 93be24c77f06a8fd5b89aabd84a8abdc869b2b0b1dedd26479e3c4acc71e3ed7 69a12c972fcd03e8cf43772136359f6e1e2146a42ad8e846ee8ff3d495595d00 aed9f4cd7baa076dabfe6e9f84f050ab42a149c3f9399f012aa960aa394645e9 3ee7745d0163aa6d398a623b195464becc91aa111db3813f578554351e7e7351 cdc6fe5ead48fe9cdeb30866c2d22078f15ec6a26092b12db5f52f7421c87887 cb21e29c7a551bbe4796ea6504b22c33461d2785888f8aade01576ab82efd06a 5881a7fec1bfe2eaafe2eef22c5eae4d4a38ce9d3fe2c9eed5aac420ffa27279 b122784e8b063fca5452f34d9831d1d34d379ebd0149eb9def2b393832630f84 0c92b1e1ee26c0e638dc35f2fc91464315193d9aab7ec8b4fc105c7c04e843e0 6ee98627cddda24e1916e118dc92429d912cd6f9749ef34a49ab18da4ca2caad b488e7046427338299f7d2ba97e1db97c753823fe9a4355ea363ac691c8d2912 05580d1d04d70b7ca56fa52522d71cc02d578ce44e632670f277496344b4049d 6a7cd66dab7d13d180b28a8f360d0fe6328dbb018bd7e0afd12b87550fcec0e1 f5782d9d3a0f5e1ecb34c99bebc004edf505d1b53206ed652fe9aac1bb9d6135 faf126c423a38fa6d19a7689725c5585117f3a9c3aadf24fdba9c56881b58c53 eec4188ac4644651660924728a545d46e1e0205986ea0e0cb98f67d14437efa9 86c53057e9e4b37dba483f95cdf5673dbf3f41544598a76ccf2490ae0aff1247 7b901381ae1b5059e7d5dd0ada7b14b20c5b3b8500f067ff14b10403fc6a122d 62bed41079408f9750bbf33337cda0040da5dea491536adda5f89323bd07487c d74ada14a4648cfcc08b2d1cce5223fb1a2fcf505c4e1924de377fbc9c0e1561 3282017586f6d3b291c717133dacac456e58d2d9fb2aa648e013aa1eb876c884 6c7f71580a7e933ab91593ca6114bdd54d2aa15bb28a9de95744b8599bc62f85 4aceb827c440844ab37aa2c445ee8304a12baee6baa29075c8443a37ce30acd6 c8154672abc5534965408729887a7a5eb54e37a811d69a44b9c8d7382329f1ab 1648a97d9b24e5bbe2cff5187e3bcc912817adc94830f60872fcf65be75c673a 181d3000ba0dad4ca72f915e58ad37f4ecb92815a9ea7f3ef5efb5401d541add 32f704f3a1d87fed49ee14fcaaef2c04a2401177abe684dec92e7bf825336ac9 b2d7d34712e4bd9791a559907559f18bf39b5831d7b87387fc1692fe004bd96e d6a8d040fcb8f3dc7183df881cfb125cf099fa9663cd3e4e5bf0991f0ba9818c 6a9d6452ef13fc211c12fd9e9f3f7d40a4ed17fc0d422361f358f743b5972ea3 676b180dae233f0344838703694df958048bc6aabdf2fd104cbf2e374f716de7 ea917d730e7f64873c75cdf7dd064e566d645e4283e259b9e3f62e6b6a76ecc3 e31a7b4f848babd9ac4d9ec08af2d08e5440ff0427c7f61626ab12f2fc99c1d7 7217e32e7762c14eead16fa728285460095c85ae9eb6190cea19194dcde8e972 584272ac43a14febfcd7d13fd5276c6cb863fda3ce51601791c1ae14f4b69c75 930dd5b49155b2ddd5ac95fa54e4475daf266ed1c7eb7100cee91a4c2e702fd6 a67f334ae4e3a5055d7c520d2832d0f62a5b88a182db874d24a3381c8a311ce3 0018ea97ed9b5152e73af45f23d88a2069fff1db78a112007a0e701c528b6130 6868f2614e75 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR12 %!PS-AdobeFont-1.1: CMR12 1.0 %%CreationDate: 1991 Aug 20 16:38:05 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 28 /oslash put dup 44 /comma put dup 45 /hyphen put dup 48 /zero put dup 49 /one put dup 53 /five put dup 65 /A put dup 66 /B put dup 67 /C put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 76 /L put dup 77 /M put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 121 /y put readonly def /FontBBox{-34 -251 988 750}readonly def /UniqueXX 5000794 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf 5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b edad3b72ad63c2918b6e5a2017457e0d4ebc204a520640fd7c4d05e35ea5486f a43d0e970787203855daccb1ed0b16325828b13b7c767a1a58c87902f0546ea5 404440fa6526975783c2d7a9572b8e5d5176bac598b8960609f49016aebf3763 89c1adfe6a1ffc0c53b3acd9d168ec3a278fd4f1d9b085dc2df701346c9d0887 3d230a161692b42a45bb5da343b4edd839dd60685a59aaa49fc65cd8e2ad2a9c 5cab953495172a1a9f40d5f38e922443a519dd96f667201a408bd1d89e35f4ab 98e2f68c3366efc14b5afe1018d9c845d808d4f8e07ea8168518a171ab4d6e21 70eeac099eb7ef46eb9781384da1fac3b3133bb718bc80082eaea88759745188 f266b31d0c7e791d633f16ed94e05517a32163e74cbd96dc5db066f2a5313d6d 7f09465608cb404613e0f058073af000e5bdfafbbf9da0c0d5c02a3447f2cdc1 f56481901e34265c26d331ac3f85bdcbc7c51ef9eddf2b9c189c5253f8e74282 d6f053d7d183ae17ea175e5ebc401e67d21a9fea139cbbf3bb1358c713a75843 b39a69aa2b1a7b975f53ff22d1dc3bdf7acd17afa1da21568310c68241b31d3d 03bf404bd30baf9cc19c75b958bce7155f03cb0cfe2cae0327aad4b603284a51 7c26de75b8c6f6aaa9debe4aec08ca4b646d787bab1e702054272909211e814c 1d2c33152bda973de70ec02436551ff9be604d16ffa29b93380b5a04a493f00a c1d3c429bd6c92508652f7ab7347e9dab047409e478b59e22a73993a96ad13f7 3a58f110ca20a1d65e0577f470498b6faed25a690fcb92f9f19bac5ac431c893 607dfdc528e7d7ccd1a953ffda264220271f146682ae3af7b7d80807576dcb76 0e5c25929b3a4ac45cc6fa965b8ba72eb5f411d089e080b28c17e3345b0fda1d b2064e84b4dec8d1c6ad4418ceba5b3dfd450338c5c0752c5232c1c141b10544 3238d0aee93f62daf898f30725ada49b81a9e584567929e2ec3ec9bfb5d0f168 d365008604d3882d1712d6001b123ddf4959c25115620b1ba1a98e646b10919f bc5ac5b653b54914ac29b5299ced508d8a2c3f1755c8765cd93c86be2faf02a9 1f14a673b5c2f57010e98a8d185cba7fb069e26c27f45a4fe91677bf2f01e896 165704d41a3a7df45d45ccd4151df9299e99174fd8fe4b49df033f3e0e96645e a7cd4d551982641601f14815abd1580d03c0aab34295d2f2eba06c58c594849f 9af87858d9dc08b89a215ca4283777fbdb3e9f8d1d70e59a398ec6bbad490de5 fb8ebb458b14385ceef5ce82353e61e4138a3039dc762c2f2b244e9bc50550f8 6be55b7d62b590bcc374676a11a41d089ab633f92e837a35b8f04fe6d829d7c3 2534b600df6a79c36e6d23dc04b2494cf0ffa9acccb33a138dba692ee837ab0f 71cc414ff87420971a28a28cee9b7439d45cc5eeced235e0a243a594f2597edd cfb0e987cc160da5010348f0b69b6e5217af93e3d3733a48150cde757bedcd45 36c36d0d428b73a24384119d855c60f0c04cb5767382d118be064065f50f19bd ca3f2f8ebc4944cb1edfab273a5bee623da28ff0658109d40307b01c0ff2eec1 73f799281cadd67c7e0ccc964425a8b9687e45c91b4a4cc0492b544deb5a02fc 3a71bd6aed3ce4b27a0c99160c69f3047132df782daf6b1e853ef63a578b082f 7c9647e822c16d4cc9c3281d606f0bea3b991784db8a003047171b67864de2e0 968af8ca5d0869cc2d43926de619dfa9a35a2cf3cebc1a21804752e08aee0f7c e688f43ff2bfbb25609c47bb1f95a0f65528c698d74845f184f83795479405a8 4cb55b93820b1453fa369e6902b504a335b99d11633f4b8f399ed659dcdf8c06 ab93343735164cdcf1c4f2e5b4593c455647293b3ea7a2165a4d1e8f6d8db935 5aaacb5bf93fbe4da78f10a7cdf435df32e1d814cb7962fa81799d68a34b84d6 d3eb42a5fd47afbb3c156dd4b45ef37a474f4d9a63ed185634b5c16b42b88079 10e4ad3fd586a1ebc96f310c76128f31ef7d5cb6f0e45a420f32c85547aa460e 97bc902e55ca5b75bb89832c9b30b3e79e80dc0e6125ffe38ab7f5860da96af9 a589afc688d14ff84e07a29e8112ca076e3cd48150b6fb83faa73bc1fc7fcbb0 22b89433c1d35a9f7fab2d5f895db93cbe097e89a305dadd245ad801771c24c3 d57bff71702f4479db546248acc5875d543963da679ac22a066ea4efcc93359a b1a20a83794fd3cdb62b3f3f5b9f6977e6a69482fc6c9bfa8ee5277cec16b27b a1245934a8bcad0d551df6a83e3c920a57579614797019802797440b01e96305 f585275ec1292bcc9d0bcf0fedda5a55d15dcd3cb3b33658bfdf0541e9b10b50 60254c4f36452b61200cb926351a2b2cafc254d070e073e270cf719d43dea524 8238c61226b451df31fd469aea9d4562339a2ef643521c43b2f8b42e6f14cc17 77bcd516327c44cf7eaf1098f100160bdf0ca00dfb6926ea69a867d89a3751cb 8ec6d3c5f943dd6b1fca7def4988935cfd5c314a46d3c06a1bff94c30884ce8b 87d9aac01890038fbf878457e4d2eddde286b80a8f2755264f03fa13c0e9b3e5 8761234611b4f98c6f9f0bd9a100cc2ed6271bf15004f3b04060f8024db1d318 a4d33800f99e164bb3178c9a3d9c97e27dd9e9315c67413409d5e9bf49983290 d04337d64bee3284b1712e3a81036ff217c4d44a7cf48ebeec98c1b1f6d36341 4d200adb7017b1fdc47bcc39adc0ee64ca19fdd772e64a6db0dbd0068b8b3ae5 7119158478cea116a1e31d0babaaa67d1d404b2944471dac4b4ab6268aba1c7e cc4eb2c17325a65406dd8e5bd30e97ab8269607a3345b0dd0a1009d659b5bf6c f1ecd8909816a500a529f989e814d06d28e029ab869bfb7bb612b71f0522a090 89ce6eb0e29baa366e1b22afcb1f8d2f6c0c3c6087548b364c0dfba8883bb9ca c2bcd6ddfc5f043e4067d4c9a2924b69ca7683e9e785c2f125990a5b6f2d3a50 a5f3496a586277239caaab9e70f5a2332dff76487e9aee3f322ed17cdc1398fd ead388e8a6224db91915d6b694743466c4976d558a75c015765d1b927755b515 58f278a8a6475ef84e5aa570cd40e9f6af7e3ea743ea7acf41a5dcd1ef087828 445f523b386165ef3f5bee46230c9b4ea378f780ab3acfc1689dff95e41b5a29 a77ddad159566b88a3d06f1d1d288dd187270388954201f67adf2594c51392b1 b3117c2c980e1759102246815f1fa02397653eee6f6f78c360b558ad92b6179a b9f71243578c4f990a6661d0bf306e399bf1b8531174002511b07084ae39919d 182256b326b93495b401d71d7aed3871ba1f095c5ddffbe2946d37b2f26b21e7 016405eef2cdcd1adb5b19a3043676dbe37351267a7e30a695e44c8a0f609a5a 35f020499a8d834913f874368c0f8313fb8b626a40d1786313b3a242a92f4534 b08c1eb46c98b8b888ecdd82248fffe9a73fe642ecf125ef49f8aae9bf6e965e 0f2b869506ad43529c4d3e02ae193728424249f6f8cfd221095e99886d5f510a 308272c011eeae1af590e213189cf63882426cdf12d2dd6ae666c0675c80c27c 13b9dd2683d53f54c54b523b6bcd590f15c7e5f370dbfb1b5c3ac4c04c540a16 2a39207487b7ec6b747fbdce8b942c174f4adf80b1d9d87ee34d972f52768a5f 7748f41c8865d10842fb9cf71b2a85061a81b4660f16f9dccdd17a17e6a136ae 5d1a27d667eca18d712fd2c302e643ca46590f3139b3c9d68340b1cdd07423b8 50b43391d74a9b84734aa8e6158e52ee97c8dd22a5a68ef8b332a858cf52c2b7 55f790fda38e11087ccda55d2ec6c1bb796d304fe981597f1794cb0a5ad7adbd 2318dfc85e7498b0e77bba1f36af1d0d4b77723e91922c383f218d779453029b 4f8330e431dd16dcc4f4d6e505c4825e78456bb5102174eae474df3e949896b9 3ad001a534456afab77a009309b0268fba669d55d7a954cd08c0a751798759c7 d26679acf8cf8a389d383fd231d8c1f4653dc4fcc9d01ff286d9998683a2dd6c 6548fef4df90b5498a78fdce7f6c05ffc005535b111d87ad626f1f2a17309ed4 1ce17aca27f373b3c03dc3a50f2f93c5c844a71d2ecb55d7ca1d9957fc716b6b c0080768021f3cfd1c8713c15f4eed22b80dc02326b428b5f0c81b860f51fa16 ec8c8990721565375c39e6742538d3a744464d479ecb3cdfd57f05c743d1ccca 51c52280a85ce71a52acdbda278bb7913e8f5d4e82ec3eaa5697f0c4fe8f2c46 fcfe16f7bfcda211e3c2cddb0cf258994c0305b6924771ddf581811d00fc4ad1 fee89d16503aae24a81e230f1e50dbed12cea60bc69ef65c3763f197fda3b58e 630cf2a0339ff6620356c35a46979876229a730d16b969a2f66f7d4ef85f0a9a 8e70f10cd5b0b2b8fa797edb7c854f1dc40499262e948a9fd1e748c0c5bdd66a e0072052dcd80cfad60d86354c203b570952f68a40534170c4d0d17a715ce195 55b790397bb6986711775f35f0c47735be200ecfdce82f88afc297d7a9999c71 6fa605c299a0ef87ba8670a77d0886c33b0b7e5c9d51391ba5712e699664763c 7e9ef8b16470e1b365a146fa83fd8ce0e29af7b7fa6600faae372aa5e7e23357 aeb42e33b7571ed8eb94870c604081f87b95e77f8f091e1209b7d165c0c7c152 442da06b0f53c9e050a202a95de891e49b70c5316304aa211c881e1735f93f78 5e53d84cb7e8af9e2a94431ec82a0c84f40a439bedc995a4d527eb4ef63c3bd8 3f0dad3f07ddc99f6febe9b09f737419819b0b6241e1076fdb57719617cb2cce 3d307245e99d761a6eb185198d9c892562a132484ccf5bb9b76b4911ce402fcc 5fb7da2ada9e8e28326b3d187a9b160a325b8dfcb43a934cf089be27884087ee d226d4f359e772d3c689e92e688e8554461574edfdf884136e532cf26636d55d 699c4d06d10d6c5bfa2fb1e2d9d2d068036444717104651b1c80adb793281461 2bad7aaa9564d708bae6f5783d04a63dc0d64413f995a5f964b82f3f53ee1599 b16d0a5cc002b0cf186879f72f2d0489196f470f4a077a2d304c50c2ec13e76f 9fe6985985a40c6b8c23015e641510a5b406b64b8c364cf1caec706f2681f541 2e1ae717ff69551c21fbe40357f7111745df6fce53f53ee447c9aad2b78e60ba 84f6fd4829cacabee8ce51837988168438ffa5d56ffa65d5ee75e5537ed81898 6e9b1ffbe8ad78243c52a6e00df40f0d335f1a789d7d861d37e4eebf315d36c1 777d76e831a8277b43bb398c95d1e2688469d21fb1da2c193dfd1df59df6f410 966507b5d79810a4dc909f6e48318feace313e520f63b06819402ee561eee4de cc6132e6db0d1d59fffbc54bfe1a0a7db3fdec2354a05cbb1609fc54e89486e7 c22d2abd6c56ea35d63d99e6c0b450a38608f49646e6e258a5c31242d1579ee1 ce9c31c168148ff9a3a9029ddc404b03f19887c4f1ef50a6860ee5f39a73c198 2b92eee42f8cbf7ac3c5f68a141a4a1159711c9ff7103f2cf8d34f35d0ee7d89 55fbc631eb2103f849f583a35fac5b702020eb59c6b683720e6a920cad51d223 dd622f5f6dfa0d2e6a207881c6c1f5d3cf8cf177f11e21808f03b861bf1fe920 a09358c29aab5ef91f855e6cdead4a0cfb71a652e3c20780b9db2c35167118b0 31d0eab3bab5696bb648eb79488409c49e6ad544e6e8f7abf8ca77f8a99e46ad 1219c6c195c699bc34c6e340364360248be4f490a0357859bfc0120082349e0c da093b6b91c3b0f2348de0b9a7bacf2886aa29aacefb93884d5341bf385953b6 ad23aed8c4340a6a480e61ff2681524df426a9fd97da35d65e3b10757fd307f8 636dea01912345dcf46d698810c1f4e96b37117533add7710cea4bda72bb3744 549665692a300cb6c4bf38a4057de673c1607c8c93e5d6ec00a8c319b043f1bd 65cf2efb89a2a83341a70bea9a8c8e37a2e24c21dd7ce685b443d4e201225498 2c3d8c8a987190fe8617ce8abb7a4bf7cdb59a4e512c9c026340560cbf42e397 27b112c35b98685ddd32775ae422464fc5be067dbbabac20fe7fd5157b89d02f 33a7320677103deb92bd654e57db8f8fb4b6ab575a955b041fbb5b85deeb3aa7 620687bb212dc92261d7f456d0d26c95e167e98acbc654273864c256068a663e a141708ad14136179a1a5deaae601088bfcc41f9dc59f87502f353abbf72d1dc 4faacb1803668a5052d3a092edbc85863c4af7b38f187de80d8da6bec9e70a9b 705eaf539a53c3d3a17bea004c43bb3c0d7bb8955cb63d6c47104c86d809a44e 9387e3c1b4ea8aee637591fdad3b267cc80c27c677b6508421326ab69940aa53 259abe6cfb47779b6e955a664d4d1c1165276479b2ab5ed11da3bccc1020196c e1256cd99481f3ef424cf8f01461297709a3982007e46e145d5784875484295a cbb91ec3bfe70ce6f5d95af57d330f8b3b8524a25e8f78259b116f670ef6aa59 963862cfb838c2b8eac4fd664d41c9db3a070fb02c81baae775ec92cedde9afb b8fcb4dc80d39d44db252f7330333ded588f390c4ab2cf09ba01606f64e6a873 b1f7dce584f4e89b384f48b04267a2c2c5defe7a51dacb6aae8891664dc2a5c2 5dc7f651deea228e72a5f289378aadffd27b4bb3f81ceefc7b0304aa60795e93 e6ad7650fcc8b68e4df8d1a35eb072b81b7559e5c4e581516fc049837080b434 810ed8bd468bfe6373e5fd2b771fe6446248f928987f1490bf49d2fe9b4d913d 648722ea3fc836da9ce27fcae4b632e436f54a08ff6a0a4c07ec935391ceede1 d6aab1b0b47c0e09e12938b027e392f84cbbb47319c4254fba64a46d09a9b7fd 3d516f5e567c7823742334df1ceab02d62a4113db714e1023a2c9ab940abc00f 08b6d902f9a385aa2b9739759cd07a473bcb8cfd561e369aa71d54e4b331f4be 7d792de3bac309f9bab5a7b98cdd77d09a9aff9c37ce0e2d11306062ff556ae3 69f59400a1a3370f0a7a1deb9f1c1bc2e881da8dd734ffb47cb1bf946d6e2e76 420e12998baee6f926fa2bd8a3ccb5db08238f6c5ae194c06a228f97908b00bb 2db2decb5d544c50a8c8a6966ce724a52d6d26346dfa98db295730fe4a8f1919 fa6e88ef3d222f62ef334c0973bac9453440a6674467eb14a7bd7149e1d5e6ee afa88fe94778cf69ddaacdea2bf767e9390a458e6fbd73b94c68d6357172b0e2 598de35a1fb7f2b190cfacea9fb073d3890369b1ad0cdd21279bbd0976366d5f fac573edd14add7b44e2b17bafc8104584466e829cdf48016cbf25886b75b96b 17809192b871e89991872eff39ae5c04b0aedac14a4bb157d3305f0e1a3d1e55 d4f893985897eb05cb4fb722e75c14596ea91701502b7e0a852de520ae3f7954 bc4be0e4e98f18e6ee9ad77b79bc3fd8f8837c22ba02734ad879921cb7289549 0fc703f77ff0ba227fa69065ddc3209a49b2b6f4d456969ac0acce36b8853fc5 e6e8e24a64a68c3445b75a89c0da71bf067eb9628264caa3564a0674918fb911 135a839530fe10db2c2de11c92ea354338483ef18066a60ef99f510e7a70e76e c1fb825e6e8a2414cf3b5ed002e6927260922f4752bbdc8cc21bb7d7f937c801 ffe41939a1ac0a26c1d2cfce1d6b1f89aa74c92f1fea95d4c970f5940bb0940d c90861fbca7ff261ab427026908c39741a7dc821d8cae1b479a4a1e6ede68309 835be4bbc831edee81f73b5be5d096a117392bfc9caf2480837bc89059269803 638c0d7c0c60fee73da45201e6ed7aa3746c75562dd74a88e1f8ca83898e5986 493efb126056124b19c095323bf88e5bd4ee727b36ff6349854d9e469ab18689 1d50fc38fb7f4cde22c76d7019997c2d82c0fd9bc656df89fc9b2fdb5e49de20 dd9295773aa559314cb404e5d70faa21502cd71ed98a3b8a81e9b4dc3e7153c3 804b8a5441367ca6698a25cffa003a75d8cc2564d7fc70cbd3888e39a80bc2e4 ab8071ba29e9f439a857f42989f1e0d20c6a390ddeeaf621cdcacd2b38c65d74 69e8036681a2e878be8ad00571b561c11d72bbf0e02b705228c4aceb4edec2e1 f1955804c690a7328c8a5e6a62a105bcdec7fa22baf8b0cae09d2f86fa4d200b a41c5cd521a53c11d8e250171f9143135d7c145b9d45facd1f4fd913397f984c 876bc3ed1136eb06bcbfcaf3525f183758c809e1b5f4c3f275700fac1e598902 106f50891bcd12db21524f5d868f2074a06499843d15ddc4194c4c8315da3fb9 bc465c600e022390df6d9d4b88b752c5a405902b4e0374b818b75827ce9111f6 de48252d0074dabf85303ac029e5edc681c973245886b1e52bc35255bc891d74 c578e4fd41c99a2133172743982239ff963c47951bd9f47d8189b051dad934f0 81af92e5a7678b2f03e8ba6eb37801c32c66930af1ce45d1424f56e369e573be c1e7e48dd82e2abad44243054adc23ab1050fe6be65998f8e369500b88cd5113 009b875401b8a3fbe99dc1dc4a174d24d8679c3c993d2a91d23f46a844664c92 dba53bc62bf8f5d958e822b8465e38eecc714237c6fdd8b1b12f200669008143 467ad9ddb8bace2d3dc1ab284e20b1e7a319ac76f44ad3b38676b627dcc7a4e2 3f2fc8c7f5b9ef0b2738b89200327b974052fa3118e4f015eef0bccd0706e016 3037c5caef648324bb6db822ee81df28d73c99de3fb3a2c00d5c07af7c65ce65 5aafcbdea7e49383d8f10204f17244629e3771a70fbbd09d5a08095548da3514 e400c69054f6e82b08aef5938e1b25467ca76067e247d0d51a2a83b7e2dec1cc 8cb27afc398c85f9b39521d8bda0c8e5d41e48ee1c96681e6d81e680c88a9fa0 2a1fdf5d9030584c51f731e5087ee6a4eb47c4de4d5f42a732684290218ac13b a8e107a6a16aad264315ca4884a67ceb7fe7f1e378685be7a376b7a7a8484583 19c6100002d804da0f7efca48e10ef8ae33cd6f6135a7c5b6fcd8d2250c31af2 79521eaa14b118f9951295a18683104ce9b34a2da60cb59811b1c544a62983e3 4720622dddd717d0424c6be823d7b3ce3c2af16d2c4d4f2ef6e71a7e4cd2a721 0c8e4378c349101ed65d82c8421a621a16c8c8f836e17b52728a6eb0338a8928 745331c73e5cf5f2d427e580d3c473381b1c7bb2f00b4cda922e898845cb2183 7477cf15c31bb4178ffb5955c6e6d5a0fbf91ef813ec2836d2685592811a993c c4b22618e8e4a0b1a6e80b096b12bcc131afa1d924162bc69734b58005ca8190 289a9a7f90fbf73c770259849430e8cad5c0c21ef3a550ff9ecdf558882e8e55 2aa4f3599776a19505022f43607d0b8c8a6f4d7ebd62a8bc93940eba2b30bca7 08debec22dfec004d85894b10be476bf505810b48c2f975d08e7b8ee573249ec e52ed3f6ce6da0196a3c0b15eb2fb3120f3ca14ad5f5d4d9520b7a418c1f8658 5a678d8fde514a4de352798e19ebf5d6a6dbb2ef1a6f0ea0a7e1293df974ebcb a83d53656e45de98a453abc9addc8ebf248fb5c8810125e04a9e74e88c6db646 b704cb65efcfb562cd840cc0475b290f9ffec444938ff409bb947b8dc3d8966f 2bdae63e0c09ca7b28247e16c2786f057b6d7e523c2dcc280728c11acaba93e6 a3cc587367be8b4ca4201506c83638c7ac1358168dedfc6f95b695b16893af71 7758b606d4981fd29284f40326d8c438bf7c4d50557e50ed8da8acee8eb96de4 4cf4d3d17e7dd7a7065237b93d1d33c2a80f86d9be20a86bed5d3c7ed0c241cd 59eb3c082afcdbdbff9d2e5b380c4fa30440fca220d309e71c1b55c4cdd277b6 1a9c596c3b3e481f9202cb8bccd7f69722b63048c9fb45baf581a86e7a99c576 9fc4d88564d9a80d62d8f660e79014a42c66317ba8f8971d3f83d7630c0c2f05 c2ea36b1de5391a1149e249f025fb5b01dd89d9bf77f0b8433d3b8be6a2595c0 fcb215db28371d8ddc6b3ddb45683161591d807864275636f8da4c737f05e796 f1f3cbf7253600cb445db0a864ee025f2beb94125f7aba2fd00d597283c7c6f6 c6a75b974bee6bd0c8b2ff35b38115c016edfb6a1df5ee0f985630bf83373775 05e294f6c29a426117dc1e329b6e86bc8cc93afd9020d2a825ab6c8b4f5451c9 e687796ac96f371695f6c997e36abdd82e6eaa049b912aa6055d743129a5ff29 8e07821348178a84d179ee8236bdeec397435f7c4b595b2c73be1111aa08db94 ef2f78c4da2a011b22b49e98ccac3b4015dafdb185f472a1aaad9a7018093c13 72599d7181288a3e1e83df70 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR17 %!PS-AdobeFont-1.1: CMR17 1.0 %%CreationDate: 1991 Aug 20 16:38:24 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR17) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR17 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 67 /C put dup 79 /O put dup 101 /e put dup 110 /n put dup 111 /o put dup 112 /p put dup 115 /s put dup 117 /u put readonly def /FontBBox{-33 -250 945 749}readonly def /UniqueXX 5000795 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b4486be356c29c3aec91ef17f5d31183b1e489f1fa 559a6693fbdd04d4f7e99886d8cb7cca13d4aa9ceb34a708af22e69ccef0e504 c3997075243585edf60b6447c8d01cffb04b6e3ddbaa7da5891286861322a795 e9d990fd56af2f5c2b35801a0b07874e4ac3170481d232e150443253c92a8b05 513d4a4154a99d91f629ccd30376500f5d16aaa9b203bad6350e4b19424c0e33 75f2949bc1927a6f6221252f8a96618e646aa1b0810753c98becc26b37837775 24bca72b818d314074c1c91f4e1f4148d3d703d12d179ee6970bd55d04aa9a9d 97f63f2c7dbd129ec2ed3ba5f8080270ea5854ea165dbcc061e2f47f1aaf0997 2ac9a689a2a9620b91b53f6b5092884372f5f7afca495f331138d85a97c5bb83 d8072dc88010fc89108b60bc06d4f93c722e8908d7ce3c1ea3c70e9e65edd769 7db17ce0e012ad37d4030f33d30a73fd655b7a2e572f3378ac933dd75082f2f1 68702be19bc60cef6bd5f0ada180d21408c04b7f7db9b6dbaefe09e809a80ddf a5366d10930d3e68ca53e4721ff525853f4c784f2c2c3aa0129a34d9df00debc ae4037e4c0fbdce3989f35964b4c07e7817b805bfe8c15f0c0ebf226cff606b6 2954f0f42dff8c214a6537ab666d25389c44db7b5866440bbfc137712bcdcc89 c68cd1adfd85648b1ed29bfb45a564b02172137feef782d604e0d7e1f1737c96 719cca9e4b9dfdc87e5999b886a15ac572183dfafd8c4176cd98430c204d4e7c e989e1dea814d3088a21d9ae6c5fe7ab3d399b2982fd605e65509a8ed6790c21 a08a23e53dbe70f676d0e7b2e8261b092dc3415ac785635d133d309ac670c0c5 5868fd863ce42542ff1e83e1fa20a7a0e5d680dec3a22700f7f48d2582b8411d 757d17ab7530ceec0c6727c6a80f2493196b0b36e727bd6d34113a14d390555e 509ee24e6d058ad2f49daaed4e27640a5a81c900fbcc4051911214d5996b77e2 5944136613fa9ff7036cf9fbf64dbc3b9b3973e7574987bc3b6665659dd0d9ba b6e790154c22a76296836875333b48dd22ee92b5ca1e1442e5444ae945fd3474 175089dc93d7bf96d628907965fe8a6cb99d158c0fe84a738a4a202b89e221dc d93cb3e86346aaa10c276c1cdf320aa182804783b99685de9068adf4a0b9f791 0ad5c7c42a0c3bb7790ded0b87c74d5951bf7ff3c5cb54f0c4fa493d555b3290 9dc79f15dd5d43ab2684f99ab1e0e25b7dde78011c580fc3a2a88222d0b24069 4950007026a178d3cf39bfa7af66888d79d46c530d3c1a2fcfea56cc79aeeb86 10e9d0a5341f41f5360c6d331f9487619930eb8f95bb46308993fb825742734f e984d776959639cc6e9659aaec70cd98ec81d0c61b8649e7bad29ba03650fa94 0b0a3dbb50e16ccf6cbf642abcc2d357c20c5d96a0fa56c91268805cf6002ab2 da685e3c891de72db319d4bba6cd8f2c85c8c2672860add360321b3aca9f8e3e 4955ecfed0fc6ae304786a266d522544d43d3992d76c8b9798fbc669ec6e85d9 8f3ce79b40d74e4e494d174a793ed4ea2241b4c58286b9142fd10eb4b836a2fa 40da029cb7164c206d1d28f3fba964fc0b5a89c18f0dc4630bdf288d46f47842 e81ea1ab275a99612af4cb89bd7ba7fbeb3c139dc70a68f11753771737153774 8d1f8ede13e2b6b3732b9fc8481af64765cd4e20c6f7a56670edfeae410537a3 a7ba8db60381e68704525896fc383fd3f456ae9bf2b0627b322f53cc66abef72 e727c0349796032abd224432cc188ecc88c03921b8ea35f9bd0ea88d49241429 0d7b50c4a61e8218ca62fed8099f5376b63202fb1784e5b926c2682d839bee06 32c4f015e4e4f12e8dbbeb4a6b5c73cd8fe0fe3e01205626d63a8a58a0120422 ced840bcdd6ab69e23650696ebbc6cfadb0595066857015daa3ea2cf77e77f46 06063cf2b4bac03d0477e863d9a0cd8bcdb45c0711ea6fc2f821134a6301716f f1345d9ed7376921747bf899dc6d8bf014dcbd1f7756796a2ca2ecdd28caffcb 25cec9a9a36afd068fd079057ac0cc73ebee776b7fbcfd09809120af3c3cf4d5 1cce281c62c7caeac9bb00590643a642a541b9af2ed1b5bed4a590927601ff84 0da6d31d0a40ab7e32c90806b3ca17f51278713fd891bdc746ea3292208353d7 18b4a492fc6ef2fe639297f78a564c95e999eccaa9733d567908c708d165a06d 836b9c367bcf058614f6bc047931f84fd79c339d77a62e38c9caf1aa9962a2fa 1bebe5ef3d414f213b5abba2d7b0ff9cf15d67bf82d422dbe4a3867428ede73d 3b2cd6741a0da9f0f7e8faded922c395324cf53f8eec30dc0b6985d7bcfdd4d2 d592413dca9c37d21fa405b984616958ec58315a9bf5233b610cc3d6241778d7 babe8917310188f8c9245ad1a42c3c7d3b56ae3950f2662c1b8ce7107ab5047b 317a063c81db98130fc0890c8fb066313313d2e3f0714aefc60bb529119f4e6f a8ee6c7282b83a63a348c9d6460edd936767b406f87cd45c2051331ab85ea827 ffb72395c7e06cf52c02d1ae4bdece096c2bfead5ceb5665f429eaeba797932e b36f0357c39e34861a7ab23c29bc7d69ff570a3c689682fe81d76eb79aa66b2a 00b3e48a6b159c4b30753fac33de66fac09b988869d629a4aab89140c38937f4 f3e95f5aac536ff426c0c3a49eef9f7b5baf7b6cecc87612d2118e3cb5c79972 bb803c66c8dc5704db8d3be53ac233dd2dea859bd128dc7066e8c80299334518 5b7a054933b6aa43f7c364c8937b79728afe9a7622922401db73c372bba66f9b 32ccb80a403d540d942ec556005640740d09828b793749c446c8822474ab7309 f8042c6e 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont TeXDict begin 39158280 55380996 1000 600 600 (ABC.dvi) @start /Fa 145[38 110[{}1 74.7198 /CMSY9 rf /Fb 137[37 5[39 112[{}2 74.7198 /CMMI9 rf /Fc 137[44 44 44 44 44 1[44 44 44 44 44 2[44 44 44 1[44 44 44 44 44 12[44 44 44 1[44 44 1[44 44 5[44 44 44 44 44 18[44 44 44 45[{}33 83.022 /CMTT10 rf /Fd 130[35 1[35 35 35 35 35 35 35 35 35 35 1[35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 3[35 1[35 5[35 35 35 35 1[35 35 35 35 35 2[35 2[35 35 35 35 35 6[35 11[35 35 35 35 2[35 35 40[{}51 66.4176 /CMTT8 rf /Fe 136[49 1[36 34 27 35 2[37 36 43 1[37 1[18 1[37 1[32 36 34 1[36 97[{}15 58.1154 /CMCSC10 rf /Ff 136[69 51 51 49 38 50 2[53 51 62 43 53 1[25 1[53 1[46 52 49 1[51 97[{}17 83.022 /CMCSC10 rf /Fg 134[59 1[81 59 62 44 44 46 1[62 56 62 93 31 2[31 62 56 34 51 62 50 1[54 12[78 62 84 1[77 84 9[74 86 81 1[85 6[31 3[56 56 56 56 56 56 2[31 33[62 12[{}38 99.6264 /CMBX12 rf /Fh 227[51 28[{}1 119.552 /CMMI12 rf /Fi 204[66 62 50[{}2 83.022 /LASY10 rf /Fj 140[29 29 1[32 31 4[25 22 3[29 32 100[{}8 49.8132 /CMMI6 rf /Fk 137[34 5[36 2[62 50[20 58[{}4 66.4176 /CMMI8 rf /Fl 145[34 3[20 2[34 34 30 30 30 30 6[45 27[52 8[0 3[45 1[19 15[66 10[52 21[{}15 58.1154 /CMSY7 rf /Fm 134[33 32 45 32 37 23 28 29 1[35 35 38 56 18 32 1[21 35 32 21 32 35 32 32 35 12[49 38 50 2[52 9[46 51 1[48 50 6[21 12[25 21 44[{}34 58.1154 /CMTI7 rf /Fn 134[40 1[54 40 42 29 30 31 1[42 38 42 1[21 40 1[21 42 1[23 34 42 33 1[37 51[25 45[{}20 58.1154 /CMBX7 rf /Fo 143[31 3[20 31 24 22 105[{}5 41.511 /CMMI5 rf /Fp 136[48 33 39 25 31 31 1[34 33 41 59 21 35 27 23 39 2[31 35 30 29 36 34[52 34 52 20 20 58[{}25 58.1154 /CMMI7 rf /Fq 136[59 40 48 30 39 37 1[42 40 50 73 25 43 1[29 3[39 43 36 1[44 10[48 2[51 17[62 2[65 42 65 23 23 58[{}25 83.022 /CMMI10 rf /Fr 152[42 42 37 37 37 37 43[0 3[55 28[65 5[42 14[65{}11 83.022 /CMSY10 rf /Fs 134[35 33 47 33 38 24 29 30 1[36 36 40 58 18 33 22 22 36 33 22 33 36 33 1[36 12[51 1[52 2[55 10[54 22[26 22 2[29 29 40[{}31 66.4176 /CMTI8 rf /Ft 198[30 30 30 30 30 30 30 30 30 30 48[{}10 49.8132 /CMR6 rf /Fu 134[35 1[47 35 37 26 26 26 1[37 33 37 55 19 35 1[19 37 33 21 30 37 30 37 33 3[19 1[19 6[47 4[51 10[50 1[46 49 3[51 1[19 19 33 33 33 33 33 33 33 33 33 33 1[19 22 19 51 1[26 26 27[38 39 47 10[{}51 58.1154 /CMR7 rf /Fv 133[34 40 39 55 38 45 28 34 35 38 42 42 47 68 21 38 25 25 42 38 25 38 42 38 38 42 10[62 62 59 47 61 2[64 62 74 52 2[32 2[54 1[63 59 58 62 5[25 25 4[42 42 2[42 42 42 25 30 25 2[34 34 25 26[47 51 11[{}56 83.022 /CMTI10 rf /Fw 134[71 1[97 71 75 52 53 55 71 75 67 75 112 37 71 1[37 75 67 41 61 75 60 75 65 9[139 2[94 75 100 1[92 101 1[128 3[50 2[85 88 1[97 96 102 6[37 2[67 67 67 67 67 67 67 36[75 12[{}45 119.552 /CMBX12 rf /Fx 133[37 44 44 60 44 46 32 33 33 44 46 42 46 69 23 44 25 23 46 42 25 37 46 37 46 42 3[23 42 23 3[85 62 62 60 46 61 1[57 65 62 76 52 65 43 30 62 65 54 57 63 60 59 62 65 2[65 1[23 23 42 42 42 42 42 42 42 42 42 42 42 23 28 23 65 1[32 32 23 4[42 19[69 46 46 48 60 4[62 5[{}80 83.022 /CMR10 rf /Fy 134[50 50 69 50 53 37 38 39 1[53 48 53 80 27 50 1[27 53 48 29 44 53 42 53 46 10[72 1[66 53 72 1[65 72 75 91 57 75 1[36 2[60 1[73 69 68 72 6[27 48 48 48 48 48 48 48 48 48 48 48 27 32 3[37 37 40[{}55 83.022 /CMBX10 rf /Fz 134[37 1[51 35 41 25 31 32 35 39 39 43 63 20 2[24 39 35 24 35 39 35 35 39 12[55 43 56 1[52 59 1[69 48 1[40 30 1[59 50 52 58 55 1[57 6[24 39 39 39 1[39 2[39 39 39 2[27 3[31 31 27[43 12[{}49 74.7198 /CMTI9 rf /FA 132[38 34 41 41 55 41 43 30 30 30 41 43 38 43 64 21 41 23 21 43 38 23 34 43 34 43 38 3[21 1[21 2[58 79 58 58 55 43 57 1[52 60 58 70 48 60 39 28 58 60 50 52 59 55 54 58 5[21 21 38 38 38 38 38 38 38 38 38 38 1[21 26 21 2[30 30 20[38 38 3[64 43 43 45 11[{}75 74.7198 /CMR9 rf /FB 137[47 49 34 35 36 1[49 44 49 1[25 2[25 49 1[27 41 49 39 49 43 31[67 65[{}18 74.7198 /CMBX9 rf /FC 152[35 35 47[0 3[47 46[35 3[{}5 66.4176 /CMSY8 rf /FD 134[37 37 51 37 39 27 28 28 37 39 35 39 59 20 37 22 20 39 35 22 31 39 31 39 35 3[20 35 20 3[72 2[51 39 52 2[55 53 65 44 2[25 53 55 46 48 1[51 50 53 5[20 20 35 35 35 35 35 35 35 35 35 35 1[20 24 20 55 1[27 27 20 4[35 19[59 1[39 1[51 10[{}67 66.4176 /CMR8 rf /FE 134[51 1[70 51 54 38 38 38 2[49 54 81 27 51 1[27 54 49 30 43 54 43 54 49 12[70 54 72 1[66 2[89 61 2[35 73 77 64 2[70 69 73 11[49 3[49 49 2[33 27 15[49 28[{}40 99.6264 /CMR12 rf /FF 138[73 1[52 2[73 66 73 8[58 21[103 11[96 67[{}8 143.462 /CMR17 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%BeginPaperSize: a4 a4 %%EndPaperSize %%EndSetup %%Page: 1 1 1 0 bop 1415 282 a FF(Op)t(en)44 b(Consensus)476 570 y FE(Romain)32 b(Boic)m(hat)1166 534 y FD(+)1527 570 y FE(Sv)m(end)i(F)-8 b(r\034lund)2146 534 y FC(\003)2487 570 y FE(Rac)m(hid)33 b(Guerraoui)3245 534 y FD(+)605 650 y(+)696 686 y FE(Swiss)h(F)-8 b(ederal)33 b(Institute)h(of)e(T)-8 b(ec)m(hnology)g(,)34 b(CH)f(1015,)f(Lausanne)556 766 y FC(\003)628 802 y FE(Hewlett-P)m(ac)m(k)-5 b(ard)35 b(Lab)s(oratories,)d(1501)g(P)m(age)h(Mill)g(Rd,)f(P)m(alo)h(Alto)1721 1111 y FB(Abstract)323 1255 y FA(This)26 b(pap)r(er)g(presen)n(ts)f (the)h(abstraction)g(of)h Fz(op)l(en)h(c)l(onsensus)g FA(and)d(argues)i(for)f(its)h(use)e(as)i(an)e(e\013ectiv)n(e)h(com-)208 1346 y(p)r(onen)n(t)h(for)i(building)g(reliable)g(agreemen)n(t)g(proto) r(cols)h(in)e(practical)i(async)n(hronous)e(systems)h(where)f(pro)r (cesses)208 1437 y(and)21 b(links)i(can)f(crash)h(and)f(reco)n(v)n(er.) 33 b(The)23 b(sp)r(eci\014cation)g(of)g(op)r(en)g(consensus)f(has)h(a)g Fz(de)l(c)l(ouple)l(d)p FA(,)i Fz(on-demand)e FA(and)208 1529 y Fz(r)l(e-entr)l(ant)j FA(\015a)n(v)n(our)d(that)g(mak)n(e)h(its) g(use)f(v)n(ery)g(e\016cien)n(t,)h(esp)r(ecially)h(in)f(terms)f(of)i (forced)f(logs,)i(whic)n(h)d(are)h(kno)n(wn)208 1620 y(to)k(b)r(e)h(ma)t(jor)h(sources)g(of)f(o)n(v)n(erhead)f(in)h (distributed)f(systems.)44 b(W)-6 b(e)28 b(illustrate)i(the)e(use)h(of) h(op)r(en)e(consensus)h(as)208 1711 y(a)i(basic)i(building)e(blo)r(c)n (k)g(to)h(dev)n(elop)f(a)h(mo)r(dular,)i(y)n(et)d(e\016cien)n(t,)i (total)f(order)g(broadcast)g(proto)r(col.)53 b(Finally)-6 b(,)208 1803 y(w)n(e)24 b(describ)r(e)g(our)g(Ja)n(v)l(a)g(implemen)n (tation)h(of)f(our)g(op)r(en)g(consensus)g(abstraction)h(and)f(w)n(e)g (con)n(v)n(ey)f(our)h(e\016ciency)208 1894 y(claims)j(through)e(some)h (practical)h(p)r(erformance)g(measures.)0 2114 y Fy(Con)m(tact)32 b(author:)37 b Fx(Romain)26 b(Boic)n(hat,)g(E-mail:)35 b(Romain.Boic)n(hat@ep\015.c)n(h,)25 b(Phone/F)-7 b(ax:)35 b(+41)26 b(21)g(693)f(6702/70.)0 2285 y Fy(Keyw)m(ords:)35 b Fx(Mo)r(dularit)n(y)-7 b(,)25 b(distribution,)g(reliabilit)n(y)-7 b(,)25 b(consensus,)f(total)h(order)e(broadcast,)h(op)r(en)g(implemen)n (tation.)0 2607 y Fw(1)135 b(In)l(tro)t(duction)0 2836 y Fy(Con)m(text.)34 b Fx(It)19 b(is)g(widely)g(accepted)g(that)h(mo)r (dularit)n(y)e(is)h(a)g(go)r(o)r(d)f(idea,)i(esp)r(ecially)f(when)g (writing)g(reliable)f(distributed)0 2935 y(proto)r(cols)31 b(that)h(are)f(inheren)n(tly)h(complex.)50 b(In)33 b(practice)e(ho)n(w) n(ev)n(er,)g(v)n(ery)g(few)i(reliable)e(distributed)i(programs)d(are)0 3035 y(really)h(mo)r(dular,)i(and)e(v)n(ery)g(few)i(abstractions)d(are) h(actually)h(e\013ectiv)n(e.)50 b(One)31 b(of)h(the)h(underlying)e (reasons)f(is)i(that)0 3135 y(mo)r(dularit)n(y)j(is)g(sometimes)g(exp)r (ensiv)n(e:)52 b(abstractions)34 b(that)i(are)e(supp)r(osed)h(to)h(mak) n(e)e(a)h(program)f(mo)r(dular)g(turn)0 3234 y(out)i(to)g(b)r(e)g(ma)5 b(jor)35 b(sources)g(of)h(o)n(v)n(erhead.)60 b(T)-7 b(o)36 b(b)r(e)g(really)f(e\013ectiv)n(e,)j(an)e(abstraction)f(m)n(ust)h(not)g (only)f(factor)h(out)0 3334 y(some)c(complexit)n(y)-7 b(,)33 b(its)g(o)n(v)n(erhead)e(m)n(ust)h(b)r(e)i Fv(ne)l(gligible)p Fx(.)53 b(Namely)-7 b(,)34 b(the)f(o)n(v)n(erhead)e(in)n(tro)r(duced)h (b)n(y)g(the)h(use)g(of)f(that)0 3433 y(abstraction)24 b(in)h(a)f(giv)n(en)g(solution,)h(with)h(resp)r(ect)e(to)h(an)g(ad-ho)r (c)f(solution)g(that)h(b)n(ypasses)f(that)h(abstraction,)f(should)0 3533 y(b)r(e)k(negligible.)125 3680 y(The)k(notion)h(of)f(a)g Fv(c)l(onsensus)g Fx(service)g(has)g(recen)n(tly)g(b)r(een)h(promoted)f (as)g(a)g(cen)n(tral)g(abstraction)f(for)h(building)0 3780 y(reliable)25 b(distributed)i(systems,)f(and)g(in)h(particular)e (for)g(building)i(their)f(underlying)f(distributed)i(agreemen)n(t)e (proto-)0 3879 y(cols,)f(e.g.,)h(total)f(order)e(broadcast,)i(atomic)f (commit,)j(group)d(mem)n(b)r(ership)h(and)g(virtual)f(sync)n(hron)n(y)g ([Gue95)o(,)h(GS96)o(,)0 3979 y(HMR)-7 b(T99].)37 b(Roughly)26 b(sp)r(eaking,)h(a)g(consensus)g(service)f(exp)r(orts)h(an)h(op)r (eration)e Fv(pr)l(op)l(ose\(\))p Fx(:)38 b(pro)r(cesses)26 b(in)n(v)n(ok)n(e)g(that)0 4078 y(op)r(eration)d(with)i(an)f(initial)h (parameter)e(\(eac)n(h)h(pro)r(cess)f(migh)n(t)h(prop)r(ose)f(a)h (di\013eren)n(t)h(parameter\),)f(and)g(all)g(pro)r(cesses)0 4178 y(that)h(do)f(not)h(crash)f(receiv)n(e)f(the)i(same)f(returned)h (v)-5 b(alue)24 b([FLP85)o(,)h(CT96)o(].)36 b(The)25 b(idea)f(of)h(using)f(consensus)g(as)g(a)g(basic)0 4278 y(comp)r(onen)n(t)f(to)h(build)g(agreemen)n(t)e(proto)r(cols)g(is)h (seductiv)n(e)h(b)r(ecause)f(agreemen)n(t)f(problems)h(are)f(t)n (ypically)h(made)h(of)f(a)0 4377 y(\\pure")k(agreemen)n(t)g(part,)g (plus)i(some)e(\\in)n(terpretation")f(part)i(that)g(is)g(problem)g(sp)r (eci\014c.)38 b(The)28 b(\\pure")f(agreemen)n(t)0 4477 y(part)32 b(is)h(similar)f(in)i(all)e(the)i(problems:)46 b(it)34 b(basically)e(consists)g(in)h(agreeing)e(on)i(some)f(v)-5 b(alue.)53 b(F)-7 b(actoring)31 b(out)i(that)0 4577 y(part)24 b(inside)g(a)g(consensus)f(b)r(o)n(x)h(can)g(drastically)f(simplify)i (the)g(description)e(and)i(implemen)n(tation)f(of)g(the)h(agreemen)n(t) 0 4676 y(proto)r(cols.)48 b(In)31 b(short,)h(b)n(y)g(considering)e (consensus)h(as)g(a)g(basic)g(comp)r(onen)n(t)g(in)h(building)g(v)-5 b(arious)30 b(agreemen)n(t)h(pro-)0 4776 y(to)r(cols,)k(one)f(could)g (b)r(ene\014t)h(from)e(the)i(w)n(ell-kno)n(wn)d(adv)-5 b(an)n(tages)33 b(of)h(mo)r(dular)f(programming)f(in)i(a)g(di\016cult)h (area,)0 4875 y(namely)29 b(reliable)f(distributed)h(systems,)g(where)g (these)g(adv)-5 b(an)n(tages)27 b(are)h(sorely)f(needed.)42 b(Nev)n(ertheless,)28 b(and)h(as)f(w)n(e)0 4975 y(p)r(oin)n(ted)g(out,) g(whether)g(consensus)f(can)h(b)r(e)g(an)g(e\013ectiv)n(e)g (abstraction)f(in)h(building)g(agreemen)n(t)f(proto)r(cols)f(dep)r (ends)0 5075 y(on)32 b(the)g(o)n(v)n(erhead)e(in)n(tro)r(duced)i(b)n(y) f(the)i(consensus)e(abstraction)g(with)h(resp)r(ect)g(to)g(ad-ho)r(c)f (proto)r(cols)f(that)j(b)n(ypass)0 5174 y(that)28 b(abstraction.)611 5144 y Fu(1)p 0 5227 1512 4 v 92 5281 a Ft(1)127 5305 y FD(Ob)n(viously)-6 b(,)29 b(the)f(use)g(of)g(an)n(y)g(abstraction)h (alw)n(a)n(ys)f(has)g(an)g(inheren)n(t)h(o)n(v)n(erhead)g(with)f(resp)r (ect)g(to)h(a)f(solution)g(that)h(b)n(ypasses)f(that)0 5383 y(abstraction:)52 b(the)35 b(inheren)n(t)f(o)n(v)n(erhead)h(is)e (simply)g(the)h(cost)h(of)e(a)h(lo)r(cal)f(ob)t(ject)i(in)n(v)n(o)r (cation.)62 b(Ho)n(w)n(ev)n(er,)36 b(in)e(a)f(distributed)h(system,)0 5462 y(that)28 b(o)n(v)n(erhead)g(is)f(usually)f(considered)i (negligible)f(in)g(comparison)g(to)g Fs(for)l(c)l(e)l(d)j(lo)l(gs)e FD(and)f Fs(c)l(ommunic)l(ation)k(delays)p FD(.)41 b(F)-6 b(urthermore,)28 b(in)e(a)1869 5768 y Fx(1)p eop %%Page: 2 2 2 1 bop 0 -67 a Fy(Motiv)-5 b(ation.)70 b Fx(Sev)n(eral)38 b(implemen)n(tations)h(of)g(consensus-based)e(agreemen)n(t)h(proto)r (cols)f(w)n(ere)h(giv)n(en)h(in)g([GS96)o(,)0 33 y(HMR)-7 b(T99],)39 b(and)e(it)g(w)n(as)f(sho)n(wn)g(that)h(the)h(p)r (erformance)e(of)g(those)h(proto)r(cols)e(are)h(similar)h(to)f(the)i(p) r(erformance)0 132 y(of)d(ad-ho)r(c)f(agreemen)n(t)g(proto)r(cols.)57 b(Ho)n(w)n(ev)n(er,)35 b(to)g(con)n(v)n(ey)e(this)j(in)n(teresting)e (result,)i(a)f Fv(cr)l(ash-stop)h Fx(system)e(mo)r(del)0 232 y(w)n(as)j(considered:)57 b(pro)r(cesses)36 b(are)i(either)g(up,)j (or)c(are)g(do)n(wn)h(and)f(nev)n(er)h(reco)n(v)n(er.)65 b(In)39 b(practice,)h(pro)r(cesses)c(ma)n(y)0 332 y(indeed)g(crash,)h (but)f(some)f(\(or)g(all\))h(of)f(them)h(ma)n(y)f(reco)n(v)n(er.)59 b(This)36 b Fv(cr)l(ash-r)l(e)l(c)l(overy)g Fx(mo)r(del)g(is)g(a)f (realistic)g(system)0 431 y(mo)r(del)24 b(for)g(most)g(of)g(the)g (applications)f(w)n(e)h(kno)n(w)f(of,)i(but)f(it)h(in)n(tro)r(duces)e (some)h(fundamen)n(tal)g(di\016culties)g(in)h(la)n(y)n(ering)0 531 y(abstractions.)125 761 y Fr(\017)41 b Fx(If)24 b(a)g(pro)r(cess)e Fq(p)680 773 y Fp(i)732 761 y Fx(crashes)g(after)i Fv(entering)g Fx(some)f(abstraction)g Fq(A)p Fx(,)i Fq(p)2315 773 y Fp(i)2366 761 y Fx(migh)n(t)f(need)g(to)g Fv(r)l(e-enter)g Fx(that)g(abstraction)208 860 y(up)r(on)32 b(reco)n(v)n(ery)-7 b(,)31 b(whic)n(h)i(ma)n(y)f(not)g(b)r(e)h(p)r(ossible)f(unless)g(en)n (tering)g(the)h(abstraction)e(actually)h(means)g(storing)208 960 y(some)h(v)-5 b(alue)35 b(on)f(stable)g(storage,)h(e.g.,)h(the)e (parameters)f(of)i(the)g(abstraction)e(in)n(v)n(o)r(cation.)56 b(T)-7 b(o)34 b(get)g(a)g(more)208 1060 y(concrete)d(idea)h(of)h(this)g (issue,)g(consider)f(the)h(example)f(of)h(a)f(total)g(order)f (broadcast)g(proto)r(col)h(based)g(on)g(an)208 1159 y(underlying)21 b(consensus)g(abstraction)f([CT96)o(,)i(Lam89)o(].)35 b(A)22 b(consensus-based)e(total)i(order)f(broadcast)f(proto)r(col)208 1259 y(t)n(ypically)31 b(uses)g(a)h(sequence)f(of)h(consensus)f (instances,)h(eac)n(h)f(instance)h(b)r(eing)f(used)h(to)g(agree)e(on)i (a)f(batc)n(h)h(of)208 1358 y(messages)e([CT96)o(].)52 b(If)33 b(an)n(y)f(pro)r(cess)g Fq(p)1475 1370 y Fp(i)1535 1358 y Fx(crashes)f(and)h(reco)n(v)n(ers,)f Fq(p)2381 1370 y Fp(i)2441 1358 y Fx(migh)n(t)i(not)g(remem)n(b)r(er)e(whether)i (or)f(not)208 1458 y(it)i(prop)r(osed)e(a)h(v)-5 b(alue)34 b(for)f(consensus)g(instance)g Fq(k)s Fx(,)i(and)f(whic)n(h)f(v)-5 b(alue)34 b(it)g(actually)f(prop)r(osed.)54 b(The)34 b(sp)r(eci\014-)208 1558 y(cation)28 b(of)h(consensus)f(requires)g(ev)n (ery)g(correct)g(pro)r(cess)f(to)i(prop)r(ose)f(a)h(v)-5 b(alue)29 b(and)g(precludes)f(the)i(p)r(ossibilit)n(y)208 1657 y(for)e(an)n(y)h(pro)r(cess)f(to)i(pro)n(vide)e(sev)n(eral)g (di\013eren)n(t)h(prop)r(osals)f(for)h(the)g(same)g(consensus)g (instance)g(\(e.g.,)h(a)f(pro-)208 1757 y(cess)i Fq(p)421 1769 y Fp(i)481 1757 y Fx(cannot)h(prop)r(ose)f(an)h(initial)h(v)-5 b(alue,)34 b(crash,)e(reco)n(v)n(er,)f(and)i(then)f(prop)r(ose)g(a)g (di\013eren)n(t)g(v)-5 b(alue\).)52 b(As)32 b(a)208 1857 y(consequence,)e(prop)r(osing)f(a)h(v)-5 b(alue)30 b(is)g(t)n(ypically) g(de\014ned)h(as)f(writing)g(the)g(initial)h(v)-5 b(alue)30 b(prop)r(osed)g(on)g(stable)208 1956 y(storage)24 b([A)n(CT00a)n(],)j (and)e(this)i(m)n(ust)f(b)r(e)g(p)r(erformed)g(b)n(y)f(ev)n(ery)g (correct)g(pro)r(cess.)35 b(Up)r(on)26 b(reco)n(v)n(ery)-7 b(,)24 b(the)i(forced)208 2056 y(log)g(will)h(help)g(the)g(pro)r(cess)f (\014gure)g(out)g(what)h(it)g(migh)n(t)g(ha)n(v)n(e)f(prop)r(osed)g (prior)f(to)i(the)g(crash.)36 b(The)27 b(v)n(ery)e(same)208 2155 y(problem)f(o)r(ccurs)f(with)i(the)g(decision,)g(whic)n(h)g(is)f (also)g(t)n(ypically)g(de\014ned)h(as)e(writing)i(the)g(\014nal)f(v)-5 b(alue)25 b(on)f(stable)208 2255 y(storage)h([A)n(CT00a)o(].)125 2421 y Fr(\017)41 b Fx(T)-7 b(o)20 b(ensure)h(agreemen)n(t,)g(the)h (pro)r(cesses)e(m)n(ust)h(p)r(erform)g(some)g(forced)f(logs)h(so)f (that)i(they)f(can)g(remem)n(b)r(er)g(whic)n(h)208 2521 y(v)-5 b(alue)34 b(they)g(migh)n(t)h(ha)n(v)n(e)e(decided)h(prior)f(to) i(a)f(crash.)56 b(Besides)33 b(this)i(usage,)g(forced)f(logs)f(are)g (also)g(used)i(to)208 2620 y(ensure)29 b(in)n(tegrit)n(y)f(of)i(the)g (upp)r(er)g(la)n(y)n(er)e(agreemen)n(t)g(proto)r(col.)42 b(If)30 b(w)n(e)f(consider)g(for)g(instance)h(the)g(total)f(order)208 2720 y(broadcast)i(example,)j(in)n(tegrit)n(y)e(implies)i(not)f(deliv)n (ering)f(an)n(y)g(message)g(more)h(than)g(once.)53 b(If)34 b(consensus)e(is)208 2820 y(used)h(as)h(a)f(\\closed")g(blac)n(k-b)r(o) n(x)f(to)i(implemen)n(t)g(agreemen)n(t,)h(the)f(t)n(w)n(o)f(usages)g (\(agreemen)n(t)f(and)i(in)n(tegrit)n(y\))208 2919 y(m)n(ust)e(b)r(e)i (clearly)d(separated,)i(whic)n(h)g(implies)g(sev)n(eral)e(forced)h (logs.)51 b(That)33 b(is,)h(the)f(upp)r(er)g(la)n(y)n(er)e(agreemen)n (t)208 3019 y(proto)r(col)k(m)n(ust)h(p)r(erform)g(sp)r(eci\014c)g (forced)g(logs)f(to)i(ensure)e(in)n(tegrit)n(y)-7 b(,)38 b(and)e(these)g(m)n(ust)h(b)r(e)g(di\013eren)n(t)f(from)208 3118 y(those)27 b(p)r(erformed)g(within)h(the)g(consensus)f(b)r(o)n(x)g (to)g(ensure)g(agreemen)n(t.)125 3348 y(In)k(short,)g(building)g(an)g (agreemen)n(t)e(proto)r(col)h(on)h(top)f(of)h(a)g(traditional)f (consensus)g(la)n(y)n(er)f(in)i(a)g(crash-reco)n(v)n(ery)0 3448 y(mo)r(del)j(has)f(an)h(inheren)n(t)f(cost)g(in)h(terms)g(of)g (forced)f(logs.)54 b(F)-7 b(orced)33 b(logs)g(are)g(usually)g (considered)g(v)n(ery)f(exp)r(ensiv)n(e)0 3548 y(b)r(ecause)h(eac)n(h)f (one)h(in)n(v)n(olv)n(es)f(a)h(sync)n(hronous)e(write)i(to)g(the)h (disk.)54 b(One)33 b(migh)n(t)g(b)r(e)h(tempted)g(to)f(giv)n(e)f(up)i (the)g(use)0 3647 y(of)g(a)h(consensus)e(b)r(o)n(x)h(and)h(dev)n(elop)e (ad-ho)r(c)h(proto)r(cols)f(that)i(minimises)g(the)f(n)n(um)n(b)r(er)h (of)f(forced)g(logs.)57 b(Another,)0 3747 y(more)32 b(c)n(hallenging,)h (approac)n(h)d(consists)i(in)h(\014guring)f(out)h(a)f(di\013eren)n(t)h (w)n(a)n(y)e(to)i(factor)f(out)h(the)g(consensus)e(part)i(of)0 3847 y(agreemen)n(t)28 b(proto)r(cols,)g(i.e.,)i(a)f(di\013eren)n(t)g (w)n(a)n(y)f(to)h(shap)r(e)g(consensus.)40 b(This)30 b(is)f(exactly)f(the)i(approac)n(h)d(promoted)h(in)0 3946 y(this)g(pap)r(er.)0 4193 y Fy(Con)m(tribution.)36 b Fx(This)28 b(pap)r(er)f(suggests)g(a)g Fv(r)l(eshaping)j Fx(of)d(consensus)g(that)h(mak)n(es)f(it)h(b)r(etter)g(suited)g(for)f (a)h(practical)0 4292 y(use)f(in)h(reliable)f(distributed)h (programming.)101 4522 y(1.)42 b(W)-7 b(e)30 b(in)n(tro)r(duce)g(the)h (sp)r(eci\014cation)f(of)g(a)g(new)g(consensus-lik)n(e)f(abstraction,)g (whic)n(h)i(w)n(e)f(call)f Fv(op)l(en)k(c)l(onsensus)p Fx(.)208 4622 y(Of)d(course,)h(prop)r(osing)e(a)i(new)g(sp)r (eci\014cation)f(is)h(fraugh)n(t)f(with)h(the)g(danger)f(of)h (de\014ning)g(a)f(new)h(abstraction)208 4721 y(that)25 b(is)h(either)f(stronger)f(than)i(the)g(original)e(one,)i(or)e(on)i (the)g(con)n(trary)d(trivial)i(\(and)h(hence)g(useless\).)35 b(In)26 b(b)r(oth)208 4821 y(cases,)c(w)n(e)g(lose)f(the)i(b)r (ene\014ts)g(of)f(reusing)g(w)n(ell-kno)n(wn)f(results)g(on)h(the)h (solv)-5 b(abilit)n(y)22 b(of)g(consensus.)34 b(F)-7 b(ortunately)g(,)208 4921 y(w)n(e)33 b(de\014ne)h(precise)e(conditions) h(under)h(whic)n(h)f(op)r(en)h(consensus)f(and)g(consensus)g(are)f Fv(e)l(quivalent)i Fx(problems:)208 5020 y(under)26 b(these)h (conditions,)f(an)n(y)g(algorithm)g(that)h(implemen)n(ts)g(one)f(of)h (the)g(abstractions)e(can)i(b)r(e)g(transformed)208 5120 y(to)36 b(implemen)n(t)g(the)h(other.)62 b(These)36 b(conditions)g(dep) r(end)g(on)g(the)h(w)n(a)n(y)e(op)r(en)h(consensus)f(is)h(used,)j(whic) n(h)d(is)p 0 5173 1512 4 v 0 5250 a FD(distributed)21 b(system,)h(one)f(ma)n(y)g(t)n(ypically)h(devise)f(a)g(proto)r(col)h (that)g(is)e(optimal)h(for)f(a)h(giv)n(en)g(execution)i(scenario)e (\(e.g.,)h(when)f(no)g(pro)r(cess)0 5329 y(crashes\))27 b(and)g(v)n(ery)g(ine\016cien)n(t)h(in)e(another)i(scenario)f(\(e.g.,)g (if)e(t)n(w)n(o)j(pro)r(cesses)f(crash\).)40 b(In)27 b(practice,)h(e\016ciency)g(is)e(a)h(main)f(concern)i(in)0 5408 y Fs(nic)l(e)22 b FD(runs,)g(where)h(no)f(pro)r(cess)h(crashes,)f (or)g(is)g(ev)n(en)h(susp)r(ected)i(to)d(ha)n(v)n(e)i(crashed.)31 b(These)23 b(are)g(the)g(runs)f(that)h(are)g(the)g(most)g(frequen)n(t)g (in)0 5486 y(practice)i(and)f(for)f(whic)n(h)h(distributed)g(proto)r (cols)g(are)g(usually)f(optimised.)1869 5768 y Fx(2)p eop %%Page: 3 3 3 2 bop 208 -67 a Fx(actually)34 b(not)g(surprising.)57 b(Giv)n(en)35 b(that)g(our)f(op)r(en)g(consensus)g(abstraction)f(exp)r (oses)h(in)h(its)g(in)n(terface)f(part)208 33 y(of)c(its)g(implemen)n (tation)h([Kic96)n(],)h(its)e(seman)n(tics)g(indeed)h(dep)r(end)g(on)f (its)g(usage.)44 b(Precisely)29 b(b)r(ecause)h(of)g(this)208 132 y(c)n(haracteristic,)22 b(op)r(en)i(consensus)f(has)h(some)f(in)n (teresting)h(\015a)n(v)n(ours)e(that)i(mak)n(e)f(its)h(use)g (practical.)35 b(First,)25 b(op)r(en)208 232 y(consensus)g(has)h(a)h Fv(r)l(e-entr)l(ant)e Fx(\015a)n(v)n(our:)35 b(a)26 b(pro)r(cess)f(ma)n (y)h(in)n(v)n(ok)n(e)f(the)i(same)g(op)r(en)f(consensus)g(instance)g (sev)n(eral)208 332 y(times)32 b(with)g(di\013eren)n(t)g(parameters,)g (i.e.,)h(it)f(can)g(prop)r(ose)f(di\013eren)n(t)h(v)-5 b(alues)31 b(at)h(di\013eren)n(t)g(times.)50 b(T)n(ypically)-7 b(,)208 431 y(the)36 b(pro)r(cess)f(ma)n(y)h(in)n(v)n(ok)n(e)f(idemp)r (oten)n(t)i(consensus)e(with)i(a)f(giv)n(en)f(parameter,)i(crash,)h (reco)n(v)n(er,)e(and)g(then)208 531 y(in)n(v)n(ok)n(e)26 b(op)r(en)h(consensus)g(with)h(a)f(di\013eren)n(t)h(parameter)e(\(if)j (it)f(did)g(not)g(log)e(the)i(v)-5 b(alue)28 b(previously)e(prop)r (osed\):)208 630 y(the)h(same)g(consensus)f(decision)h(will)g(ho)n(w)n (ev)n(er)e(b)r(e)j(returned)e(in)i(b)r(oth)f(cases.)36 b(Second,)27 b(op)r(en)g(consensus)f(has)h(a)208 730 y Fv(de)l(c)l(ouple)l(d)f Fx(\015a)n(v)n(our.)34 b(The)24 b(pre-commitmen)n(t)g(of)h(a)f(decision)g(is)h(decoupled)f(from)h(its)f (commitmen)n(t:)36 b(the)25 b(actual)208 830 y(coupling)36 b(is)g(under)h(the)g(con)n(trol)e(of)i(the)g(upp)r(er)g(la)n(y)n(er)e (using)h(the)i(op)r(en)e(consensus)g(b)r(o)n(x)g(\(whic)n(h)h(can)g(th) n(us)208 929 y(merge)26 b(forced)h(logs\).)36 b(Third,)27 b(op)r(en)h(consensus)e(has)h(an)h Fv(on-demand)g Fx(\015a)n(v)n(our.) 35 b(Pro)r(cesses)25 b(do)i(not)h(all)f(need)h(to)208 1029 y(prop)r(ose)f(v)-5 b(alues)28 b(and)g(receiv)n(e)f(decisions.)38 b(If)28 b(a)g(pro)r(cess)f(is)i(in)n(terested)e(in)i(receiving)e(a)h (consensus)f(decision,)h(it)208 1129 y(m)n(ust)f(in)n(v)n(ok)n(e)e(op)r (en)i(consensus)f(with)i(a)f(giv)n(en)f(parameter:)35 b(otherwise)26 b(the)i(pro)r(cesses)d(just)j(act)f(as)f Fv(witnesses)p Fx(.)101 1295 y(2.)42 b(W)-7 b(e)32 b(describ)r(e)h(an)f (op)r(en)g(consensus)g(algorithm)f(where,)j(lik)n(e)e(in)g([A)n(CT00a)o (],)i(safet)n(y)e(is)g(ensured)g(ev)n(en)g(if)h(\(all\))208 1394 y(pro)r(cesses)19 b(crash)h(\(or)g(k)n(eep)h(crashing)e(and)i (reco)n(v)n(ering\)\))e(and)h(messages)g(are)g(lost,)i(whereas)d(liv)n (eness)h(\(progress\))208 1494 y(is)33 b(ac)n(hiev)n(ed)f(if)h(ev)n(en) n(tually)-7 b(,)34 b(a)f(ma)5 b(jorit)n(y)32 b(of)h(the)h(pro)r(cesses) e(remain)g(up)i(\(for)f(su\016cien)n(tly)g(long\))g(and)g(failure)208 1593 y(detection)h(is)g(ev)n(en)n(tually)g(reliable.)56 b(Roughly)34 b(sp)r(eaking,)i(our)d(op)r(en)i(consensus)e(algorithm)g (can)h(b)r(e)h(view)n(ed)208 1693 y(as)28 b(an)h(adaptation)f(of)h (Lamp)r(ort's)g(Syno)r(d)g(proto)r(col)f([Lam89)o(])h(to)g(the)h(op)r (en)f(consensus)f(sp)r(eci\014cation.)41 b(More)208 1793 y(precisely)-7 b(,)36 b(our)e(algorithm)h(decouples)f(and)h(factor)g (out)g(the)h(t)n(w)n(o)e(parts)h(of)g(Lamp)r(ort's)g(proto)r(col:)51 b(the)35 b(pre-)208 1892 y(commit)28 b(and)g(the)h(commitmen)n(t)f(of)g (a)g(decision.)39 b(In)n(terestingly)-7 b(,)27 b(and)h(despite)h(its)f Fv(r)l(e-entr)l(ant)p Fx(,)f Fv(de)l(c)l(ouple)l(d)j Fx(and)208 1992 y Fv(on-demand)35 b Fx(\015a)n(v)n(ours,)e(our)h(op)r (en)g(consensus)f(algorithm)g(is)h(rather)f(simple.)57 b(In)34 b(particular,)g(our)g(notion)g(of)208 2092 y(ev)n(en)n(tual)h (failure)h(detector)g(reliabilit)n(y)f(is)h(captured)g(b)n(y)g(the)g (simple)h(failure)f(detector)f(sp)r(eci\014cation)h(of)h(\012,)208 2191 y(giv)n(en)30 b(for)g(the)h(crash-stop)e(mo)r(del)i(in)g([CHT96].) 46 b(In)32 b(comparison,)e(new,)h(and)g(rather)f(sophisticated,)h (failure)208 2291 y(detector)19 b(de\014nitions)g(w)n(ere)g(in)n(tro)r (duced)g(in)h([A)n(CT00a)o(])f(to)h(cop)r(e)f(with)h(pro)r(cess)f (crash)f(and)i(reco)n(v)n(ery)-7 b(.)31 b(Moreo)n(v)n(er,)208 2390 y(in)f(nice)h(runs)f(\(i.e.,)i(in)f(failure-free)e(and)i (suspicion-free)e(runs,)i(whic)n(h)g(are)e(the)i(most)g(frequen)n(t)f (in)h(practice\),)208 2490 y(a)e(pro)r(cess)f(can)h(reac)n(h)f(a)h (decision)h(after)f Fr(d)p Fx(\()p Fq(n)19 b Fx(+)h(1\))p Fq(=)p Fx(2)p Fr(e)28 b Fx(\(concurren)n(t\))h(forced)g(logs.)41 b(Compared)29 b(to)g(the)h(crash-)208 2590 y(reco)n(v)n(ery)f (consensus)i(solution)g(of)h([A)n(CT00a)n(],)i(w)n(e)d(do)h(not)g (increase)e(neither)i(the)h(n)n(um)n(b)r(er)e(of)h(messages)e(nor)208 2689 y(the)i(n)n(um)n(b)r(er)g(of)h(comm)n(unication)e(steps,)j(but)f (w)n(e)f(drastically)f(diminish)i(the)f(n)n(um)n(b)r(er)g(of)h(forced)f (logs.)50 b(The)208 2789 y(solution)25 b(of)h([A)n(CT00a)o(])g (requires)f(at)h(least)g Fr(d)p Fx(\()p Fq(n)16 b Fx(+)f(1\))p Fq(=)p Fx(2)p Fr(e)p Fx(+2)24 b(forced)i(logs)f(\(3)h(are)f(sequen)n (tial\))h(b)r(efore)g(a)g(pro)r(cess)208 2889 y(can)g(deliv)n(er)g(a)g (message.)35 b(In)27 b(our)f(case,)g(the)h(forced)g(logs)e(are)h(used)h (to)f(preserv)n(e)f(agreemen)n(t)h(and)g(not)h(to)g(store)208 2988 y(prop)r(ositions)f(or)h(decisions.)101 3154 y(3.)42 b(W)-7 b(e)35 b(illustrate)h(the)f(usefulness)h(of)f(our)g(op)r(en)g (consensus)g(abstraction)f(through)h(an)g(example)g(of)g(a)g(reliable) 208 3254 y(agreemen)n(t)e(proto)r(col)g(built)i(up)r(on)g(this)g (abstraction:)50 b(a)34 b(total)g(order)f(broadcast)g(proto)r(col.)57 b(The)34 b(resulting)208 3354 y(proto)r(col)27 b(is)h(simple,)h(mo)r (dular,)f(and)g(e\016cien)n(t.)40 b(It)29 b(has)f(the)g(same)g(comm)n (unication)g(pattern)g(as)g(a)g(consensus-)208 3453 y(based)34 b(total)g(order)f(broadcast)g(proto)r(col)g(designed)h(for)g(a)h (crash-stop)d(mo)r(del)j([CT96)o(].)58 b(W)-7 b(e)35 b(p)r(oin)n(t)g(out)f(the)208 3553 y(fact)23 b(that)h(our)f(proto)r (col)f(in)n(tro)r(duces)h(signi\014can)n(tly)f(less)h(forced)g(logs)f (than)i(an)f(adaptation)g(of)g(that)h(consensus-)208 3652 y(based)g(proto)r(col)g(to)h(the)h(crash-reco)n(v)n(ery)21 b(mo)r(del,)26 b(i.e.,)g(a)f(proto)r(col)f(than)h(relies)f(on)h(a)g (\\traditional")f(consensus)208 3752 y(mo)r(dule)i(in)g(a)f(crash-reco) n(v)n(ery)d(mo)r(del)k([RR00)o(].)37 b(In)26 b(fact,)g(our)f(algorithm) g(is)g(as)h(e\016cien)n(t)f(as)h(the)g(most)f(e\016cien)n(t)208 3852 y(algorithm)38 b(w)n(e)h(kno)n(w)g(of)h(to)f(solv)n(e)g(the)h (same)f(problem:)60 b(that)40 b(is,)j(the)d(algorithm)e(of)i([Lam89)n (],)j(whic)n(h)d(is)208 3951 y(non-mo)r(dular)26 b(and)h(kno)n(wn)g(to) h(b)r(e)g(v)n(ery)e(complicated.)1977 3921 y Fu(2)125 4181 y Fx(Underlying)d(our)g(op)r(en)g(consensus)g(abstraction,)g(w)n (e)g(argue)f(for)i(a)f(mo)r(dular)g(approac)n(h)e(to)j(distributed)g (program-)0 4281 y(ming.)56 b(The)34 b(distributed)h(system)f(is)g (view)n(ed)f(as)h(the)g(problem)g(domain)f(from)h(whic)n(h)g(fundamen)n (tal)g(abstractions)0 4380 y(should)e(b)r(e)g(extracted.)48 b(Op)r(en)32 b(consensus)f(is)h(indeed)g(a)f(candidate)g(abstraction)g (to)g(build)i(distributed)f(agreemen)n(t)0 4480 y(proto)r(cols.)51 b(W)-7 b(e)33 b(describ)r(e)f(in)h(the)g(pap)r(er)f(the)h(implemen)n (tation)g(of)g(our)f(agreemen)n(t)f(proto)r(col)g(framew)n(ork)g(in)i (Ja)n(v)-5 b(a)0 4580 y(and)31 b(w)n(e)g(con)n(v)n(ey)f(our)h (e\016ciency)g(claims)g(using)g(some)g(p)r(erformance)f(measures.)47 b(Although,)33 b(for)e(space)f(limitation,)0 4679 y(w)n(e)j(illustrate) h(the)g(use)f(of)h(op)r(en)g(consensus)f(through)g(one)g(agreemen)n(t)f (proto)r(col,)j(it)f(is)f(easy)g(ho)n(w)g(to)h(build)g(other)0 4779 y(kinds)28 b(of)f(op)r(en)h(consensus)e(based,)h(y)n(et)h (e\016cien)n(t,)g(agreemen)n(t)e(proto)r(cols)g(along)g(the)i(lines)g (of)f([GS96].)0 4926 y Fy(Roadmap.)35 b Fx(The)22 b(pap)r(er)h(is)g (organised)d(as)j(follo)n(ws.)34 b(W)-7 b(e)23 b(\014rst)g(describ)r(e) f(our)g(system)h(mo)r(del)g(in)g(Section)f(2.)35 b(Section)23 b(3)0 5025 y(in)n(tro)r(duces)f(the)g(sp)r(eci\014cation)g(of)h(the)f (op)r(en)h(consensus)e(abstraction)g(and)h(compares)f(it)i(with)g(the)f (traditional)g(notion)0 5125 y(of)f(consensus.)33 b(W)-7 b(e)21 b(giv)n(e)f(in)h(Section)g(4)f(an)g(e\016cien)n(t)h(algorithm)f (that)h(implemen)n(ts)g(that)g(sp)r(eci\014cation)f(and)h(w)n(e)f (discuss)0 5225 y(its)h(analytical)e(p)r(erformance.)33 b(W)-7 b(e)21 b(describ)r(e)f(in)h(Section)g(5)f(a)g(total)g(order)f (broadcast)g(algorithm)g(built)i(on)g(top)f(of)h(op)r(en)p 0 5278 1512 4 v 92 5332 a Ft(2)127 5355 y FD([Lam89])26 b(uses)g(a)h(consensus)g(abstraction)g(to)g(explain)f(the)h(main)f (idea)h(of)f(the)h(total)g(order)f(broadcast)h(algorithm,)f(but)h(the)g (actual)0 5434 y(algorithm)c(is)f(e\016cien)n(t)i(precisely)e(b)r (ecause)j(it)d(b)n(ypasses)i(that)g(abstraction.)32 b(In)23 b(a)g(sense,)g(our)g(pap)r(er)g(suggests)h(the)g(b)r(est)f(of)g(b)r (oth)g(w)n(orlds:)0 5513 y(an)h(e\016cien)n(t)h(total)f(order)g (broadcast)h(based)f(on)g(a)g(consensus-lik)n(e)g(abstraction.)1869 5768 y Fx(3)p eop %%Page: 4 4 4 3 bop 0 -67 a Fx(consensus,)29 b(and)g(w)n(e)g(also)g(discuss)f(its)i (analytical)e(p)r(erformance.)42 b(Section)29 b(6)g(describ)r(es)g(our) f(Ja)n(v)-5 b(a)29 b(implemen)n(tation)0 33 y(of)39 b(op)r(en)g (consensus)g(and)g(giv)n(es)e(some)i(practical)f(p)r(erformance)g (measures.)71 b(Section)39 b(7)g(summarises)e(the)j(pap)r(er)0 132 y(and)35 b(discusses)g(some)f(related)h(w)n(ork.)59 b(App)r(endix)36 b(A)g(discusses)e(the)i(equiv)-5 b(alence)35 b(b)r(et)n(w)n(een)g(op)r(en)g(consensus)g(and)0 232 y(consensus.)0 628 y Fw(2)135 b(System)45 b(Mo)t(del)0 857 y Fy(Pro)s(cesses.)53 b Fx(W)-7 b(e)34 b(consider)e(a)h (distributed)h(system)f(as)g(a)g(set)g(of)h(pro)r(cesses)e(\005)h(=)f Fr(f)p Fq(p)2804 869 y Fu(1)2841 857 y Fq(;)14 b(p)2920 869 y Fu(2)2957 857 y Fq(;)g(:::;)g(p)3142 869 y Fp(n)3187 857 y Fr(g)p Fx(.)54 b(Eac)n(h)32 b(pro)r(cess)0 957 y(represen)n(ts)23 b(a)h(logical)g(no)r(de)g(in)h(the)g(system.)36 b(A)n(t)25 b(an)n(y)f(giv)n(en)g(time,)i(a)e(pro)r(cess)f(is)i(either)f Fv(up)30 b Fx(or)24 b Fv(down)p Fx(.)37 b(When)25 b(it)g(is)f Fv(up)p Fx(,)0 1057 y(a)g(pro)r(cess)f(progresses)f(at)i(its)g(o)n(wn)g (sp)r(eed)g(b)r(eha)n(ving)g(according)e(to)j(its)f(sp)r(eci\014cation) g(\()p Fv(i.e.)p Fx(,)j(it)e(correctly)d(executes)i(its)0 1156 y(program\).)33 b(Note)23 b(that)f(w)n(e)g(do)g(not)h(mak)n(e)e (here)h(an)n(y)g(assumption)f(on)h(the)h(relativ)n(e)e(sp)r(eed)i(of)f (pro)r(cesses.)34 b(While)23 b(b)r(eing)0 1256 y(up,)i(a)f(pro)r(cess)f (can)h(fail)g(b)n(y)g(crashing;)g(it)h(then)g(stops)f(executing)f(its)i (program)d(and)i(b)r(ecomes)g Fv(down)p Fx(.)37 b(A)24 b(pro)r(cess)f(that)0 1356 y(is)j(do)n(wn)f(can)h(later)f(reco)n(v)n (er;)f(it)i(then)h(b)r(ecomes)e(up)h(again)f(and)h(restarts)e(b)n(y)i (executing)g(a)f(reco)n(v)n(ery)e(pro)r(cedure.)36 b(The)0 1455 y(o)r(ccurrence)27 b(of)i(a)f Fv(cr)l(ash)36 b Fx(\(resp.)j Fv(r)l(e)l(c)l(overy)7 b Fx(\))30 b(ev)n(en)n(t)e(mak)n(es)f(a)i(pro)r (cess)e(transit)h(from)g(up)h(to)g(do)n(wn)f(\(resp.)39 b(from)28 b(do)n(wn)0 1555 y(to)g(up\).)38 b(A)28 b(pro)r(cess)e Fq(p)708 1567 y Fp(i)764 1555 y Fx(is)h Fv(unstable)34 b Fx(if)28 b(it)h(crashes)d(and)h(reco)n(v)n(ers)e(in\014nitely)k(man)n (y)e(times.)38 b(W)-7 b(e)28 b(de\014ne)g(an)f Fv(always-up)0 1655 y Fx(pro)r(cess)f(as)g(a)h(pro)r(cess)f(that)h(nev)n(er)f (crashes.)36 b(W)-7 b(e)27 b(sa)n(y)f(that)h(a)g(pro)r(cess)f Fq(p)2332 1667 y Fp(i)2386 1655 y Fx(is)h Fv(c)l(orr)l(e)l(ct)35 b Fx(if)28 b(there)f(is)g(a)f(time)i(after)f(whic)n(h)0 1754 y(the)f(pro)r(cess)f(is)h(p)r(ermanen)n(tly)f(up.)1106 1724 y Fu(3)1180 1754 y Fx(A)h(pro)r(cess)f(is)h Fv(faulty)34 b Fx(if)26 b(it)h(is)e(not)h Fv(c)l(orr)l(e)l(ct)p Fx(,)g(i.e.,)h (either)f Fv(eventual)t(ly)j(always-down)0 1854 y Fx(or)e Fv(unstable)p Fx(.)125 2001 y(A)20 b(pro)r(cess)f(is)h(equipp)r(ed)h (with)g(t)n(w)n(o)f(lo)r(cal)f(memories:)33 b(a)19 b(v)n(olatile)h (memory)f(and)h(a)g(stable)g(storage.)33 b(The)20 b(primitiv)n(es)0 2100 y Fy(store)32 b Fx(and)g Fy(retriev)m(e)g Fx(allo)n(w)f(a)h(pro)r (cess)f(that)h(is)g(up)h(to)f(access)f(its)h(stable)g(storage.)48 b(When)33 b(it)f(crashes,)g(a)g(pro)r(cess)0 2200 y(lo)r(oses)26 b(the)i(con)n(ten)n(t)f(of)g(its)h(v)n(olatile)e(memory;)h(the)h(con)n (ten)n(t)e(of)i(its)f(stable)g(storage)f(is)h(ho)n(w)n(ev)n(er)e(not)j (a\013ected)f(b)n(y)g(the)0 2300 y(crash)f(and)i(can)f(b)r(e)h(retriev) n(ed)f(b)n(y)g(the)h(pro)r(cess)e(up)r(on)i(reco)n(v)n(ery)-7 b(.)0 2446 y Fy(Link)36 b(Prop)s(erties.)45 b Fx(Pro)r(cesses)29 b(exc)n(hange)g(information)h(and)h(sync)n(hronise)e(b)n(y)h Fv(sending)i Fx(and)f Fv(r)l(e)l(c)l(eiving)g Fx(messages)0 2546 y(through)21 b(c)n(hannels.)34 b(W)-7 b(e)21 b(assume)g(the)h (existence)f(of)g(a)g(bidirectional)g(c)n(hannel)g(b)r(et)n(w)n(een)g (ev)n(ery)f(pair)h(of)g(pro)r(cesses.)33 b(W)-7 b(e)0 2646 y(assume)25 b(that)g(ev)n(ery)f(message)g Fq(m)h Fx(includes)h(the)g(follo)n(wing)e(\014elds:)36 b(the)25 b(iden)n(tit)n(y)h(of)f(its)h(sender,)f(denoted)g Fv(sender\(m\))p Fx(,)0 2745 y(and)34 b(a)f(lo)r(cal)g(iden)n(ti\014cation)h(n)n(um)n(b) r(er,)h(denoted)f Fv(id\(m\))p Fx(.)56 b(These)34 b(\014elds)f(mak)n(e) g(ev)n(ery)g(message)f(unique.)56 b(Channels)0 2845 y(can)25 b(lo)r(ose)g(or)f(drop)h(messages)f(and)h(there)g(is)h(no)f(upp)r(er)g (b)r(ound)h(on)f(message)f(transmission)h(dela)n(ys.)35 b(W)-7 b(e)25 b(assume)g(the)0 2945 y(same)h(c)n(hannel)h (de\014nitions)g(as)f(in)i([A)n(CT00a)n(],)f(whic)n(h)g(ensure)g(the)g (three)g(follo)n(wing)f(prop)r(erties)g(b)r(et)n(w)n(een)h(ev)n(ery)e (pair)0 3044 y(of)j(pro)r(cesses)e Fq(p)496 3056 y Fp(i)551 3044 y Fx(and)h Fq(p)754 3056 y Fp(j)789 3044 y Fx(:)125 3191 y Fy(No)k(creation:)37 b Fx(If)28 b Fq(p)804 3203 y Fp(j)866 3191 y Fx(receiv)n(es)e(a)h(message)g Fq(m)g Fx(from)g Fq(p)1898 3203 y Fp(i)1953 3191 y Fx(at)h(time)g Fq(t)p Fx(,)g(then)g Fq(p)2556 3203 y Fp(i)2611 3191 y Fx(sen)n(t)f Fq(m)h Fx(to)f Fq(p)3028 3203 y Fp(j)3091 3191 y Fx(b)r(efore)g(time)h Fq(t)p Fx(.)125 3338 y Fy(Finite)h (duplication:)35 b Fx(If)26 b Fq(p)1053 3350 y Fp(i)1107 3338 y Fx(sends)g(a)g(message)e Fq(m)i Fx(to)g Fq(p)1954 3350 y Fp(j)2015 3338 y Fx(only)g(a)g(\014nite)h(n)n(um)n(b)r(er)f(of)g (times,)g(then)h Fq(p)3342 3350 y Fp(j)3403 3338 y Fx(receiv)n(es)e Fq(m)0 3438 y Fx(only)i(a)g(\014nite)i(n)n(um)n(b)r(er)e(of)g(times.) 125 3584 y Fy(F)-8 b(air)27 b(loss:)33 b Fx(If)23 b Fq(p)647 3596 y Fp(i)698 3584 y Fx(sends)g(a)g(message)f Fq(m)h Fx(to)h Fq(p)1532 3596 y Fp(j)1590 3584 y Fx(an)f(in\014nite)h(n)n(um)n (b)r(er)f(of)g(times)h(and)f Fq(p)2783 3596 y Fp(j)2841 3584 y Fx(is)g(correct,)g(then)h Fq(p)3444 3596 y Fp(j)3502 3584 y Fx(receiv)n(es)0 3684 y Fq(m)k Fx(from)f Fq(p)339 3696 y Fp(i)394 3684 y Fx(an)g(in\014nite)i(n)n(um)n(b)r(er)e(of)g (times.)125 3831 y(These)i(prop)r(erties)f(c)n(haracterise)f(the)j (links)f(b)r(et)n(w)n(een)h(pro)r(cesses)e(and)h(are)f(indep)r(enden)n (t)j(of)e(the)h(pro)r(cess)e(failure)0 3931 y(pattern)37 b(o)r(ccurring)e(in)j(the)f(execution.)65 b(The)37 b(last)f(t)n(w)n(o)h (prop)r(erties)f(are)g(sometimes)g(called,)j(resp)r(ectiv)n(ely)-7 b(,)39 b Fv(\014nite)0 4030 y(duplic)l(ation)j Fx(and)33 b Fv(we)l(ak)j(loss)p Fx(,)g(e.g.,)e(in)g([Lyn96)o(].)55 b(They)33 b(re\015ect)g(the)h(usefulness)g(of)f(the)h(comm)n(unication) f(c)n(hannel.)0 4130 y(Without)28 b(these)f(prop)r(erties,)f(an)n(y)g (in)n(teresting)g(distributed)h(problem)g(w)n(ould)f(b)r(e)i(trivially) e(imp)r(ossible)h(to)f(solv)n(e.)36 b(By)0 4229 y(in)n(tro)r(ducing)23 b(the)h(notion)f(of)g(correct)g(pro)r(cess)f(in)n(to)h(the)h Fv(fair)j(loss)k Fx(prop)r(ert)n(y)-7 b(,)24 b(w)n(e)f(de\014ne)g(the)h (conditions)f(under)h(whic)n(h)0 4329 y(a)32 b(message)e(is)i(deliv)n (ered)f(to)h(its)h(recipien)n(t)e(pro)r(cess.)50 b(Indeed,)33 b(the)f(deliv)n(ery)f(of)h(a)g(message)f(requires)g(the)h(recipien)n(t) 0 4429 y(pro)r(cess)23 b(to)i(b)r(e)f(running)g(at)h(the)g(time)f(the)h (c)n(hannel)f(attempts)h(to)f(deliv)n(er)g(it,)h(and)g(therefore)e(dep) r(ends)i(on)f(the)h(failure)0 4528 y(pattern)31 b(o)r(ccurring)f(in)i (the)g(execution.)48 b(The)32 b Fv(fair)j(loss)k Fx(prop)r(ert)n(y)30 b(indicates)h(that)h(a)f(message)f(can)i(b)r(e)f(lost,)i(either)0 4628 y(b)r(ecause)h(the)g(c)n(hannel)g(ma)n(y)f(not)h(attempt)h(to)f (deliv)n(er)f(the)i(message)e(or)g(b)r(ecause)h(the)g(recipien)n(t)g (pro)r(cess)f(ma)n(y)g(b)r(e)0 4728 y(do)n(wn)21 b(when)h(the)g(c)n (hannel)g(attempts)g(to)g(deliv)n(er)f(the)h(message)e(to)i(it.)35 b(In)22 b(b)r(oth)g(cases,)g(the)g(c)n(hannel)g(is)f(said)h(to)f (commit)0 4827 y(an)27 b Fv(omission)k(failur)l(e)p Fx(.)0 4974 y Fy(Retransmission)19 b(Mo)s(dule.)32 b Fx(T)-7 b(o)18 b(simplify)i(the)f(presen)n(tation)e(of)i(our)f(distributed)h (algorithms)e(in)i(the)g(next)g(sections)0 5074 y(\(op)r(en)31 b(consensus)f(and)g(total)h(order)e(broadcast\),)h(w)n(e)g(consider)g (a)g Fv(r)l(etr)l(ansmission)38 b Fx(c)n(hannel,)31 b(asso)r(ciated)e (with)i(t)n(w)n(o)0 5173 y(primitiv)n(es:)51 b Fv(s-send)43 b Fx(and)34 b Fv(s-r)l(e)l(c)l(eive)p Fx(.)59 b(These)34 b(preserv)n(e)f(the)i Fv(no)i(cr)l(e)l(ation)e Fx(prop)r(ert)n(y)e(of)i (the)g(underlying)f(c)n(hannels,)0 5273 y(and)29 b(ensure)g(the)h (follo)n(wing)e(prop)r(ert)n(y:)39 b Fv(L)l(et)31 b Fq(p)1483 5285 y Fp(i)1542 5273 y Fv(b)l(e)g(any)h(pr)l(o)l(c)l(ess)g(that)39 b Fx(s-sends)30 b Fv(a)i(message)g Fq(m)f Fv(to)h(a)f(pr)l(o)l(c)l(ess) h Fq(p)3556 5285 y Fp(j)3591 5273 y Fv(,)g(and)p 0 5326 1512 4 v 92 5380 a Ft(3)127 5403 y FD(In)27 b(practice,)g(a)g(pro)r (cess)f(is)g(required)g(to)h(sta)n(y)g(up)g(long)f(enough)i(for)d(the)j (computation)g(to)f(terminate.)40 b(In)26 b(async)n(hronous)i(systems)0 5482 y(ho)n(w)n(ev)n(er,)c(c)n(haracterising)h(the)f(notion)h(of)e (\\long)h(enough")i(is)d(imp)r(ossible.)1869 5768 y Fx(4)p eop %%Page: 5 5 5 4 bop 0 -67 a Fv(then)30 b(do)l(es)g(not)g(cr)l(ash.)39 b(If)30 b Fq(p)894 -55 y Fp(j)959 -67 y Fv(is)g(c)l(orr)l(e)l(ct,)g (then)g Fq(p)1572 -55 y Fp(j)1636 -67 y Fv(eventual)t(ly)38 b Fx(s-receiv)n(es)28 b Fq(m)p Fv(.)37 b Fx(W)-7 b(e)28 b(build)g(a)g(retransmission)d(mo)r(dule)0 33 y(that)30 b(implemen)n(ts)f(the)h(abstraction)e(of)i(suc)n(h)f(a)g (retransmission)e(c)n(hannel)i(with)h(our)f(more)f(basic)h Fv(send)39 b Fx(and)29 b Fv(r)l(e)l(c)l(eive)0 132 y Fx(primitiv)n(es.)125 279 y(Figure)21 b(1)g(giv)n(es)f(the)i(algorithm) f(of)h(the)g(retransmission)d(mo)r(dule.)36 b(All)22 b(messages)e(that)i(need)f(to)h(b)r(e)g(retransmitted)0 379 y(are)29 b(put)i(in)g(the)f(v)-5 b(ariable)29 b Fv(xmitmsg)38 b Fx(with)30 b(their)g(destination)h(in)f(the)h(set)f Fv(dst)38 b Fx(\(line)31 b(6\).)44 b(Messages)29 b(in)h Fv(xmitmsg)38 b Fx(are)0 478 y(nev)n(er)27 b(erased)g(and)h(therefore)f (are)g(alw)n(a)n(ys)g(retransmitted)g(\(lines)i(12-15\).)2390 448 y Fu(4)2463 478 y Fx(The)f(no)g(creation)f(prop)r(ert)n(y)g(is)h (trivially)0 578 y(satis\014ed.)p 0 680 3780 3 v 25 826 a FD(1:)33 b Fu(for)22 b(eac)n(h)f(pro)r(cess)g Fp(p)629 834 y Fo(i)656 826 y Fu(:)25 893 y FD(2:)33 b Fn(pro)r(cedure)22 b Fu(initialisation:)25 959 y FD(3:)99 b Fm(xmitmsg)5 b Fu([],)21 b Fm(dst)5 b Fu([])22 b Fl( )d(?)p Fu(;)j Fn(start)k(task)p Fl(f)p Fu(retransmit)p Fl(g)25 1025 y FD(4:)33 b Fn(pro)r(cedure)22 b Fu(s-send\()p Fp(m)p Fu(\))2414 b FC(f)p Fs(to)26 b(s-send)g(m)g(to)f Fk(p)3712 1035 y Fj(j)3744 1025 y FC(g)25 1103 y FD(5:)99 b Fn(if)29 b Fp(m)19 b Fl(62)j Fm(xmitmsg)27 b Fn(then)1185 b FC(f)p Fs(ensur)l(e)26 b(that)g(m)f(is)h(not)g(adde)l(d)h(to)f(xmitmsg)f(mor)l (e)i(than)f(onc)l(e)p FC(g)25 1170 y FD(6:)165 b Fm(xmitmsg)26 b Fl( )d Fm(xmitmsg)j Fl([)c Fp(m)p Fu(;)g Fm(dst)5 b Fu([)p Fp(m)p Fu(])23 b Fl( )g Fm(dst)5 b Fu([)p Fp(m)p Fu(])60 b Fl([)37 b Fp(p)1713 1178 y Fo(j)25 1236 y FD(7:)99 b Fn(for)25 b(all)d Fp(p)431 1244 y Fo(j)481 1236 y Fl(2)g Fm(dst)5 b Fu([)p Fp(m)p Fu(])23 b Fn(do)25 1303 y FD(8:)165 b Fn(if)30 b Fp(p)353 1311 y Fo(j)403 1303 y Fl(6)p Fu(=)19 b Fp(p)507 1311 y Fo(i)555 1303 y Fn(then)25 1369 y FD(9:)231 b Fn(send)22 b Fp(m)g Fu(to)h Fp(p)678 1377 y Fo(j)0 1435 y FD(10:)166 b Fn(else)0 1502 y FD(11:)232 b Fu(sim)n(ulate)21 b Fn(s-receiv)n(e)j Fp(m)e Fu(from)g Fp(p)1162 1510 y Fo(i)0 1568 y FD(12:)33 b Fn(up)r(on)22 b(receiv)n(e)p Fu(\()p Fp(m)p Fu(\))h Fn(do)0 1635 y FD(13:)99 b Fn(s-receiv)n(e)p Fu(\()p Fp(m)p Fu(\))0 1701 y FD(14:)33 b Fn(task)22 b Fu(retransmit)1844 b FC(f)p Fs(r)l(etr)l(ansmit)27 b(al)t(l)f(messages)g(r)l(e)l(c)l(eive)l(d)g(and)h(sent)p FC(g)0 1767 y FD(15:)99 b Fn(while)23 b Fu(true)f Fn(do)0 1834 y FD(16:)166 b Fn(for)25 b(all)d Fp(m)d Fl(2)j Fm(xmitmsg)k Fn(do)0 1900 y FD(17:)232 b Fu(s-send\()p Fp(m)p Fu(\))p 0 2013 V 1317 2196 a Fx(Figure)27 b(1:)37 b FA(Retransmission)27 b(mo)r(dule)0 2435 y Fy(Prop)s(osition)35 b(1.)48 b Fv(L)l(et)33 b Fq(p)833 2447 y Fp(i)894 2435 y Fv(b)l(e)g(any)h(pr)l(o)l(c)l(ess)g (that)f(s-sends)g(a)h(message)g Fq(m)f Fv(to)h(a)g(pr)l(o)l(c)l(ess)f Fq(p)2926 2447 y Fp(j)2961 2435 y Fv(,)i(and)f(then)f Fq(p)3416 2447 y Fp(i)3477 2435 y Fv(do)l(es)h(not)0 2534 y(cr)l(ash.)39 b(If)31 b Fq(p)381 2546 y Fp(j)445 2534 y Fv(is)f(c)l(orr)l(e)l(ct,)g(then)g Fq(p)1058 2546 y Fp(j)1122 2534 y Fv(eventual)t(ly)h(s-r)l(e)l(c)l(eives)f Fq(m)p Fv(.)0 2681 y Fy(Pro)s(of)35 b(\(sk)m(etc)m(h\).)45 b Fx(Supp)r(ose)30 b(b)n(y)g(con)n(tradiction)f(that)i Fq(p)1850 2693 y Fp(i)1907 2681 y Fx(s-sends)f(a)f(message)g Fq(m)h Fx(to)g(a)g(pro)r(cess)f Fq(p)3199 2693 y Fp(j)3264 2681 y Fx(and)h(then)h(do)r(es)0 2781 y(not)i(crash.)52 b(Assume)33 b Fq(p)774 2793 y Fp(j)842 2781 y Fx(is)g(correct,)g(y)n (et)g Fq(p)1424 2793 y Fp(j)1491 2781 y Fx(do)r(es)g(not)g(s-receiv)n (e)e Fq(m)p Fx(.)53 b(There)33 b(are)f(t)n(w)n(o)g(cases)g(to)h (consider:)47 b(\(a\))33 b Fq(p)3745 2793 y Fp(j)0 2881 y Fx(do)r(es)f(not)h(crash,)f(or)g(\(b\))h Fq(p)883 2893 y Fp(j)951 2881 y Fx(crashes)e(and)h(ev)n(en)n(tually)g(reco)n(v)n(ers) e(and)i(remains)g(alw)n(a)n(ys-up.)49 b(F)-7 b(or)32 b(case)g(\(a\),)i(b)n(y)e(the)0 2980 y(fair)g(loss)f(prop)r(erties)h (of)g(the)h(links,)g Fq(p)1227 2992 y Fp(j)1294 2980 y Fx(receiv)n(es)e(and)h(then)h(s-receiv)n(es)d Fq(m)p Fx(:)47 b(a)32 b(con)n(tradiction.)49 b(F)-7 b(or)32 b(case)f(\(b\),)k(since)0 3080 y(pro)r(cess)24 b Fq(p)329 3092 y Fp(i)383 3080 y Fx(k)n(eeps)h(on)g(sending)g Fq(m)h Fx(to)f Fq(p)1254 3092 y Fp(j)1289 3080 y Fx(,)h(there)g(is)f(a)h(time) g(after)f(whic)n(h)h Fq(p)2357 3092 y Fp(i)2410 3080 y Fx(sends)f Fq(m)h Fx(to)f Fq(p)2870 3092 y Fp(j)2931 3080 y Fx(and)g(none)h(of)f(them)i(crash)0 3179 y(afterw)n(ards.)34 b(As)24 b(for)f(case)g(\(a\),)i(b)n(y)f(the)g(fair)g(loss)f(prop)r(ert) n(y)g(of)g(the)i(links,)f Fq(p)2382 3191 y Fp(j)2441 3179 y Fx(ev)n(en)n(tually)f(receiv)n(es)g Fq(m)p Fx(,)h(then)h (s-receiv)n(es)0 3279 y Fq(m)p Fx(:)37 b(a)27 b(con)n(tradiction.)3013 b Fi(2)125 3526 y Fx(Finally)-7 b(,)32 b(w)n(e)g(assume)f(the)h (presence)f(of)h(a)g(discrete)f(global)g(clo)r(c)n(k)g(whose)g(range)f (tic)n(ks)i Fh(\034)45 b Fx(is)32 b(the)g(set)g(of)f(natural)0 3625 y(n)n(um)n(b)r(ers.)k(This)23 b(clo)r(c)n(k)g(is)g(used)g(to)g (simplify)h(presen)n(tation)e(and)h(not)g(to)g(in)n(tro)r(duce)g(time)h (sync)n(hron)n(y)-7 b(,)22 b(since)h(pro)r(cesses)0 3725 y(cannot)h(access)f(the)i(global)f(clo)r(c)n(k.)35 b(W)-7 b(e)25 b(will)g(indeed)g(in)n(tro)r(duce)f(some)g(partial)g(sync)n (hron)n(y)e(assumptions)i(\(otherwise,)0 3824 y(consensus)18 b(and)h(total)g(order)f(broadcast)g(are)g(imp)r(ossible)h([FLP85)o (]\),)i(but)f(as)f(w)n(e)g(will)g(discuss,)i(these)e(assumptions)f (will)0 3924 y(b)r(e)28 b(encapsulated)f(inside)g(the)h(sp)r (eci\014cation)g(of)f(a)g(failure)g(detector)g(and)h(used)f(only)g(to)h (ensure)f(progress)e(\(liv)n(eness\).)0 4246 y Fw(3)135 b(Op)t(en)44 b(Consensus:)60 b(Sp)t(eci\014cation)0 4475 y Fx(W)-7 b(e)24 b(giv)n(e)e(here)i(the)f(seman)n(tics)g(of)h(our)e(op) r(en)i(consensus)f(abstraction.)34 b(W)-7 b(e)24 b(\014rst)f(recall)f (the)i(traditional)f(sp)r(eci\014cation)0 4575 y(of)39 b(consensus)e(in)i(order)f(to)g(con)n(trast)g(it)h(with)g(op)r(en)g (consensus.)69 b(Second,)42 b(w)n(e)c(giv)n(e)g(the)h(general)e(idea)i (of)g(op)r(en)0 4674 y(consensus,)27 b(and)g(then)h(a)f(more)g(precise) g(sp)r(eci\014cation)g(of)h(it.)0 4954 y Fg(3.1)112 b(T)-9 b(raditional)39 b(Consensus:)51 b(Reminder)0 5154 y Fx(In)32 b(the)g(consensus)f(problem,)h(the)g(pro)r(cesses)e(are)h(supp)r(osed)g (to)h Fv(pr)l(op)l(ose)h Fx(an)e(initial)h(v)-5 b(alue)32 b(and)f(ev)n(en)n(tually)g Fv(de)l(cide)0 5254 y Fx(on)i(the)g(same)g (\014nal)g(v)-5 b(alue,)34 b(among)e(one)h(of)g(the)g(prop)r(osed)f(v) -5 b(alues.)53 b(Pro)r(cesses)31 b(prop)r(ose)h(a)h(v)-5 b(alue)33 b(b)n(y)f(in)n(v)n(oking)g(an)p 0 5307 1512 4 v 92 5361 a Ft(4)127 5384 y FD(When)d(b)n(y)g(some)f(mean,)h(a)g(pro) r(cess)f(kno)n(ws)g(that)i(a)e(message)h Fk(m)f FD(has)h(b)r(een)g (receiv)n(ed,)g(this)f(pro)r(cess)h(can)g(stop)f(its)g(retransmission)0 5463 y(mo)r(dule)c(for)f Fk(m)p FD(;)g(therefore,)h(messages)g(can)h(b) r(e)f(th)n(us)g(erased)g(from)f Fs(xmitmsg)29 b FD(and)24 b(stop)g(b)r(eing)h(retransmitted.)1869 5768 y Fx(5)p eop %%Page: 6 6 6 5 bop 0 -67 a Fx(op)r(eration)36 b Fq(pr)r(opose)p Fx(\(\))i(with)f(their)g(initial)h(v)-5 b(alue)36 b(as)h(a)f (parameter,)i(and)f(decide)g(the)g(v)-5 b(alue)37 b(returned)g(from)f (that)0 33 y(in)n(v)n(o)r(cation.)69 b(Of)39 b(course,)h(pro)r(cesses)d (that)i(crash)f(are)f(exempted)i(from)g(deciding.)70 b(The)39 b(problem)f(w)n(as)f(initially)0 132 y(in)n(tro)r(duced)22 b(in)h(the)f(crash-stop)f(mo)r(del)i([FLP85)n(])g(and)f(a)g (de\014nition)h(w)n(as)e(giv)n(en)h(in)g([A)n(CT00a)o(])g(for)g(the)h (crash-reco)n(v)n(ery)0 232 y(mo)r(del.)41 b(According)28 b(to)h(the)g(mo)r(del)h(of)f([A)n(CT00a)n(],)h(a)e(pro)r(cess)g(is)h (said)f(to)h Fv(pr)l(op)l(ose)i Fx(\(resp.)41 b Fv(de)l(cide)p Fx(\))31 b(a)d(v)-5 b(alue)29 b(when)g(it)0 332 y(writes)23 b(that)g(v)-5 b(alue)23 b(in)g(a)g(sp)r(eci\014c)g(stable)g(storage)e (lo)r(cation.)35 b(The)23 b(pro)r(cesses)f(m)n(ust)h(satisfy)g(the)g (follo)n(wing)f(prop)r(erties.)125 478 y Fy(V)-8 b(alidit)m(y)q Fx(:)37 b(If)28 b(a)f(pro)r(cess)g(decides)g Fq(v)s Fx(,)h(then)g Fq(v)j Fx(is)c(the)h(v)-5 b(alue)28 b(prop)r(osed)e(b)n(y)i(some)f(pro) r(cess.)125 625 y Fy(Agreemen)m(t)p Fx(:)36 b(If)28 b(no)f(pro)r(cess)g (prop)r(oses)f(more)h(than)h(one)f(v)-5 b(alue,)27 b(then)h(no)g(t)n(w) n(o)e(pro)r(cesses)h(decide)g(di\013eren)n(tly)-7 b(.)125 772 y Fy(T)f(ermination)p Fx(:)33 b(If)23 b(ev)n(ery)f(correct)f(pro)r (cess)g(prop)r(oses)g(a)h(v)-5 b(alue,)24 b(then)f(ev)n(ery)e(correct)g (pro)r(cess)g(ev)n(en)n(tually)h(decides)0 872 y(some)27 b(v)-5 b(alue.)0 1019 y(Notice)40 b(that)f(the)h(agreemen)n(t)f(and)g (termination)g(prop)r(erties)g(are)f(not)i(written)g(here)f(exactly)g (as)g(in)g(traditional)0 1118 y(consensus)26 b(sp)r(eci\014cations)g ([FLP85)o(].)36 b(Indeed,)27 b(it)h(is)e(usually)g(implicitly)i (assumed)e(that)h(no)g(pro)r(cess)e(prop)r(oses)g(more)0 1218 y(than)j(one)f(v)-5 b(alue:)38 b(the)28 b(agreemen)n(t)e(prop)r (ert)n(y)h(of)h(the)g(consensus)f(implemen)n(tation)h(in)g([A)n(CT00a)o (])g(actually)f(relies)g(on)0 1318 y(this)j(assumption.)43 b(Similarly)-7 b(,)30 b(it)h(is)f(usually)f(implicitly)i(assumed)e (that)h(ev)n(ery)f(correct)f(pro)r(cess)h(prop)r(oses)f(a)i(v)-5 b(alue:)0 1417 y(the)34 b(termination)e(prop)r(ert)n(y)g(of)h(the)h (consensus)e(implemen)n(tation)h(in)h([A)n(CT00a)n(])f(relies)g(on)g (this)g(assumption.)53 b(W)-7 b(e)0 1517 y(ha)n(v)n(e)34 b(explicited)h(those)f(assumptions)g(here)g(to)h(clearly)f(p)r(oin)n(t) h(out)g(the)g(di\013erence)f(b)r(et)n(w)n(een)h(the)g(agreemen)n(t)f (and)0 1616 y(termination)k(prop)r(erties)f(of)i(traditional)e (consensus)h(and)g(the)g(agreemen)n(t)f(and)i(termination)f(prop)r (erties)f(of)h(our)0 1716 y(op)r(en)28 b(consensus)e(abstraction.)0 1996 y Fg(3.2)112 b(Op)s(en)39 b(Consensus:)51 b(Ov)m(erview)0 2196 y Fx(Lik)n(e)30 b(traditional)f(consensus,)h(op)r(en)g(consensus)g (enables)g(the)g(pro)r(cesses)f(of)h(a)g(distributed)h(system)f(to)g Fv(de)l(cide)i Fx(on)e(a)0 2296 y(common)h(v)-5 b(alue)32 b Fv(pr)l(op)l(ose)l(d)h Fx(b)n(y)e(one)h(of)f(the)h(pro)r(cesses.)48 b(Ho)n(w)n(ev)n(er,)30 b(unlik)n(e)i(with)g(traditional)f(consensus,)h (a)f(pro)r(cess)0 2395 y Fv(using)d Fx(op)r(en)f(consensus)g(can:)125 2625 y Fr(\017)41 b Fx(Prop)r(ose)29 b(di\013eren)n(t)j(v)-5 b(alues.)49 b(A)32 b(pro)r(cess)e(can)i(in)n(v)n(ok)n(e)e(the)i Fv(pr)l(op)l(ose\(\))h Fx(op)r(eration)d(of)i(op)r(en)g(consensus)e (sev)n(eral)208 2725 y(times,)38 b(with)e(di\013eren)n(t)f(parameters)f (\()p Fv(r)l(e-entr)l(anc)l(e)42 b Fx(\015a)n(v)n(our\).)59 b(In)36 b(particular,)g(a)g(pro)r(cess)e(migh)n(t)i(prop)r(ose)e(a)208 2825 y(giv)n(en)22 b(v)-5 b(alue,)25 b(crash,)e(reco)n(v)n(er,)f(and)h (then)h(prop)r(ose)f(a)g(di\013eren)n(t)g(v)-5 b(alue)24 b(\(e.g.,)g(if)g(it)g(has)f(not)h(logged)e(the)i(previous)208 2924 y(v)-5 b(alue\).)125 3090 y Fr(\017)41 b Fx(Con)n(trol)20 b(the)j(actual)e(commitmen)n(t)h(of)g(a)g(decision)f(\()p Fv(de)l(c)l(ouple)l(d)33 b Fx(\015a)n(v)n(our\).)g(That)22 b(is,)h(op)r(en)f(consensus)f(decouples)208 3190 y(the)26 b Fv(pr)l(e-c)l(ommitment)g Fx(from)g(the)h Fv(c)l(ommitment)f Fx(of)g(a)g(decision)f(and)i(exp)r(oses)e(that)h(decoupling)g(to)g(the) h(user)f(of)208 3289 y(the)h(consensus)e(b)r(o)n(x.)36 b(This)27 b(is)g(precisely)e(what)i(mak)n(es)f(it)h(p)r(ossible)f(to)g (merge)g(forced)g(logs)g(of)g(the)i(upp)r(er)e(la)n(y)n(er)208 3389 y(with)i(those)f(of)g(the)h(op)r(en)g(consensus)f(b)r(o)n(x.)125 3555 y Fr(\017)41 b Fx(Not)24 b(prop)r(ose)g(an)n(y)f(v)-5 b(alue.)36 b(In)25 b(fact,)g(the)g(pro)r(cesses)e(that)i(do)f(not)h (prop)r(ose)e(an)n(y)h(v)-5 b(alue)24 b(participate)g(in)h(the)g(op)r (en)208 3655 y(consensus)32 b(implemen)n(tation)i(as)g(\\)p Fv(witnesses)7 b Fx(",)34 b(but)h(do)e(not)h(need)g(to)g(receiv)n(e)f (an)n(y)g(decision.)55 b(T)-7 b(o)33 b(receiv)n(e)g(a)208 3754 y(decision,)27 b(they)h(need)f(to)h(prop)r(ose)e(some)h(v)-5 b(alue)28 b(\()p Fv(on-demand)37 b Fx(\015a)n(v)n(our\).)0 4034 y Fg(3.3)112 b(Op)s(en)39 b(Consensus:)51 b(Prop)s(erties)0 4235 y Fx(T)-7 b(o)28 b(describ)r(e)g(op)r(en)h(consensus,)f(w)n(e)g (ha)n(v)n(e)f(found)i(it)g(con)n(v)n(enien)n(t)e(to)i(represen)n(t)e (it)i(as)f(a)g(shared)f(ob)5 b(ject)29 b(that)f(exp)r(orts)0 4334 y(t)n(w)n(o)j(op)r(erations:)43 b Fv(pr)l(op)l(ose\(\))33 b Fx(and)e Fv(c)l(ommit\(\))p Fx(.)48 b(Op)r(eration)31 b Fq(pr)r(opose)p Fx(\(\))h(tak)n(es)f(as)f(a)h(parameter)f(a)h(v)-5 b(alue)32 b(in)f(a)g(set)h Fq(V)0 4434 y Fx(\(the)i(set)g(of)f (consensus)g(v)-5 b(alues\))33 b(and)h(returns)f(a)g(v)-5 b(alue)33 b(in)h(that)g(v)n(ery)e(same)h(set)h Fq(V)18 b Fx(.)55 b(Op)r(eration)33 b Fq(commit)p Fx(\(\))h(tak)n(es)0 4533 y(as)c(a)g(parameter)f(a)h(v)-5 b(alue)31 b(in)f Fq(V)50 b Fx(and)30 b(returns)g(the)h(v)-5 b(alue)30 b Fq(ok)s Fx(.)46 b(W)-7 b(e)31 b(sa)n(y)f(that)g(a)h(pro)r(cess)e Fq(p)2918 4545 y Fp(i)2976 4533 y Fv(pr)l(e-c)l(ommits)i Fx(a)f(v)-5 b(alue)30 b Fq(v)0 4633 y Fx(if)h Fq(p)121 4645 y Fp(i)180 4633 y Fx(gets)f Fq(v)k Fx(as)c(an)h(outcome)f(of)h (the)g(in)n(v)n(o)r(cation)f(of)h Fv(pr)l(op)l(ose\(\))p Fx(.)48 b(W)-7 b(e)31 b(sa)n(y)f(that)h(a)f(pro)r(cess)g Fq(p)3023 4645 y Fp(i)3081 4633 y Fv(de)l(cides)j Fx(a)d(v)-5 b(alue)31 b Fq(v)j Fx(if)0 4733 y Fq(p)42 4745 y Fp(i)99 4733 y Fx(returns)29 b(from)g(the)h(in)n(v)n(o)r(cation)e(of)i Fq(commit)p Fx(\()p Fq(v)s Fx(\).)43 b(Finally)-7 b(,)30 b(w)n(e)f(sa)n(y)g(that)g(a)h(pro)r(cess)e(is)h(a)h Fv(pr)l(op)l(ose)l (e)37 b Fx(if)30 b(the)g(pro)r(cess)0 4832 y(prop)r(oses)c(some)h(v)-5 b(alue.)37 b(Op)r(en)28 b(consensus)e(has)h(the)h(follo)n(wing)f(prop)r (erties:)125 4979 y Fy(V)-8 b(alidit)m(y)q Fx(:)37 b(If)28 b(a)f(pro)r(cess)g(pre-commits)f Fq(v)s Fx(,)i(then)g Fq(v)j Fx(is)d(the)g(v)-5 b(alue)27 b(prop)r(osed)g(b)n(y)g(some)g(pro) r(cess.)125 5126 y Fy(Agreemen)m(t)p Fx(:)36 b(No)28 b(t)n(w)n(o)e(pro)r(cesses)g(decide)i(t)n(w)n(o)f(di\013eren)n(t)h(v)-5 b(alues.)125 5273 y Fy(T)d(ermination)p Fx(:)34 b(If)25 b(a)f(pro)r(cess)e(in)n(v)n(ok)n(es)h Fq(pr)r(opose)p Fx(\(\))i(\(resp.)35 b Fq(commit)p Fx(\(\)\))25 b(and)f(then)g(do)r(es) g(not)g(crash,)g(it)h(ev)n(en)n(tually)0 5373 y(returns)i(from)g(that)h (in)n(v)n(o)r(cation.)1061 5342 y Fu(5)p 0 5426 1512 4 v 92 5479 a Ft(5)127 5503 y FD(This)23 b(prop)r(ert)n(y)h(con)n(v)n (eys)i(a)d Fs(wait-fr)l(e)l(e)h FD([Her91])f(c)n(haracteristic)i(of)e (op)r(en)i(consensus.)1869 5768 y Fx(6)p eop %%Page: 7 7 7 6 bop 125 -67 a Fx(Not)34 b(surprisingly)-7 b(,)34 b(since)g(our)f(sp)r(eci\014cation)g(is)h(someho)n(w)f(\\op)r(en",)h (the)h(correctness)d(of)i(its)g(implemen)n(tations)0 33 y(relies)g(on)h(the)g(w)n(ell-b)r(eha)n(viour)e(of)h(its)h(user.)58 b(Roughly)34 b(sp)r(eaking,)i(w)n(e)e(sa)n(y)g(that)h(a)f(pro)r(cess)g (is)h Fv(wel)t(l-b)l(ehave)l(d)i Fx(if)e Fq(p)3752 45 y Fp(i)0 132 y Fx(only)40 b(in)n(v)n(ok)n(es)e(the)i(op)r(erations)f (in)h(the)g(order)f Fv(pr)l(op)l(ose\(v\);c)l(ommit\(v'\))p Fx(,)46 b(where)39 b Fq(v)2720 102 y Fl(0)2783 132 y Fx(is)h(the)h(v)-5 b(alue)39 b(returned)h(from)0 232 y(the)d Fv(pr)l(op)l(ose\(\))i Fx(in)n(v)n(o)r(cation.)63 b(More)36 b(precisely)-7 b(,)39 b(w)n(e)e(sa)n(y)e(that)j(a)e(pro)r (cess)g Fq(p)2472 244 y Fp(i)2536 232 y Fx(is)h Fv(wel)t(l-b)l(ehave)l (d)j Fx(if)d(\(1\))g(whenev)n(er)f Fq(p)3752 244 y Fp(i)0 332 y Fx(returns)27 b(from)h(the)g(in)n(v)n(o)r(cation)f(of)h Fq(pr)r(opose)p Fx(\()p Fq(v)s Fx(\))h(with)f Fq(v)1773 301 y Fl(0)1825 332 y Fx(as)f(an)h(outcome)f(parameter,)g Fq(p)2838 344 y Fp(i)2893 332 y Fx(either)h(crashes)e(or)h(in)n(v)n(ok) n(es)0 431 y Fq(commit)p Fx(\()p Fq(v)356 401 y Fl(0)379 431 y Fx(\),)36 b(and)e(\(2\))g Fq(p)820 443 y Fp(i)881 431 y Fx(only)g(in)n(v)n(ok)n(es)e Fq(commit)p Fx(\()p Fq(v)1721 401 y Fl(0)1744 431 y Fx(\))i(if)h Fq(v)1936 401 y Fl(0)1993 431 y Fx(is)f(the)g(last)g(v)-5 b(alue)34 b(returned)f(from)h Fq(p)3205 401 y Fl(0)3205 453 y Fp(i)3232 431 y Fq(s)g Fx(in)n(v)n(o)r(cation)f(of)0 531 y Fq(pr)r(opose)p Fx(\()p Fq(v)s Fx(\))c(since)e Fq(p)662 501 y Fl(0)662 552 y Fp(i)690 531 y Fq(s)g Fx(last)h(crash)e(and)h(reco)n(v)n(ery)-7 b(.)125 678 y(W)g(e)30 b(depict)g(in)g(Figure)f(2)g(four)g(t)n(ypical)g (runs)h(of)f(op)r(en)h(consensus.)42 b(Figure)29 b(2\(a\))g(depicts)h (a)f(regular)f(case)h(where)0 777 y(pro)r(cess)i Fq(p)336 789 y Fu(1)406 777 y Fx(prop)r(oses)g Fq(v)791 789 y Fu(1)829 777 y Fx(,)j(pre-commits)d Fq(v)1406 789 y Fu(1)1477 777 y Fx(and)h(decides)g Fq(v)1974 789 y Fu(1)2012 777 y Fx(.)52 b(When)33 b(pro)r(cess)e Fq(p)2670 789 y Fu(2)2740 777 y Fx(prop)r(oses)g Fq(v)3125 789 y Fu(2)3163 777 y Fx(,)j Fq(p)3262 789 y Fu(2)3331 777 y Fx(pre-commits)0 877 y Fq(v)40 889 y Fu(1)77 877 y Fx(,)g(and)e(then)g(decides)g Fq(v)824 889 y Fu(1)861 877 y Fx(.)50 b(Figure)32 b(2\(b\))g(presen)n (ts)f(a)h(case)f(where)g(a)h(pro)r(cess)f(crashes)f(and)i(reco)n(v)n (ers.)47 b(Pro)r(cess)31 b Fq(p)3743 889 y Fu(1)0 977 y Fx(prop)r(oses)c(and)i(pre-commits)f Fq(v)1021 989 y Fu(1)1058 977 y Fx(,)h Fq(p)1152 989 y Fu(1)1218 977 y Fx(then)g(crashes.)39 b(When)29 b Fq(p)2016 989 y Fu(1)2082 977 y Fx(reco)n(v)n(ers,)d Fq(p)2465 989 y Fu(1)2531 977 y Fx(cannot)i(in)n(v)n(ok)n(e)f Fq(commit)p Fx(\(\))i(since)g(it)g (is)0 1076 y(w)n(ell-b)r(eha)n(v)n(ed;)24 b Fq(p)554 1088 y Fu(1)616 1076 y Fx(then)h(prop)r(oses)e Fq(v)1182 1046 y Fl(0)1179 1097 y Fu(1)1217 1076 y Fx(,)i(pre-commits)f(and)g (decides)g Fq(v)2222 1046 y Fl(0)2219 1097 y Fu(1)2257 1076 y Fx(.)36 b(In)24 b(Figure)g(2\(c\),)i(a)e(pro)r(cess)f(decides)i (another)0 1176 y(v)-5 b(alue)23 b(that)h(it)f(prop)r(osed)g(ev)n(en)f (if)i(this)g(v)-5 b(alue)23 b(w)n(as)f(not)h(decided.)36 b(Pro)r(cess)21 b Fq(p)2404 1188 y Fu(1)2465 1176 y Fx(\(resp.)35 b Fq(p)2746 1188 y Fu(3)2783 1176 y Fx(\))24 b(prop)r(oses)d(and)i (pre-commits)0 1275 y Fq(v)40 1287 y Fu(1)100 1275 y Fx(\(resp.)35 b Fq(v)379 1287 y Fu(3)417 1275 y Fx(\);)25 b(but)e Fq(p)686 1287 y Fu(1)746 1275 y Fx(crashes)e(and)i Fq(p)1227 1287 y Fu(3)1287 1275 y Fx(is)g(slo)n(w)f(and)g(commits)h (only)g(later.)34 b(When)24 b Fq(p)2710 1287 y Fu(2)2770 1275 y Fx(prop)r(oses)d Fq(v)3145 1287 y Fu(2)3183 1275 y Fx(,)i Fq(p)3271 1287 y Fu(2)3331 1275 y Fx(pre-commits)0 1375 y Fq(v)40 1387 y Fu(3)101 1375 y Fx(and)h(then)g(decides)f Fq(v)766 1387 y Fu(3)827 1375 y Fx(ev)n(en)h(this)g(v)-5 b(alue)23 b(w)n(as)g(not)g(decided)h(b)n(y)f Fq(p)2129 1387 y Fu(3)2166 1375 y Fx(.)36 b(Note)24 b(that)g Fq(p)2640 1387 y Fu(3)2700 1375 y Fx(could)g(not)f(ha)n(v)n(e)g(pre-committed)0 1475 y Fq(v)40 1487 y Fu(3)106 1475 y Fx(if)28 b Fq(p)224 1487 y Fu(1)290 1475 y Fx(did)g(not)g(crash.)38 b(Figure)27 b(2\(d\))i(depicts)f(a)g(scenario)f(where)g(a)h(pro)r(cess)f(decides)h (a)g(prop)r(osition)f(of)h(a)g(crashed)0 1574 y(pro)r(cess.)35 b(Pro)r(cess)22 b Fq(p)659 1586 y Fu(1)720 1574 y Fx(prop)r(oses)h Fq(v)1097 1586 y Fu(1)1158 1574 y Fx(and)h(crashes.)34 b(Pro)r(cess)22 b Fq(p)1972 1586 y Fu(2)2034 1574 y Fx(prop)r(oses)g Fq(v)2410 1586 y Fu(2)2472 1574 y Fx(but)j(pre-commits)e Fq(v)3133 1586 y Fu(1)3170 1574 y Fx(.)36 b(This)24 b(is)g(p)r(ossible) 0 1674 y(since)e(some)g(pro)r(cesses)f(migh)n(t)h(ha)n(v)n(e)g(stored)f Fq(v)1458 1686 y Fu(1)1518 1674 y Fx(b)r(efore)h Fq(p)1804 1686 y Fu(1)1864 1674 y Fx(crashed.)34 b(Pro)r(cess)21 b Fq(p)2532 1686 y Fu(2)2591 1674 y Fx(then)i(decides)f Fq(v)3096 1686 y Fu(1)3134 1674 y Fx(,)h(a)f(v)-5 b(alue)23 b(prop)r(osed)0 1774 y(b)n(y)k(a)g(crashed)g(pro)r(cess.)387 2509 y @beginspecial 16 @llx 729 @lly 205 @urx 821 @ury 1323 @rwi @setspecial %%BeginDocument: OpenConsExpl2.eps /tgifdict 53 dict def tgifdict begin /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11.695 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % TEXT NP 0 SG GS 1 W 32 65 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [14 0 0 -14 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 32 128 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [14 0 0 -14 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 32 192 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (3) SH GR GR GR 0 0 GS 0 /Courier FF [14 0 0 -14 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS NP 64 128 M 0 297 atan DU cos 8.000 MU 361 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 361 128 8.000 3.000 297 0 TGAT 1 SG CP F 0 SG NP 361 128 8.000 3.000 297 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 64 64 M 0 299 atan DU cos 8.000 MU 363 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 363 64 8.000 3.000 299 0 TGAT 1 SG CP F 0 SG NP 363 64 8.000 3.000 299 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 64 192 M 0 298 atan DU cos 8.000 MU 362 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 362 192 8.000 3.000 298 0 TGAT 1 SG CP F 0 SG NP 362 192 8.000 3.000 298 0 TGAT CP F GR % TEXT NP 0 SG GS 1 W 79 53 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( propose\(v1\)) SH GR GR % TEXT NP 0 SG GS 1 W 110 80 M GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS ( v) SH GS GS 0 2 RM GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS (1) SH GR GR GR 0 0 GS 0 /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS NP 120 56 M 120 70 L TGSM 1 W S GR % TEXT NP 0 SG GS 1 W 208 55 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( commit\(v1\)) SH GR GR % TEXT NP 0 SG GS 1 W 240 83 M GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS ( ok) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 248 58 M 248 72 L TGSM 1 W S GR % TEXT NP 0 SG GS 1 W 130 119 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( propose\(v2\)) SH GR GR % TEXT NP 0 SG GS 1 W 161 146 M GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS ( v) SH GS GS 0 2 RM GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS (1) SH GR GR GR 0 0 GS 0 /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS NP 171 122 M 171 136 L TGSM 1 W S GR % TEXT NP 0 SG GS 1 W 259 121 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( commit\(v1\)) SH GR GR % TEXT NP 0 SG GS 1 W 291 149 M GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS ( ok) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 299 124 M 299 138 L TGSM 1 W S GR GR tgifsavedpage restore end showpage %MatchingCreationDate: Sun Dec 24 13:07:19 2000 %%EndDocument @endspecial 572 2692 a FD(\(a\))e(F)-6 b(ailure-free)22 b(scenario)1573 2509 y @beginspecial 16 @llx 729 @lly 328 @urx 821 @ury 2184 @rwi @setspecial %%BeginDocument: OpenConsExpl4.eps /tgifdict 53 dict def tgifdict begin /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11.695 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % TEXT NP 0 SG GS 1 W 32 65 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [14 0 0 -14 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 32 128 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [14 0 0 -14 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 32 192 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (3) SH GR GR GR 0 0 GS 0 /Courier FF [14 0 0 -14 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS NP 64 128 M 0 517 atan DU cos 8.000 MU 581 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 581 128 8.000 3.000 517 0 TGAT 1 SG CP F 0 SG NP 581 128 8.000 3.000 517 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 64 64 M 203 64 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 64 192 M 0 518 atan DU cos 8.000 MU 582 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 582 192 8.000 3.000 518 0 TGAT 1 SG CP F 0 SG NP 582 192 8.000 3.000 518 0 TGAT CP F GR % TEXT NP 0 SG GS 1 W 79 53 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( propose\(v1\)) SH GR GR % TEXT NP 0 SG GS 1 W 110 80 M GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS ( v) SH GS GS 0 2 RM GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS (1) SH GR GR GR 0 0 GS 0 /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS NP 120 56 M 120 70 L TGSM 1 W S GR % TEXT NP 0 SG GS 1 W 469 56 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( commit\(v1'\)) SH GR GR % TEXT NP 0 SG GS 1 W 501 84 M GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS ( ok) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 509 59 M 509 73 L TGSM 1 W S GR % TEXT NP 0 SG GS 1 W 355 55 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( propose\(v1'\)) SH GR GR % TEXT NP 0 SG GS 1 W 386 82 M GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS ( v) SH GS GS 0 2 RM GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS (1') SH GR GR GR 0 0 GS 0 /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS (1') TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS NP 396 58 M 396 72 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 203 64 M 210 52 L 218 75 L 228 53 L 30 11 atan DU cos 8.000 MU 239 exch SU exch sin 8.000 MU 83 exch SU L TGSM 1 W S GR GS TGSM NP 239 83 8.000 3.000 11 30 TGAT 1 SG CP F 0 SG NP 239 83 8.000 3.000 11 30 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 338 77 M 351 64 L 0 227 atan DU cos 8.000 MU 578 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 578 64 8.000 3.000 227 0 TGAT 1 SG CP F 0 SG NP 578 64 8.000 3.000 227 0 TGAT CP F GR GR tgifsavedpage restore end showpage %MatchingCreationDate: Thu Jan 4 16:48:26 2001 %%EndDocument @endspecial 1996 2692 a(\(b\))j Fk(p)2150 2701 y Ft(1)2208 2692 y FD(commits)e(after)h(reco)n(v)n(ering)387 3483 y @beginspecial 16 @llx 718 @lly 328 @urx 821 @ury 2184 @rwi @setspecial %%BeginDocument: OpenConsExpl3.eps /tgifdict 53 dict def tgifdict begin /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11.695 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % TEXT NP 0 SG GS 1 W 32 65 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [14 0 0 -14 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 32 128 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [14 0 0 -14 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 32 192 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (3) SH GR GR GR 0 0 GS 0 /Courier FF [14 0 0 -14 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS NP 64 128 M 0 517 atan DU cos 8.000 MU 581 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 581 128 8.000 3.000 517 0 TGAT 1 SG CP F 0 SG NP 581 128 8.000 3.000 517 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 64 64 M 178 64 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 64 192 M 0 518 atan DU cos 8.000 MU 582 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 582 192 8.000 3.000 518 0 TGAT 1 SG CP F 0 SG NP 582 192 8.000 3.000 518 0 TGAT CP F GR % TEXT NP 0 SG GS 1 W 79 53 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( propose\(v1\)) SH GR GR % TEXT NP 0 SG GS 1 W 110 80 M GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS ( v) SH GS GS 0 2 RM GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS (1) SH GR GR GR 0 0 GS 0 /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS NP 120 56 M 120 70 L TGSM 1 W S GR % TEXT NP 0 SG GS 1 W 265 118 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( propose\(v2\)) SH GR GR % TEXT NP 0 SG GS 1 W 296 145 M GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS ( v) SH GS GS 0 2 RM GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS (3) SH GR GR GR 0 0 GS 0 /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS NP 306 121 M 306 135 L TGSM 1 W S GR % TEXT NP 0 SG GS 1 W 394 120 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( commit\(v3\)) SH GR GR % TEXT NP 0 SG GS 1 W 426 148 M GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS ( ok) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 434 123 M 434 137 L TGSM 1 W S GR % TEXT NP 0 SG GS 1 W 203 186 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( propose\(v3\)) SH GR GR % TEXT NP 0 SG GS 1 W 234 213 M GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS ( v3) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 244 189 M 244 203 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 178 64 M 185 52 L 193 75 L 203 53 L 30 11 atan DU cos 8.000 MU 214 exch SU exch sin 8.000 MU 83 exch SU L TGSM 1 W S GR GS TGSM NP 214 83 8.000 3.000 11 30 TGAT 1 SG CP F 0 SG NP 214 83 8.000 3.000 11 30 TGAT CP F GR % TEXT NP 0 SG GS 1 W 494 182 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( commit\(v3\)) SH GR GR % TEXT NP 0 SG GS 1 W 526 210 M GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS ( ok) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 534 185 M 534 199 L TGSM 1 W S GR GR tgifsavedpage restore end showpage %MatchingCreationDate: Thu Jan 4 16:49:42 2001 %%EndDocument @endspecial 592 3666 a(\(c\))h Fk(p)738 3675 y Ft(1)795 3666 y FD(crashes)f(and)g Fk(p)1212 3675 y Ft(3)1270 3666 y FD(decides)h Fk(p)1550 3675 y Ft(2)1584 3666 y FD('s)e(prop)r(osition)2290 3483 y @beginspecial 16 @llx 729 @lly 205 @urx 821 @ury 1323 @rwi @setspecial %%BeginDocument: OpenConsExplProb.eps /tgifdict 53 dict def tgifdict begin /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11.695 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % TEXT NP 0 SG GS 1 W 32 65 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [14 0 0 -14 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 32 128 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [14 0 0 -14 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 32 192 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (3) SH GR GR GR 0 0 GS 0 /Courier FF [14 0 0 -14 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS NP 64 128 M 80 128 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 64 64 M 171 64 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 64 192 M 0 298 atan DU cos 8.000 MU 362 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 362 192 8.000 3.000 298 0 TGAT 1 SG CP F 0 SG NP 362 192 8.000 3.000 298 0 TGAT CP F GR % TEXT NP 0 SG GS 1 W 79 53 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( propose\(v1\)) SH GR GR % TEXT NP 0 SG GS 1 W 110 80 M GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS ( v) SH GS GS 0 2 RM GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS (1) SH GR GR GR 0 0 GS 0 /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS NP 120 56 M 120 70 L TGSM 1 W S GR % TEXT NP 0 SG GS 1 W 160 119 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( propose\(v2\)) SH GR GR % TEXT NP 0 SG GS 1 W 191 146 M GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS ( v1) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 201 122 M 201 136 L TGSM 1 W S GR % TEXT NP 0 SG GS 1 W 259 121 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( commit\(v1\)) SH GR GR % TEXT NP 0 SG GS 1 W 291 149 M GS 0 SG /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS ( ok) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 299 124 M 299 138 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 80 128 M 87 116 L 95 139 L 105 117 L 30 11 atan DU cos 8.000 MU 116 exch SU exch sin 8.000 MU 147 exch SU L TGSM 1 W S GR GS TGSM NP 116 147 8.000 3.000 11 30 TGAT 1 SG CP F 0 SG NP 116 147 8.000 3.000 11 30 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 171 64 M 178 52 L 186 75 L 196 53 L 30 11 atan DU cos 8.000 MU 207 exch SU exch sin 8.000 MU 83 exch SU L TGSM 1 W S GR GS TGSM NP 207 83 8.000 3.000 11 30 TGAT 1 SG CP F 0 SG NP 207 83 8.000 3.000 11 30 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 179 138 M 187 128 L 0 176 atan DU cos 8.000 MU 363 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 363 128 8.000 3.000 176 0 TGAT 1 SG CP F 0 SG NP 363 128 8.000 3.000 176 0 TGAT CP F GR GR tgifsavedpage restore end showpage %MatchingCreationDate: Thu Jan 4 16:52:24 2001 %%EndDocument @endspecial 2373 3666 a(\(d\))g Fk(p)2525 3675 y Ft(2)2581 3666 y FD(decides)g Fk(p)2859 3675 y Ft(1)2893 3666 y FD('s)e(prop)r(osition)1123 3892 y Fx(Figure)27 b(2:)37 b FA(Op)r(en)25 b(consensus)h(execution)g(sc)n(hemes)125 4091 y Fx(W)-7 b(e)38 b(assume)f(in)i(the)f(rest)g(of)g(the)g(pap)r(er) g(that)g(pro)r(cesses)f(are)g(w)n(ell-b)r(eha)n(v)n(ed.)67 b(Under)38 b(this)h(assumption,)h(w)n(e)0 4191 y(sho)n(w)34 b(in)h(the)g(app)r(endix)f(that)h(op)r(en)g(consensus)e(is)i(equiv)-5 b(alen)n(t)34 b(to)h(consensus)e(in)i(terms)f(of)h(solv)-5 b(abilit)n(y)e(.)57 b(That)35 b(is,)0 4290 y(p)r(ossibilit)n(y)29 b(and)h(imp)r(ossibilit)n(y)f(results)h(that)g(w)n(ere)e(pro)n(v)n(ed)g (in)i(the)g(literature)f(ab)r(out)h(consensus)f(do)g(indeed)h(apply)0 4390 y(to)j(op)r(en)g(consensus.)52 b(Ho)n(w)n(ev)n(er,)32 b(and)h(as)g(w)n(e)f(sho)n(w)g(in)i(the)f(next)g(section,)h(op)r(en)f (consensus)f(has)h(a)f(more)g(e\016cien)n(t)0 4490 y(implemen)n(tation) c(than)f(consensus.)0 4886 y Fw(4)135 b(Op)t(en)44 b(Consensus:)60 b(Algorithm)0 5115 y Fx(W)-7 b(e)31 b(describ)r(e)g(here)g(an)f(op)r (en)h(consensus)f(algorithm)g(and)h(pro)n(v)n(e)f(its)h(correctness;)g (w)n(e)f(then)i(discuss)e(its)i(analytical)0 5215 y(p)r(erformance.)k (More)27 b(practical)f(p)r(erformance)h(n)n(um)n(b)r(ers)g(are)f(giv)n (en)h(in)h(Section)g(6.)1869 5768 y(7)p eop %%Page: 8 8 8 7 bop 0 -67 a Fg(4.1)112 b(Description)0 134 y Fy(In)m(tuitiv)m(e)28 b(Idea.)36 b Fx(The)24 b(algorithm)f(is)h(based)f(on)h(a)f (leader-follo)n(w)n(er)e(sc)n(heme.)36 b(Roughly)23 b(sp)r(eaking,)h (leader)f(pro)r(cesses)0 233 y(try)37 b(to)f(concurren)n(tly)g(reac)n (h)f(a)i(decision)f(b)n(y)g(storing)g(it)h(within)h(a)e(ma)5 b(jorit)n(y)36 b(of)h(the)g(pro)r(cesses.)63 b(The)37 b(algorithm)0 333 y(terminates)23 b(when)g(a)g(single)g(pro)r(cess)f (is)h(leader.)34 b(When)24 b(a)f(pro)r(cess)f Fq(p)2180 345 y Fp(i)2230 333 y Fx(in)n(v)n(ok)n(es)g(the)h Fq(pr)r(opose)p Fx(\(\))h(function)g(with)g(a)f(v)-5 b(alue)0 432 y Fq(v)s Fx(,)32 b Fq(p)140 444 y Fp(i)198 432 y Fx(sends)e(it)h(to)f(the)h (curren)n(t)e(leader.)45 b(If)31 b Fq(p)1464 444 y Fp(i)1522 432 y Fx(is)f(actually)g(the)h(leader,)f Fq(p)2386 444 y Fp(i)2444 432 y Fx(tries)g(to)h(gather)e(the)i(agreemen)n(t)e(on)h (the)0 532 y(v)-5 b(alue)33 b(from)f(half)h(of)f(the)h(pro)r(cesses)e (\(other)i(than)g(itself)6 b(\).)53 b(In)33 b(the)g Fq(commit)p Fx(\(\))g(function,)h Fq(p)2973 544 y Fp(i)3033 532 y Fx(decides)f Fq(v)j Fx(b)n(y)c(logging)0 632 y(it:)43 b(a)29 b(ma)5 b(jorit)n(y)29 b(of)h(the)h(pro)r(cesses)e(ha)n(v)n(e)g (then)h(logged)f(the)i(decision.)44 b(If)31 b Fq(p)2413 644 y Fp(i)2470 632 y Fx(is)f(not)g(leader,)g(the)h(leader)e(gathers)g (the)0 731 y(agreemen)n(t)k(directly)i(from)f(a)h(ma)5 b(jorit)n(y)33 b(of)i(pro)r(cesses)e(\(instead)i(of)f(half)h(if)h Fq(p)2534 743 y Fp(i)2596 731 y Fx(is)e(leader\).)58 b(Not)35 b(surprisingly)-7 b(,)35 b(the)0 831 y(algorithm)26 b(is)i(optimised)g(for)f(runs)g(where)g(the)h(prop)r(osee)e(is)i (leader.)125 978 y(More)d(generally)-7 b(,)26 b(the)h(pro)r(cesses)e (pro)r(ceed)h(in)h(consecutiv)n(e)f(async)n(hronous)e(rounds.)2828 948 y Fu(6)2902 978 y Fx(Eac)n(h)h(pro)r(cess)h(has)g(a)g(lo)r(cal)0 1077 y(v)-5 b(ariable)26 b Fq(r)k Fx(de\014ning)d(the)g(round)f(it)i (is)e(curren)n(tly)g(in)n(v)n(olv)n(ed)g(in.)37 b(Eac)n(h)25 b(round)i(is)f(made)h(of)g(t)n(w)n(o)f(phases)g(during)h(whic)n(h)0 1177 y(the)35 b(pro)r(cesses)e(exc)n(hange)h(messages.)57 b(Figure)34 b(3\(a\))g(depicts)h(the)g(messages)e(and)i(comm)n (unication)f(steps)h(of)g(op)r(en)0 1277 y(consensus)27 b(if)i Fq(p)499 1289 y Fu(1)564 1277 y Fx(is)g(leader)e(and)h(prop)r (osee,)f(while)i(Figure)e(3\(b\))i(presen)n(ts)e(the)i(same)f(steps)g (but)h Fq(p)3164 1289 y Fu(2)3229 1277 y Fx(is)f(leader.)38 b(More)0 1376 y(precisely)-7 b(,)38 b(when)g(a)e(pro)r(cess)g Fq(p)1013 1388 y Fp(i)1077 1376 y Fx(prop)r(oses)g(a)g(v)-5 b(alue,)39 b Fq(p)1796 1388 y Fp(i)1861 1376 y Fx(s-sends)d(this)h(v)-5 b(alue)37 b(\(in)n(to)f(a)h Ff(newmsg)h Fx(message\))d(to)i(the)0 1476 y(leader)26 b(if)h Fq(p)361 1488 y Fp(i)415 1476 y Fx(is)g(not)g(leader.)35 b(The)27 b(leader)f(then)h(gathers)e (estimates)i(from)f(a)h(ma)5 b(jorit)n(y)25 b(of)i(pro)r(cesses)e(to)h (s-receiv)n(e)f(the)0 1576 y(latest)i(estimate)g(\()p Ff(newr)n(ound)h Fx(and)f Ff(estima)-6 b(te)29 b Fx(messages\).)35 b(Second,)27 b(if)h(the)f(leader)g(is)g(a)f(prop)r(osee)g(\(resp.)37 b(is)27 b(not)g(a)0 1675 y(prop)r(osee\),)c(then)g(it)g(w)n(aits)f(for) g(half)g(\(resp.)35 b(ma)5 b(jorit)n(y\))22 b(of)g(the)h(pro)r(cesses)e (to)i(agree)e(on)h(the)h(estimate)f(\()p Ff(newestima)-6 b(te)0 1775 y Fx(and)25 b Ff(a)n(cknewestima)-6 b(te)27 b Fx(messages\).)34 b(When)26 b(a)e(pro)r(cess)g(s-receiv)n(es)f (either)i(a)f Ff(newr)n(ound)i Fx(\(resp.)35 b Ff(newestima)-6 b(te)p Fx(\))0 1874 y(message,)33 b(it)h(answ)n(ers)e(with)i Ff(estima)-6 b(te)34 b Fx(\(resp.)54 b Ff(a)n(cknewestima)-6 b(te)p Fx(\))35 b(message)d(with)i(ac)n(k)e(set)i(to)f Fy(true)h Fx(or)e Fy(false)p Fx(.)0 1974 y(Ac)n(k)26 b(is)g(set)f(to)h Fy(true)h Fx(if)f(the)g(follo)n(wing)f Fv(ac)l(c)l(eptanc)l(e)33 b Fx(rule)26 b(is)g(satis\014ed:)35 b Fv(The)30 b(r)l(e)l(c)l(eiving)f(pr)l(o)l(c)l(ess)f(did)i(not)e(s-r)l (e)l(c)l(eive)g(any)0 2074 y Ff(newr)n(ound)i Fv(or)39 b Ff(newestima)-6 b(te)32 b Fv(message)e(with)h(a)f(higher)i(r)l(ound)d (than)h(the)g(sending)g(pr)l(o)l(c)l(ess.)39 b Fx(In)27 b(an)n(y)g(other)g(case,)0 2173 y(ac)n(k)34 b(is)h(set)g(to)f Fy(false)p Fx(.)59 b(When)35 b Fq(p)1048 2185 y Fp(i)1110 2173 y Fx(decides)g(a)g(v)-5 b(alue,)36 b Fq(p)1769 2185 y Fp(i)1832 2173 y Fx(sends)e(that)h(v)-5 b(alue)35 b(to)g(all)f(pro)r (cesses)g(that)h(ha)n(v)n(e)f(prop)r(osed)0 2273 y(\()p Ff(commitok)27 b Fx(message\).)141 3561 y @beginspecial 1 @llx 626 @lly 324 @urx 843 @ury 1938 @rwi @setspecial %%BeginDocument: OpenConsNoCrashP1Leader.eps /tgifdict 58 dict def tgifdict begin /tgifellipsedict 6 dict def tgifellipsedict /mtrx matrix put /TGEL % tgifellipse { tgifellipsedict begin /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /tgifarcdict 8 dict def tgifarcdict /mtrx matrix put /TGAN % tgifarcn { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix end } def /TGAR % tgifarc { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arcn savematrix setmatrix end } def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11.695 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % POLY/OPEN-SPLINE 0 SG GS NP 63 64 M 0 512 atan DU cos 8.000 MU 575 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 575 64 8.000 3.000 512 0 TGAT 1 SG CP F 0 SG NP 575 64 8.000 3.000 512 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 63 128 M 0 512 atan DU cos 8.000 MU 575 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 575 128 8.000 3.000 512 0 TGAT 1 SG CP F 0 SG NP 575 128 8.000 3.000 512 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 63 192 M 0 512 atan DU cos 8.000 MU 575 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 575 192 8.000 3.000 512 0 TGAT 1 SG CP F 0 SG NP 575 192 8.000 3.000 512 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 63 256 M 0 512 atan DU cos 8.000 MU 575 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 575 256 8.000 3.000 512 0 TGAT 1 SG CP F 0 SG NP 575 256 8.000 3.000 512 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 63 320 M 0 512 atan DU cos 8.000 MU 575 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 575 320 8.000 3.000 512 0 TGAT 1 SG CP F 0 SG NP 575 320 8.000 3.000 512 0 TGAT CP F GR % TEXT NP 0 SG GS 1 W 31 64 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 31 128 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 31 256 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (4) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (4) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 31 320 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (5) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (5) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 31 192 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (3) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 63 16 M 48 16 atan DU cos 8.000 MU 79 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 79 64 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 79 64 8.000 3.000 16 48 TGAT CP F GR % TEXT NP 0 SG GS 1 W 113 32 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewRound) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 207 128 M -64 32 atan DU cos 8.000 MU 239 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 239 64 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 239 64 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 207 192 M -128 36 atan DU cos 8.000 MU 243 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 243 64 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 243 64 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 207 256 M -192 40 atan DU cos 8.000 MU 247 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 247 64 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 247 64 8.000 3.000 40 -192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 207 320 M -256 44 atan DU cos 8.000 MU 251 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 251 64 8.000 3.000 44 -256 TGAT 1 SG CP F 0 SG NP 251 64 8.000 3.000 44 -256 TGAT CP F GR % TEXT NP 0 SG GS 1 W 183 340 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Estimate) SH GR GR % TEXT NP 0 SG GS 1 W 266 55 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewEstimate) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 348 128 M -64 32 atan DU cos 8.000 MU 380 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 380 64 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 380 64 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 348 192 M -128 36 atan DU cos 8.000 MU 384 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 384 64 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 384 64 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 348 256 M -192 40 atan DU cos 8.000 MU 388 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 388 64 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 388 64 8.000 3.000 40 -192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 348 320 M -256 44 atan DU cos 8.000 MU 392 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 392 64 8.000 3.000 44 -256 TGAT 1 SG CP F 0 SG NP 392 64 8.000 3.000 44 -256 TGAT CP F GR % TEXT NP 0 SG GS 1 W 340 340 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (AckNewEstimate) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 128 64 M 64 24 atan DU cos 8.000 MU 152 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 152 128 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 152 128 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 128 64 M 256 16 atan DU cos 8.000 MU 144 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 144 320 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 144 320 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 128 64 M 192 24 atan DU cos 8.000 MU 152 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 152 256 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 152 256 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 128 68 M 124 28 atan DU cos 8.000 MU 156 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 156 192 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 156 192 8.000 3.000 28 124 TGAT CP F GR % ARC GS 140 60 TR [1.000 0.000 0.000 1.000 0 0] CO 140 NE 60 NE TR 0 SG GS GS NP 140 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 152 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 152 64 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 272 64 M 64 24 atan DU cos 8.000 MU 296 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 296 128 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 296 128 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 272 64 M 256 16 atan DU cos 8.000 MU 288 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 288 320 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 288 320 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 272 64 M 192 24 atan DU cos 8.000 MU 296 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 296 256 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 296 256 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 272 68 M 124 28 atan DU cos 8.000 MU 300 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 300 192 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 300 192 8.000 3.000 28 124 TGAT CP F GR % TEXT NP 0 SG NP 311 236 M 322 236 L 322 256 L 311 256 L CP 1 SG F 0 SG GS 1 W 312 252 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 317 236 10 4 TGEL F GS GS NP 317 236 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 307 235 M 307 251 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 327 235 M 327 250 L TGSM 1 W S GR % ARC 0 SG GS GS NP 317 248 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 311 299 M 322 299 L 322 319 L 311 319 L CP 1 SG F 0 SG GS 1 W 312 315 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 317 299 10 4 TGEL F GS GS NP 317 299 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 307 298 M 307 314 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 327 298 M 327 313 L TGSM 1 W S GR % ARC 0 SG GS GS NP 317 311 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 311 171 M 322 171 L 322 191 L 311 191 L CP 1 SG F 0 SG GS 1 W 312 187 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 317 171 10 4 TGEL F GS GS NP 317 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 307 170 M 307 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 327 170 M 327 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 317 183 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 311 108 M 322 108 L 322 128 L 311 128 L CP 1 SG F 0 SG GS 1 W 312 124 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 317 108 10 4 TGEL F GS GS NP 317 108 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 307 107 M 307 123 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 327 107 M 327 122 L TGSM 1 W S GR % ARC 0 SG GS GS NP 317 120 10 7 168 11 TGAR S GR GR % ARC GS 234 60 TR [1.000 0.000 0.000 1.000 0 0] CO 234 NE 60 NE TR 0 SG GS GS NP 234 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 246 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 246 64 8.000 3.000 -6 29 TGAT CP F GR GR % TEXT NP 0 SG GS 1 W 5 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (propose\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS (\)) SH GR GR % TEXT NP 0 SG NP 38 360 M 49 360 L 49 380 L 38 380 L CP 1 SG F 0 SG GS 1 W 39 376 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 44 360 10 4 TGEL F GS GS NP 44 360 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 34 359 M 34 375 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 54 359 M 54 374 L TGSM 1 W S GR % ARC 0 SG GS GS NP 44 372 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG GS 1 W 72 374 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Forced log into stable storage) SH GR GR % TEXT NP 0 SG NP 172 234 M 183 234 L 183 254 L 172 254 L CP 1 SG F 0 SG GS 1 W 173 250 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 178 234 10 4 TGEL F GS GS NP 178 234 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 168 233 M 168 249 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 188 233 M 188 248 L TGSM 1 W S GR % ARC 0 SG GS GS NP 178 246 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 172 297 M 183 297 L 183 317 L 172 317 L CP 1 SG F 0 SG GS 1 W 173 313 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 178 297 10 4 TGEL F GS GS NP 178 297 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 168 296 M 168 312 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 188 296 M 188 311 L TGSM 1 W S GR % ARC 0 SG GS GS NP 178 309 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 172 169 M 183 169 L 183 189 L 172 189 L CP 1 SG F 0 SG GS 1 W 173 185 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 178 169 10 4 TGEL F GS GS NP 178 169 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 168 168 M 168 184 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 188 168 M 188 183 L TGSM 1 W S GR % ARC 0 SG GS GS NP 178 181 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 172 106 M 183 106 L 183 126 L 172 126 L CP 1 SG F 0 SG GS 1 W 173 122 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 178 106 10 4 TGEL F GS GS NP 178 106 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 168 105 M 168 121 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 188 105 M 188 120 L TGSM 1 W S GR % ARC 0 SG GS GS NP 178 118 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 173 43 M 184 43 L 184 63 L 173 63 L CP 1 SG F 0 SG GS 1 W 174 59 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 179 43 10 4 TGEL F GS GS NP 179 43 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 169 42 M 169 58 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 189 42 M 189 57 L TGSM 1 W S GR % ARC 0 SG GS GS NP 179 55 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 488 42 M 499 42 L 499 62 L 488 62 L CP 1 SG F 0 SG GS 1 W 489 58 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 494 42 10 4 TGEL F GS GS NP 494 42 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 484 41 M 484 57 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 504 41 M 504 56 L TGSM 1 W S GR % ARC 0 SG GS GS NP 494 54 10 7 168 11 TGAR S GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 422 16 M 49 -22 atan DU cos 8.000 MU exch sin 8.000 MU RM 400 65 L TGSM 1 W S [] 0 SD GR GS TGSM NP 422 16 8.000 3.000 22 -49 TGAT 1 SG CP F 0 SG NP 422 16 8.000 3.000 22 -49 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 451 17 M 48 16 atan DU cos 8.000 MU 467 exch SU exch sin 8.000 MU 65 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 467 65 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 467 65 8.000 3.000 16 48 TGAT CP F GR % TEXT NP 0 SG GS 1 W 443 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (commit\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS (\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 543 14 M 49 -22 atan DU cos 8.000 MU exch sin 8.000 MU RM 521 63 L TGSM 1 W S [] 0 SD GR GS TGSM NP 543 14 8.000 3.000 22 -49 TGAT 1 SG CP F 0 SG NP 543 14 8.000 3.000 22 -49 TGAT CP F GR % TEXT NP 0 SG GS 1 W 546 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (ok) SH GR GR % TEXT NP 0 SG GS 1 W 402 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR GR tgifsavedpage restore end showpage %MatchingCreationDate: Wed Jan 3 12:56:19 2001 %%EndDocument @endspecial 502 3744 a FD(\(a\))e Fk(p)652 3753 y Ft(1)709 3744 y FD(is)e(leader)h(and)g(prop)r(osee)1839 3561 y @beginspecial 1 @llx 629 @lly 361 @urx 844 @ury 2160 @rwi @setspecial %%BeginDocument: OpenConsNoCrashP2Leader.eps /tgifdict 58 dict def tgifdict begin /tgifellipsedict 6 dict def tgifellipsedict /mtrx matrix put /TGEL % tgifellipse { tgifellipsedict begin /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /tgifarcdict 8 dict def tgifarcdict /mtrx matrix put /TGAN % tgifarcn { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix end } def /TGAR % tgifarc { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arcn savematrix setmatrix end } def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11.695 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % POLY/OPEN-SPLINE 0 SG GS NP 67 64 M 0 573 atan DU cos 8.000 MU 640 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 640 64 8.000 3.000 573 0 TGAT 1 SG CP F 0 SG NP 640 64 8.000 3.000 573 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 67 128 M 0 573 atan DU cos 8.000 MU 640 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 640 128 8.000 3.000 573 0 TGAT 1 SG CP F 0 SG NP 640 128 8.000 3.000 573 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 67 192 M 0 573 atan DU cos 8.000 MU 640 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 640 192 8.000 3.000 573 0 TGAT 1 SG CP F 0 SG NP 640 192 8.000 3.000 573 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 67 256 M 0 573 atan DU cos 8.000 MU 640 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 640 256 8.000 3.000 573 0 TGAT 1 SG CP F 0 SG NP 640 256 8.000 3.000 573 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 67 320 M 0 573 atan DU cos 8.000 MU 640 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 640 320 8.000 3.000 573 0 TGAT 1 SG CP F 0 SG NP 640 320 8.000 3.000 573 0 TGAT CP F GR % TEXT NP 0 SG GS 31 50 TR [1.119 0.000 0.000 1.000 0 0] CO 31 NE 50 NE TR GR GS 1 W 31 50 TR [1.119 0.000 0.000 1.000 0 0] CO 0 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 114 TR [1.119 0.000 0.000 1.000 0 0] CO 31 NE 114 NE TR GR GS 1 W 31 114 TR [1.119 0.000 0.000 1.000 0 0] CO 0 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 242 TR [1.119 0.000 0.000 1.000 0 0] CO 31 NE 242 NE TR GR GS 1 W 31 242 TR [1.119 0.000 0.000 1.000 0 0] CO 0 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (4) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (4) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 306 TR [1.119 0.000 0.000 1.000 0 0] CO 31 NE 306 NE TR GR GS 1 W 31 306 TR [1.119 0.000 0.000 1.000 0 0] CO 0 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (5) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (5) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 178 TR [1.119 0.000 0.000 1.000 0 0] CO 31 NE 178 NE TR GR GS 1 W 31 178 TR [1.119 0.000 0.000 1.000 0 0] CO 0 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (3) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 63 16 M 48 16 atan DU cos 8.000 MU 79 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 79 64 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 79 64 8.000 3.000 16 48 TGAT CP F GR % TEXT NP 0 SG GS 1 W 113 341 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewRound) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 207 191 M -64 32 atan DU cos 8.000 MU 239 exch SU exch sin 8.000 MU 127 exch SU L TGSM 1 W S GR GS TGSM NP 239 127 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 239 127 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 207 255 M -128 36 atan DU cos 8.000 MU 243 exch SU exch sin 8.000 MU 127 exch SU L TGSM 1 W S GR GS TGSM NP 243 127 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 243 127 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 207 319 M -192 40 atan DU cos 8.000 MU 247 exch SU exch sin 8.000 MU 127 exch SU L TGSM 1 W S GR GS TGSM NP 247 127 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 247 127 8.000 3.000 40 -192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 212 65 M 62 39 atan DU cos 8.000 MU 251 exch SU exch sin 8.000 MU 127 exch SU L TGSM 1 W S GR GS TGSM NP 251 127 8.000 3.000 39 62 TGAT 1 SG CP F 0 SG NP 251 127 8.000 3.000 39 62 TGAT CP F GR % TEXT NP 0 SG GS 1 W 191 340 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Estimate) SH GR GR % TEXT NP 0 SG GS 1 W 250 34 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewEstimate) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 348 191 M -64 32 atan DU cos 8.000 MU 380 exch SU exch sin 8.000 MU 127 exch SU L TGSM 1 W S GR GS TGSM NP 380 127 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 380 127 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 348 255 M -128 36 atan DU cos 8.000 MU 384 exch SU exch sin 8.000 MU 127 exch SU L TGSM 1 W S GR GS TGSM NP 384 127 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 384 127 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 348 319 M -192 40 atan DU cos 8.000 MU 388 exch SU exch sin 8.000 MU 127 exch SU L TGSM 1 W S GR GS TGSM NP 388 127 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 388 127 8.000 3.000 40 -192 TGAT CP F GR % TEXT NP 0 SG GS 1 W 340 338 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (AckNewEstimate) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 128 127 M 64 24 atan DU cos 8.000 MU 152 exch SU exch sin 8.000 MU 191 exch SU L TGSM 1 W S GR GS TGSM NP 152 191 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 152 191 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 128 127 M -63 28 atan DU cos 8.000 MU 156 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 156 64 8.000 3.000 28 -63 TGAT 1 SG CP F 0 SG NP 156 64 8.000 3.000 28 -63 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 128 127 M 192 24 atan DU cos 8.000 MU 152 exch SU exch sin 8.000 MU 319 exch SU L TGSM 1 W S GR GS TGSM NP 152 319 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 152 319 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 128 131 M 124 28 atan DU cos 8.000 MU 156 exch SU exch sin 8.000 MU 255 exch SU L TGSM 1 W S GR GS TGSM NP 156 255 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 156 255 8.000 3.000 28 124 TGAT CP F GR % ARC GS 144 123 TR [1.000 0.000 0.000 1.000 0 0] CO 144 NE 123 NE TR 0 SG GS GS NP 144 123 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 156 127 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 156 127 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 272 127 M 64 24 atan DU cos 8.000 MU 296 exch SU exch sin 8.000 MU 191 exch SU L TGSM 1 W S GR GS TGSM NP 296 191 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 296 191 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 272 127 M 192 24 atan DU cos 8.000 MU 296 exch SU exch sin 8.000 MU 319 exch SU L TGSM 1 W S GR GS TGSM NP 296 319 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 296 319 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 272 131 M 124 28 atan DU cos 8.000 MU 300 exch SU exch sin 8.000 MU 255 exch SU L TGSM 1 W S GR GS TGSM NP 300 255 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 300 255 8.000 3.000 28 124 TGAT CP F GR % TEXT NP 0 SG NP 311 300 M 322 300 L 322 318 L 311 318 L CP 1 SG F 0 SG GS 1 W 312 315 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 317 299 10 4 TGEL F GS GS NP 317 299 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 307 298 M 307 314 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 327 298 M 327 313 L TGSM 1 W S GR % ARC 0 SG GS GS NP 317 311 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 313 107 M 324 107 L 324 125 L 313 125 L CP 1 SG F 0 SG GS 1 W 314 122 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 319 106 10 4 TGEL F GS GS NP 319 106 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 309 105 M 309 121 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 329 105 M 329 120 L TGSM 1 W S GR % ARC 0 SG GS GS NP 319 118 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 311 235 M 322 235 L 322 253 L 311 253 L CP 1 SG F 0 SG GS 1 W 312 250 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 317 234 10 4 TGEL F GS GS NP 317 234 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 307 233 M 307 249 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 327 233 M 327 248 L TGSM 1 W S GR % ARC 0 SG GS GS NP 317 246 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 311 172 M 322 172 L 322 190 L 311 190 L CP 1 SG F 0 SG GS 1 W 312 187 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 317 171 10 4 TGEL F GS GS NP 317 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 307 170 M 307 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 327 170 M 327 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 317 183 10 7 168 11 TGAR S GR GR % ARC GS 229 123 TR [1.000 0.000 0.000 1.000 0 0] CO 229 NE 123 NE TR 0 SG GS GS NP 229 123 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 241 127 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 241 127 8.000 3.000 -6 29 TGAT CP F GR GR % TEXT NP 0 SG GS 1 W 5 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (propose\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS (\)) SH GR GR % TEXT NP 0 SG NP 172 298 M 183 298 L 183 316 L 172 316 L CP 1 SG F 0 SG GS 1 W 173 313 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 178 297 10 4 TGEL F GS GS NP 178 297 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 168 296 M 168 312 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 188 296 M 188 311 L TGSM 1 W S GR % ARC 0 SG GS GS NP 178 309 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 173 43 M 184 43 L 184 61 L 173 61 L CP 1 SG F 0 SG GS 1 W 174 58 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 179 42 10 4 TGEL F GS GS NP 179 42 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 169 41 M 169 57 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 189 41 M 189 56 L TGSM 1 W S GR % ARC 0 SG GS GS NP 179 54 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 172 233 M 183 233 L 183 251 L 172 251 L CP 1 SG F 0 SG GS 1 W 173 248 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 178 232 10 4 TGEL F GS GS NP 178 232 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 168 231 M 168 247 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 188 231 M 188 246 L TGSM 1 W S GR % ARC 0 SG GS GS NP 178 244 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 172 170 M 183 170 L 183 188 L 172 188 L CP 1 SG F 0 SG GS 1 W 173 185 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 178 169 10 4 TGEL F GS GS NP 178 169 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 168 168 M 168 184 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 188 168 M 188 183 L TGSM 1 W S GR % ARC 0 SG GS GS NP 178 181 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 173 107 M 184 107 L 184 125 L 173 125 L CP 1 SG F 0 SG GS 1 W 174 122 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 179 106 10 4 TGEL F GS GS NP 179 106 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 169 105 M 169 121 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 189 105 M 189 120 L TGSM 1 W S GR % ARC 0 SG GS GS NP 179 118 10 7 168 11 TGAR S GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 468 17 M 49 -22 atan DU cos 8.000 MU exch sin 8.000 MU RM 446 66 L TGSM 1 W S [] 0 SD GR GS TGSM NP 468 17 8.000 3.000 22 -49 TGAT 1 SG CP F 0 SG NP 468 17 8.000 3.000 22 -49 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 502 17 M 48 16 atan DU cos 8.000 MU 518 exch SU exch sin 8.000 MU 65 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 518 65 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 518 65 8.000 3.000 16 48 TGAT CP F GR % TEXT NP 0 SG GS 1 W 493 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (commit\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS (\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 594 14 M 49 -22 atan DU cos 8.000 MU exch sin 8.000 MU RM 572 63 L TGSM 1 W S [] 0 SD GR GS TGSM NP 594 14 8.000 3.000 22 -49 TGAT 1 SG CP F 0 SG NP 594 14 8.000 3.000 22 -49 TGAT CP F GR % TEXT NP 0 SG GS 1 W 597 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (ok) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 99 64 M 64 17 atan DU cos 8.000 MU 116 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 116 128 8.000 3.000 17 64 TGAT 1 SG CP F 0 SG NP 116 128 8.000 3.000 17 64 TGAT CP F GR % TEXT NP 0 SG GS 1 W 88 51 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewMsg) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 272 127 M -63 28 atan DU cos 8.000 MU 300 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 300 64 8.000 3.000 28 -63 TGAT 1 SG CP F 0 SG NP 300 64 8.000 3.000 28 -63 TGAT CP F GR % ARC GS 288 124 TR [1.000 0.000 0.000 1.000 0 0] CO 288 NE 124 NE TR 0 SG GS GS NP 288 124 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 300 128 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 300 128 8.000 3.000 -6 29 TGAT CP F GR GR % TEXT NP 0 SG NP 318 46 M 329 46 L 329 64 L 318 64 L CP 1 SG F 0 SG GS 1 W 319 61 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 324 45 10 4 TGEL F GS GS NP 324 45 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 314 44 M 314 60 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 334 44 M 334 59 L TGSM 1 W S GR % ARC 0 SG GS GS NP 324 57 10 7 168 11 TGAR S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 349 66 M 62 39 atan DU cos 8.000 MU 388 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 388 128 8.000 3.000 39 62 TGAT 1 SG CP F 0 SG NP 388 128 8.000 3.000 39 62 TGAT CP F GR % ARC GS 366 124 TR [1.000 0.000 0.000 1.000 0 0] CO 366 NE 124 NE TR 0 SG GS GS NP 366 124 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 378 128 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 378 128 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 402 127 M -63 28 atan DU cos 8.000 MU 430 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 430 64 8.000 3.000 28 -63 TGAT 1 SG CP F 0 SG NP 430 64 8.000 3.000 28 -63 TGAT CP F GR % TEXT NP 0 SG GS 1 W 420 113 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (CommitOk) SH GR GR % TEXT NP 0 SG GS 1 W 66 371 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS ( ) SH GR GR % TEXT NP 0 SG GS 1 W 447 17 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR GR tgifsavedpage restore end showpage %MatchingCreationDate: Sat Jan 6 09:03:33 2001 %%EndDocument @endspecial 2506 3744 a(\(b\))g Fk(p)2659 3753 y Ft(2)2717 3744 y FD(is)f(leader)1063 3898 y Fx(Figure)k(3:)36 b FA(Op)r(en)25 b(consensus:)35 b(comm)n(unication)27 b(steps)0 4092 y Fy(Assumptions.)48 b Fx(Our)31 b(algorithm)g(relies)h(on)f(the)i (assumptions)e(that)h(\(1\))h(all)e(pro)r(cesses)g(are)g(w)n(ell-b)r (eha)n(v)n(ed,)h(\(2\))g(a)0 4192 y(ma)5 b(jorit)n(y)32 b(of)h(the)g(pro)r(cesses)f(are)g(correct)f(and)i(\(3\))g(w)n(e)g(ha)n (v)n(e)f(a)g(failure)h(detector)g(with)g(a)g(sp)r(eci\014cation)f (similar)h(to)0 4291 y(that)27 b(of)f(\012)g(in)g([CHT96])g(\(but)h (adapted)f(to)g(a)g(crash-reco)n(v)n(ery)c(mo)r(del\):)37 b Fv(Ther)l(e)29 b(is)g(a)g(time)f(after)i(which)g(some)f(c)l(orr)l(e)l (ct)0 4391 y(pr)l(o)l(c)l(ess)h(is)f(truste)l(d)g(by)h(every)g(pr)l(o)l (c)l(ess.)38 b Fx(F)-7 b(ailure)26 b(detector)h(\012)g(outputs)h(a)e Fv(trustlist)p Fx(,)h(i.e.,)g(a)g(list)g(of)g(pro)r(cesses)f(that)i (are)0 4491 y(deemed)g(to)g(b)r(e)g(curren)n(tly)f(up.)37 b(W)-7 b(e)29 b(sa)n(y)d(that)i(a)g(pro)r(cess)e Fq(p)1891 4503 y Fp(i)1946 4491 y Fx(is)i(leader)f(if)h Fq(p)2393 4503 y Fp(i)2448 4491 y Fx(is)g(the)g(elemen)n(t)g(of)g(\012.trustlist) g(with)g(the)0 4590 y(lo)n(w)n(est)f(pro)r(cess)f(iden)n(tit)n(y)-7 b(.)834 4560 y Fu(7)0 4837 y Fy(Detailed)45 b(Description.)72 b Fx(Our)38 b(algorithm)h(is)g(giv)n(en)g(in)h(Figure)f(4.)72 b(Eac)n(h)38 b(pro)r(cess)h Fq(p)2955 4849 y Fp(i)3022 4837 y Fx(main)n(tains)g(a)g(v)-5 b(ariable)0 4936 y Fv(de)l(cide)l(d)45 b Fx(that)35 b(con)n(tains)f(the)h(v)-5 b(alue)35 b(that)g(w)n(as)f(decided.)58 b(When)36 b Fq(p)2193 4948 y Fp(i)2255 4936 y Fx(prop)r(oses,)f(it)g(sets)g(the)g(v)-5 b(ariable)34 b Fv(pr)l(op)l(ose)l(d)45 b Fx(to)0 5036 y Fy(true)p Fx(,)24 b(otherwise)e Fv(pr)l(op)l(ose)l(d)34 b Fx(is)22 b(set)h(to)g Fy(false)p Fx(.)35 b(The)23 b(v)-5 b(ariable)22 b Fq(l)r(astnew)r(r)r(ound)h Fx(\(resp.)35 b Fq(l)r(astnew)r(estimate)p Fx(\))22 b(k)n(eeps)g(trac)n(k)0 5136 y(of)j(the)h(latest)f(round)g(at)g(whic)n(h)g Fq(p)1071 5148 y Fp(i)1124 5136 y Fx(accepted)g(a)g Ff(newr)n(ound)g Fx(\(resp.)36 b Ff(newestima)-6 b(te)p Fx(\))27 b(message.)35 b(The)25 b(actual)g(round)0 5235 y(n)n(um)n(b)r(er)i(is)h(k)n(ept)f(in) h(the)g(v)-5 b(ariable)27 b Fq(r)r Fx(,)h(while)g(the)g(actual)f (estimate)h(is)f(k)n(ept)h(in)f(the)h(v)-5 b(ariable)27 b Fq(estimate)p Fx(.)p 0 5288 1512 4 v 92 5342 a Ft(6)127 5366 y FD(Although)e(there)f(are)g(rounds,)f(the)i(proto)r(col)f(is)f (not)h(based)h(on)f(the)g(rotatcing)h(co)r(ordinator)g(paradigm)f(of)f ([CT96,)g(A)n(CT00a)q(].)92 5421 y Ft(7)127 5445 y FD(One)h(can)g (implemen)n(t)g(\012)g(in)f(a)h(crash-reco)n(v)n(ery)g(mo)r(del)g(with) g(partial)f(sync)n(hron)n(y)i(assumptions)f(along)g(the)h(lines)e(of)g ([A)n(CT00a].)1869 5768 y Fx(8)p eop %%Page: 9 9 9 8 bop 125 -67 a Fx(There)25 b(are)f(four)i(main)f(parts)g(in)h(the)g (proto)r(col:)35 b(\(a\))26 b(primitiv)n(e)f Fv(pr)l(op)l(ose)33 b Fx(s-sends)25 b(the)h(prop)r(osition)f(to)g(the)i(leader)0 33 y(if)j(the)g(pro)r(cess)e Fq(p)556 45 y Fp(i)613 33 y Fx(is)i(not)f(leader,)g(otherwise)g Fq(p)1532 45 y Fp(i)1589 33 y Fx(launc)n(hes)g(task)g Fv(c)l(o)l(or)l(dinator)9 b Fx(;)32 b(\(b\))e(primitiv)n(e)f Fv(c)l(ommit)38 b Fx(decides)29 b(the)0 132 y(last)i(pre-committed)g(v)-5 b(alue)30 b(\(since)i(the)f(last)g(reco)n(v)n(ery\);)f(\(c\))i(task)e Fv(c)l(o)l(or)l(dinator)42 b Fx(gathers)30 b(half)h(of)g(the)g(pro)r (cesses)f(to)0 232 y(agree)23 b(on)h(a)g(v)-5 b(alue)25 b(\(if)g Fq(p)751 244 y Fp(i)803 232 y Fx(is)g(not)f(a)g(prop)r(osee,)g (the)h(task)f(gathers)f(a)h(ma)5 b(jorit)n(y)24 b(of)g(pro)r(cesses)f (instead)h(of)h(half)6 b(\);)26 b(and)f(\(d\))0 332 y(primitiv)n(es)j Fv(r)l(e)l(c)l(eive)36 b Fx(and)29 b Fv(s-r)l(e)l(c)l(eive)35 b Fx(handle)29 b(all)g(receiv)n(ed)e(messages,)h(and)g(stop)h(task)f Fv(c)l(o)l(or)l(dinator)39 b Fx(once)29 b Fq(p)3446 344 y Fp(i)3502 332 y Fx(receiv)n(es)0 431 y(a)e(decided)h(v)-5 b(alue.)125 661 y Fr(\017)41 b Fx(In)32 b(the)g(primitiv)n(e)g Fv(pr)l(op)l(ose)p Fx(,)j(in)n(v)n(ok)n(ed)30 b(b)n(y)i(a)g(pro)r(cess) f Fq(p)1984 673 y Fp(i)2011 661 y Fx(,)j Fq(p)2110 673 y Fp(i)2169 661 y Fx(either)e(s-sends)f(the)i(prop)r(osition)e(in)h(a)g Ff(newmsg)208 761 y Fx(message)26 b(to)h(the)h(leader)e(\(if)i Fq(p)1165 773 y Fp(i)1220 761 y Fx(is)g(not)f(the)h(leader\))f(or)f (starts)h(gathering)f(estimates)h(b)n(y)g(in)n(v)n(oking)f(the)i(co)r (ordi-)208 860 y(nator)c(task)h(with)i Fy(true)f Fx(since)f Fq(p)1233 872 y Fp(i)1286 860 y Fx(is)h(a)f(prop)r(osee)f(\(line)j (9\).)36 b(Pro)r(cess)24 b Fq(p)2438 872 y Fp(i)2491 860 y Fx(en)n(ters)h(then)h(a)f(lo)r(op)h(and)f(w)n(aits)g(for)g(the) 208 960 y(v)-5 b(alue)21 b(to)h(b)r(e)g(pre-committed.)35 b(While)22 b(w)n(aiting)g(for)f(the)h(pre-commitmen)n(t,)h(up)r(on)f(a) f(leader)g(c)n(hange,)h Fq(p)3475 972 y Fp(i)3524 960 y Fx(s-sends)208 1060 y(the)h(prop)r(osition)g(\()p Ff(newmsg)p Fx(\))i(to)e(the)h(new)g(leader)e(\(lines)i(11-12\).)34 b(Once)23 b(the)h(v)-5 b(alue)23 b(has)g(b)r(een)h(pre-committed,)208 1159 y Fq(p)250 1171 y Fp(i)305 1159 y Fx(returns)j(from)g Fq(pr)r(opose)p Fx(\(\).)125 1325 y Fr(\017)41 b Fx(In)32 b(the)h(primitiv)n(e)g Fv(c)l(ommit)p Fx(,)h(when)f Fq(p)1411 1337 y Fp(i)1471 1325 y Fx(decides)f(the)h(pre-committed)g(v)-5 b(alue,)33 b Fq(p)2759 1337 y Fp(i)2820 1325 y Fx(simply)f(sets)h Fv(de)l(cide)l(d)43 b Fx(to)32 b(the)208 1425 y(decided)23 b(v)-5 b(alue)24 b(\(line)g(16\))f(and)g(sends)h(a)f Ff(commitok)g Fx(message)f(to)i(all)f(pro)r(cesses)f(that)i(prop)r (osed)f(\(lines)g(17-19\).)208 1524 y(It)31 b(is)g(p)r(ossible)f(that)i Fq(p)929 1536 y Fp(i)987 1524 y Fx(has)f(already)e(decided)i(when)g Fq(p)2000 1536 y Fp(i)2059 1524 y Fx(in)n(v)n(ok)n(es)e Fq(commit)p Fx(\(\);)k(this)e(case)f(arises)g(when)h Fq(p)3589 1536 y Fp(i)3648 1524 y Fx(w)n(as)208 1624 y(not)c(leader)g(and)g(w)n(as)g(part)g(of)h(the)g(ma)5 b(jorit)n(y)26 b(set.)37 b(In)27 b(all)h(cases,)e Fq(p)2332 1636 y Fp(i)2387 1624 y Fx(returns)h Fq(ok)s Fx(.)125 1790 y Fr(\017)41 b Fx(In)30 b(task)g Fv(c)l(o)l(or)l(dinator)p Fx(,)j(the)d(v)-5 b(ariable)30 b Fv(lo)l(c)l(al)40 b Fx(is)30 b(set)g(to)h Fy(true)f Fx(if)h Fq(p)2260 1802 y Fp(i)2318 1790 y Fx(is)f(leader)g(and)g(prop)r(osee.)44 b(When)31 b(a)f(pro)r(cess)208 1890 y(leader)21 b Fq(p)489 1902 y Fp(l)537 1890 y Fx(s-receiv)n(es)g(a)h Ff(newmsg)h Fx(message,)g Fq(p)1685 1902 y Fp(l)1733 1890 y Fx(starts)e(\(if)j(it)f (is)f(not)h(already)e(doing)h(it\))i(to)e(gather)g(estimates)g(b)n(y) 208 1989 y(s-sending)27 b(a)h Ff(newr)n(ound)h Fx(message)e(to)h(all)g (\(line)h(23\).)39 b(When)29 b(a)f(pro)r(cess)f Fq(p)2640 2001 y Fp(j)2704 1989 y Fx(s-receiv)n(es)f(suc)n(h)i(messages)f(from) 208 2089 y Fq(p)250 2101 y Fp(l)275 2089 y Fx(,)33 b Fq(p)373 2101 y Fp(j)439 2089 y Fx(returns)e(in)h(an)g Ff(estima)-6 b(te)33 b Fx(message)d(its)i(actual)f(estimate)g(with)i (ac)n(k)d(set)i(to)g Fy(true)g Fx(if)g Fq(p)3288 2101 y Fp(j)3354 2089 y Fx(satis\014es)f(the)208 2189 y(acceptance)26 b(rule.)37 b(Otherwise,)27 b Fq(p)1284 2201 y Fp(j)1346 2189 y Fx(s-sends)g(an)g Ff(estima)-6 b(te)29 b Fx(message)d(with)i(ac) n(k)f(set)h(to)f Fy(false)p Fx(.)37 b(If)28 b Fq(p)3389 2201 y Fp(l)3442 2189 y Fx(s-receiv)n(es)208 2288 y(a)h(ma)5 b(jorit)n(y)29 b(of)36 b Ff(estima)-6 b(te)31 b Fx(message)e(with)h (all)g(ac)n(k)f(set)h(to)g Fy(true)p Fx(,)h(then)f Fq(p)2592 2300 y Fp(l)2647 2288 y Fx(selects)g(the)g(latest)g(estimate)g(\(line) 208 2388 y(26\))25 b(and)g(s-sends)g(it)h(in)n(to)g(a)f Ff(newestima)-6 b(te)28 b Fx(message)c(to)h(all)h(except)g Fq(p)2489 2400 y Fp(l)2514 2388 y Fx(.)36 b(When)26 b Fq(p)2855 2400 y Fp(j)2916 2388 y Fx(s-receiv)n(es)e(suc)n(h)h (message,)208 2488 y Fq(p)250 2500 y Fp(j)316 2488 y Fx(s-sends)31 b(an)h Ff(a)n(cknewestima)-6 b(te)34 b Fx(message)c(with)j(ac)n(k)d(set)i(to)g Fy(true)g Fx(if)h Fq(p)2670 2500 y Fp(j)2736 2488 y Fx(satis\014es)f(the)g(acceptance)f (rule.)208 2587 y(Otherwise)d Fq(p)644 2599 y Fp(j)709 2587 y Fx(s-sends)g(an)i Ff(a)n(cknewestima)-6 b(te)31 b Fx(message)d(with)i(ac)n(k)f(set)h(to)f Fy(false)p Fx(.)43 b(Finally)-7 b(,)30 b(if)g Fq(p)3387 2599 y Fp(l)3442 2587 y Fx(s-receiv)n(es)208 2687 y(from)h(half)h(of)g(the)g(pro)r (cesses)f(an)g Ff(a)n(cknewestima)-6 b(te)34 b Fx(message)d(with)h(all) g(ac)n(k)f(set)h(to)f Fy(true)p Fx(,)j Fq(p)3316 2699 y Fp(l)3373 2687 y Fx(returns)d(the)208 2786 y(pre-committed)20 b(estimate)h(and)f(bu\013ers)h(all)f(the)h(messages)e(it)j(receiv)n(es) d(or)h(s-receiv)n(es)e(\(lines)j(30-31\).)33 b(If)21 b Fq(p)3537 2798 y Fp(l)3583 2786 y Fx(is)g(not)208 2886 y(a)28 b(prop)r(osee)f(\(lo)r(cal)h(is)g(set)g(to)h Fy(false)p Fx(\),)f Fq(p)1478 2898 y Fp(l)1532 2886 y Fx(executes)g(the)h(same)e (\014rst)i(steps)f(but)h(s-sends)e Ff(newestima)-6 b(te)31 b Fx(to)d(all)208 2986 y(\(instead)f(of)h(all)g(except)f Fq(p)1039 2998 y Fp(l)1065 2986 y Fx(\),)h(w)n(aits)f(for)g(a)h(ma)5 b(jorit)n(y)26 b(of)34 b Ff(a)n(cknewestima)-6 b(te)30 b Fx(messages,)c(sends)i(a)f Ff(commitok)208 3085 y Fx(message)33 b(to)j(all)f(pro)r(cesses)e(that)j(prop)r(osed)e(and)h(returns)g(the)g (pre-committed)g(estimate)h(whic)n(h)f(is)g(in)g(fact)208 3185 y(already)28 b(decided)i(\(lines)g(33-38\).)42 b(Note)30 b(that)g(for)g(this)g(case,)g(the)g(leader)f(do)r(es)g(not)h(bu\013er)g (an)n(y)g(message)e(but)208 3285 y(empt)n(y)f(its)h(retransmission)e (mo)r(dule.)125 3451 y Fr(\017)41 b Fx(In)23 b(the)h(primitiv)n(es)f Fv(r)l(e)l(c)l(eive)31 b Fx(and)23 b Fv(s-r)l(e)l(c)l(eive)p Fx(,)i(when)f Fq(p)1861 3463 y Fp(i)1912 3451 y Fx(receiv)n(es)e (\(resp.)35 b(s-receiv)n(es\))22 b(a)h(message)f(from)i Fq(p)3461 3463 y Fp(j)3495 3451 y Fx(,)h Fq(p)3585 3463 y Fp(i)3636 3451 y Fx(\014rst)208 3550 y(v)n(eri\014es)30 b(if)i(it)f(has)g(already)f(decided)i(a)f(v)-5 b(alue.)48 b(In)31 b(this)h(case,)g Fq(p)2258 3562 y Fp(i)2317 3550 y Fx(sends)f Fv(de)l(cide)l(d)42 b Fx(to)31 b Fq(p)2989 3562 y Fp(j)3024 3550 y Fx(.)48 b(When)32 b Fq(p)3383 3562 y Fp(i)3442 3550 y Fx(s-receiv)n(es)208 3650 y(a)k Ff(newmsg)i Fx(and)f Fq(p)856 3662 y Fp(i)921 3650 y Fx(is)g(leader,)i Fq(p)1336 3662 y Fp(i)1400 3650 y Fx(starts)e(task)f Fv(c)l(o)l(or)l(dinator)48 b Fx(\(if)38 b(it)f(is)g(not)h(already)d (running\))i(with)h Fy(false)208 3749 y Fx(since)c Fq(p)460 3761 y Fp(i)522 3749 y Fx(is)h(not)g(a)f(prop)r(osee.)58 b(When)35 b Fq(p)1534 3761 y Fp(i)1596 3749 y Fx(s-receiv)n(es)e(a)i Ff(newr)n(ound)g Fx(\(resp.)58 b Ff(newestima)-6 b(te)p Fx(\))37 b(message,)e Fq(p)3752 3761 y Fp(i)208 3849 y Fx(s-sends)30 b(an)g Ff(estima)-6 b(te)32 b Fx(\(resp.)47 b Ff(a)n(cknewestima)-6 b(te)p Fx(\))33 b(message)c(with)j(ac)n(k)e (sets)g(to)h Fy(true)g Fx(or)f Fy(false)h Fx(follo)n(wing)208 3949 y(the)23 b(acceptance)e(rule.)35 b(When)24 b Fq(p)1237 3961 y Fp(i)1287 3949 y Fx(receiv)n(es)d(the)i(decision)f(v)-5 b(alue)23 b(of)f(consensus,)h Fq(p)2774 3961 y Fp(i)2824 3949 y Fx(\014rst)g(stops)f(task)g Fv(c)l(o)l(or)l(dinator)208 4048 y Fx(if)33 b(it)h(is)g(activ)n(e,)g(sets)f Fv(de)l(cide)l(d)44 b Fx(and)33 b Fv(pr)l(e-c)l(ommitte)l(d)42 b Fx(to)34 b(the)f(decided)h(v)-5 b(alue)33 b(and)g(empt)n(y)h(its)f (retransmission)208 4148 y(mo)r(dule.)0 4378 y Fy(Remarks.)i Fx(Note)25 b(also)e(that)i(in)g(round)f(0,)h(the)g(leader)e Fq(p)1813 4390 y Fu(1)1875 4378 y Fx(can)h(simply)h(set)f(its)h (estimate)g(to)f(its)h Fv(own)31 b Fx(prop)r(osed)24 b(v)-5 b(alue)0 4477 y(and)32 b(skip)g(the)h(phase)f(used)g(to)g (select)g(the)h(estimate)f(\()p Ff(newr)n(ound)p Fx(-)p Ff(estima)-6 b(te)p Fx(\).)53 b(It)33 b(is)f(also)f(easy)h(to)g(see)g (that)g(the)0 4577 y(co)r(ordinator)g(do)r(es)h(not)h(ha)n(v)n(e)e(to)i (store)f(its)h(round)f(n)n(um)n(b)r(er)g(in)h(stable)g(storage)e(in)i (this)g(case.)54 b(W)-7 b(e)34 b(omitted)h(these)0 4677 y(ob)n(vious)f(optimisations)g(from)h(the)g(co)r(de.)59 b(Figure)34 b(5)h(depicts)g(the)g(comm)n(unication)f(steps)h(for)g(suc) n(h)f(scenario:)50 b(in)0 4776 y(Figure)23 b(5\(a\),)i(the)f(prop)r (osee)f(is)h(leader,)g(and)g(in)g(Figure)f(5\(b\),)i(the)g(prop)r(osee) e(is)h Fq(p)2591 4788 y Fu(2)2652 4776 y Fx(and)g(the)g(leader)f(is)h Fq(p)3312 4788 y Fu(1)3349 4776 y Fx(.)36 b(Therefore,)0 4876 y(in)30 b(a)f(nice)g(run)g(where)g Fq(p)780 4888 y Fu(1)847 4876 y Fx(is)g(leader,)g(the)h(algorithm)e(requires)g(only)h Fr(d)p Fx(\()p Fq(n)20 b Fx(+)f(1\))p Fq(=)p Fx(2)p Fr(e)28 b Fx(forced)h(logs)f(and)h(one)g(round-trip)0 4976 y(comm)n(unication)g (step)i(for)f Fq(p)932 4988 y Fu(1)999 4976 y Fx(to)g(decide)g(\(the)h (same)f(n)n(um)n(b)r(er)g(of)g(forced)g(logs)f(but)h(three)h(comm)n (unication)e(steps)h(if)0 5075 y(the)e(prop)r(osee)e(is)i(not)f (leader\).)991 5045 y Fu(8)p 0 5128 1512 4 v 92 5182 a Ft(8)127 5206 y FD(Note)d(that)h(if)e(all)g(pro)r(cesses)h(prop)r (ose)g(\(as)g(in)g(the)g(algorithm)g(of)f([A)n(CT00a)q(]\),)g(our)g (algorithm)h(is)f(also)g(quiescen)n(t)i([A)n(CT00b)q(].)1869 5768 y Fx(9)p eop %%Page: 10 10 10 9 bop 0 370 3780 5 v 25 516 a FD(1:)33 b Fu(for)22 b(eac)n(h)f(pro)r(cess)g Fp(p)629 524 y Fo(i)656 516 y Fu(:)25 583 y FD(2:)33 b Fn(pro)r(cedure)22 b Fu(initialisation:)25 649 y FD(3:)99 b Fm(pr)m(e-c)m(ommitte)m(d)23 b Fl( )c(?)p Fu(;)h Fm(de)m(cide)m(d)k Fl( )19 b(?)p Fu(;)i Fm(pr)m(op)m(ose)m(d)j Fl( )d Fn(false)p Fu(;)f(\()p Fp(r)1827 657 y Fo(p)1858 670 y(i)1888 649 y Fp(;)11 b(lastnew)r(r)r(ound)2335 657 y Fo(p)2366 670 y(i)2397 649 y Fp(;)g(estimate)2689 657 y Fo(p)2720 670 y(i)2752 649 y Fp(;)g(lastnew)r(estimate)3279 657 y Fo(p)3310 670 y(i)3343 649 y Fu(\))19 b Fl( )h Fu(\()p Fp(p)3534 657 y Fo(i)3560 649 y Fu(,0,)p Fl(?)p Fu(,0\);)25 716 y FD(4:)33 b Fn(up)r(on)21 b Fu(prop)r(ose\()p Fp(v)583 724 y Fo(p)614 737 y(i)643 716 y Fu(\))h Fn(do)25 782 y FD(5:)99 b Fm(pr)m(op)m(ose)m(d)26 b Fl( )d Fn(true)25 849 y FD(6:)99 b Fn(w)n(ait)25 b(un)n(til)g(task)d Fm(c)m(o)m(or)m (dinator)28 b Fn(is)e(not)e(activ)n(e)1063 b FC(f)p Fs(avoid)27 b(starting)e(the)h(task)f(mor)l(e)i(than)f(onc)l(e)p FC(g)25 915 y FD(7:)99 b Fn(if)29 b Fm(de)m(cide)m(d)e Fu(=)19 b Fl(?)j Fn(then)1911 b FC(f)p Fs(otherwise)26 b(has)h(de)l(cide)l(d)g(me)l(anwhile)p FC(g)25 981 y FD(8:)165 b Fn(if)30 b Fp(estimate)580 989 y Fo(p)611 1002 y(i)662 981 y Fu(=)18 b Fl(?)23 b Fn(then)f Fp(estimate)1236 989 y Fo(p)1267 1002 y(i)1318 981 y Fl( )d Fp(v)1436 989 y Fo(p)1467 1002 y(i)1498 981 y Fu(;)25 1048 y FD(9:)165 b Fn(if)30 b Fp(p)353 1056 y Fo(i)398 1048 y Fl(2)19 b Fu(\012.trustlist)j Fn(then)g Fm(pr)m(e-c)m(ommitte)m(d)k Fl( )c Fn(start)k(task)21 b Fm(c)m(o)m(or)m(dinator)6 b Fu(\()p Fn(true)p Fu(\))23 b Fn(else)g Fu(s-send)g(\()p Fe(newmsg)p Fu(,)p Fp(v)3028 1056 y Fo(p)3059 1069 y(i)3089 1048 y Fu(\))f(to)g(\014rst\(\012)p Fp(:)p Fu(trustlist\))0 1114 y FD(10:)166 b Fn(while)23 b Fm(pr)m(e-c)m(ommitte)m(d)i Fu(=)19 b Fl(?)j Fn(do)0 1181 y FD(11:)232 b Fn(up)r(on)21 b Fu(c)n(hange)g(in)h(\012)h Fn(do)0 1247 y FD(12:)298 b Fn(if)26 b Fp(p)492 1255 y Fo(i)537 1247 y Fl(2)19 b Fu(\012.trustlist)f Fn(then)h Fm(pr)m(e-c)m(ommitte)m(d)i Fl( )e Fn(start)i(task)d Fm(c)m(o)m(or)m(dinator)6 b Fu(\()p Fn(true)p Fu(\))19 b Fn(else)g Fu(s-send)f(\()p Fe(newmsg)p Fu(,)p Fp(v)3131 1255 y Fo(p)3162 1268 y(i)3192 1247 y Fu(\))h(to)f(\014rst\(\012)p Fp(:)p Fu(trustlist\))0 1313 y FD(13:)99 b Fn(return)p Fu(\()p Fm(pr)m(e-c)m(ommitte)m(d)5 b Fu(\))0 1380 y FD(14:)33 b Fn(up)r(on)22 b Fu(commit\()p Fp(v)588 1388 y Fo(p)619 1401 y(i)647 1380 y Fu(\))h Fn(do)0 1460 y FD(15:)99 b Fn(if)30 b Fu(decided)20 b(=)f Fl(?)j Fn(then)1466 b FC(f)p Fs(if)25 b Fk(p)2400 1470 y Fj(i)2446 1460 y FC(62)19 b FD(\012)p Fk(:)p Fs(trustlist,)25 b(then)g(a)h(majority)g(has)h(stor)l(e)l(d)f(v)p FC(g)0 1526 y FD(16:)166 b Fp(lastnew)r(estimate)752 1534 y Fo(p)783 1547 y(i)834 1526 y Fl( )20 b Fp(r)951 1534 y Fo(p)982 1547 y(i)1012 1526 y Fu(;)i Fp(estimate)1314 1534 y Fo(p)1345 1547 y(i)1396 1526 y Fl( )d Fp(v)1514 1534 y Fo(p)1545 1547 y(i)1575 1526 y Fu(;)j Fm(de)m(cide)m(d)27 b Fl( )19 b Fp(v)1977 1534 y Fo(p)2008 1547 y(i)2038 1526 y Fu(;)j Fn(store)p Fl(f)p Fm(lastnewestimate)2744 1534 y Fo(p)2775 1547 y(i)2806 1526 y Fu(,)p Fm(estimate)3075 1534 y Fo(p)3106 1547 y(i)3136 1526 y Fm(,)j(de)m(cide)m(d)5 b Fl(g)p Fu(;)0 1593 y FD(17:)166 b Fn(for)25 b(all)d Fp(p)508 1602 y Fo(k)567 1593 y Fu(suc)n(h)f(that)i(s-receiv)n(ed\()p Fe(a)o(cknewestima)l(te)p Fu(,)p Fp(r)1695 1601 y Fo(p)1726 1614 y(i)1754 1593 y Fu(,)p Fm(pr)m(op)m(ose)m(d)p Fu(,ac)n(k\))d Fn(do)0 1659 y FD(18:)232 b Fn(if)30 b Fm(pr)m(op)m(ose)m(d)c Fu(is)d Fn(true)j(then)c Fu(send\()p Fe(commitok)p Fu(,)p Fp(estimate)1795 1667 y Fo(p)1826 1680 y(i)1858 1659 y Fu(\))g(to)h Fp(p)2022 1668 y Fo(k)0 1725 y FD(19:)166 b Fu(empt)n(y)21 b(retransmission)g(bu\013er;)g(treat)h(all)g (bu\013ered)f(messages)0 1792 y FD(20:)99 b Fn(return)p Fu(\(ok\))0 1858 y FD(21:)33 b Fn(task)22 b Fu(co)r(ordinator\()p Fm(lo)m(c)m(al)5 b Fu(\))0 1925 y FD(22:)99 b Fn(while)23 b Fp(p)418 1933 y Fo(i)464 1925 y Fl(2)18 b Fu(\012.trustlist)23 b Fn(do)0 1991 y FD(23:)166 b Fu(s-send\()p Fe(newr)o(ound)p Fu(,)p Fp(r)806 1999 y Fo(p)837 2012 y(i)865 1991 y Fu(\))22 b(to)h(all)0 2057 y FD(24:)166 b Fn(w)n(ait)25 b(un)n(til)d Fu([s-receiv)n(ed\()p Fe(estima)l(te)p Fu(,)p Fp(r)1225 2065 y Fo(p)1256 2078 y(i)1285 2057 y Fp(;)11 b(estimate)1577 2065 y Fo(p)1608 2078 y(j)1645 2057 y Fp(;)g(lastnew)r(estimate)2172 2065 y Fo(p)2203 2078 y(j)2241 2057 y Fu(,ac)n(k\))21 b(from)h Fl(d)p Fu(\()p Fp(n)15 b Fu(+)g(1\))p Fp(=)p Fu(2)p Fl(e)23 b Fu(pro)r(cesses])0 2138 y FD(25:)166 b Fn(if)29 b Fu(receiv)n(ed)20 b(only)j Fe(estima)l(te)g Fu(with)f(ac)n(k)g(=)h Fn(true)g(then)0 2205 y FD(26:)232 b Fp(temp)471 2213 y Fo(p)502 2226 y(i)552 2205 y Fl( )41 b Fp(estimate)920 2213 y Fo(p)951 2226 y(j)1010 2205 y Fl(j)22 b Fp(lastnew)r(estimate)1548 2213 y Fo(p)1579 2226 y(j)1639 2205 y Fl(j)g Fp(p)1715 2213 y Fo(i)1764 2205 y Fu(s-receiv)n(ed)f(\()p Fe(estima)l(te)p Fu(,)p Fp(r)2396 2213 y Fo(p)2427 2226 y(i)2458 2205 y Fp(;)11 b(estimate)2750 2213 y Fo(p)2781 2226 y(j)2817 2205 y Fp(;)g(lastnew)r(estimate)3344 2213 y Fo(p)3375 2226 y(j)3413 2205 y Fu(,ac)n(k\))0 2286 y FD(27:)232 b Fn(if)30 b Fm(lo)m(c)m(al)c Fn(then)0 2352 y FD(28:)298 b Fu(s-send\()p Fe(newestima)l(te)p Fu(,)p Fp(r)1011 2360 y Fo(p)1042 2373 y(i)1072 2352 y Fp(;)11 b(temp)1252 2360 y Fo(p)1283 2373 y(i)1314 2352 y Fu(\))22 b(to)h(all)f Fl(n)p Fp(p)1605 2360 y Fo(i)0 2418 y FD(29:)298 b Fn(w)n(ait)25 b(un)n(til)e Fu([s-receiv)n(ed\()p Fe(a)o(cknewestima)l(te)p Fu(,)p Fp(r)1581 2426 y Fo(p)1612 2439 y(i)1640 2418 y Fu(,)p Fm(pr)m(op)m(ose)m(d)p Fu(,ac)n(k\))d(from)i Fl(b)p Fp(n=)p Fu(2)p Fl(c)h Fu(pro)r(cesses])0 2485 y FD(30:)298 b Fn(if)30 b Fu(receiv)n(ed)20 b(only)i Fe(a)o(cknewestima)l(te)h Fu(with)f(ac)n(k)g(=)g Fn(true)h(then)0 2551 y FD(31:)364 b Fu(bu\013er)22 b(all)g(messages)g(that)g Fp(p)1197 2559 y Fo(i)1246 2551 y Fu(s-receiv)n(e;)f Fn(return)p Fu(\()p Fp(temp)1916 2559 y Fo(p)1947 2572 y(i)1978 2551 y Fu(\))0 2618 y FD(32:)232 b Fn(else)0 2684 y FD(33:)298 b Fu(s-send\()p Fe(newestima)l(te)p Fu(,)p Fp(r)1011 2692 y Fo(p)1042 2705 y(i)1072 2684 y Fp(;)11 b(temp)1252 2692 y Fo(p)1283 2705 y(i)1314 2684 y Fu(\))22 b(to)h(all)0 2750 y FD(34:)298 b Fn(w)n(ait)25 b(un)n(til)e Fu([s-receiv)n(ed\()p Fe(a)o(cknewestima)l(te)p Fu(,)p Fp(r)1581 2758 y Fo(p)1612 2771 y(i)1640 2750 y Fu(,)p Fm(pr)m(op)m(ose)m(d)p Fu(,ac)n(k\))d(from) i Fl(d)p Fu(\()p Fp(n)15 b Fu(+)g(1\))p Fp(=)p Fu(2)p Fl(e)23 b Fu(pro)r(cesses])0 2817 y FD(35:)298 b Fn(if)30 b Fu(receiv)n(ed)20 b(only)i Fe(a)o(cknewestima)l(te)h Fu(with)f(ac)n(k)g(=)g Fn(true)h(then)0 2883 y FD(36:)364 b Fn(for)25 b(all)d Fp(p)706 2892 y Fo(k)765 2883 y Fu(suc)n(h)g(that)g (s-receiv)n(ed\()p Fe(a)o(cknewestima)l(te)p Fu(,)p Fp(r)1893 2891 y Fo(p)1924 2904 y(i)1952 2883 y Fu(,)p Fm(pr)m(op)m(ose)m(d)p Fu(,ac)n(k\))f Fn(do)0 2950 y FD(37:)430 b Fn(if)30 b Fm(pr)m(op)m(ose)m(d)d Fu(is)22 b Fn(true)k(then)d Fu(send\()p Fe(commitok)p Fu(,)p Fp(estimate)1994 2958 y Fo(p)2025 2971 y(i)2057 2950 y Fu(\))f(to)g Fp(p)2220 2959 y Fo(k)0 3016 y FD(38:)364 b Fu(empt)n(y)21 b(retransmission)h(bu\013er;)f Fm(pr)m(e-c)m(ommitte)m(d)k Fl( )19 b Fp(estimate)2102 3024 y Fo(p)2133 3037 y(i)2165 3016 y Fu(;)j Fm(de)m(cide)m(d)27 b Fl( )19 b Fp(estimate)2795 3024 y Fo(p)2826 3037 y(i)0 3083 y FD(39:)166 b Fp(r)287 3091 y Fo(p)318 3104 y(i)367 3083 y Fl( )19 b Fp(r)483 3091 y Fo(p)514 3104 y(i)559 3083 y Fu(+)c Fp(n)0 3149 y FD(40:)33 b Fn(up)r(on)22 b(s-receiv)n(e)h Fp(m)g Fn(or)i(receiv)n(e)f Fp(m)e Fu(from)f Fp(p)1310 3157 y Fo(j)1364 3149 y Fn(do)0 3215 y FD(41:)99 b Fn(if)30 b Fm(de)m(cide)m(d)d Fl(6)p Fu(=)18 b Fl(?)23 b Fn(then)0 3282 y FD(42:)166 b Fu(send)21 b(\()p Fe(commitok)p Fu(,)p Fm(de)m(cide)m(d)5 b Fu(\))22 b(to)h Fp(p)1120 3290 y Fo(j)0 3348 y FD(43:)99 b Fn(else)24 b(if)29 b Fp(m)19 b Fu(=)j(\()p Fe(newmsg)p Fu(,)p Fp(v)858 3356 y Fo(p)889 3369 y(j)924 3348 y Fu(\))g Fn(then)0 3429 y FD(44:)166 b Fn(if)29 b Fp(p)363 3437 y Fo(i)409 3429 y Fl(2)18 b Fu(\012.trustlist)23 b Fn(and)h(task)e Fm(c)m(o)m(or)m (dinator)28 b Fn(is)d(not)g(activ)n(e)e(then)0 3496 y FD(45:)232 b Fn(if)30 b Fp(estimate)657 3504 y Fo(p)688 3517 y(i)738 3496 y Fu(=)19 b Fl(?)k Fn(then)f Fp(estimate)1313 3504 y Fo(p)1344 3517 y(i)1395 3496 y Fl( )d Fp(v)1513 3504 y Fo(p)1544 3517 y(j)1579 3496 y Fu(;)k Fn(start)i(task)d Fm(c)m(o)m(or)m(dinator)6 b Fu(\()p Fn(false)p Fu(\))0 3577 y FD(46:)99 b Fn(else)24 b(if)29 b Fp(m)19 b Fu(=)j(\()p Fe(newr)o(ound)p Fu(,)p Fp(r)928 3585 y Fo(p)959 3598 y(j)993 3577 y Fu(\))g Fn(then)0 3658 y FD(47:)166 b Fn(if)29 b Fp(lastnew)r(r)r(ound)745 3666 y Fo(p)776 3679 y(i)826 3658 y Fp(>)18 b(r)927 3666 y Fo(p)958 3679 y(j)1015 3658 y Fn(or)k Fp(lastnew)r(estimate)1602 3666 y Fo(p)1633 3679 y(i)1685 3658 y Fp(>)d(r)1787 3666 y Fo(p)1818 3679 y(j)1875 3658 y Fn(then)0 3740 y FD(48:)232 b Fu(s-send)22 b(\()p Fe(estima)l(te)p Fu(,)p Fp(r)850 3748 y Fo(p)881 3761 y(i)912 3740 y Fp(;)11 b(estimate)1204 3748 y Fo(p)1235 3761 y(i)1267 3740 y Fu(,)p Fn(false)p Fu(\))22 b(to)g Fp(p)1594 3748 y Fo(j)0 3806 y FD(49:)166 b Fn(else)0 3872 y FD(50:)232 b Fp(lastnew)r(r)r(ound)738 3880 y Fo(p)769 3893 y(i)818 3872 y Fl( )19 b Fp(r)934 3880 y Fo(p)965 3893 y(j)1000 3872 y Fu(;)j Fn(store)p Fl(f)p Fm(lastnewr)m(ound)1627 3880 y Fo(p)1658 3893 y(i)1689 3872 y Fl(g)p Fu(;)g(s-send\()p Fe(estima)l(te)p Fu(,)p Fp(r)2270 3880 y Fo(p)2301 3893 y(i)2332 3872 y Fp(;)11 b(estimate)2624 3880 y Fo(p)2655 3893 y(i)2687 3872 y Fp(;)g(lastnew)r(estimate)3214 3880 y Fo(p)3245 3893 y(i)3278 3872 y Fu(,)p Fn(true)p Fu(\))23 b(to)f Fp(p)3597 3880 y Fo(j)0 3954 y FD(51:)99 b Fn(else)24 b(if)29 b Fp(m)19 b Fu(=)j(\()p Fe(newestima)l(te)p Fu(,)p Fp(r)1001 3962 y Fo(p)1032 3975 y(i)1063 3954 y Fp(;)11 b(temp)1243 3962 y Fo(p)1274 3975 y(j)1309 3954 y Fu(\))23 b Fn(then)0 4035 y FD(52:)166 b Fn(if)29 b Fp(lastnew)r(r)r(ound)745 4043 y Fo(p)776 4056 y(i)826 4035 y Fp(>)18 b(r)927 4043 y Fo(p)958 4056 y(j)1015 4035 y Fn(or)k Fp(lastnew)r(estimate)1602 4043 y Fo(p)1633 4056 y(i)1685 4035 y Fp(>)d(r)1787 4043 y Fo(p)1818 4056 y(j)1875 4035 y Fn(then)0 4117 y FD(53:)232 b Fu(s-send\()p Fe(a)o(cknewestima)l(te)p Fu(,)p Fp(r)1051 4125 y Fo(p)1082 4138 y(i)1112 4117 y Fp(;)p Fm(pr)m(op)m(ose)m(d)p Fu(,)p Fn(false)p Fu(\))20 b(to)j Fp(p)1713 4125 y Fo(j)0 4183 y FD(54:)166 b Fn(else)0 4249 y FD(55:)232 b Fp(lastnew)r (estimate)818 4257 y Fo(p)849 4270 y(i)901 4249 y Fl( )19 b Fp(r)1017 4257 y Fo(p)1048 4270 y(j)1082 4249 y Fu(;)k Fp(estimate)1385 4257 y Fo(p)1416 4270 y(i)1467 4249 y Fl( )c Fp(temp)1701 4257 y Fo(p)1732 4270 y(j)1767 4249 y Fu(;)j Fn(store)p Fl(f)p Fm(lastnewestimate)2473 4257 y Fo(p)2504 4270 y(i)2535 4249 y Fu(,)p Fm(estimate)2804 4257 y Fo(p)2835 4270 y(i)2865 4249 y Fl(g)0 4331 y FD(56:)232 b Fu(s-send\()p Fe(a)o(cknewestima)l(te)p Fu(,)p Fp(r)1051 4339 y Fo(p)1082 4352 y(i)1112 4331 y Fp(;)p Fm(pr)m(op)m(ose)m(d)p Fu(,)p Fn(true)p Fu(\))21 b(to)h Fp(p)1704 4339 y Fo(j)0 4397 y FD(57:)99 b Fn(else)24 b(if)29 b Fp(m)19 b Fu(=)j(\()p Fe(commitok)p Fu(,)p Fp(estimate)1145 4405 y Fo(p)1176 4418 y(j)1214 4397 y Fu(\))g Fn(then)0 4478 y FD(58:)166 b Fn(if)25 b(task)d Fm(c)m(o)m(or)m(dinator)28 b Fn(is)d(activ)n(e)h (then)g(stop)e(task)e Fm(c)m(o)m(or)m(dinator)0 4545 y FD(59:)166 b Fm(de)m(cide)m(d)26 b Fl( )19 b Fp(estimate)844 4553 y Fo(p)875 4566 y(j)912 4545 y Fu(;)j Fm(pr)m(e-c)m(ommitte)m(d)j Fl( )19 b Fp(estimate)1749 4553 y Fo(p)1780 4566 y(j)1817 4545 y Fu(;)j(empt)n(y)f(retransmission)h(bu\013er)0 4626 y FD(60:)33 b Fn(up)r(on)22 b(reco)n(v)n(ery)h(do)0 4692 y FD(61:)99 b Fu(initialisation;)21 b Fn(retriev)n(e)p Fl(f)p Fp(lastnew)r(r)r(ound)1296 4700 y Fo(p)1327 4713 y(i)1359 4692 y Fp(;)11 b(estimate)1651 4700 y Fo(p)1682 4713 y(i)1714 4692 y Fp(;)g(lastnew)r(estimate)2241 4700 y Fo(p)2272 4713 y(i)2305 4692 y Fu(,)p Fm(de)m(cide)m(d)5 b Fl(g)p 0 4805 V 1420 4987 a Fx(Figure)27 b(4:)37 b(Op)r(en)27 b(consensus)1848 5768 y(10)p eop %%Page: 11 11 11 10 bop 663 913 a @beginspecial 1 @llx 648 @lly 222 @urx 844 @ury 1326 @rwi @setspecial %%BeginDocument: OpenConsNoCrashP1LeaderFast.eps /tgifdict 58 dict def tgifdict begin /tgifellipsedict 6 dict def tgifellipsedict /mtrx matrix put /TGEL % tgifellipse { tgifellipsedict begin /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /tgifarcdict 8 dict def tgifarcdict /mtrx matrix put /TGAN % tgifarcn { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix end } def /TGAR % tgifarc { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arcn savematrix setmatrix end } def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11.695 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % POLY/OPEN-SPLINE 0 SG GS NP 52 64 M 0 341 atan DU cos 8.000 MU 393 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 393 64 8.000 3.000 341 0 TGAT 1 SG CP F 0 SG NP 393 64 8.000 3.000 341 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 52 128 M 0 341 atan DU cos 8.000 MU 393 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 393 128 8.000 3.000 341 0 TGAT 1 SG CP F 0 SG NP 393 128 8.000 3.000 341 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 52 192 M 0 341 atan DU cos 8.000 MU 393 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 393 192 8.000 3.000 341 0 TGAT 1 SG CP F 0 SG NP 393 192 8.000 3.000 341 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 52 256 M 0 341 atan DU cos 8.000 MU 393 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 393 256 8.000 3.000 341 0 TGAT 1 SG CP F 0 SG NP 393 256 8.000 3.000 341 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 52 320 M 0 341 atan DU cos 8.000 MU 393 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 393 320 8.000 3.000 341 0 TGAT 1 SG CP F 0 SG NP 393 320 8.000 3.000 341 0 TGAT CP F GR % TEXT NP 0 SG GS 31 50 TR [0.665 0.000 0.000 1.000 0 0] CO 31 NE 50 NE TR GR GS 1 W 31 50 TR [0.665 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 114 TR [0.665 0.000 0.000 1.000 0 0] CO 31 NE 114 NE TR GR GS 1 W 31 114 TR [0.665 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 242 TR [0.665 0.000 0.000 1.000 0 0] CO 31 NE 242 NE TR GR GS 1 W 31 242 TR [0.665 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (4) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (4) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 306 TR [0.665 0.000 0.000 1.000 0 0] CO 31 NE 306 NE TR GR GS 1 W 31 306 TR [0.665 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (5) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (5) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 178 TR [0.665 0.000 0.000 1.000 0 0] CO 31 NE 178 NE TR GR GS 1 W 31 178 TR [0.665 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (3) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 63 17 M 48 16 atan DU cos 8.000 MU 79 exch SU exch sin 8.000 MU 65 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 79 65 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 79 65 8.000 3.000 16 48 TGAT CP F GR % TEXT NP 0 SG GS 1 W 94 53 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewEstimate) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 176 126 M -64 32 atan DU cos 8.000 MU 208 exch SU exch sin 8.000 MU 62 exch SU L TGSM 1 W S GR GS TGSM NP 208 62 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 208 62 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 176 190 M -128 36 atan DU cos 8.000 MU 212 exch SU exch sin 8.000 MU 62 exch SU L TGSM 1 W S GR GS TGSM NP 212 62 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 212 62 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 176 254 M -192 40 atan DU cos 8.000 MU 216 exch SU exch sin 8.000 MU 62 exch SU L TGSM 1 W S GR GS TGSM NP 216 62 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 216 62 8.000 3.000 40 -192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 176 318 M -256 44 atan DU cos 8.000 MU 220 exch SU exch sin 8.000 MU 62 exch SU L TGSM 1 W S GR GS TGSM NP 220 62 8.000 3.000 44 -256 TGAT 1 SG CP F 0 SG NP 220 62 8.000 3.000 44 -256 TGAT CP F GR % TEXT NP 0 SG GS 1 W 168 338 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (AckNewEstimate) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 100 62 M 64 24 atan DU cos 8.000 MU 124 exch SU exch sin 8.000 MU 126 exch SU L TGSM 1 W S GR GS TGSM NP 124 126 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 124 126 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 100 62 M 256 16 atan DU cos 8.000 MU 116 exch SU exch sin 8.000 MU 318 exch SU L TGSM 1 W S GR GS TGSM NP 116 318 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 116 318 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 100 62 M 192 24 atan DU cos 8.000 MU 124 exch SU exch sin 8.000 MU 254 exch SU L TGSM 1 W S GR GS TGSM NP 124 254 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 124 254 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 100 66 M 124 28 atan DU cos 8.000 MU 128 exch SU exch sin 8.000 MU 190 exch SU L TGSM 1 W S GR GS TGSM NP 128 190 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 128 190 8.000 3.000 28 124 TGAT CP F GR % TEXT NP 0 SG NP 139 234 M 150 234 L 150 254 L 139 254 L CP 1 SG F 0 SG GS 1 W 140 250 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 145 234 10 4 TGEL F GS GS NP 145 234 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 135 233 M 135 249 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 155 233 M 155 248 L TGSM 1 W S GR % ARC 0 SG GS GS NP 145 246 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 139 297 M 150 297 L 150 317 L 139 317 L CP 1 SG F 0 SG GS 1 W 140 313 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 145 297 10 4 TGEL F GS GS NP 145 297 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 135 296 M 135 312 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 155 296 M 155 311 L TGSM 1 W S GR % ARC 0 SG GS GS NP 145 309 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 139 169 M 150 169 L 150 189 L 139 189 L CP 1 SG F 0 SG GS 1 W 140 185 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 145 169 10 4 TGEL F GS GS NP 145 169 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 135 168 M 135 184 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 155 168 M 155 183 L TGSM 1 W S GR % ARC 0 SG GS GS NP 145 181 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 139 106 M 150 106 L 150 126 L 139 126 L CP 1 SG F 0 SG GS 1 W 140 122 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 145 106 10 4 TGEL F GS GS NP 145 106 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 135 105 M 135 121 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 155 105 M 155 120 L TGSM 1 W S GR % ARC 0 SG GS GS NP 145 118 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG GS 1 W 5 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (propose\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS (\)) SH GR GR % TEXT NP 0 SG NP 316 42 M 327 42 L 327 62 L 316 62 L CP 1 SG F 0 SG GS 1 W 317 58 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 322 42 10 4 TGEL F GS GS NP 322 42 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 312 41 M 312 57 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 332 41 M 332 56 L TGSM 1 W S GR % ARC 0 SG GS GS NP 322 54 10 7 168 11 TGAR S GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 250 18 M 49 -22 atan DU cos 8.000 MU exch sin 8.000 MU RM 228 67 L TGSM 1 W S [] 0 SD GR GS TGSM NP 250 18 8.000 3.000 22 -49 TGAT 1 SG CP F 0 SG NP 250 18 8.000 3.000 22 -49 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 279 19 M 48 16 atan DU cos 8.000 MU 295 exch SU exch sin 8.000 MU 67 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 295 67 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 295 67 8.000 3.000 16 48 TGAT CP F GR % TEXT NP 0 SG GS 1 W 271 13 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (commit\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS (\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 371 16 M 49 -22 atan DU cos 8.000 MU exch sin 8.000 MU RM 349 65 L TGSM 1 W S [] 0 SD GR GS TGSM NP 371 16 8.000 3.000 22 -49 TGAT 1 SG CP F 0 SG NP 371 16 8.000 3.000 22 -49 TGAT CP F GR % TEXT NP 0 SG GS 1 W 371 13 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (ok) SH GR GR % TEXT NP 0 SG GS 1 W 232 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR GR tgifsavedpage restore end showpage %MatchingCreationDate: Wed Jan 3 12:56:45 2001 %%EndDocument @endspecial 770 1096 a FD(\(a\))24 b Fk(p)919 1105 y Ft(1)977 1096 y FD(is)f(leader)h(and)g(prop)r(osee)1851 913 y @beginspecial 0 @llx 648 @lly 253 @urx 844 @ury 1518 @rwi @setspecial %%BeginDocument: OpenConsNoCrashP2ProposeeFast.eps /tgifdict 58 dict def tgifdict begin /tgifellipsedict 6 dict def tgifellipsedict /mtrx matrix put /TGEL % tgifellipse { tgifellipsedict begin /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /tgifarcdict 8 dict def tgifarcdict /mtrx matrix put /TGAN % tgifarcn { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix end } def /TGAR % tgifarc { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arcn savematrix setmatrix end } def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11.695 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % POLY/OPEN-SPLINE 0 SG GS NP 55 64 M 0 394 atan DU cos 8.000 MU 449 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 449 64 8.000 3.000 394 0 TGAT 1 SG CP F 0 SG NP 449 64 8.000 3.000 394 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 55 128 M 0 394 atan DU cos 8.000 MU 449 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 449 128 8.000 3.000 394 0 TGAT 1 SG CP F 0 SG NP 449 128 8.000 3.000 394 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 55 192 M 0 394 atan DU cos 8.000 MU 449 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 449 192 8.000 3.000 394 0 TGAT 1 SG CP F 0 SG NP 449 192 8.000 3.000 394 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 55 256 M 0 394 atan DU cos 8.000 MU 449 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 449 256 8.000 3.000 394 0 TGAT 1 SG CP F 0 SG NP 449 256 8.000 3.000 394 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 55 320 M 0 394 atan DU cos 8.000 MU 449 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 449 320 8.000 3.000 394 0 TGAT 1 SG CP F 0 SG NP 449 320 8.000 3.000 394 0 TGAT CP F GR % TEXT NP 0 SG GS 31 50 TR [0.767 0.000 0.000 1.000 0 0] CO 31 NE 50 NE TR GR GS 1 W 31 50 TR [0.767 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 114 TR [0.767 0.000 0.000 1.000 0 0] CO 31 NE 114 NE TR GR GS 1 W 31 114 TR [0.767 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 242 TR [0.767 0.000 0.000 1.000 0 0] CO 31 NE 242 NE TR GR GS 1 W 31 242 TR [0.767 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (4) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (4) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 306 TR [0.767 0.000 0.000 1.000 0 0] CO 31 NE 306 NE TR GR GS 1 W 31 306 TR [0.767 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (5) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (5) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 178 TR [0.767 0.000 0.000 1.000 0 0] CO 31 NE 178 NE TR GR GS 1 W 31 178 TR [0.767 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (3) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 66 81 M 48 16 atan DU cos 8.000 MU 82 exch SU exch sin 8.000 MU 129 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 82 129 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 82 129 8.000 3.000 16 48 TGAT CP F GR % TEXT NP 0 SG GS 1 W 137 53 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewEstimate) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 219 126 M -64 32 atan DU cos 8.000 MU 251 exch SU exch sin 8.000 MU 62 exch SU L TGSM 1 W S GR GS TGSM NP 251 62 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 251 62 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 219 190 M -128 36 atan DU cos 8.000 MU 255 exch SU exch sin 8.000 MU 62 exch SU L TGSM 1 W S GR GS TGSM NP 255 62 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 255 62 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 219 254 M -192 40 atan DU cos 8.000 MU 259 exch SU exch sin 8.000 MU 62 exch SU L TGSM 1 W S GR GS TGSM NP 259 62 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 259 62 8.000 3.000 40 -192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 219 318 M -256 44 atan DU cos 8.000 MU 263 exch SU exch sin 8.000 MU 62 exch SU L TGSM 1 W S GR GS TGSM NP 263 62 8.000 3.000 44 -256 TGAT 1 SG CP F 0 SG NP 263 62 8.000 3.000 44 -256 TGAT CP F GR % TEXT NP 0 SG GS 1 W 211 338 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (AckNewEstimate) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 143 62 M 64 24 atan DU cos 8.000 MU 167 exch SU exch sin 8.000 MU 126 exch SU L TGSM 1 W S GR GS TGSM NP 167 126 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 167 126 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 143 62 M 256 16 atan DU cos 8.000 MU 159 exch SU exch sin 8.000 MU 318 exch SU L TGSM 1 W S GR GS TGSM NP 159 318 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 159 318 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 143 62 M 192 24 atan DU cos 8.000 MU 167 exch SU exch sin 8.000 MU 254 exch SU L TGSM 1 W S GR GS TGSM NP 167 254 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 167 254 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 143 66 M 124 28 atan DU cos 8.000 MU 171 exch SU exch sin 8.000 MU 190 exch SU L TGSM 1 W S GR GS TGSM NP 171 190 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 171 190 8.000 3.000 28 124 TGAT CP F GR % TEXT NP 0 SG NP 182 234 M 193 234 L 193 254 L 182 254 L CP 1 SG F 0 SG GS 1 W 183 250 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 188 234 10 4 TGEL F GS GS NP 188 234 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 178 233 M 178 249 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 198 233 M 198 248 L TGSM 1 W S GR % ARC 0 SG GS GS NP 188 246 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 182 297 M 193 297 L 193 317 L 182 317 L CP 1 SG F 0 SG GS 1 W 183 313 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 188 297 10 4 TGEL F GS GS NP 188 297 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 178 296 M 178 312 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 198 296 M 198 311 L TGSM 1 W S GR % ARC 0 SG GS GS NP 188 309 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 182 169 M 193 169 L 193 189 L 182 189 L CP 1 SG F 0 SG GS 1 W 183 185 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 188 169 10 4 TGEL F GS GS NP 188 169 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 178 168 M 178 184 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 198 168 M 198 183 L TGSM 1 W S GR % ARC 0 SG GS GS NP 188 181 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 182 106 M 193 106 L 193 126 L 182 126 L CP 1 SG F 0 SG GS 1 W 183 122 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 188 106 10 4 TGEL F GS GS NP 188 106 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 178 105 M 178 121 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 198 105 M 198 120 L TGSM 1 W S GR % ARC 0 SG GS GS NP 188 118 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG GS 1 W 3 79 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (propose\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS (\)) SH GR GR % TEXT NP 0 SG NP 359 42 M 370 42 L 370 62 L 359 62 L CP 1 SG F 0 SG GS 1 W 360 58 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 365 42 10 4 TGEL F GS GS NP 365 42 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 355 41 M 355 57 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 375 41 M 375 56 L TGSM 1 W S GR % ARC 0 SG GS GS NP 365 54 10 7 168 11 TGAR S GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 292 15 M 49 -22 atan DU cos 8.000 MU exch sin 8.000 MU RM 270 64 L TGSM 1 W S [] 0 SD GR GS TGSM NP 292 15 8.000 3.000 22 -49 TGAT 1 SG CP F 0 SG NP 292 15 8.000 3.000 22 -49 TGAT CP F GR % TEXT NP 0 SG GS 1 W 272 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 322 17 M 48 16 atan DU cos 8.000 MU 338 exch SU exch sin 8.000 MU 65 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 338 65 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 338 65 8.000 3.000 16 48 TGAT CP F GR % TEXT NP 0 SG GS 1 W 311 13 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (commit\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS (\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 414 16 M 49 -22 atan DU cos 8.000 MU exch sin 8.000 MU RM 392 65 L TGSM 1 W S [] 0 SD GR GS TGSM NP 414 16 8.000 3.000 22 -49 TGAT 1 SG CP F 0 SG NP 414 16 8.000 3.000 22 -49 TGAT CP F GR % TEXT NP 0 SG GS 1 W 412 13 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (ok) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 94 128 M -64 32 atan DU cos 8.000 MU 126 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 126 64 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 126 64 8.000 3.000 32 -64 TGAT CP F GR % TEXT NP 0 SG GS 1 W 85 146 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewMsg) SH GR GR GR tgifsavedpage restore end showpage %MatchingCreationDate: Wed Jan 3 13:00:13 2001 %%EndDocument @endspecial 1989 1096 a(\(b\))g Fk(p)2142 1105 y Ft(1)2200 1096 y FD(is)f(leader)h(and)g Fk(p)2652 1105 y Ft(2)2710 1096 y FD(prop)r(osee)891 1249 y Fx(Figure)j(5:)36 b FA(Op)r(en)25 b(consensus)i(comm)n(unication)f(step)g(for)g(round)f(0)0 1514 y Fg(4.2)112 b(Correctness)0 1715 y Fy(Prop)s(osition)34 b(2.)46 b Fv(The)34 b(algorithm)h(of)e(Figur)l(e)h(4)f(satis\014es)g (the)g(validity,)j(agr)l(e)l(ement)d(and)g(termination)g(pr)l(op)l (erties)0 1815 y(of)e(op)l(en)f(c)l(onsensus.)0 1961 y Fy(Pro)s(of)i(\(sk)m(etc)m(h\).)37 b Fx(The)28 b(pro)r(of)f(is)h (based)f(on)g(lemmata)g(3,)h(4)f(and)g(7.)0 2108 y Fy(Lemma)32 b(3.)k Fv(V)-6 b(alidity:)40 b(If)30 b(a)g(pr)l(o)l(c)l(ess)g(pr)l(e-c) l(ommits)g Fq(v)s Fv(,)g(then)g Fq(v)j Fv(is)d(the)g(value)g(pr)l(op)l (ose)l(d)h(by)g(some)f(pr)l(o)l(c)l(ess.)0 2255 y Fy(Pro)s(of)g(\(sk)m (etc)m(h\).)37 b Fx(The)26 b(decided)g(v)-5 b(alue)25 b(is)h(c)n(hosen)f(at)g(line)h(26)f(\()p Fq(estimate)2401 2267 y Fp(p)2435 2275 y Fo(j)2469 2255 y Fx(\))h(and)g Fq(estimate)3010 2267 y Fp(p)3044 2275 y Fo(j)3104 2255 y Fx(is)f(mo)r(di\014ed)i(in)f(lines)0 2355 y(8)h(and)g(16)f(\(the)i (other)f(mo)r(di\014cations)g(are)f(meaningless)g(since)i(they)f(are)f (induced)i(b)n(y)f(the)h(\014rst)f(t)n(w)n(o\).)36 b(Line)28 b(16)e(do)r(es)0 2454 y(not)32 b(impact)g(the)g(pre-committed)f(v)-5 b(alue)32 b(since)f(it)h(is)g(executed)f(in)h(the)g Fq(commit)p Fx(\(\))g(function.)50 b(Therefore,)32 b(line)f(8)h(is)0 2554 y(the)25 b(only)f(mo)r(di\014cation)g(that)g(a\013ects)h(the)f (pre-committed)h(v)-5 b(alue.)35 b(Line)25 b(8)f(sets)g Fq(estimate)2894 2566 y Fp(p)2928 2574 y Fo(i)2981 2554 y Fx(to)h(the)f(v)-5 b(alue)25 b(prop)r(osed;)0 2654 y(indeed,)30 b(b)n(y)f(the)h(algorithm)e(of)h(Figure)f(4)h(and)g(b)n(y) g(the)h(prop)r(erties)e(of)h(the)h(links,)f(it)h(is)f(imp)r(ossible)g (for)g(a)g(pro)r(cess)f(to)0 2753 y(pre-commit)f(a)g(v)-5 b(alue)28 b(that)g(w)n(as)e(not)i(prop)r(osed)e(\(out)i(of)g(thin)g (air\).)1547 b Fi(2)0 2900 y Fy(Lemma)32 b(4.)k Fv(A)l(gr)l(e)l(ement:) h(No)30 b(two)g(pr)l(o)l(c)l(esses)g(de)l(cide)i(two)d(di\013er)l(ent)h (values.)125 3047 y Fx(The)d(pro)r(of)g(is)h(based)f(on)g(lemmata)g(5)h (and)f(6.)0 3194 y Fy(Lemma)44 b(5.)67 b Fv(If)40 b(a)g(pr)l(o)l(c)l (ess)g Fq(p)1005 3206 y Fp(i)1071 3194 y Fv(is)g(le)l(ader,)k(pr)l(e-c) l(ommits)39 b Fq(v)k Fv(and)d(then)f Fq(p)2420 3206 y Fp(i)2487 3194 y Fv(do)l(es)h(not)f(cr)l(ash,)k(then)c(a)h(majority)h (of)0 3294 y(pr)l(o)l(c)l(esses)30 b(have)h(stor)l(e)l(d)f Fq(v)j Fv(in)d(stable)g(stor)l(age.)0 3440 y Fy(Pro)s(of)e(\(sk)m(etc)m (h\).)36 b Fx(By)24 b(the)h(algorithm)d(of)i(Figure)g(4,)g(when)h Fq(p)1991 3452 y Fp(i)2042 3440 y Fx(pre-commits)e Fq(w)2573 3452 y Fp(i)2626 3440 y Fx(for)g(round)h Fq(r)r Fx(,)h Fr(b)p Fq(n=)p Fx(2)p Fr(c)e Fx(other)h(pro)r(cess)0 3540 y(than)37 b Fq(p)245 3552 y Fp(i)309 3540 y Fx(ha)n(v)n(e)f (stored)g Fq(w)828 3552 y Fp(i)893 3540 y Fx(and)g Fq(l)r(astnew)r(r)r (ound)j Fx(=)f Fq(r)r Fx(.)65 b(Since)37 b(ev)n(ery)f(pro)r(cess)f(is)i (w)n(ell-b)r(eha)n(v)n(ed,)h(then)f Fq(p)3454 3552 y Fp(i)3518 3540 y Fx(in)n(v)n(ok)n(es)0 3640 y Fq(commit)p Fx(\()p Fq(w)372 3652 y Fp(i)400 3640 y Fx(\))h(and)g(stores)f Fq(w)948 3652 y Fp(i)976 3640 y Fx(,)k(therefore)c(there)h(is)f(a)h(ma) 5 b(jorit)n(y)37 b(of)h(pro)r(cesses)e(that)i(ha)n(v)n(e)f(stored)g Fq(w)3330 3652 y Fp(i)3358 3640 y Fx(.)69 b(Ho)n(w)n(ev)n(er,)0 3739 y(there)29 b(can)f(b)r(e)h(more)f(than)h(one)g(pro)r(cess)e(in)n (v)n(oking)h Fq(pr)r(opose)p Fx(\(\))i(and)e Fq(commit)p Fx(\(\).)41 b(By)29 b(line)g(31,)f(once)g Fq(p)3266 3751 y Fp(i)3323 3739 y Fx(returns)g(from)0 3839 y Fq(pr)r(opose)p Fx(\(\),)i Fq(p)440 3851 y Fp(i)497 3839 y Fx(will)f(not)g(mo)r(dify)g (an)n(y)f(v)-5 b(ariable)28 b(since)h Fq(p)1802 3851 y Fp(i)1858 3839 y Fx(bu\013ers)g(all)f(the)i(messages)d(that)i(it)g (receiv)n(es)f(or)g(s-receiv)n(es.)0 3939 y(Therefore,)33 b(if)h Fq(p)530 3951 y Fp(i)590 3939 y Fx(do)r(es)f(not)g(crash)e (\(i.e.,)k(decides\))e(and)g(another)f(pro)r(cess)g Fq(p)2492 3951 y Fp(j)2559 3939 y Fx(in)n(v)n(ok)n(es)g Fq(pr)r(opose)p Fx(\()p Fq(v)3207 3951 y Fp(j)3242 3939 y Fx(\),)j(then)f Fq(p)3569 3951 y Fp(j)3636 3939 y Fx(pre-)0 4038 y(commits)27 b Fq(w)391 4050 y Fp(i)446 4038 y Fx(since)g(there)g(cannot)g(b)r(e)g (t)n(w)n(o)g(di\013eren)n(t)g(ma)5 b(jorities)26 b(in)h(the)h(system)f (\(line)g(25-26\).)35 b(By)27 b(line)g(26)f(and)h(the)0 4138 y(fact)i Fq(p)207 4150 y Fp(i)264 4138 y Fx(do)r(es)f(not)i(answ)n (er)d(to)i(an)n(y)f(message,)g Fq(p)1525 4150 y Fp(j)1589 4138 y Fx(m)n(ust)h(receiv)n(e)f(an)h Ff(estima)-6 b(te)30 b Fx(message)e(with)i Fq(w)3148 4150 y Fp(i)3176 4138 y Fx(.)41 b(By)29 b(lines)g(51-56,)0 4237 y(this)c(message)e(m)n(ust)h (b)r(e)h(tagged)f(with)g(the)h(higher)f Fq(l)r(astnew)r(estimate)e Fx(otherwise)i Fq(p)2672 4249 y Fp(i)2724 4237 y Fx(could)g(not)h(ha)n (v)n(e)e(decided)i Fq(w)3631 4249 y Fp(i)3659 4237 y Fx(.)35 b Fi(2)0 4384 y Fy(Lemma)d(6.)k Fv(If)30 b(a)g(pr)l(o)l(c)l (ess)g(de)l(cides)h Fq(v)s Fv(,)g(then)e(a)i(majority)g(of)f(pr)l(o)l (c)l(esses)h(have)g(stor)l(e)l(d)e Fq(v)k Fv(in)d(stable)g(stor)l(age.) 0 4531 y Fy(Pro)s(of)42 b(\(sk)m(etc)m(h\).)64 b Fx(Remem)n(b)r(er)36 b(that)h(w)n(e)e(assume)h(that)h(ev)n(ery)e(pro)r(cess)g(is)h(w)n (ell-b)r(eha)n(v)n(ed,)h(therefore)f(it)g(in)n(v)n(ok)n(es)0 4631 y Fq(pr)r(opose)p Fx(\(\))c(and)f(then)h Fq(commit)p Fx(\(\))f(with)h(the)g(last)f(v)-5 b(alue)31 b(pre-committed)g(b)n(y)g (itself)h(since)f(its)g(last)g(reco)n(v)n(ery)-7 b(.)45 b(There)0 4730 y(are)27 b(t)n(w)n(o)g(cases)g(to)h(consider:)36 b(\(i\))29 b(the)f(prop)r(osee)f(is)h(not)g(leader,)f(or)g(\(ii\))i (the)f(prop)r(osee)f(is)h(a)g(leader.)37 b(F)-7 b(or)27 b(case)g(\(i\),)i(b)n(y)0 4830 y(the)h(algorithm)e(of)h(Figure)g(4,)g (when)h(a)f(pro)r(cess)f Fq(p)1602 4842 y Fp(i)1659 4830 y Fx(returns)h(from)g Fq(pr)r(opose)p Fx(\()p Fq(v)2499 4842 y Fp(i)2527 4830 y Fx(\),)h(the)g(v)-5 b(alue)29 b(returned)g Fq(w)3371 4842 y Fp(i)3429 4830 y Fx(is)g(already)0 4930 y(stored)24 b(at)h(a)f(ma)5 b(jorit)n(y)24 b(of)h(pro)r(cesses,)f (i.e.,)i Fq(w)1435 4942 y Fp(i)1488 4930 y Fx(can)e(b)r(e)i(in)f(fact)g (already)e(decided)j(for)e Fq(p)2757 4942 y Fp(i)2810 4930 y Fx(if)h Fq(p)2925 4942 y Fp(i)2977 4930 y Fx(is)g(part)g(of)g (the)g(ma)5 b(jorit)n(y)0 5029 y(set)37 b(that)g(ac)n(kno)n(wledged)e Fq(w)920 5041 y Fp(i)948 5029 y Fx(.)66 b(Therefore,)38 b(when)f Fq(p)1716 5041 y Fp(i)1780 5029 y Fx(has)g(already)e(decided)j (and)f(in)n(v)n(ok)n(es)e Fq(commit)p Fx(\()p Fq(w)3391 5041 y Fp(i)3419 5029 y Fx(\),)k Fq(p)3555 5041 y Fp(i)3620 5029 y Fx(do)r(es)0 5129 y(nothing)27 b(\(line)i(20\).)36 b(Lemma)27 b(5)g(and)h(the)g(notion)f(of)h(w)n(ell-b)r(eha)n(v)n(ed)e (solv)n(e)g(case)h(\(ii\).)1022 b Fi(2)0 5276 y Fy(Pro)s(of)38 b(of)f(lemma)g(4)h(\(sk)m(etc)m(h\).)53 b Fx(Supp)r(ose)33 b(that)g(a)f(pro)r(cess)g Fq(p)2123 5288 y Fp(i)2183 5276 y Fx(\(resp.)52 b Fq(p)2481 5288 y Fp(j)2516 5276 y Fx(\))33 b(decides)g Fq(v)j Fx(\(resp.)52 b Fq(v)3248 5246 y Fl(0)3271 5276 y Fx(\).)h(Assume)33 b(b)n(y)0 5375 y(con)n(tradiction)d(that)h Fq(v)h Fr(6)p Fx(=)c Fq(v)900 5345 y Fl(0)955 5375 y Fx(and)i(without)i(loss)e(of)h (generalit)n(y)e(that)i Fq(p)2302 5387 y Fp(i)2361 5375 y Fx(decides)g(b)r(efore)f Fq(p)2945 5387 y Fp(j)2980 5375 y Fx(.)47 b(By)31 b(lemma)g(6)f(and)h(b)n(y)0 5475 y(the)e(algorithm)e(of)h(Figure)g(4,)g(when)h Fq(p)1234 5487 y Fp(i)1290 5475 y Fx(decides)f(in)g(round)g Fq(r)r Fx(,)i(then)e(a)g(ma)5 b(jorit)n(y)27 b(of)i(pro)r(cesses)e(ha)n(v)n(e) g(stored)g Fq(v)32 b Fx(and)c(a)1848 5768 y(11)p eop %%Page: 12 12 12 11 bop 0 -67 a Fx(v)-5 b(alue)28 b(of)g Fq(l)r(astnew)r(estimate)21 b Fr(\025)i Fq(r)r Fx(.)39 b(All)28 b Fq(l)r(astnew)r(estimate)e Fx(could)i(not)g(b)r(e)g(equal)g(to)f Fq(r)k Fx(b)r(ecause)d(some)f (pro)r(cess)g(could)0 33 y(ha)n(v)n(e)h(in)n(v)n(ok)n(ed)g Fq(pr)r(opose)p Fx(\(\))i(with)f(a)g(higher)f(round)h(and)g(the)g Fq(l)r(astnew)r(estimate)e Fx(v)-5 b(alue)29 b(w)n(ould)g(b)r(e)h(c)n (hanged)e(\(but)i(not)0 132 y(the)k Fq(estimate)p Fx(\).)53 b(By)33 b(lemma)h(6,)g(there)f(is)h(also)e(a)h(ma)5 b(jorit)n(y)32 b(of)h(pro)r(cesses)f(that)i(ha)n(v)n(e)e(stored)h Fq(v)3136 102 y Fl(0)3159 132 y Fx(.)55 b(There)33 b(m)n(ust)g(b)r(e)0 232 y(then)f(a)g(pro)r(cess)f(that)h(has)f(stored)h(b)r(oth)g Fq(v)j Fx(and)d Fq(v)1636 202 y Fl(0)1659 232 y Fx(.)50 b(This)32 b(is)g(imp)r(ossible)g(since)g(once)f Fq(p)2866 244 y Fp(i)2926 232 y Fx(has)g(decided)h Fq(v)s Fx(,)i(when)e Fq(p)3745 244 y Fp(j)0 332 y Fx(prop)r(oses,)c Fq(p)407 344 y Fp(j)471 332 y Fx(m)n(ust)i(ha)n(v)n(e)e(receiv)n(ed)g(an)h Ff(estima)-6 b(te)30 b Fx(message)e(with)i Fq(v)s Fx(.)42 b(This)29 b(message)f(is)h(tagged)f(with)i(the)g(highest)0 431 y Fq(l)r(astnew)r(estimate)p Fx(,)c(otherwise)g Fq(p)1073 443 y Fp(i)1128 431 y Fx(w)n(ould)i(ha)n(v)n(e)e(decided)i(a)f(v)-5 b(alue)27 b(di\013eren)n(t)h(from)f Fq(v)s Fx(.)982 b Fi(2)0 578 y Fy(Lemma)25 b(7.)34 b Fv(If)25 b(a)f(pr)l(o)l(c)l(ess)h (invokes)g Fq(pr)r(opose)p Fx(\(\))h Fv(\(r)l(esp.)37 b Fq(commit)p Fx(\(\))p Fv(\))24 b(and)h(then)f(do)l(es)h(not)f(cr)l (ash,)i(it)f(eventual)t(ly)g(r)l(eturns)0 678 y(fr)l(om)30 b(that)g(invo)l(c)l(ation.)0 825 y Fy(Pro)s(of)d(\(sk)m(etc)m(h\).)36 b Fx(The)24 b(pro)r(of)e(is)i(trivial)e(for)h Fq(commit)p Fx(\(\).)36 b(F)-7 b(or)22 b Fq(pr)r(opose)p Fx(\(\),)k(b)n(y)d(\(i\))h (the)g(fact)f(that)h(there)f(is)g(a)g(ma)5 b(jorit)n(y)0 924 y(of)29 b(correct)g(pro)r(cesses)e(in)j(the)g(system,)g(and)f (\(ii\))h(b)n(y)g(the)f(prop)r(ert)n(y)g(of)g(\012,)h(there)f(is)h (time)g(after)f(whic)n(h)g(there)h(is)f(only)0 1024 y(one)23 b(ev)n(en)n(tual)g(p)r(erp)r(etual)g(leader)g Fq(p)1126 1036 y Fp(l)1174 1024 y Fx(in)h(the)g(system.)35 b(If)24 b(a)f(correct)f(pro)r(cess)g(prop)r(oses,)h(then)h Fq(p)3001 1036 y Fp(l)3049 1024 y Fx(ev)n(en)n(tually)f(s-receiv)n(es)0 1123 y(a)k Ff(newmsg)i Fx(message)d(and)h(can)g(then)i(pre-commit.)2039 b Fi(2)0 1402 y Fg(4.3)112 b(Analytical)38 b(Ev)-6 b(aluation)0 1602 y Fx(In)24 b([A)n(CT00a)n(],)h(the)f(authors)f(describ)r(ed)h(a)f (consensus)g(proto)r(col)f(for)i(a)f(crash-reco)n(v)n(ery)d(mo)r(del,)k (and)g(indeed)g(assumed)0 1702 y(that)35 b(ev)n(ery)e(in)n(v)n(o)r (cation)g(and)h(ev)n(ery)f(decision)h(of)h(consensus)e(coincides)h (with)h(a)f(forced)g(log.)56 b(Hence,)37 b(b)r(esides)d(the)0 1802 y(required)27 b(forced)h(log)g(to)g(preserv)n(e)f(agreemen)n(t,)g (additional)h(forced)g(logs)f(are)h(needed)g(for)g(the)h(in)n (teraction)e(with)i(the)0 1901 y(consensus)e(b)r(o)n(x:)36 b(these)28 b(in)n(tro)r(duce)f(a)g Fv(pur)l(e)h Fx(o)n(v)n(erhead)d(to) j(the)g(consensus)e(abstraction.)2809 1871 y Fu(9)528 3217 y @beginspecial 12 @llx 621 @lly 351 @urx 844 @ury 2034 @rwi @setspecial %%BeginDocument: ConsensusNoCrashACT.eps /tgifdict 58 dict def tgifdict begin /tgifellipsedict 6 dict def tgifellipsedict /mtrx matrix put /TGEL % tgifellipse { tgifellipsedict begin /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /tgifarcdict 8 dict def tgifarcdict /mtrx matrix put /TGAN % tgifarcn { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix end } def /TGAR % tgifarc { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arcn savematrix setmatrix end } def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11.695 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % POLY/OPEN-SPLINE 0 SG GS NP 64 64 M 0 512 atan DU cos 8.000 MU 576 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 576 64 8.000 3.000 512 0 TGAT 1 SG CP F 0 SG NP 576 64 8.000 3.000 512 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 64 128 M 0 512 atan DU cos 8.000 MU 576 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 576 128 8.000 3.000 512 0 TGAT 1 SG CP F 0 SG NP 576 128 8.000 3.000 512 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 64 192 M 0 512 atan DU cos 8.000 MU 576 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 576 192 8.000 3.000 512 0 TGAT 1 SG CP F 0 SG NP 576 192 8.000 3.000 512 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 64 256 M 0 512 atan DU cos 8.000 MU 576 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 576 256 8.000 3.000 512 0 TGAT 1 SG CP F 0 SG NP 576 256 8.000 3.000 512 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 64 320 M 0 512 atan DU cos 8.000 MU 576 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 576 320 8.000 3.000 512 0 TGAT 1 SG CP F 0 SG NP 576 320 8.000 3.000 512 0 TGAT CP F GR % TEXT NP 0 SG GS 1 W 32 64 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 32 128 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 32 256 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (4) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (4) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 32 320 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (5) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (5) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 32 192 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (3) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 64 80 M 48 16 atan DU cos 8.000 MU 80 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 80 128 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 80 128 8.000 3.000 16 48 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 64 144 M 48 16 atan DU cos 8.000 MU 80 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 80 192 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 80 192 8.000 3.000 16 48 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 64 208 M 48 16 atan DU cos 8.000 MU 80 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 80 256 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 80 256 8.000 3.000 16 48 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 64 272 M 48 16 atan DU cos 8.000 MU 80 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 80 320 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 80 320 8.000 3.000 16 48 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 64 16 M 48 16 atan DU cos 8.000 MU 80 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 80 64 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 80 64 8.000 3.000 16 48 TGAT CP F GR % TEXT NP 0 SG GS 1 W 56 12 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (propose) SH GR GR % TEXT NP 0 SG GS 1 W 132 32 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewRound) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 207 128 M -64 32 atan DU cos 8.000 MU 239 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 239 64 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 239 64 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 207 192 M -128 36 atan DU cos 8.000 MU 243 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 243 64 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 243 64 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 207 256 M -192 40 atan DU cos 8.000 MU 247 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 247 64 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 247 64 8.000 3.000 40 -192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 207 320 M -256 44 atan DU cos 8.000 MU 251 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 251 64 8.000 3.000 44 -256 TGAT 1 SG CP F 0 SG NP 251 64 8.000 3.000 44 -256 TGAT CP F GR % TEXT NP 0 SG GS 1 W 188 340 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Estimate) SH GR GR % TEXT NP 0 SG GS 1 W 265 31 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewEstimate) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 360 128 M -64 32 atan DU cos 8.000 MU 392 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 392 64 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 392 64 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 360 192 M -128 36 atan DU cos 8.000 MU 396 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 396 64 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 396 64 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 360 256 M -192 40 atan DU cos 8.000 MU 400 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 400 64 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 400 64 8.000 3.000 40 -192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 360 320 M -256 44 atan DU cos 8.000 MU 404 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 404 64 8.000 3.000 44 -256 TGAT 1 SG CP F 0 SG NP 404 64 8.000 3.000 44 -256 TGAT CP F GR % TEXT NP 0 SG GS 1 W 352 340 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Ack) SH GR GR % TEXT NP 0 SG GS 1 W 416 32 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Decide) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 152 64 M 64 24 atan DU cos 8.000 MU 176 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 176 128 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 176 128 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 152 64 M 256 16 atan DU cos 8.000 MU 168 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 168 320 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 168 320 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 152 64 M 192 24 atan DU cos 8.000 MU 176 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 176 256 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 176 256 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 152 68 M 124 28 atan DU cos 8.000 MU 180 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 180 192 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 180 192 8.000 3.000 28 124 TGAT CP F GR % ARC GS 164 60 TR [1.000 0.000 0.000 1.000 0 0] CO 164 NE 60 NE TR 0 SG GS GS NP 164 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 176 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 176 64 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 288 64 M 64 24 atan DU cos 8.000 MU 312 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 312 128 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 312 128 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 288 64 M 256 16 atan DU cos 8.000 MU 304 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 304 320 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 304 320 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 288 64 M 192 24 atan DU cos 8.000 MU 312 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 312 256 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 312 256 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 288 68 M 124 28 atan DU cos 8.000 MU 316 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 316 192 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 316 192 8.000 3.000 28 124 TGAT CP F GR % ARC GS 300 60 TR [1.000 0.000 0.000 1.000 0 0] CO 300 NE 60 NE TR 0 SG GS GS NP 300 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 312 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 312 64 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 428 64 M 64 24 atan DU cos 8.000 MU 452 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 452 128 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 452 128 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 428 64 M 256 16 atan DU cos 8.000 MU 444 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 444 320 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 444 320 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 428 64 M 192 24 atan DU cos 8.000 MU 452 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 452 256 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 452 256 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 428 68 M 124 28 atan DU cos 8.000 MU 456 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 456 192 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 456 192 8.000 3.000 28 124 TGAT CP F GR % ARC GS 440 60 TR [1.000 0.000 0.000 1.000 0 0] CO 440 NE 60 NE TR 0 SG GS GS NP 440 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 452 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 452 64 8.000 3.000 -6 29 TGAT CP F GR GR % OVAL 0 SG GS GS NP 35 371 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 25 370 M 25 386 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 45 370 M 45 385 L TGSM 1 W S GR % ARC 0 SG GS GS NP 35 383 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG GS 1 W 57 387 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (extra-consensus stable storage) SH GR GR % TEXT NP 0 SG GS 1 W 361 386 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (intra-consenus stable storage) SH GR GR % TEXT NP 0 SG NP 324 237 M 335 237 L 335 255 L 324 255 L CP 1 SG F 0 SG GS 1 W 325 252 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 330 236 10 4 TGEL F GS GS NP 330 236 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 320 235 M 320 251 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 340 235 M 340 250 L TGSM 1 W S GR % ARC 0 SG GS GS NP 330 248 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 324 300 M 335 300 L 335 318 L 324 318 L CP 1 SG F 0 SG GS 1 W 325 315 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 330 299 10 4 TGEL F GS GS NP 330 299 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 320 298 M 320 314 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 340 298 M 340 313 L TGSM 1 W S GR % ARC 0 SG GS GS NP 330 311 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 324 172 M 335 172 L 335 190 L 324 190 L CP 1 SG F 0 SG GS 1 W 325 187 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 330 171 10 4 TGEL F GS GS NP 330 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 320 170 M 320 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 340 170 M 340 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 330 183 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 324 109 M 335 109 L 335 127 L 324 127 L CP 1 SG F 0 SG GS 1 W 325 124 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 330 108 10 4 TGEL F GS GS NP 330 108 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 320 107 M 320 123 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 340 107 M 340 122 L TGSM 1 W S GR % ARC 0 SG GS GS NP 330 120 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 263 44 M 274 44 L 274 62 L 263 62 L CP 1 SG F 0 SG GS 1 W 264 59 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 269 43 10 4 TGEL F GS GS NP 269 43 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 259 42 M 259 58 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 279 42 M 279 57 L TGSM 1 W S GR % ARC 0 SG GS GS NP 269 55 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 112 237 M 123 237 L 123 255 L 112 255 L CP 1 SG F 0 SG GS 1 W 113 252 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 118 236 10 4 TGEL F GS GS NP 118 236 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 108 235 M 108 251 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 128 235 M 128 250 L TGSM 1 W S GR % ARC 0 SG GS GS NP 118 248 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 112 300 M 123 300 L 123 318 L 112 318 L CP 1 SG F 0 SG GS 1 W 113 315 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 118 299 10 4 TGEL F GS GS NP 118 299 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 108 298 M 108 314 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 128 298 M 128 313 L TGSM 1 W S GR % ARC 0 SG GS GS NP 118 311 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 112 172 M 123 172 L 123 190 L 112 190 L CP 1 SG F 0 SG GS 1 W 113 187 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 118 171 10 4 TGEL F GS GS NP 118 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 108 170 M 108 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 128 170 M 128 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 118 183 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 112 109 M 123 109 L 123 127 L 112 127 L CP 1 SG F 0 SG GS 1 W 113 124 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 118 108 10 4 TGEL F GS GS NP 118 108 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 108 107 M 108 123 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 128 107 M 128 122 L TGSM 1 W S GR % ARC 0 SG GS GS NP 118 120 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 112 45 M 123 45 L 123 63 L 112 63 L CP 1 SG F 0 SG GS 1 W 113 60 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 118 44 10 4 TGEL F GS GS NP 118 44 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 108 43 M 108 59 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 128 43 M 128 58 L TGSM 1 W S GR % ARC 0 SG GS GS NP 118 56 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 469 239 M 479 239 L 479 256 L 469 256 L CP 1 SG F 0 SG GS 1 W 470 252 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 474 236 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 464 235 M 464 251 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 484 235 M 484 250 L TGSM 1 W S GR % ARC 0 SG GS GS NP 474 248 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 469 302 M 479 302 L 479 319 L 469 319 L CP 1 SG F 0 SG GS 1 W 470 315 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 474 299 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 464 298 M 464 314 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 484 298 M 484 313 L TGSM 1 W S GR % ARC 0 SG GS GS NP 474 311 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 469 174 M 479 174 L 479 191 L 469 191 L CP 1 SG F 0 SG GS 1 W 470 187 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 474 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 464 170 M 464 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 484 170 M 484 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 474 183 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 469 111 M 479 111 L 479 128 L 469 128 L CP 1 SG F 0 SG GS 1 W 470 124 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 474 108 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 464 107 M 464 123 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 484 107 M 484 122 L TGSM 1 W S GR % ARC 0 SG GS GS NP 474 120 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 469 46 M 479 46 L 479 63 L 469 63 L CP 1 SG F 0 SG GS 1 W 470 59 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 474 43 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 464 42 M 464 58 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 484 42 M 484 57 L TGSM 1 W S GR % ARC 0 SG GS GS NP 474 55 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 90 239 M 100 239 L 100 256 L 90 256 L CP 1 SG F 0 SG GS 1 W 91 252 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 95 236 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 85 235 M 85 251 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 105 235 M 105 250 L TGSM 1 W S GR % ARC 0 SG GS GS NP 95 248 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 90 302 M 100 302 L 100 319 L 90 319 L CP 1 SG F 0 SG GS 1 W 91 315 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 95 299 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 85 298 M 85 314 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 105 298 M 105 313 L TGSM 1 W S GR % ARC 0 SG GS GS NP 95 311 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 90 174 M 100 174 L 100 191 L 90 191 L CP 1 SG F 0 SG GS 1 W 91 187 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 95 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 85 170 M 85 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 105 170 M 105 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 95 183 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 90 111 M 100 111 L 100 128 L 90 128 L CP 1 SG F 0 SG GS 1 W 91 124 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 95 108 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 85 107 M 85 123 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 105 107 M 105 122 L TGSM 1 W S GR % ARC 0 SG GS GS NP 95 120 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 90 46 M 100 46 L 100 63 L 90 63 L CP 1 SG F 0 SG GS 1 W 91 59 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 95 43 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 85 42 M 85 58 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 105 42 M 105 57 L TGSM 1 W S GR % ARC 0 SG GS GS NP 95 55 10 7 168 11 TGAR S GR GR % OVAL 0 SG NP 339 370 10 4 TGEL F GS GS NP 339 370 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 329 369 M 329 385 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 349 369 M 349 384 L TGSM 1 W S GR % ARC 0 SG GS GS NP 339 382 10 7 168 11 TGAR S GR GR % ARC GS 232 60 TR [1.000 0.000 0.000 1.000 0 0] CO 232 NE 60 NE TR 0 SG GS GS NP 232 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 244 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 244 64 8.000 3.000 -6 29 TGAT CP F GR GR % ARC GS 387 60 TR [1.000 0.000 0.000 1.000 0 0] CO 387 NE 60 NE TR 0 SG GS GS NP 387 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 399 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 399 64 8.000 3.000 -6 29 TGAT CP F GR GR GR tgifsavedpage restore end showpage %MatchingCreationDate: Sun Aug 6 16:00:29 2000 %%EndDocument @endspecial 1144 3400 a FD(\(a\))f Fk(p)1294 3409 y Ft(2)1352 3400 y FD(is)e(leader)2306 3217 y @beginspecial 16 @llx 620 @lly 205 @urx 844 @ury 1134 @rwi @setspecial %%BeginDocument: ConsensusNoCrashACTFast.eps /tgifdict 58 dict def tgifdict begin /tgifellipsedict 6 dict def tgifellipsedict /mtrx matrix put /TGEL % tgifellipse { tgifellipsedict begin /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /tgifarcdict 8 dict def tgifarcdict /mtrx matrix put /TGAN % tgifarcn { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix end } def /TGAR % tgifarc { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arcn savematrix setmatrix end } def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11.695 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % TEXT NP 0 SG GS 1 W 32 64 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 32 128 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 32 256 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (4) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (4) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 32 320 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (5) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (5) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 32 192 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (3) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 64 80 M 48 16 atan DU cos 8.000 MU 80 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 80 128 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 80 128 8.000 3.000 16 48 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 64 144 M 48 16 atan DU cos 8.000 MU 80 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 80 192 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 80 192 8.000 3.000 16 48 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 64 208 M 48 16 atan DU cos 8.000 MU 80 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 80 256 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 80 256 8.000 3.000 16 48 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 64 272 M 48 16 atan DU cos 8.000 MU 80 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 80 320 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 80 320 8.000 3.000 16 48 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 64 16 M 48 16 atan DU cos 8.000 MU 80 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 80 64 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 80 64 8.000 3.000 16 48 TGAT CP F GR % TEXT NP 0 SG GS 1 W 56 12 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (propose) SH GR GR % TEXT NP 0 SG GS 1 W 120 32 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewEstimate) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 215 129 M -64 32 atan DU cos 8.000 MU 247 exch SU exch sin 8.000 MU 65 exch SU L TGSM 1 W S GR GS TGSM NP 247 65 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 247 65 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 215 193 M -128 36 atan DU cos 8.000 MU 251 exch SU exch sin 8.000 MU 65 exch SU L TGSM 1 W S GR GS TGSM NP 251 65 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 251 65 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 215 257 M -192 40 atan DU cos 8.000 MU 255 exch SU exch sin 8.000 MU 65 exch SU L TGSM 1 W S GR GS TGSM NP 255 65 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 255 65 8.000 3.000 40 -192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 215 321 M -256 44 atan DU cos 8.000 MU 259 exch SU exch sin 8.000 MU 65 exch SU L TGSM 1 W S GR GS TGSM NP 259 65 8.000 3.000 44 -256 TGAT 1 SG CP F 0 SG NP 259 65 8.000 3.000 44 -256 TGAT CP F GR % TEXT NP 0 SG GS 1 W 207 341 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Ack) SH GR GR % TEXT NP 0 SG GS 1 W 271 33 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Decide) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 143 65 M 64 24 atan DU cos 8.000 MU 167 exch SU exch sin 8.000 MU 129 exch SU L TGSM 1 W S GR GS TGSM NP 167 129 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 167 129 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 143 65 M 256 16 atan DU cos 8.000 MU 159 exch SU exch sin 8.000 MU 321 exch SU L TGSM 1 W S GR GS TGSM NP 159 321 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 159 321 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 143 65 M 192 24 atan DU cos 8.000 MU 167 exch SU exch sin 8.000 MU 257 exch SU L TGSM 1 W S GR GS TGSM NP 167 257 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 167 257 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 143 69 M 124 28 atan DU cos 8.000 MU 171 exch SU exch sin 8.000 MU 193 exch SU L TGSM 1 W S GR GS TGSM NP 171 193 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 171 193 8.000 3.000 28 124 TGAT CP F GR % ARC GS 155 61 TR [1.000 0.000 0.000 1.000 0 0] CO 155 NE 61 NE TR 0 SG GS GS NP 155 61 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 167 65 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 167 65 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 283 65 M 64 24 atan DU cos 8.000 MU 307 exch SU exch sin 8.000 MU 129 exch SU L TGSM 1 W S GR GS TGSM NP 307 129 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 307 129 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 283 65 M 256 16 atan DU cos 8.000 MU 299 exch SU exch sin 8.000 MU 321 exch SU L TGSM 1 W S GR GS TGSM NP 299 321 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 299 321 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 283 65 M 192 24 atan DU cos 8.000 MU 307 exch SU exch sin 8.000 MU 257 exch SU L TGSM 1 W S GR GS TGSM NP 307 257 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 307 257 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 283 69 M 124 28 atan DU cos 8.000 MU 311 exch SU exch sin 8.000 MU 193 exch SU L TGSM 1 W S GR GS TGSM NP 311 193 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 311 193 8.000 3.000 28 124 TGAT CP F GR % ARC GS 295 61 TR [1.000 0.000 0.000 1.000 0 0] CO 295 NE 61 NE TR 0 SG GS GS NP 295 61 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 307 65 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 307 65 8.000 3.000 -6 29 TGAT CP F GR GR % TEXT NP 0 SG GS 1 W 57 387 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( ) SH GR GR % TEXT NP 0 SG NP 179 237 M 190 237 L 190 257 L 179 257 L CP 1 SG F 0 SG GS 1 W 180 253 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 185 237 10 4 TGEL F GS GS NP 185 237 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 175 236 M 175 252 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 195 236 M 195 251 L TGSM 1 W S GR % ARC 0 SG GS GS NP 185 249 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 179 300 M 190 300 L 190 320 L 179 320 L CP 1 SG F 0 SG GS 1 W 180 316 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 185 300 10 4 TGEL F GS GS NP 185 300 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 175 299 M 175 315 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 195 299 M 195 314 L TGSM 1 W S GR % ARC 0 SG GS GS NP 185 312 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 179 172 M 190 172 L 190 192 L 179 192 L CP 1 SG F 0 SG GS 1 W 180 188 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 185 172 10 4 TGEL F GS GS NP 185 172 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 175 171 M 175 187 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 195 171 M 195 186 L TGSM 1 W S GR % ARC 0 SG GS GS NP 185 184 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 179 109 M 190 109 L 190 129 L 179 129 L CP 1 SG F 0 SG GS 1 W 180 125 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 185 109 10 4 TGEL F GS GS NP 185 109 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 175 108 M 175 124 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 195 108 M 195 123 L TGSM 1 W S GR % ARC 0 SG GS GS NP 185 121 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 118 44 M 129 44 L 129 64 L 118 64 L CP 1 SG F 0 SG GS 1 W 119 60 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 124 44 10 4 TGEL F GS GS NP 124 44 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 114 43 M 114 59 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 134 43 M 134 58 L TGSM 1 W S GR % ARC 0 SG GS GS NP 124 56 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 324 238 M 334 238 L 334 257 L 324 257 L CP 1 SG F 0 SG GS 1 W 325 253 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 329 237 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 319 236 M 319 252 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 339 236 M 339 251 L TGSM 1 W S GR % ARC 0 SG GS GS NP 329 249 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 324 301 M 334 301 L 334 320 L 324 320 L CP 1 SG F 0 SG GS 1 W 325 316 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 329 300 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 319 299 M 319 315 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 339 299 M 339 314 L TGSM 1 W S GR % ARC 0 SG GS GS NP 329 312 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 324 173 M 334 173 L 334 192 L 324 192 L CP 1 SG F 0 SG GS 1 W 325 188 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 329 172 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 319 171 M 319 187 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 339 171 M 339 186 L TGSM 1 W S GR % ARC 0 SG GS GS NP 329 184 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 324 110 M 334 110 L 334 129 L 324 129 L CP 1 SG F 0 SG GS 1 W 325 125 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 329 109 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 319 108 M 319 124 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 339 108 M 339 123 L TGSM 1 W S GR % ARC 0 SG GS GS NP 329 121 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 324 45 M 334 45 L 334 64 L 324 64 L CP 1 SG F 0 SG GS 1 W 325 60 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 329 44 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 319 43 M 319 59 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 339 43 M 339 58 L TGSM 1 W S GR % ARC 0 SG GS GS NP 329 56 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 90 237 M 100 237 L 100 256 L 90 256 L CP 1 SG F 0 SG GS 1 W 91 252 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 95 236 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 85 235 M 85 251 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 105 235 M 105 250 L TGSM 1 W S GR % ARC 0 SG GS GS NP 95 248 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 90 300 M 100 300 L 100 319 L 90 319 L CP 1 SG F 0 SG GS 1 W 91 315 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 95 299 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 85 298 M 85 314 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 105 298 M 105 313 L TGSM 1 W S GR % ARC 0 SG GS GS NP 95 311 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 90 172 M 100 172 L 100 191 L 90 191 L CP 1 SG F 0 SG GS 1 W 91 187 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 95 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 85 170 M 85 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 105 170 M 105 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 95 183 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 90 109 M 100 109 L 100 128 L 90 128 L CP 1 SG F 0 SG GS 1 W 91 124 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 95 108 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 85 107 M 85 123 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 105 107 M 105 122 L TGSM 1 W S GR % ARC 0 SG GS GS NP 95 120 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 90 44 M 100 44 L 100 63 L 90 63 L CP 1 SG F 0 SG GS 1 W 91 59 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 95 43 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 85 42 M 85 58 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 105 42 M 105 57 L TGSM 1 W S GR % ARC 0 SG GS GS NP 95 55 10 7 168 11 TGAR S GR GR % ARC GS 242 61 TR [1.000 0.000 0.000 1.000 0 0] CO 242 NE 61 NE TR 0 SG GS GS NP 242 61 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 254 65 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 254 65 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 64 64 M 0 300 atan DU cos 8.000 MU 364 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 364 64 8.000 3.000 300 0 TGAT 1 SG CP F 0 SG NP 364 64 8.000 3.000 300 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 64 128 M 0 300 atan DU cos 8.000 MU 364 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 364 128 8.000 3.000 300 0 TGAT 1 SG CP F 0 SG NP 364 128 8.000 3.000 300 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 64 192 M 0 300 atan DU cos 8.000 MU 364 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 364 192 8.000 3.000 300 0 TGAT 1 SG CP F 0 SG NP 364 192 8.000 3.000 300 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 64 256 M 0 300 atan DU cos 8.000 MU 364 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 364 256 8.000 3.000 300 0 TGAT 1 SG CP F 0 SG NP 364 256 8.000 3.000 300 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 64 320 M 0 300 atan DU cos 8.000 MU 364 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 364 320 8.000 3.000 300 0 TGAT 1 SG CP F 0 SG NP 364 320 8.000 3.000 300 0 TGAT CP F GR GR tgifsavedpage restore end showpage %MatchingCreationDate: Fri Jan 5 14:28:18 2001 %%EndDocument @endspecial 2389 3400 a(\(b\))f Fk(p)2540 3409 y Ft(1)2594 3400 y FD(is)d(leader)i(\(nice)g(run\))1331 3749 y Fx(Figure)27 b(6:)37 b([A)n(CT00a)n(])28 b(Consensus)125 3950 y(As)g(depicted)h(in)f (Figure)g(6\(b\))g(and)g(Figure)g(5)g(\(resp.)38 b(Figure)28 b(6\(a\))f(and)i(Figure)e(3\),)h(in)h(a)f(nice)g(run,)g(the)h(n)n(um)n (b)r(er)0 4050 y(of)g(comm)n(unication)f(steps)h(needed)h(to)f(reac)n (h)e(a)i(decision)g(is)g(the)g(same)g(for)f(b)r(oth)i(algorithms.)40 b(Ho)n(w)n(ev)n(er,)27 b(a)i(pro)r(cess)0 4149 y(can)c(reac)n(h)e(a)i (decision)g(after)f(one)h(lo)r(cal)f(forced)h(log)f(in)h(our)f (algorithm,)h(whereas)f(three)g(lo)r(cal)h(sequen)n(tial)f(forced)h (logs)0 4249 y(are)i(required)f(in)i([A)n(CT00a)o(].)37 b(Globally)-7 b(,)27 b(for)g(a)h(pro)r(cess)e(to)i(decide)f(in)h([A)n (CT00a)o(])g Fr(d)p Fx(\()p Fq(n)18 b Fx(+)g(1\))p Fq(=)p Fx(2)p Fr(e)p Fx(+2)26 b(forced)h(logs)f(m)n(ust)0 4349 y(ha)n(v)n(e)34 b(b)r(een)h(p)r(erformed.)59 b(In)36 b(our)e(case,)i(a)f(pro)r(cess)f(can)g(decide)h(after)g Fr(d)p Fx(\()p Fq(n)24 b Fx(+)f(1\))p Fq(=)p Fx(2)p Fr(e)33 b Fx(forced)i(logs.)58 b(Moreo)n(v)n(er,)34 b(our)0 4448 y(op)r(en)23 b(consensus)f(algorithm)g(in)n(tro)r(duces)g(few)n(er)h (messages)e(than)i([A)n(CT00a)n(])h(since)e(not)h(ev)n(ery)f(pro)r (cess)g(is)h(required)f(to)0 4548 y(prop)r(ose,)j(and)h(only)g(those)g (that)g(prop)r(ose)f(receiv)n(e)g(a)g(decision)h(message.)35 b(In)26 b(the)h(case)e(where)g(all)h(pro)r(cesses)f(prop)r(ose)0 4647 y(a)i(v)-5 b(alue,)28 b(then)g(the)g(n)n(um)n(b)r(er)f(of)h (messages)e(is)h(the)h(same)f(in)h(b)r(oth)g(algorithms.)125 4794 y(W)-7 b(e)22 b(no)n(w)f(compare)f(op)r(en)i(consensus)e(with)i ([A)n(CT00a)o(])g(in)g(case)e(of)i(a)f(reco)n(v)n(ery)e(scenario.)34 b(Ev)n(en)20 b(if)i Fv(op)l(en)j(c)l(onsensus)0 4894 y Fx(is)30 b(optimised)g(for)f(nice)h(runs,)g(it)h(b)r(eha)n(v)n(es)e (quite)h(w)n(ell)g(in)g(the)g(case)f(of)h(a)g(pro)r(cess)e(crash.)43 b(As)30 b(sho)n(wn)f(in)i(Figure)e(7,)h(8)0 4994 y(and)g(9,)h(op)r(en)f (consensus)f(is)h(more)f(e\016cien)n(t)i(than)f([A)n(CT00a)o(],)h(in)f (terms)g(of)g(b)r(oth)h(the)f(n)n(um)n(b)r(er)g(of)g(comm)n(unication)0 5093 y(steps)22 b(and)h(forced)f(logs.)34 b(As)23 b(depicted)g(in)g (Figure)f(7,)h(with)g([A)n(CT00a)n(],)h(if)f(the)g(co)r(ordinator)e (crashes,)h(another)g(pro)r(cess)0 5193 y(tak)n(es)28 b(up,)h(b)r(ecomes)f(co)r(ordinator)e(and)j(solv)n(es)e(consensus.)38 b(When)29 b(the)g(pro)r(cess)e(that)i(has)f(crashed)f(reco)n(v)n(ers,)g (it)h(re-)0 5292 y(prop)r(oses)h(b)n(y)i(reading)e(its)i(lo)r(cation)f (in)n(to)g(stable)h(storage)d(and)j(decides.)46 b(W)-7 b(e)31 b(need)g(to)f(compare)g(with)h(t)n(w)n(o)f(scenari)0 5392 y(for)h(our)g(algorithm:)43 b(\(i\))32 b(if)g(a)f(prop)r(osee)f (crashes)g(as)h(depicted)h(in)g(Figure)f(8,)h(and)f(\(ii\))h(if)g(a)f (leader)g(pro)r(cess)f(crashes)p 0 5442 1512 4 v 92 5496 a Ft(9)127 5519 y FD(The)24 b(same)g(conclusion)g(can)h(b)r(e)f(dra)n (wn)g(for)e(the)j(consensus)g(algorithm)e(of)h([HMR98)o(].)1848 5768 y Fx(12)p eop %%Page: 13 13 13 12 bop 335 868 a @beginspecial 15 @llx 646 @lly 589 @urx 834 @ury 3731 @rwi @setspecial %%BeginDocument: ConsensusCrashCoordACT1.eps /tgifdict 58 dict def tgifdict begin /tgifellipsedict 6 dict def tgifellipsedict /mtrx matrix put /TGEL % tgifellipse { tgifellipsedict begin /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /tgifarcdict 8 dict def tgifarcdict /mtrx matrix put /TGAN % tgifarcn { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix end } def /TGAR % tgifarc { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arcn savematrix setmatrix end } def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11.695 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % TEXT NP 0 SG GS 1 W 30 64 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 30 128 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 30 256 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (4) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (4) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 30 320 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (5) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (5) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 30 192 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (3) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 62 80 M 48 16 atan DU cos 8.000 MU 78 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 78 128 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 78 128 8.000 3.000 16 48 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 62 144 M 48 16 atan DU cos 8.000 MU 78 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 78 192 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 78 192 8.000 3.000 16 48 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 62 208 M 48 16 atan DU cos 8.000 MU 78 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 78 256 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 78 256 8.000 3.000 16 48 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 62 272 M 48 16 atan DU cos 8.000 MU 78 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 78 320 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 78 320 8.000 3.000 16 48 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 62 16 M 48 16 atan DU cos 8.000 MU 78 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 78 64 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 78 64 8.000 3.000 16 48 TGAT CP F GR % TEXT NP 0 SG GS 1 W 130 32 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewRound) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 205 128 M -64 32 atan DU cos 8.000 MU 237 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 237 64 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 237 64 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 205 192 M -128 36 atan DU cos 8.000 MU 241 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 241 64 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 241 64 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 205 256 M -192 40 atan DU cos 8.000 MU 245 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 245 64 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 245 64 8.000 3.000 40 -192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 205 320 M -256 44 atan DU cos 8.000 MU 249 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 249 64 8.000 3.000 44 -256 TGAT 1 SG CP F 0 SG NP 249 64 8.000 3.000 44 -256 TGAT CP F GR % TEXT NP 0 SG GS 1 W 186 340 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Estimate) SH GR GR % TEXT NP 0 SG GS 1 W 254 32 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewEstimate) SH GR GR % TEXT NP 0 SG GS 1 W 609 338 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Ack) SH GR GR % TEXT NP 0 SG GS 1 W 667 96 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Decide) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 150 64 M 64 24 atan DU cos 8.000 MU 174 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 174 128 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 174 128 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 150 64 M 256 16 atan DU cos 8.000 MU 166 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 166 320 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 166 320 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 150 64 M 192 24 atan DU cos 8.000 MU 174 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 174 256 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 174 256 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 150 68 M 124 28 atan DU cos 8.000 MU 178 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 178 192 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 178 192 8.000 3.000 28 124 TGAT CP F GR % ARC GS 162 60 TR [1.000 0.000 0.000 1.000 0 0] CO 162 NE 60 NE TR 0 SG GS GS NP 162 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 174 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 174 64 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 282 64 M 64 24 atan DU cos 8.000 MU 306 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 306 128 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 306 128 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 282 64 M 256 16 atan DU cos 8.000 MU 298 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 298 320 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 298 320 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 282 64 M 192 24 atan DU cos 8.000 MU 306 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 306 256 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 306 256 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 282 68 M 124 28 atan DU cos 8.000 MU 310 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 310 192 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 310 192 8.000 3.000 28 124 TGAT CP F GR % ARC GS 294 60 TR [1.000 0.000 0.000 1.000 0 0] CO 294 NE 60 NE TR 0 SG GS GS NP 294 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 306 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 306 64 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 679 128 M 64 24 atan DU cos 8.000 MU 703 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 703 192 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 703 192 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 679 128 M 192 24 atan DU cos 8.000 MU 703 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 703 320 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 703 320 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 679 132 M 124 28 atan DU cos 8.000 MU 707 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 707 256 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 707 256 8.000 3.000 28 124 TGAT CP F GR % ARC GS 691 124 TR [1.000 0.000 0.000 1.000 0 0] CO 691 NE 124 NE TR 0 SG GS GS NP 691 124 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 703 128 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 703 128 8.000 3.000 -6 29 TGAT CP F GR GR % TEXT NP 0 SG GS 1 W 878 342 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Decide) SH GR GR % TEXT NP 0 SG NP 114 236 M 125 236 L 125 254 L 114 254 L CP 1 SG F 0 SG GS 1 W 115 251 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 120 235 10 4 TGEL F GS GS NP 120 235 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 110 234 M 110 250 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 130 234 M 130 249 L TGSM 1 W S GR % ARC 0 SG GS GS NP 120 247 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 114 300 M 125 300 L 125 318 L 114 318 L CP 1 SG F 0 SG GS 1 W 115 315 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 120 299 10 4 TGEL F GS GS NP 120 299 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 110 298 M 110 314 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 130 298 M 130 313 L TGSM 1 W S GR % ARC 0 SG GS GS NP 120 311 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 114 172 M 125 172 L 125 190 L 114 190 L CP 1 SG F 0 SG GS 1 W 115 187 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 120 171 10 4 TGEL F GS GS NP 120 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 110 170 M 110 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 130 170 M 130 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 120 183 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 114 108 M 125 108 L 125 126 L 114 126 L CP 1 SG F 0 SG GS 1 W 115 123 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 120 107 10 4 TGEL F GS GS NP 120 107 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 110 106 M 110 122 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 130 106 M 130 121 L TGSM 1 W S GR % ARC 0 SG GS GS NP 120 119 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 114 44 M 125 44 L 125 62 L 114 62 L CP 1 SG F 0 SG GS 1 W 115 59 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 120 43 10 4 TGEL F GS GS NP 120 43 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 110 42 M 110 58 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 130 42 M 130 57 L TGSM 1 W S GR % ARC 0 SG GS GS NP 120 55 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 92 238 M 102 238 L 102 255 L 92 255 L CP 1 SG F 0 SG GS 1 W 93 251 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 97 235 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 87 234 M 87 250 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 107 234 M 107 249 L TGSM 1 W S GR % ARC 0 SG GS GS NP 97 247 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 92 302 M 102 302 L 102 319 L 92 319 L CP 1 SG F 0 SG GS 1 W 93 315 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 97 299 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 87 298 M 87 314 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 107 298 M 107 313 L TGSM 1 W S GR % ARC 0 SG GS GS NP 97 311 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 92 174 M 102 174 L 102 191 L 92 191 L CP 1 SG F 0 SG GS 1 W 93 187 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 97 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 87 170 M 87 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 107 170 M 107 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 97 183 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 92 110 M 102 110 L 102 127 L 92 127 L CP 1 SG F 0 SG GS 1 W 93 123 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 97 107 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 87 106 M 87 122 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 107 106 M 107 121 L TGSM 1 W S GR % ARC 0 SG GS GS NP 97 119 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 92 46 M 102 46 L 102 63 L 92 63 L CP 1 SG F 0 SG GS 1 W 93 59 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 97 43 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 87 42 M 87 58 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 107 42 M 107 57 L TGSM 1 W S GR % ARC 0 SG GS GS NP 97 55 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 318 236 M 329 236 L 329 254 L 318 254 L CP 1 SG F 0 SG GS 1 W 319 251 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 324 235 10 4 TGEL F GS GS NP 324 235 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 314 234 M 314 250 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 334 234 M 334 249 L TGSM 1 W S GR % ARC 0 SG GS GS NP 324 247 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 318 300 M 329 300 L 329 318 L 318 318 L CP 1 SG F 0 SG GS 1 W 319 315 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 324 299 10 4 TGEL F GS GS NP 324 299 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 314 298 M 314 314 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 334 298 M 334 313 L TGSM 1 W S GR % ARC 0 SG GS GS NP 324 311 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 318 172 M 329 172 L 329 190 L 318 190 L CP 1 SG F 0 SG GS 1 W 319 187 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 324 171 10 4 TGEL F GS GS NP 324 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 314 170 M 314 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 334 170 M 334 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 324 183 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 318 108 M 329 108 L 329 126 L 318 126 L CP 1 SG F 0 SG GS 1 W 319 123 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 324 107 10 4 TGEL F GS GS NP 324 107 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 314 106 M 314 122 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 334 106 M 334 121 L TGSM 1 W S GR % ARC 0 SG GS GS NP 324 119 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 718 302 M 728 302 L 728 319 L 718 319 L CP 1 SG F 0 SG GS 1 W 719 315 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 723 299 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 713 298 M 713 314 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 733 298 M 733 313 L TGSM 1 W S GR % ARC 0 SG GS GS NP 723 311 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 718 238 M 728 238 L 728 255 L 718 255 L CP 1 SG F 0 SG GS 1 W 719 251 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 723 235 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 713 234 M 713 250 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 733 234 M 733 249 L TGSM 1 W S GR % ARC 0 SG GS GS NP 723 247 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 718 174 M 728 174 L 728 191 L 718 191 L CP 1 SG F 0 SG GS 1 W 719 187 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 723 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 713 170 M 713 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 733 170 M 733 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 723 183 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 718 110 M 728 110 L 728 127 L 718 127 L CP 1 SG F 0 SG GS 1 W 719 123 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 723 107 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 713 106 M 713 122 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 733 106 M 733 121 L TGSM 1 W S GR % ARC 0 SG GS GS NP 723 119 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 770 46 M 779 46 L 779 61 L 770 61 L CP 1 SG F 0 SG GS 1 W 771 58 M GS 0 SG /Courier-Bold FF [12 0 0 -12 0 0] MS (R) SH GR GR % OVAL 0 SG NP 775 42 10 4 TGEL F GS GS NP 775 42 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 765 41 M 765 57 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 785 41 M 785 56 L TGSM 1 W S GR % ARC 0 SG GS GS NP 775 54 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 747 45 M 757 45 L 757 62 L 747 62 L CP 1 SG F 0 SG GS 1 W 748 58 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (R) SH GR GR % OVAL 0 SG GS GS NP 752 42 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 742 41 M 742 57 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 762 41 M 762 56 L TGSM 1 W S GR % ARC 0 SG GS GS NP 752 54 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 853 301 M 863 301 L 863 318 L 853 318 L CP 1 SG F 0 SG GS 1 W 854 314 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (R) SH GR GR % OVAL 0 SG GS GS NP 858 298 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 848 297 M 848 313 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 868 297 M 868 312 L TGSM 1 W S GR % ARC 0 SG GS GS NP 858 310 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 942 45 M 952 45 L 952 62 L 942 62 L CP 1 SG F 0 SG GS 1 W 943 58 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (W) SH GR GR % OVAL 0 SG GS GS NP 947 42 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 937 41 M 937 57 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 957 41 M 957 56 L TGSM 1 W S GR % ARC 0 SG GS GS NP 947 54 10 7 168 11 TGAR S GR GR % POLYGON/CLOSED-SPLINE 0 SG NP 394 56 M 380 58 L 391 63 L 377 63 L 383 69 L 370 66 L 371 73 L 362 68 L 357 75 L 352 68 L 343 73 L 344 66 L 331 69 L 337 63 L 323 63 L 334 58 L 320 56 L 334 54 L 323 49 L 337 49 L 331 43 L 344 46 L 343 39 L 352 44 L 357 37 L 362 44 L 371 39 L 370 46 L 383 43 L 377 49 L 391 49 L 380 54 L CP GS GR GS S GR % TEXT NP 0 SG GS 1 W 357 61 M GS GS 0 /Courier-Bold FF [12 0 0 -12 0 0] MS (crash) TGSW AD GR 2 DI NE 0 RM 0 SG /Courier-Bold FF [12 0 0 -12 0 0] MS (crash) SH GR GR % ARC GS 233 61 TR [1.000 0.000 0.000 1.000 0 0] CO 233 NE 61 NE TR 0 SG GS GS NP 233 61 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 245 65 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 245 65 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 62 64 M 0 985 atan DU cos 8.000 MU 1047 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 1047 64 8.000 3.000 985 0 TGAT 1 SG CP F 0 SG NP 1047 64 8.000 3.000 985 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 62 128 M 0 979 atan DU cos 8.000 MU 1041 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 1041 128 8.000 3.000 979 0 TGAT 1 SG CP F 0 SG NP 1041 128 8.000 3.000 979 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 62 192 M 0 979 atan DU cos 8.000 MU 1041 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 1041 192 8.000 3.000 979 0 TGAT 1 SG CP F 0 SG NP 1041 192 8.000 3.000 979 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 62 256 M 0 979 atan DU cos 8.000 MU 1041 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 1041 256 8.000 3.000 979 0 TGAT 1 SG CP F 0 SG NP 1041 256 8.000 3.000 979 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 62 320 M 0 973 atan DU cos 8.000 MU 1035 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 1035 320 8.000 3.000 973 0 TGAT 1 SG CP F 0 SG NP 1035 320 8.000 3.000 973 0 TGAT CP F GR % TEXT NP 0 SG GS 1 W 382 97 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewRound) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 403 129 M 64 24 atan DU cos 8.000 MU 427 exch SU exch sin 8.000 MU 193 exch SU L TGSM 1 W S GR GS TGSM NP 427 193 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 427 193 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 403 129 M 192 24 atan DU cos 8.000 MU 427 exch SU exch sin 8.000 MU 321 exch SU L TGSM 1 W S GR GS TGSM NP 427 321 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 427 321 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 403 133 M 124 28 atan DU cos 8.000 MU 431 exch SU exch sin 8.000 MU 257 exch SU L TGSM 1 W S GR GS TGSM NP 431 257 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 431 257 8.000 3.000 28 124 TGAT CP F GR % ARC GS 415 125 TR [1.000 0.000 0.000 1.000 0 0] CO 415 NE 125 NE TR 0 SG GS GS NP 415 125 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 427 129 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 427 129 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 463 192 M -64 32 atan DU cos 8.000 MU 495 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 495 128 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 495 128 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 463 256 M -128 36 atan DU cos 8.000 MU 499 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 499 128 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 499 128 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 463 320 M -192 40 atan DU cos 8.000 MU 503 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 503 128 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 503 128 8.000 3.000 40 -192 TGAT CP F GR % TEXT NP 0 SG GS 1 W 447 339 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Estimate) SH GR GR % ARC GS 491 125 TR [1.000 0.000 0.000 1.000 0 0] CO 491 NE 125 NE TR 0 SG GS GS NP 491 125 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 503 129 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 503 129 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 548 128 M 64 24 atan DU cos 8.000 MU 572 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 572 192 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 572 192 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 548 128 M 192 24 atan DU cos 8.000 MU 572 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 572 320 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 572 320 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 548 132 M 124 28 atan DU cos 8.000 MU 576 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 576 256 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 576 256 8.000 3.000 28 124 TGAT CP F GR % ARC GS 560 124 TR [1.000 0.000 0.000 1.000 0 0] CO 560 NE 124 NE TR 0 SG GS GS NP 560 124 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 572 128 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 572 128 8.000 3.000 -6 29 TGAT CP F GR GR % TEXT NP 0 SG GS 1 W 524 96 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewEstimate) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 609 192 M -64 32 atan DU cos 8.000 MU 641 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 641 128 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 641 128 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 609 256 M -128 36 atan DU cos 8.000 MU 645 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 645 128 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 645 128 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 609 320 M -192 40 atan DU cos 8.000 MU 649 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 649 128 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 649 128 8.000 3.000 40 -192 TGAT CP F GR % ARC GS 637 125 TR [1.000 0.000 0.000 1.000 0 0] CO 637 NE 125 NE TR 0 SG GS GS NP 637 125 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 649 129 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 649 129 8.000 3.000 -6 29 TGAT CP F GR GR % TEXT NP 0 SG NP 585 236 M 596 236 L 596 254 L 585 254 L CP 1 SG F 0 SG GS 1 W 586 251 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 591 235 10 4 TGEL F GS GS NP 591 235 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 581 234 M 581 250 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 601 234 M 601 249 L TGSM 1 W S GR % ARC 0 SG GS GS NP 591 247 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 585 300 M 596 300 L 596 318 L 585 318 L CP 1 SG F 0 SG GS 1 W 586 315 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 591 299 10 4 TGEL F GS GS NP 591 299 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 581 298 M 581 314 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 601 298 M 601 313 L TGSM 1 W S GR % ARC 0 SG GS GS NP 591 311 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 585 172 M 596 172 L 596 190 L 585 190 L CP 1 SG F 0 SG GS 1 W 586 187 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 591 171 10 4 TGEL F GS GS NP 591 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 581 170 M 581 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 601 170 M 601 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 591 183 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG GS 1 W 805 32 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewRound) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 825 64 M 64 24 atan DU cos 8.000 MU 849 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 849 128 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 849 128 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 825 64 M 256 16 atan DU cos 8.000 MU 841 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 841 320 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 841 320 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 825 64 M 192 24 atan DU cos 8.000 MU 849 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 849 256 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 849 256 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 825 68 M 124 28 atan DU cos 8.000 MU 853 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 853 192 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 853 192 8.000 3.000 28 124 TGAT CP F GR % ARC GS 837 60 TR [1.000 0.000 0.000 1.000 0 0] CO 837 NE 60 NE TR 0 SG GS GS NP 837 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 849 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 849 64 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 894 129 M -64 32 atan DU cos 8.000 MU 926 exch SU exch sin 8.000 MU 65 exch SU L TGSM 1 W S GR GS TGSM NP 926 65 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 926 65 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 894 193 M -128 36 atan DU cos 8.000 MU 930 exch SU exch sin 8.000 MU 65 exch SU L TGSM 1 W S GR GS TGSM NP 930 65 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 930 65 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 894 257 M -192 40 atan DU cos 8.000 MU 934 exch SU exch sin 8.000 MU 65 exch SU L TGSM 1 W S GR GS TGSM NP 934 65 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 934 65 8.000 3.000 40 -192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 894 321 M -256 44 atan DU cos 8.000 MU 938 exch SU exch sin 8.000 MU 65 exch SU L TGSM 1 W S GR GS TGSM NP 938 65 8.000 3.000 44 -256 TGAT 1 SG CP F 0 SG NP 938 65 8.000 3.000 44 -256 TGAT CP F GR % TEXT NP 0 SG NP 860 237 M 870 237 L 870 254 L 860 254 L CP 1 SG F 0 SG GS 1 W 861 250 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (R) SH GR GR % OVAL 0 SG GS GS NP 865 234 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 855 233 M 855 249 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 875 233 M 875 248 L TGSM 1 W S GR % ARC 0 SG GS GS NP 865 246 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 862 174 M 872 174 L 872 191 L 862 191 L CP 1 SG F 0 SG GS 1 W 863 187 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (R) SH GR GR % OVAL 0 SG GS GS NP 867 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 857 170 M 857 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 877 170 M 877 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 867 183 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 860 110 M 870 110 L 870 127 L 860 127 L CP 1 SG F 0 SG GS 1 W 861 123 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (R) SH GR GR % OVAL 0 SG GS GS NP 865 107 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 855 106 M 855 122 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 875 106 M 875 121 L TGSM 1 W S GR % ARC 0 SG GS GS NP 865 119 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 520 108 M 531 108 L 531 126 L 520 126 L CP 1 SG F 0 SG GS 1 W 521 123 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 526 107 10 4 TGEL F GS GS NP 526 107 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 516 106 M 516 122 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 536 106 M 536 121 L TGSM 1 W S GR % ARC 0 SG GS GS NP 526 119 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 381 109 M 392 109 L 392 127 L 381 127 L CP 1 SG F 0 SG GS 1 W 382 124 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 387 108 10 4 TGEL F GS GS NP 387 108 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 377 107 M 377 123 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 397 107 M 397 122 L TGSM 1 W S GR % ARC 0 SG GS GS NP 387 120 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 801 44 M 812 44 L 812 62 L 801 62 L CP 1 SG F 0 SG GS 1 W 802 59 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 807 43 10 4 TGEL F GS GS NP 807 43 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 797 42 M 797 58 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 817 42 M 817 57 L TGSM 1 W S GR % ARC 0 SG GS GS NP 807 55 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG GS 1 W 669 57 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (recover) SH GR GR % BOX 0 SG GS 10 SM GS NP 664 45 M 734 45 L 734 61 L 664 61 L CP S GR GR % TEXT NP 0 SG NP 259 46 M 270 46 L 270 64 L 259 64 L CP 1 SG F 0 SG GS 1 W 260 61 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 265 45 10 4 TGEL F GS GS NP 265 45 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 255 44 M 255 60 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 275 44 M 275 59 L TGSM 1 W S GR % ARC 0 SG GS GS NP 265 57 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 381 237 M 392 237 L 392 255 L 381 255 L CP 1 SG F 0 SG GS 1 W 382 252 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 387 236 10 4 TGEL F GS GS NP 387 236 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 377 235 M 377 251 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 397 235 M 397 250 L TGSM 1 W S GR % ARC 0 SG GS GS NP 387 248 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 381 301 M 392 301 L 392 319 L 381 319 L CP 1 SG F 0 SG GS 1 W 382 316 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 387 300 10 4 TGEL F GS GS NP 387 300 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 377 299 M 377 315 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 397 299 M 397 314 L TGSM 1 W S GR % ARC 0 SG GS GS NP 387 312 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 381 173 M 392 173 L 392 191 L 381 191 L CP 1 SG F 0 SG GS 1 W 382 188 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 387 172 10 4 TGEL F GS GS NP 387 172 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 377 171 M 377 187 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 397 171 M 397 186 L TGSM 1 W S GR % ARC 0 SG GS GS NP 387 184 10 7 168 11 TGAR S GR GR GR tgifsavedpage restore end showpage %MatchingCreationDate: Sun Aug 6 15:53:31 2000 %%EndDocument @endspecial 1031 1134 a Fx(Figure)27 b(7:)36 b([A)n(CT00a)o(])27 b(with)h(a)g(crashed)e(co)r(ordinator)0 1396 y(as)33 b(sho)n(wn)h(in)g(Figure)g(9.)56 b(F)-7 b(or)33 b(case)g(\(i\),)k Fq(p)1386 1408 y Fu(1)1423 1396 y Fx(,)f(whic)n(h)e(is)g(prop)r(osee)e (and)i(leader,)h(crashes.)55 b(Since)34 b(no)g(other)g(pro)r(cess)0 1496 y(has)c(prop)r(osed,)f(no)h(pro)r(cess)f(tries)h(to)g(solv)n(e)f (consensus.)43 b(When)31 b Fq(p)2144 1508 y Fu(1)2211 1496 y Fx(reco)n(v)n(ers,)d Fq(p)2596 1508 y Fu(1)2663 1496 y Fx(retries)i(to)g(solv)n(e)e(consensus,)i(pre-)0 1596 y(commits)i(and)g(then)h(decides)f(the)h(v)-5 b(alue.)50 b(Note)32 b(that)h Fq(p)1828 1608 y Fu(1)1897 1596 y Fx(prop)r(osed)e(another)h(v)-5 b(alue)32 b(that)g(it)h(prop)r(osed)e (in)h(its)h(\014rst)0 1695 y(trial.)40 b(F)-7 b(or)28 b(case)g(\(ii\),)i(the)f(co)r(ordinator)d(crashes.)39 b(Therefore,)28 b Fq(p)2062 1707 y Fu(3)2128 1695 y Fx(whic)n(h)h(is)f (prop)r(osee)g(susp)r(ects)g Fq(p)3166 1707 y Fu(1)3232 1695 y Fx(and)h(then)g(sends)0 1795 y(its)36 b(prop)r(osition)e(to)h (the)h(new)g(leader.)59 b(The)36 b(new)f(leader)g(returns)g(its)g (pre-committed)g(v)-5 b(alue)36 b(to)f Fq(p)3275 1807 y Fu(3)3312 1795 y Fx(,)j(whic)n(h)d(then)0 1894 y(decides.)i(When)28 b Fq(p)603 1906 y Fu(1)668 1894 y Fx(reco)n(v)n(ers,)c Fq(p)1049 1906 y Fu(1)1114 1894 y Fx(rein)n(v)n(ok)n(es)h Fq(pr)r(opose)p Fx(\(\),)k(pre-commits)e(and)g(then)h(decides.)379 3073 y @beginspecial 1 @llx 647 @lly 559 @urx 843 @ury 3627 @rwi @setspecial %%BeginDocument: OpenConsCrashProposee.eps /tgifdict 58 dict def tgifdict begin /tgifellipsedict 6 dict def tgifellipsedict /mtrx matrix put /TGEL % tgifellipse { tgifellipsedict begin /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /tgifarcdict 8 dict def tgifarcdict /mtrx matrix put /TGAN % tgifarcn { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix end } def /TGAR % tgifarc { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arcn savematrix setmatrix end } def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11.695 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 63 16 M 48 16 atan DU cos 8.000 MU 79 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 79 64 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 79 64 8.000 3.000 16 48 TGAT CP F GR % TEXT NP 0 SG GS 1 W 113 32 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewRound) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 207 128 M -64 32 atan DU cos 8.000 MU 239 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 239 64 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 239 64 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 207 192 M -128 36 atan DU cos 8.000 MU 243 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 243 64 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 243 64 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 207 256 M -192 40 atan DU cos 8.000 MU 247 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 247 64 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 247 64 8.000 3.000 40 -192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 207 320 M -256 44 atan DU cos 8.000 MU 251 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 251 64 8.000 3.000 44 -256 TGAT 1 SG CP F 0 SG NP 251 64 8.000 3.000 44 -256 TGAT CP F GR % TEXT NP 0 SG GS 1 W 183 340 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Estimate) SH GR GR % TEXT NP 0 SG GS 1 W 253 57 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewEstimate) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 128 64 M 64 24 atan DU cos 8.000 MU 152 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 152 128 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 152 128 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 128 64 M 256 16 atan DU cos 8.000 MU 144 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 144 320 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 144 320 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 128 64 M 192 24 atan DU cos 8.000 MU 152 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 152 256 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 152 256 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 128 68 M 124 28 atan DU cos 8.000 MU 156 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 156 192 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 156 192 8.000 3.000 28 124 TGAT CP F GR % ARC GS 140 60 TR [1.000 0.000 0.000 1.000 0 0] CO 140 NE 60 NE TR 0 SG GS GS NP 140 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 152 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 152 64 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 272 64 M 64 24 atan DU cos 8.000 MU 296 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 296 128 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 296 128 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 272 64 M 256 16 atan DU cos 8.000 MU 288 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 288 320 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 288 320 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 272 64 M 192 24 atan DU cos 8.000 MU 296 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 296 256 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 296 256 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 272 68 M 124 28 atan DU cos 8.000 MU 300 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 300 192 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 300 192 8.000 3.000 28 124 TGAT CP F GR % TEXT NP 0 SG NP 311 236 M 322 236 L 322 256 L 311 256 L CP 1 SG F 0 SG GS 1 W 312 252 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 317 236 10 4 TGEL F GS GS NP 317 236 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 307 235 M 307 251 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 327 235 M 327 250 L TGSM 1 W S GR % ARC 0 SG GS GS NP 317 248 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 311 299 M 322 299 L 322 319 L 311 319 L CP 1 SG F 0 SG GS 1 W 312 315 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 317 299 10 4 TGEL F GS GS NP 317 299 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 307 298 M 307 314 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 327 298 M 327 313 L TGSM 1 W S GR % ARC 0 SG GS GS NP 317 311 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 311 171 M 322 171 L 322 191 L 311 191 L CP 1 SG F 0 SG GS 1 W 312 187 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 317 171 10 4 TGEL F GS GS NP 317 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 307 170 M 307 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 327 170 M 327 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 317 183 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 311 108 M 322 108 L 322 128 L 311 128 L CP 1 SG F 0 SG GS 1 W 312 124 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 317 108 10 4 TGEL F GS GS NP 317 108 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 307 107 M 307 123 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 327 107 M 327 122 L TGSM 1 W S GR % ARC 0 SG GS GS NP 317 120 10 7 168 11 TGAR S GR GR % ARC GS 234 60 TR [1.000 0.000 0.000 1.000 0 0] CO 234 NE 60 NE TR 0 SG GS GS NP 234 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 246 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 246 64 8.000 3.000 -6 29 TGAT CP F GR GR % TEXT NP 0 SG GS 1 W 5 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (propose\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS (\)) SH GR GR % TEXT NP 0 SG NP 172 234 M 183 234 L 183 254 L 172 254 L CP 1 SG F 0 SG GS 1 W 173 250 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 178 234 10 4 TGEL F GS GS NP 178 234 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 168 233 M 168 249 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 188 233 M 188 248 L TGSM 1 W S GR % ARC 0 SG GS GS NP 178 246 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 172 297 M 183 297 L 183 317 L 172 317 L CP 1 SG F 0 SG GS 1 W 173 313 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 178 297 10 4 TGEL F GS GS NP 178 297 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 168 296 M 168 312 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 188 296 M 188 311 L TGSM 1 W S GR % ARC 0 SG GS GS NP 178 309 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 172 169 M 183 169 L 183 189 L 172 189 L CP 1 SG F 0 SG GS 1 W 173 185 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 178 169 10 4 TGEL F GS GS NP 178 169 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 168 168 M 168 184 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 188 168 M 188 183 L TGSM 1 W S GR % ARC 0 SG GS GS NP 178 181 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 172 106 M 183 106 L 183 126 L 172 126 L CP 1 SG F 0 SG GS 1 W 173 122 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 178 106 10 4 TGEL F GS GS NP 178 106 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 168 105 M 168 121 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 188 105 M 188 120 L TGSM 1 W S GR % ARC 0 SG GS GS NP 178 118 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 173 43 M 184 43 L 184 63 L 173 63 L CP 1 SG F 0 SG GS 1 W 174 59 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 179 43 10 4 TGEL F GS GS NP 179 43 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 169 42 M 169 58 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 189 42 M 189 57 L TGSM 1 W S GR % ARC 0 SG GS GS NP 179 55 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 922 43 M 933 43 L 933 63 L 922 63 L CP 1 SG F 0 SG GS 1 W 923 59 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 928 43 10 4 TGEL F GS GS NP 928 43 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 918 42 M 918 58 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 938 42 M 938 57 L TGSM 1 W S GR % ARC 0 SG GS GS NP 928 55 10 7 168 11 TGAR S GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 856 17 M 49 -22 atan DU cos 8.000 MU exch sin 8.000 MU RM 834 66 L TGSM 1 W S [] 0 SD GR GS TGSM NP 856 17 8.000 3.000 22 -49 TGAT 1 SG CP F 0 SG NP 856 17 8.000 3.000 22 -49 TGAT CP F GR % TEXT NP 0 SG GS 1 W 835 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS (') SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 885 18 M 48 16 atan DU cos 8.000 MU 901 exch SU exch sin 8.000 MU 66 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 901 66 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 901 66 8.000 3.000 16 48 TGAT CP F GR % TEXT NP 0 SG GS 1 W 870 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (commit\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS ('\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 977 15 M 49 -22 atan DU cos 8.000 MU exch sin 8.000 MU RM 955 64 L TGSM 1 W S [] 0 SD GR GS TGSM NP 977 15 8.000 3.000 22 -49 TGAT 1 SG CP F 0 SG NP 977 15 8.000 3.000 22 -49 TGAT CP F GR % TEXT NP 0 SG GS 1 W 976 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (ok) SH GR GR % POLYGON/CLOSED-SPLINE 0 SG NP 425 45 M 411 47 L 422 52 L 408 52 L 414 58 L 401 55 L 402 62 L 393 57 L 388 64 L 383 57 L 374 62 L 375 55 L 362 58 L 368 52 L 354 52 L 365 47 L 351 45 L 365 43 L 354 38 L 368 38 L 362 32 L 375 35 L 374 28 L 383 33 L 388 26 L 393 33 L 402 28 L 401 35 L 414 32 L 408 38 L 422 38 L 411 43 L CP GS GR GS S GR % TEXT NP 0 SG GS 1 W 388 50 M GS GS 0 /Courier-Bold FF [12 0 0 -12 0 0] MS (crash) TGSW AD GR 2 DI NE 0 RM 0 SG /Courier-Bold FF [12 0 0 -12 0 0] MS (crash) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 60 64 M 0 907 atan DU cos 8.000 MU 967 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 967 64 8.000 3.000 907 0 TGAT 1 SG CP F 0 SG NP 967 64 8.000 3.000 907 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 60 128 M 0 907 atan DU cos 8.000 MU 967 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 967 128 8.000 3.000 907 0 TGAT 1 SG CP F 0 SG NP 967 128 8.000 3.000 907 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 60 192 M 0 907 atan DU cos 8.000 MU 967 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 967 192 8.000 3.000 907 0 TGAT 1 SG CP F 0 SG NP 967 192 8.000 3.000 907 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 60 256 M 0 907 atan DU cos 8.000 MU 967 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 967 256 8.000 3.000 907 0 TGAT 1 SG CP F 0 SG NP 967 256 8.000 3.000 907 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 60 320 M 0 907 atan DU cos 8.000 MU 967 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 967 320 8.000 3.000 907 0 TGAT 1 SG CP F 0 SG NP 967 320 8.000 3.000 907 0 TGAT CP F GR % TEXT NP 0 SG GS 31 49 TR [1.055 0.000 0.000 1.000 0 0] CO 31 NE 49 NE TR GR GS 1 W 31 49 TR [1.055 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 113 TR [1.055 0.000 0.000 1.000 0 0] CO 31 NE 113 NE TR GR GS 1 W 31 113 TR [1.055 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 241 TR [1.055 0.000 0.000 1.000 0 0] CO 31 NE 241 NE TR GR GS 1 W 31 241 TR [1.055 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (4) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (4) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 305 TR [1.055 0.000 0.000 1.000 0 0] CO 31 NE 305 NE TR GR GS 1 W 31 305 TR [1.055 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (5) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (5) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 177 TR [1.055 0.000 0.000 1.000 0 0] CO 31 NE 177 NE TR GR GS 1 W 31 177 TR [1.055 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (3) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 539 16 M 48 16 atan DU cos 8.000 MU 555 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 555 64 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 555 64 8.000 3.000 16 48 TGAT CP F GR % TEXT NP 0 SG GS 1 W 475 56 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (recover) SH GR GR % BOX 0 SG GS 10 SM GS NP 470 44 M 540 44 L 540 60 L 470 60 L CP S GR GR % TEXT NP 0 SG GS 1 W 560 32 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewRound) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 654 128 M -64 32 atan DU cos 8.000 MU 686 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 686 64 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 686 64 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 654 192 M -128 36 atan DU cos 8.000 MU 690 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 690 64 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 690 64 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 654 256 M -192 40 atan DU cos 8.000 MU 694 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 694 64 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 694 64 8.000 3.000 40 -192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 654 320 M -256 44 atan DU cos 8.000 MU 698 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 698 64 8.000 3.000 44 -256 TGAT 1 SG CP F 0 SG NP 698 64 8.000 3.000 44 -256 TGAT CP F GR % TEXT NP 0 SG GS 1 W 630 340 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Estimate) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 575 64 M 64 24 atan DU cos 8.000 MU 599 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 599 128 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 599 128 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 575 64 M 256 16 atan DU cos 8.000 MU 591 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 591 320 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 591 320 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 575 64 M 192 24 atan DU cos 8.000 MU 599 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 599 256 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 599 256 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 575 68 M 124 28 atan DU cos 8.000 MU 603 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 603 192 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 603 192 8.000 3.000 28 124 TGAT CP F GR % ARC GS 587 60 TR [1.000 0.000 0.000 1.000 0 0] CO 587 NE 60 NE TR 0 SG GS GS NP 587 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 599 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 599 64 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 719 64 M 64 24 atan DU cos 8.000 MU 743 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 743 128 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 743 128 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 719 64 M 256 16 atan DU cos 8.000 MU 735 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 735 320 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 735 320 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 719 64 M 192 24 atan DU cos 8.000 MU 743 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 743 256 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 743 256 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 719 68 M 124 28 atan DU cos 8.000 MU 747 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 747 192 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 747 192 8.000 3.000 28 124 TGAT CP F GR % TEXT NP 0 SG NP 758 236 M 769 236 L 769 256 L 758 256 L CP 1 SG F 0 SG GS 1 W 759 252 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 764 236 10 4 TGEL F GS GS NP 764 236 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 754 235 M 754 251 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 774 235 M 774 250 L TGSM 1 W S GR % ARC 0 SG GS GS NP 764 248 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 758 299 M 769 299 L 769 319 L 758 319 L CP 1 SG F 0 SG GS 1 W 759 315 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 764 299 10 4 TGEL F GS GS NP 764 299 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 754 298 M 754 314 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 774 298 M 774 313 L TGSM 1 W S GR % ARC 0 SG GS GS NP 764 311 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 758 171 M 769 171 L 769 191 L 758 191 L CP 1 SG F 0 SG GS 1 W 759 187 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 764 171 10 4 TGEL F GS GS NP 764 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 754 170 M 754 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 774 170 M 774 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 764 183 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 758 108 M 769 108 L 769 128 L 758 128 L CP 1 SG F 0 SG GS 1 W 759 124 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 764 108 10 4 TGEL F GS GS NP 764 108 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 754 107 M 754 123 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 774 107 M 774 122 L TGSM 1 W S GR % ARC 0 SG GS GS NP 764 120 10 7 168 11 TGAR S GR GR % ARC GS 681 60 TR [1.000 0.000 0.000 1.000 0 0] CO 681 NE 60 NE TR 0 SG GS GS NP 681 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 693 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 693 64 8.000 3.000 -6 29 TGAT CP F GR GR % TEXT NP 0 SG NP 619 234 M 630 234 L 630 254 L 619 254 L CP 1 SG F 0 SG GS 1 W 620 250 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 625 234 10 4 TGEL F GS GS NP 625 234 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 615 233 M 615 249 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 635 233 M 635 248 L TGSM 1 W S GR % ARC 0 SG GS GS NP 625 246 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 619 297 M 630 297 L 630 317 L 619 317 L CP 1 SG F 0 SG GS 1 W 620 313 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 625 297 10 4 TGEL F GS GS NP 625 297 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 615 296 M 615 312 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 635 296 M 635 311 L TGSM 1 W S GR % ARC 0 SG GS GS NP 625 309 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 619 169 M 630 169 L 630 189 L 619 189 L CP 1 SG F 0 SG GS 1 W 620 185 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 625 169 10 4 TGEL F GS GS NP 625 169 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 615 168 M 615 184 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 635 168 M 635 183 L TGSM 1 W S GR % ARC 0 SG GS GS NP 625 181 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 619 106 M 630 106 L 630 126 L 619 126 L CP 1 SG F 0 SG GS 1 W 620 122 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 625 106 10 4 TGEL F GS GS NP 625 106 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 615 105 M 615 121 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 635 105 M 635 120 L TGSM 1 W S GR % ARC 0 SG GS GS NP 625 118 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 620 43 M 631 43 L 631 63 L 620 63 L CP 1 SG F 0 SG GS 1 W 621 59 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 626 43 10 4 TGEL F GS GS NP 626 43 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 616 42 M 616 58 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 636 42 M 636 57 L TGSM 1 W S GR % ARC 0 SG GS GS NP 626 55 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG GS 1 W 706 58 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewEstimate) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 787 127 M -64 32 atan DU cos 8.000 MU 819 exch SU exch sin 8.000 MU 63 exch SU L TGSM 1 W S GR GS TGSM NP 819 63 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 819 63 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 787 191 M -128 36 atan DU cos 8.000 MU 823 exch SU exch sin 8.000 MU 63 exch SU L TGSM 1 W S GR GS TGSM NP 823 63 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 823 63 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 787 255 M -192 40 atan DU cos 8.000 MU 827 exch SU exch sin 8.000 MU 63 exch SU L TGSM 1 W S GR GS TGSM NP 827 63 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 827 63 8.000 3.000 40 -192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 787 319 M -256 44 atan DU cos 8.000 MU 831 exch SU exch sin 8.000 MU 63 exch SU L TGSM 1 W S GR GS TGSM NP 831 63 8.000 3.000 44 -256 TGAT 1 SG CP F 0 SG NP 831 63 8.000 3.000 44 -256 TGAT CP F GR % TEXT NP 0 SG GS 1 W 779 339 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (AckNewEstimate) SH GR GR % TEXT NP 0 SG GS 1 W 446 17 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (propose\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS ('\)) SH GR GR GR tgifsavedpage restore end showpage %MatchingCreationDate: Wed Jan 3 12:54:42 2001 %%EndDocument @endspecial 969 3338 a(Figure)f(8:)36 b(Op)r(en)28 b(consensus)e(with) j(a)e(crashed)f(prop)r(osee)289 4561 y @beginspecial 0 @llx 647 @lly 591 @urx 843 @ury 3841 @rwi @setspecial %%BeginDocument: OpenConsCrashLeader.eps /tgifdict 58 dict def tgifdict begin /tgifellipsedict 6 dict def tgifellipsedict /mtrx matrix put /TGEL % tgifellipse { tgifellipsedict begin /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /tgifarcdict 8 dict def tgifarcdict /mtrx matrix put /TGAN % tgifarcn { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix end } def /TGAR % tgifarc { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arcn savematrix setmatrix end } def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11.695 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 63 16 M 48 16 atan DU cos 8.000 MU 79 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 79 64 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 79 64 8.000 3.000 16 48 TGAT CP F GR % TEXT NP 0 SG GS 1 W 113 32 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewRound) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 207 128 M -64 32 atan DU cos 8.000 MU 239 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 239 64 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 239 64 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 207 192 M -128 36 atan DU cos 8.000 MU 243 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 243 64 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 243 64 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 207 256 M -192 40 atan DU cos 8.000 MU 247 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 247 64 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 247 64 8.000 3.000 40 -192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 207 320 M -256 44 atan DU cos 8.000 MU 251 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 251 64 8.000 3.000 44 -256 TGAT 1 SG CP F 0 SG NP 251 64 8.000 3.000 44 -256 TGAT CP F GR % TEXT NP 0 SG GS 1 W 183 340 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Estimate) SH GR GR % TEXT NP 0 SG GS 1 W 253 57 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewEstimate) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 128 64 M 64 24 atan DU cos 8.000 MU 152 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 152 128 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 152 128 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 128 64 M 256 16 atan DU cos 8.000 MU 144 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 144 320 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 144 320 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 128 64 M 192 24 atan DU cos 8.000 MU 152 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 152 256 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 152 256 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 128 68 M 124 28 atan DU cos 8.000 MU 156 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 156 192 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 156 192 8.000 3.000 28 124 TGAT CP F GR % ARC GS 140 60 TR [1.000 0.000 0.000 1.000 0 0] CO 140 NE 60 NE TR 0 SG GS GS NP 140 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 152 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 152 64 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 272 64 M 64 24 atan DU cos 8.000 MU 296 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 296 128 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 296 128 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 272 64 M 256 16 atan DU cos 8.000 MU 288 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 288 320 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 288 320 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 272 64 M 192 24 atan DU cos 8.000 MU 296 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 296 256 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 296 256 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 272 68 M 124 28 atan DU cos 8.000 MU 300 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 300 192 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 300 192 8.000 3.000 28 124 TGAT CP F GR % TEXT NP 0 SG NP 311 236 M 322 236 L 322 256 L 311 256 L CP 1 SG F 0 SG GS 1 W 312 252 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 317 236 10 4 TGEL F GS GS NP 317 236 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 307 235 M 307 251 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 327 235 M 327 250 L TGSM 1 W S GR % ARC 0 SG GS GS NP 317 248 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 311 299 M 322 299 L 322 319 L 311 319 L CP 1 SG F 0 SG GS 1 W 312 315 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 317 299 10 4 TGEL F GS GS NP 317 299 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 307 298 M 307 314 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 327 298 M 327 313 L TGSM 1 W S GR % ARC 0 SG GS GS NP 317 311 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 311 171 M 322 171 L 322 191 L 311 191 L CP 1 SG F 0 SG GS 1 W 312 187 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 317 171 10 4 TGEL F GS GS NP 317 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 307 170 M 307 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 327 170 M 327 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 317 183 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 311 108 M 322 108 L 322 128 L 311 128 L CP 1 SG F 0 SG GS 1 W 312 124 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 317 108 10 4 TGEL F GS GS NP 317 108 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 307 107 M 307 123 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 327 107 M 327 122 L TGSM 1 W S GR % ARC 0 SG GS GS NP 317 120 10 7 168 11 TGAR S GR GR % ARC GS 234 60 TR [1.000 0.000 0.000 1.000 0 0] CO 234 NE 60 NE TR 0 SG GS GS NP 234 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 246 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 246 64 8.000 3.000 -6 29 TGAT CP F GR GR % TEXT NP 0 SG GS 1 W 5 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (propose\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS (\)) SH GR GR % TEXT NP 0 SG NP 172 234 M 183 234 L 183 254 L 172 254 L CP 1 SG F 0 SG GS 1 W 173 250 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 178 234 10 4 TGEL F GS GS NP 178 234 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 168 233 M 168 249 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 188 233 M 188 248 L TGSM 1 W S GR % ARC 0 SG GS GS NP 178 246 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 172 297 M 183 297 L 183 317 L 172 317 L CP 1 SG F 0 SG GS 1 W 173 313 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 178 297 10 4 TGEL F GS GS NP 178 297 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 168 296 M 168 312 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 188 296 M 188 311 L TGSM 1 W S GR % ARC 0 SG GS GS NP 178 309 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 172 169 M 183 169 L 183 189 L 172 189 L CP 1 SG F 0 SG GS 1 W 173 185 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 178 169 10 4 TGEL F GS GS NP 178 169 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 168 168 M 168 184 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 188 168 M 188 183 L TGSM 1 W S GR % ARC 0 SG GS GS NP 178 181 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 172 106 M 183 106 L 183 126 L 172 126 L CP 1 SG F 0 SG GS 1 W 173 122 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 178 106 10 4 TGEL F GS GS NP 178 106 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 168 105 M 168 121 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 188 105 M 188 120 L TGSM 1 W S GR % ARC 0 SG GS GS NP 178 118 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 173 43 M 184 43 L 184 63 L 173 63 L CP 1 SG F 0 SG GS 1 W 174 59 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 179 43 10 4 TGEL F GS GS NP 179 43 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 169 42 M 169 58 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 189 42 M 189 57 L TGSM 1 W S GR % ARC 0 SG GS GS NP 179 55 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 991 43 M 1002 43 L 1002 63 L 991 63 L CP 1 SG F 0 SG GS 1 W 992 59 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 997 43 10 4 TGEL F GS GS NP 997 43 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 987 42 M 987 58 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 1007 42 M 1007 57 L TGSM 1 W S GR % ARC 0 SG GS GS NP 997 55 10 7 168 11 TGAR S GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 933 18 M 49 -22 atan DU cos 8.000 MU exch sin 8.000 MU RM 911 67 L TGSM 1 W S [] 0 SD GR GS TGSM NP 933 18 8.000 3.000 22 -49 TGAT 1 SG CP F 0 SG NP 933 18 8.000 3.000 22 -49 TGAT CP F GR % TEXT NP 0 SG GS 1 W 913 17 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 828 162 M 29 11 atan DU cos 8.000 MU 839 exch SU exch sin 8.000 MU 191 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 839 191 8.000 3.000 11 29 TGAT 1 SG CP F 0 SG NP 839 191 8.000 3.000 11 29 TGAT CP F GR % TEXT NP 0 SG GS 1 W 800 160 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (commit\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS (\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 896 153 M 39 -16 atan DU cos 8.000 MU exch sin 8.000 MU RM 880 192 L TGSM 1 W S [] 0 SD GR GS TGSM NP 896 153 8.000 3.000 16 -39 TGAT 1 SG CP F 0 SG NP 896 153 8.000 3.000 16 -39 TGAT CP F GR % TEXT NP 0 SG GS 1 W 886 149 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (ok) SH GR GR % POLYGON/CLOSED-SPLINE 0 SG NP 425 45 M 411 47 L 422 52 L 408 52 L 414 58 L 401 55 L 402 62 L 393 57 L 388 64 L 383 57 L 374 62 L 375 55 L 362 58 L 368 52 L 354 52 L 365 47 L 351 45 L 365 43 L 354 38 L 368 38 L 362 32 L 375 35 L 374 28 L 383 33 L 388 26 L 393 33 L 402 28 L 401 35 L 414 32 L 408 38 L 422 38 L 411 43 L CP GS GR GS S GR % TEXT NP 0 SG GS 1 W 388 50 M GS GS 0 /Courier-Bold FF [12 0 0 -12 0 0] MS (crash) TGSW AD GR 2 DI NE 0 RM 0 SG /Courier-Bold FF [12 0 0 -12 0 0] MS (crash) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 60 64 M 0 981 atan DU cos 8.000 MU 1041 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 1041 64 8.000 3.000 981 0 TGAT 1 SG CP F 0 SG NP 1041 64 8.000 3.000 981 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 60 128 M 0 981 atan DU cos 8.000 MU 1041 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 1041 128 8.000 3.000 981 0 TGAT 1 SG CP F 0 SG NP 1041 128 8.000 3.000 981 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 60 192 M 0 981 atan DU cos 8.000 MU 1041 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 1041 192 8.000 3.000 981 0 TGAT 1 SG CP F 0 SG NP 1041 192 8.000 3.000 981 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 60 256 M 0 981 atan DU cos 8.000 MU 1041 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 1041 256 8.000 3.000 981 0 TGAT 1 SG CP F 0 SG NP 1041 256 8.000 3.000 981 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 60 320 M 0 981 atan DU cos 8.000 MU 1041 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 1041 320 8.000 3.000 981 0 TGAT 1 SG CP F 0 SG NP 1041 320 8.000 3.000 981 0 TGAT CP F GR % TEXT NP 0 SG GS 31 49 TR [1.055 0.000 0.000 1.000 0 0] CO 31 NE 49 NE TR GR GS 1 W 31 49 TR [1.055 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 113 TR [1.055 0.000 0.000 1.000 0 0] CO 31 NE 113 NE TR GR GS 1 W 31 113 TR [1.055 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 241 TR [1.055 0.000 0.000 1.000 0 0] CO 31 NE 241 NE TR GR GS 1 W 31 241 TR [1.055 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (4) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (4) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 305 TR [1.055 0.000 0.000 1.000 0 0] CO 31 NE 305 NE TR GR GS 1 W 31 305 TR [1.055 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (5) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (5) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 31 177 TR [1.055 0.000 0.000 1.000 0 0] CO 31 NE 177 NE TR GR GS 1 W 31 177 TR [1.055 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (3) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 737 56 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (recover) SH GR GR % BOX 0 SG GS 10 SM GS NP 732 44 M 802 44 L 802 60 L 732 60 L CP S GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 62 144 M 48 16 atan DU cos 8.000 MU 78 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 78 192 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 78 192 8.000 3.000 16 48 TGAT CP F GR % TEXT NP 0 SG GS 1 W 4 142 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (propose\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (3) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS (\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 85 193 M -129 37 atan DU cos 8.000 MU 122 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 122 64 8.000 3.000 37 -129 TGAT 1 SG CP F 0 SG NP 122 64 8.000 3.000 37 -129 TGAT CP F GR % TEXT NP 0 SG GS 1 W 75 213 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewMsg) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 398 192 M -64 32 atan DU cos 8.000 MU 430 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 430 128 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 430 128 8.000 3.000 32 -64 TGAT CP F GR % TEXT NP 0 SG GS 1 W 377 211 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewMsg) SH GR GR % TEXT NP 0 SG GS 1 W 445 96 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewRound) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 466 128 M 64 24 atan DU cos 8.000 MU 490 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 490 192 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 490 192 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 466 128 M 192 24 atan DU cos 8.000 MU 490 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 490 320 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 490 320 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 466 132 M 124 28 atan DU cos 8.000 MU 494 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 494 256 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 494 256 8.000 3.000 28 124 TGAT CP F GR % ARC GS 478 124 TR [1.000 0.000 0.000 1.000 0 0] CO 478 NE 124 NE TR 0 SG GS GS NP 478 124 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 490 128 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 490 128 8.000 3.000 -6 29 TGAT CP F GR GR % TEXT NP 0 SG NP 510 234 M 521 234 L 521 254 L 510 254 L CP 1 SG F 0 SG GS 1 W 511 250 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 516 234 10 4 TGEL F GS GS NP 516 234 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 506 233 M 506 249 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 526 233 M 526 248 L TGSM 1 W S GR % ARC 0 SG GS GS NP 516 246 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 510 297 M 521 297 L 521 317 L 510 317 L CP 1 SG F 0 SG GS 1 W 511 313 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 516 297 10 4 TGEL F GS GS NP 516 297 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 506 296 M 506 312 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 526 296 M 526 311 L TGSM 1 W S GR % ARC 0 SG GS GS NP 516 309 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 510 169 M 521 169 L 521 189 L 510 189 L CP 1 SG F 0 SG GS 1 W 511 185 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 516 169 10 4 TGEL F GS GS NP 516 169 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 506 168 M 506 184 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 526 168 M 526 183 L TGSM 1 W S GR % ARC 0 SG GS GS NP 516 181 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 510 106 M 521 106 L 521 126 L 510 126 L CP 1 SG F 0 SG GS 1 W 511 122 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 516 106 10 4 TGEL F GS GS NP 516 106 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 506 105 M 506 121 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 526 105 M 526 120 L TGSM 1 W S GR % ARC 0 SG GS GS NP 516 118 10 7 168 11 TGAR S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 546 192 M -64 32 atan DU cos 8.000 MU 578 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 578 128 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 578 128 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 546 256 M -128 36 atan DU cos 8.000 MU 582 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 582 128 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 582 128 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 546 320 M -192 40 atan DU cos 8.000 MU 586 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 586 128 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 586 128 8.000 3.000 40 -192 TGAT CP F GR % TEXT NP 0 SG GS 1 W 522 339 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Estimate) SH GR GR % ARC GS 574 125 TR [1.000 0.000 0.000 1.000 0 0] CO 574 NE 125 NE TR 0 SG GS GS NP 574 125 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 586 129 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 586 129 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 625 128 M 64 24 atan DU cos 8.000 MU 649 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 649 192 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 649 192 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 625 128 M 192 24 atan DU cos 8.000 MU 649 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 649 320 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 649 320 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 625 132 M 124 28 atan DU cos 8.000 MU 653 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 653 256 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 653 256 8.000 3.000 28 124 TGAT CP F GR % ARC GS 637 124 TR [1.000 0.000 0.000 1.000 0 0] CO 637 NE 124 NE TR 0 SG GS GS NP 637 124 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 649 128 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 649 128 8.000 3.000 -6 29 TGAT CP F GR GR % TEXT NP 0 SG GS 1 W 589 96 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewEstimate) SH GR GR % TEXT NP 0 SG GS 1 W 661 337 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (AckNewEstimate) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 694 191 M -64 32 atan DU cos 8.000 MU 726 exch SU exch sin 8.000 MU 127 exch SU L TGSM 1 W S GR GS TGSM NP 726 127 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 726 127 8.000 3.000 32 -64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 694 255 M -128 36 atan DU cos 8.000 MU 730 exch SU exch sin 8.000 MU 127 exch SU L TGSM 1 W S GR GS TGSM NP 730 127 8.000 3.000 36 -128 TGAT 1 SG CP F 0 SG NP 730 127 8.000 3.000 36 -128 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 694 319 M -192 40 atan DU cos 8.000 MU 734 exch SU exch sin 8.000 MU 127 exch SU L TGSM 1 W S GR GS TGSM NP 734 127 8.000 3.000 40 -192 TGAT 1 SG CP F 0 SG NP 734 127 8.000 3.000 40 -192 TGAT CP F GR % ARC GS 722 124 TR [1.000 0.000 0.000 1.000 0 0] CO 722 NE 124 NE TR 0 SG GS GS NP 722 124 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 734 128 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 734 128 8.000 3.000 -6 29 TGAT CP F GR GR % TEXT NP 0 SG NP 666 236 M 677 236 L 677 256 L 666 256 L CP 1 SG F 0 SG GS 1 W 667 252 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 672 236 10 4 TGEL F GS GS NP 672 236 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 662 235 M 662 251 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 682 235 M 682 250 L TGSM 1 W S GR % ARC 0 SG GS GS NP 672 248 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 666 299 M 677 299 L 677 319 L 666 319 L CP 1 SG F 0 SG GS 1 W 667 315 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 672 299 10 4 TGEL F GS GS NP 672 299 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 662 298 M 662 314 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 682 298 M 682 313 L TGSM 1 W S GR % ARC 0 SG GS GS NP 672 311 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 666 171 M 677 171 L 677 191 L 666 191 L CP 1 SG F 0 SG GS 1 W 667 187 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 672 171 10 4 TGEL F GS GS NP 672 171 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 662 170 M 662 186 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 682 170 M 682 185 L TGSM 1 W S GR % ARC 0 SG GS GS NP 672 183 10 7 168 11 TGAR S GR GR % TEXT NP 0 SG NP 666 108 M 677 108 L 677 128 L 666 128 L CP 1 SG F 0 SG GS 1 W 667 124 M GS 0 SG /Courier-Bold FF [17 0 0 -17 0 0] MS (w) SH GR GR % OVAL 0 SG NP 672 108 10 4 TGEL F GS GS NP 672 108 10 4 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 662 107 M 662 123 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 682 107 M 682 122 L TGSM 1 W S GR % ARC 0 SG GS GS NP 672 120 10 7 168 11 TGAR S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 742 128 M 64 24 atan DU cos 8.000 MU 766 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 766 192 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 766 192 8.000 3.000 24 64 TGAT CP F GR % TEXT NP 0 SG GS 1 W 730 213 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (CommitOK) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 799 144 M 49 -17 atan DU cos 8.000 MU exch sin 8.000 MU RM 782 193 L TGSM 1 W S [] 0 SD GR GS TGSM NP 799 144 8.000 3.000 17 -49 TGAT 1 SG CP F 0 SG NP 799 144 8.000 3.000 17 -49 TGAT CP F GR % TEXT NP 0 SG GS 1 W 753 142 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (decide\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS (\)) SH GR GR % TEXT NP 0 SG GS 1 W 720 16 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (propose\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS (\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 811 15 M 48 16 atan DU cos 8.000 MU 827 exch SU exch sin 8.000 MU 63 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 827 63 8.000 3.000 16 48 TGAT 1 SG CP F 0 SG NP 827 63 8.000 3.000 16 48 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 836 63 M 64 24 atan DU cos 8.000 MU 860 exch SU exch sin 8.000 MU 127 exch SU L TGSM 1 W S GR GS TGSM NP 860 127 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 860 127 8.000 3.000 24 64 TGAT CP F GR % TEXT NP 0 SG GS 1 W 787 96 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (NewMsg) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 878 127 M -64 32 atan DU cos 8.000 MU 910 exch SU exch sin 8.000 MU 63 exch SU L TGSM 1 W S GR GS TGSM NP 910 63 8.000 3.000 32 -64 TGAT 1 SG CP F 0 SG NP 910 63 8.000 3.000 32 -64 TGAT CP F GR % TEXT NP 0 SG GS 1 W 900 103 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (CommitOK) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 957 26 M 36 17 atan DU cos 8.000 MU 974 exch SU exch sin 8.000 MU 62 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 974 62 8.000 3.000 17 36 TGAT 1 SG CP F 0 SG NP 974 62 8.000 3.000 17 36 TGAT CP F GR % TEXT NP 0 SG GS 1 W 936 23 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (commit\(v) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM 0 SG /Courier FF [14 0 0 -14 0 0] MS (\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 1031 24 M 39 -16 atan DU cos 8.000 MU exch sin 8.000 MU RM 1015 63 L TGSM 1 W S [] 0 SD GR GS TGSM NP 1031 24 8.000 3.000 16 -39 TGAT 1 SG CP F 0 SG NP 1031 24 8.000 3.000 16 -39 TGAT CP F GR % TEXT NP 0 SG GS 1 W 1032 23 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (ok) SH GR GR GR tgifsavedpage restore end showpage %MatchingCreationDate: Wed Jan 3 12:53:50 2001 %%EndDocument @endspecial 1018 4826 a(Figure)h(9:)37 b(Op)r(en)28 b(consensus)e(with)i(a)g(crashed)e(leader)0 5191 y Fw(5)135 b(Putting)45 b(Op)t(en)f(Consensus)h(T)-11 b(o)45 b(W)-11 b(ork:)60 b(T)-11 b(otal)45 b(Order)g(Broadcast)0 5420 y Fx(This)c(section)f(illustrates)h(the)g(e\013ectiv)n(e)g(use)g(of)g (op)r(en)g(consensus)f(to)g(build)i(mo)r(dular)e(y)n(et)h(e\016cien)n (t)g(agreemen)n(t)0 5519 y(algorithms.)67 b(W)-7 b(e)39 b(describ)r(e)f(a)g(total)f(order)g(broadcast)g(algorithm)g(using)h(op) r(en)g(consensus)f(and)h(then)h(pro)n(v)n(e)d(its)1848 5768 y(13)p eop %%Page: 14 14 14 13 bop 0 -67 a Fx(correctness.)34 b(W)-7 b(e)23 b(compare)f(then)i (the)f(p)r(erformance)f(of)h(our)g(algorithm)f(with)h(an)g(algorithm)f (based)h(on)g(a)f(traditional)0 33 y(consensus)27 b(abstraction.)0 312 y Fg(5.1)112 b(Sp)s(eci\014cation)0 513 y Fx(T)-7 b(otal)37 b(order)f(broadcast)g(is)i(a)f(comm)n(unication)g (abstraction)f(that)i(allo)n(ws)e(pro)r(cesses)h(to)g(broadcast)f(and)h (deliv)n(er)0 612 y(messages)26 b(in)j(suc)n(h)e(a)h(w)n(a)n(y)f(that)h (they)g(agree)f(on)h(b)r(oth)g(the)h(set)f(of)g(messages)e(they)i (deliv)n(er)f(and)h(the)h(order)d(in)j(whic)n(h)0 712 y(these)c(messages)e(are)g(deliv)n(ered.)36 b(W)-7 b(e)25 b(sp)r(ecify)g(the)g(underlying)f(abstraction,)g(in)h(a)f(crash-reco)n (v)n(ery)d(mo)r(del,)k(with)g(t)n(w)n(o)0 812 y(primitiv)n(es)i Fv(TO-Br)l(o)l(adc)l(ast)37 b Fx(and)27 b Fv(TO-Deliver)p Fx(.)38 b(These)27 b(primitiv)n(es)g(satisfy)g(the)h(follo)n(wing)f (prop)r(erties:)125 959 y Fy(V)-8 b(alidit)m(y)q Fx(:)34 b(F)-7 b(or)20 b(an)n(y)g(message)g Fq(m)p Fx(,)j(ev)n(ery)c(pro)r (cess)h(TO-Deliv)n(ers)g Fq(m)h Fx(at)g(most)g(once)f(and)h(only)g(if)h Fq(m)f Fx(w)n(as)f(previously)0 1058 y(TO-Broadcast)25 b(b)n(y)i Fv(sender)9 b Fx(\()p Fq(m)p Fx(\).)1062 1028 y Fu(10)125 1205 y Fy(Agreemen)m(t)p Fx(:)55 b(If)38 b(an)n(y)e(pro)r(cess)g(TO-Deliv)n(ers)g(a)h(message)e Fq(m)p Fx(,)40 b(then)e(all)f(correct)e(pro)r(cesses)h(ev)n(en)n (tually)g(TO-)0 1305 y(Deliv)n(er)27 b Fq(m)p Fx(.)125 1452 y Fy(T)-8 b(ermination)p Fx(:)38 b(If)29 b(a)g(pro)r(cess)e (TO-Broadcasts)f(a)i(message)g Fq(m)g Fx(and)h(then)g(do)r(es)g(not)f (crash,)g(it)i(ev)n(en)n(tually)d(TO-)0 1551 y(Deliv)n(ers)g Fq(m)p Fx(.)125 1698 y Fy(T)-8 b(otal)25 b(Order)p Fx(:)34 b(Let)21 b Fq(p)854 1710 y Fp(i)903 1698 y Fx(and)h Fq(p)1101 1710 y Fp(j)1157 1698 y Fx(b)r(e)g(an)n(y)f(t)n(w)n(o)f(pro)r(cesses)g (that)i(TO-Deliv)n(er)e(some)h(message)f Fq(m)p Fx(.)35 b(If)22 b Fq(p)3288 1710 y Fp(i)3337 1698 y Fx(TO-Deliv)n(ers)0 1798 y(some)27 b(message)f Fq(m)600 1768 y Fl(0)651 1798 y Fx(b)r(efore)h Fq(m)p Fx(,)h(then)g Fq(p)1255 1810 y Fp(j)1318 1798 y Fx(also)e(TO-Deliv)n(ers)g Fq(m)2027 1768 y Fl(0)2078 1798 y Fx(b)r(efore)h Fq(m)p Fx(.)125 1945 y(It)22 b(w)n(as)g(sho)n(wn)g(in)g([CT96)o(])h(that)g(total)f (order)f(broadcast)g(and)h(consensus)g(are)f(equiv)-5 b(alen)n(t)23 b(problems)e(in)i(the)g(crash-)0 2044 y(stop)35 b(mo)r(del.)59 b(In)35 b(particular,)g(an)g(algorithm)f(w)n(as)g(giv)n (en)g(to)h(transform)e(consensus)h(in)n(to)h(total)g(order)e (broadcast.)0 2144 y([RR00)o(])d(sho)n(ws)f(that)g(this)h(algorithm)f (can)g(b)r(e)h(adapted)f(to)h(the)g(crash-reco)n(v)n(ery)25 b(mo)r(del.)43 b(Nev)n(ertheless,)29 b(the)h(use)g(of)0 2243 y(traditional)f(consensus)g(as)g(a)h(building)g(blo)r(c)n(k)f(in)n (tro)r(duces)g(sup)r(er\015uous)h(forced)f(logs)g(\(as)g(w)n(e)h(shall) f(discuss)h(b)r(elo)n(w\).)0 2343 y(W)-7 b(e)21 b(presen)n(t)f(here)g (an)g(op)r(en)h(consensus)e(based,)j(y)n(et)e(e\016cien)n(t,)j(total)d (order)f(broadcast)g(for)h(the)h(crash-reco)n(v)n(ery)16 b(mo)r(del.)0 2443 y(Thanks)25 b(to)h(the)h Fv(on-demand)p Fx(,)g Fv(de)l(c)l(ouple)l(d)36 b Fx(and)26 b Fv(r)l(e-entr)l(ant)32 b Fx(\015a)n(v)n(ours)24 b(of)i(op)r(en)g(consensus,)f(our)h (transformation)e(do)r(es)0 2542 y(not)k(add)f(an)n(y)g(forced)g(log)g (to)g(op)r(en)h(consensus)e(\(b)r(eside)i(what)g(is)f(needed)h(inside)g (op)r(en)g(consensus\).)0 2822 y Fg(5.2)112 b(Algorithm)p 0 2999 3780 5 v 25 3145 a FD(1:)33 b Fm(Every)24 b(pr)m(o)m(c)m(ess)g Fp(p)577 3153 y Fo(i)628 3145 y Fm(exe)m(cutes)f(the)h(fol)s(lowing:)25 3212 y FD(2:)33 b Fn(pro)r(cedure)22 b Fu(initialisation:)25 3278 y FD(3:)99 b Fm(R)m(e)m(c)m(eive)m(d)24 b Fl( )19 b(?)p Fu(;)j Fm(A)n(waitingT)-5 b(oBeDeliver)m(e)m(d)27 b Fl( )20 b(?)p Fu(;)i Fp(k)i Fl( )19 b Fu(0;)j Fm(TO)p 1862 3278 22 4 v 25 w(Deliver)m(e)m(d)k Fl( )19 b(?)25 3345 y FD(4:)33 b Fn(up)r(on)21 b Fu(TO-Broadcast\()p Fp(m)p Fu(\))i Fn(do)25 3411 y FD(5:)99 b Fm(R)m(e)m(c)m(eive)m(d)24 b Fl( )f Fm(R)m(e)m(c)m(eive)m(d)h Fl([)e Fp(m)25 3477 y FD(6:)33 b Fu(TO-Deliv)n(er\()p Fp(k)q Fu(\))22 b(o)r(ccurs)f(as)i (follo)n(ws:)25 3544 y FD(7:)99 b Fn(while)23 b Fm(R)m(e)m(c)m(eive)m (d)h Fu(-)f Fm(TO)p 802 3544 V 25 w(Deliver)m(e)m(d)j Fl(6)p Fu(=)c Fl(?)h Fn(do)25 3610 y FD(8:)165 b Fp(k)20 b Fl( )g Fp(k)c Fu(+)f(1;)23 b(prop)r(ose\()p Fp(k)q Fu(,)f Fm(R)m(e)m(c)m(eive)m(d)5 b Fu(-)p Fm(TO)p 1291 3610 V 22 w(Deliver)m(e)m(d)g Fu(\))25 3687 y FD(9:)165 b Fn(w)n(ait)25 b(un)n(til)p Fu([receiv)n(e\(pre-commit\()p Fp(k)q Fu(,)19 b Fm(msgSet)1447 3662 y Fo(k)1483 3687 y Fu(\)\)])0 3764 y FD(10:)166 b Fm(msgSet)465 3739 y Fo(k)523 3764 y Fl( )22 b Fm(msgSet)820 3739 y Fo(k)879 3764 y Fu(in)g(some)f(deterministic)f(order)0 3830 y FD(11:)166 b Fu(commit\()p Fp(k)q Fu(,)21 b Fm(msgSet)785 3805 y Fo(k)843 3830 y Fu(\);)h Fm(TO)p 1015 3830 V 25 w(Deliver)m(e)m(d)27 b Fl( )22 b Fm(TO)p 1532 3830 V 25 w(Deliver)m(e)m(d)k Fl([)45 b Fm(msgSet)2154 3805 y Fo(k)2190 3830 y Fu(;)22 b(send\()p Fp(k)q Fu(,)g Fm(msgSet)2673 3805 y Fo(k)2709 3830 y Fu(\))g(to)h(all)f Fl(n)p Fp(p)3000 3838 y Fo(i)3355 3830 y FC(f)p Fs(TO-Deliver)p FC(g)0 3897 y FD(12:)33 b Fn(up)r(on)22 b Fu(receiv)n(e)e(or)i(s-receiv)n(e\() p Fm(b)m(atch,msgSet)5 b Fu(\))21 b(from)g Fp(p)1508 3905 y Fo(j)1562 3897 y Fn(do)0 3963 y FD(13:)99 b Fn(if)30 b Fu(batc)n(h)22 b Fp(<)c(k)24 b Fn(then)0 4029 y FD(14:)166 b Fn(for)25 b(all)d Fm(k)i Fl(\025)19 b Fp(l)g(>)g(batch)j Fn(do)0 4096 y FD(15:)232 b Fu(send\()p Fp(l)p Fu(,)21 b Fm(msgSet)753 4071 y Fo(l)778 4096 y Fu(\))h(to)g Fp(p)941 4104 y Fo(j)0 4162 y FD(16:)99 b Fn(else)24 b(if)29 b Fu(batc)n(h)22 b(=)d Fp(k)d Fu(+)f(1)23 b Fn(then)0 4229 y FD(17:)166 b Fp(k)20 b Fl( )f Fp(k)e Fu(+)e(1;)22 b(commit\()p Fp(k)q Fu(,)g Fm(msgSet)1118 4204 y Fo(k)1154 4229 y Fu(\))2175 b FC(f)p Fs(TO-Deliver)p FC(g)0 4307 y FD(18:)166 b Fm(TO)p 361 4307 V 25 w(Deliver)m(e)m(d)26 b Fl( )d Fm(TO)p 878 4307 V 25 w(Deliver)m(e)m(d)j Fl([)44 b Fm(msgSet)1499 4282 y Fo(k)1535 4307 y Fu(;)22 b(empt)n(y)g(retransmission)f(bu\013er) g(for)h(batc)n(h)g Fp(k)0 4374 y FD(19:)166 b Fn(while)23 b Fm(A)n(waitingT)-5 b(oBeDeliver)m(e)m(d)5 b Fu([)p Fp(k)16 b Fu(+)f(1])22 b Fl(6)p Fu(=)d Fl(?)k Fn(do)0 4440 y FD(20:)232 b Fp(k)20 b Fl( )g Fp(k)c Fu(+)f(1;)23 b(commit\()p Fp(k)q Fu(,)e(Aw)n(aitingT)-5 b(oBeDeliv)n(ered[)p Fp(k)q Fu(]\))1594 b FC(f)p Fs(TO-Deliver)p FC(g)0 4519 y FD(21:)232 b Fm(TO)p 427 4519 V 25 w(Deliver)m(e)m(d)26 b Fl( )d Fm(TO)p 944 4519 V 25 w(Deliver)m(e)m(d)j Fl([)44 b Fm(msgSet)1565 4494 y Fo(k)1601 4519 y Fu(;)23 b(empt)n(y)e (retransmission)g(bu\013er)h(for)g(batc)n(h)f Fp(k)0 4585 y FD(22:)99 b Fn(else)0 4652 y FD(23:)166 b Fm(A)n(waitingT)-5 b(oBeDeliver)m(e)m(d)5 b Fu([)p Fm(b)m(atch)g Fu(])21 b Fl( )h Fm(msgSet)5 b Fu(;)22 b(s-send\()p Fp(k)q Fu(,)p Fm(msgSet)1993 4627 y Fo(k)2030 4652 y Fu(\))g(to)h Fp(p)2194 4660 y Fo(j)0 4718 y FD(24:)33 b Fn(up)r(on)22 b(reco)n(v)n(ery)h(do)0 4785 y FD(25:)99 b Fu(initialisation)0 4851 y FD(26:)g Fn(for)26 b(all)c Fu(decided)d Fm(msgSet)856 4826 y Fo(k)915 4851 y Fn(do)0 4918 y FD(27:)166 b Fn(retriev)n(e)p Fu(\()p Fm(msgSet)743 4892 y Fo(k)780 4918 y Fm(,)p Fp(k)q Fu(\);)23 b Fm(TO)p 1010 4918 V 25 w(Deliver)m(e)m(d)j Fl( )d Fm(TO)p 1527 4918 V 25 w(Deliver)m(e)m(d)j Fl([)45 b Fm(msgSet)2149 4892 y Fo(k)0 4984 y FD(28:)99 b Fm(R)m(e)m(c)m(eive)m(d)25 b Fl( )d Fm(TO)p 661 4984 V 25 w(Deliver)m(e)m(d)p 0 5097 3780 5 v 909 5279 a Fx(Figure)27 b(10:)36 b(T)-7 b(otal)27 b(order)f(broadcast)g(with)i(op)r(en)g(consensus)p 0 5349 1512 4 v 62 5402 a Ft(10)127 5426 y FD(As)19 b(in)h([HT93],)f(w) n(e)h(assume)g(here)g(that)h(eac)n(h)f(message)h(co)r(des)f(the)h(pro)r (cess)f(whic)n(h)g(initiated)g(that)h(message,)g(denoted)g(b)n(y)f Fs(sender)7 b FD(\()p Fk(m)p FD(\).)1848 5768 y Fx(14)p eop %%Page: 15 15 15 14 bop 125 -67 a Fx(Our)30 b(algorithm)g(is)h(giv)n(en)g(in)h (Figure)e(10.)47 b(The)32 b(algorithm)e(uses)h(a)g(series)f(of)h (consecutiv)n(e)g(op)r(en)g(consensus)f(\(or)0 33 y(simply)f (consensus\))f(instances:)39 b(eac)n(h)28 b(consensus)g(instance)g(b)r (eing)h(used)g(to)g(agree)e(on)h(a)h(batc)n(h)f(of)h(messages.)39 b(Eac)n(h)0 132 y(pro)r(cess)25 b(di\013eren)n(tiates)h(consecutiv)n(e) g(instances)g(b)n(y)g(main)n(taining)g(a)g(lo)r(cal)g(coun)n(ter)f(\()p Fq(k)s Fx(\):)37 b(eac)n(h)26 b(v)-5 b(alue)26 b(of)h(the)f(coun)n(ter) 0 232 y(corresp)r(onds)f(to)h(a)h(sp)r(eci\014c)f(consensus)g (instance.)36 b(W)-7 b(e)27 b(describ)r(e)g(\014rst)f(the)h(main)g (data)f(structure)g(of)h(the)g(algorithm.)0 332 y(A)33 b(lo)r(cal)f(set)h Fv(R)l(e)l(c)l(eive)l(d)41 b Fx(k)n(eeps)32 b(all)h(messages)e(that)h(needs)h(to)f(b)r(e)h(decided,)i(and)d (another)g(set)g Fv(TO)p 3187 332 26 4 v 31 w(Deliver)l(e)l(d)42 b Fx(k)n(eeps)0 431 y(trac)n(k)34 b(of)h(all)h(TO-Deliv)n(ered)e (messages.)58 b(In)n(tuitiv)n(ely)-7 b(,)37 b(the)f(algorithm)e(w)n (orks)g(as)h(follo)n(ws.)59 b(When)36 b(there)f(are)f(still)0 531 y(messages)27 b(to)h(b)r(e)h(TO-Deliv)n(ered,)e(i.e.,)i Fv(R)l(e)l(c)l(eive)l(d)9 b Fx(-)p Fv(TO)p 1738 531 V 30 w(Deliver)l(e)l(d)38 b Fx(is)28 b(not)g(empt)n(y)-7 b(,)29 b(pro)r(cess)e Fq(p)2966 543 y Fp(i)3022 531 y Fx(launc)n(hes)h(a)g(consensus)0 630 y(instance)i(and)h(w)n(aits)f(for) g(the)h(pre-commitmen)n(t)g(of)f(the)h(v)-5 b(alue.)46 b(Note)31 b(that)g(w)n(e)f(assume)g(here)h(that)g(new)f(messages)0 730 y(k)n(eep)d(on)g(b)r(eing)h(broadcast,)e(and)i(that)f(accesses)f (and)i(mo)r(di\014cations)f(of)h(the)g(v)-5 b(ariables)26 b(are)g(atomic.)125 877 y(An)f(imp)r(ortan)n(t)g(asp)r(ect)g(of)h(our)e (algorithm)g(is)i(the)f(handling)g(of)h(the)f(decoupling)g(b)r(et)n(w)n (een)g(the)h(pre-commitmen)n(t)0 977 y(and)d(the)h(commitmen)n(t)g(of)f (an)g(op)r(en)g(consensus)g(decision.)35 b(Once)23 b(a)f(v)-5 b(alue)24 b(has)e(b)r(een)i(pre-committed,)g(if)g(a)f(pro)r(cess)f Fq(p)3752 989 y Fp(i)0 1076 y Fx(is)f(a)g(prop)r(osee)f(and)h(a)f (leader,)i Fq(p)1000 1088 y Fp(i)1049 1076 y Fx(kno)n(ws)e(that)h(half) h(of)f(the)g(pro)r(cesses)f(\(other)h(than)g(itself)6 b(\))23 b(ha)n(v)n(e)d(agreed)f(on)i(this)h(v)-5 b(alue.)0 1176 y(Therefore,)24 b Fq(p)439 1188 y Fp(i)491 1176 y Fx(can)g(p)r(erform)g(some)f(execution)h(steps)h(b)r(efore)f (deciding)g(the)h(v)-5 b(alue.)36 b(Indeed,)25 b Fq(p)3017 1188 y Fp(i)3069 1176 y Fx(orders)e(the)h(messages)0 1275 y(follo)n(wing)19 b(a)g(deterministic)h(order)f(and)g(then)h (decides)g(this)g(new)g(set)g(of)g(messages.)32 b(The)20 b(same)f(deterministic)h(ordering)0 1375 y(function)27 b(is)g(used)f(among)g(all)g(pro)r(cesses.)35 b(Note)26 b(that)h(in)g(the)g(mean)n(time)f(\(b)r(et)n(w)n(een)h(returning)f (from)g Fq(pr)r(opose)p Fx(\(\))i(and)0 1475 y(in)n(v)n(oking)e Fq(commit)p Fx(\(\)\),)i(the)g(pro)r(cess)f(do)r(es)g(not)g(answ)n(er)g (to)g(an)n(y)g(messages.)125 1622 y(When)37 b Fq(p)418 1634 y Fp(i)482 1622 y Fx(in)n(v)n(ok)n(es)e Fq(commit)p Fx(\(\),)k(in)f(fact,)h Fq(p)1534 1634 y Fp(i)1598 1622 y Fx(sets)e(the)g Fv(de)l(cide)l(d)47 b Fx(v)-5 b(ariable)36 b(to)h(the)g(new)g(ordered)e(set.)65 b(Once)36 b Fq(p)3752 1634 y Fp(i)0 1721 y Fx(has)f(decided)h(the)h(set,)g Fq(p)820 1733 y Fp(i)884 1721 y Fx(up)r(dates)f Fv(TO)p 1332 1721 V 30 w(Deliver)l(e)l(d)46 b Fx(and)36 b(then)g(sends)f(the)i (decision)e(to)h(ev)n(ery)e(pro)r(cess.)61 b(When)36 b(a)0 1821 y(pro)r(cess)31 b Fq(p)336 1833 y Fp(j)402 1821 y Fx(receiv)n(es)f(the)i(decision,)h(there)e(are)g(three)g(cases)g (to)g(consider:)44 b(\(i\))33 b Fq(p)2620 1833 y Fp(j)2686 1821 y Fx(is)f(lagging,)f(e.g.,)h Fq(k)3311 1833 y Fp(p)3345 1841 y Fo(j)3411 1821 y Fq(<)d(k)3548 1833 y Fp(p)3582 1841 y Fo(i)3613 1821 y Fx(,)k(\(ii\))0 1920 y Fq(p)42 1932 y Fp(j)110 1920 y Fx(is)g(ahead,)h(e.g.,)g Fq(k)694 1932 y Fp(p)728 1940 y Fo(j)795 1920 y Fq(>)e(k)935 1932 y Fp(p)969 1940 y Fo(i)1000 1920 y Fx(,)j(and)e(\(iii\),)i Fq(p)1458 1932 y Fp(j)1526 1920 y Fx(is)e(in)g(sync)n(h)g(with)g Fq(p)2190 1932 y Fp(i)2218 1920 y Fx(,)h(e.g.,)g Fq(k)2500 1932 y Fp(p)2534 1940 y Fo(j)2602 1920 y Fx(=)e Fq(k)2742 1932 y Fp(p)2776 1940 y Fo(i)2807 1920 y Fx(.)53 b(F)-7 b(or)33 b(case)f(\(i\),)j Fq(p)3406 1932 y Fp(j)3474 1920 y Fx(puts)e(the)0 2020 y(receiv)n(ed)j(decision)h(in)h(a)f (bu\013er)h(where)f(it)g(k)n(eeps)g(all)g(future)h(decisions)f(\()p Fv(A)n(waitingT)-6 b(oBeDeliver)l(e)l(d)9 b Fx(\))40 b(and)d(s-sends)0 2120 y(its)c(curren)n(t)f(state)h(in)g(order)e(to)i (receiv)n(e)f(all)g(missing)h(decisions)f(b)r(et)n(w)n(een)h Fq(k)2476 2132 y Fp(p)2510 2140 y Fo(j)2578 2120 y Fx(and)g Fq(k)2788 2132 y Fp(p)2822 2140 y Fo(i)2853 2120 y Fx(.)53 b(F)-7 b(or)32 b(case)g(\(ii\),)j Fq(p)3474 2132 y Fp(j)3542 2120 y Fx(simply)0 2219 y(sends)f(all)h(missing)f(decisions)g(to)g Fq(p)1159 2231 y Fp(i)1187 2219 y Fx(,)i(e.g.,)g(all)f(decisions)f(b)r (et)n(w)n(een)g Fq(k)2277 2231 y Fp(p)2311 2239 y Fo(j)2382 2219 y Fx(and)g Fq(k)2593 2231 y Fp(p)2627 2239 y Fo(i)2658 2219 y Fx(.)58 b(Finally)-7 b(,)37 b(for)d(the)h(last)f(case,)i Fq(p)3745 2231 y Fp(j)0 2319 y Fx(TO-Deliv)n(ers)d(the)i(decided)g (set,)h(remo)n(v)n(es)d(the)h(messages)f(from)h(the)h(retransmission)e (mo)r(dule)i(\(if)g(there)g(are)e(an)n(y\))0 2419 y(for)27 b(batc)n(h)h Fq(k)j Fx(and)c(tries)h(to)f(TO-Deliv)n(er)g(the)h(follo)n (wing)f(batc)n(hes)g(\()p Fq(k)2183 2431 y Fp(p)2217 2439 y Fo(j)2271 2419 y Fx(+)19 b(1,...\).)37 b(When)29 b Fq(p)2866 2431 y Fp(i)2921 2419 y Fx(crashes)d(and)i(reco)n(v)n(ers,) d Fq(p)3752 2431 y Fp(i)0 2518 y Fx(retriev)n(es)30 b(all)h(the)h (decided)f(v)-5 b(alues)32 b(and)f(app)r(ends)g(them)h(to)g (reconstruct)e(the)i(set)f Fv(TO)p 2820 2518 V 31 w(Deliver)l(e)l(d)p Fx(,)i(in)f(order)e(not)i(to)0 2618 y(violate)26 b(the)i(in)n(tegrit)n (y)e(prop)r(ert)n(y)g(of)i(total)f(order)f(broadcast.)1971 2588 y Fu(11)2076 2618 y Fx(Note)h(that)h(our)e(algorithm)g(is)i (quiescen)n(t)e([A)n(CT00b)o(])0 2717 y(if)37 b(there)f(are)f(no)h (unstable)g(pro)r(cesses)f(in)h(the)h(system.)62 b(Indeed,)39 b(when)d(a)g(batc)n(h)g Fq(k)j Fx(has)c(b)r(een)i(TO-Deliv)n(ered)e(b)n (y)0 2817 y(ev)n(ery)c(correct)f(pro)r(cess,)i(no)g(more)f(messages)g (for)g(this)i(batc)n(h)e(are)g(sen)n(t.)50 b(It)33 b(is)f(quiescen)n(t) f(since)h(once)g(a)f(batc)n(h)h(has)0 2917 y(b)r(een)d(TO-Deliv)n(ered) f(b)n(y)g Fq(p)877 2929 y Fp(i)905 2917 y Fx(,)h Fq(p)999 2929 y Fp(i)1055 2917 y Fx(stops)f(its)h(retransmission)e(mo)r(dule)i (for)f(this)h(batc)n(h)2724 2887 y Fu(12)2823 2917 y Fx(and)g(only)f(sends)h(\(instead)g(of)0 3016 y(s-sends\))e(the)h (decision)f(to)h(the)g(lagging)e(pro)r(cesses.)0 3296 y Fg(5.3)112 b(Correctness)0 3496 y Fy(Prop)s(osition)26 b(8.)35 b Fv(The)27 b(algorithm)h(of)f(Figur)l(e)f(10)h(satis\014es)g (the)f(validity,)k(agr)l(e)l(ement,)d(termination)g(and)f(total)h(or)l (der)0 3596 y(pr)l(op)l(erties)k(of)f(total)g(or)l(der)h(br)l(o)l(adc)l (ast.)125 3743 y Fx(W)-7 b(e)28 b(in)n(tro)r(duce)f(lemmata)g(9,)g(10,) g(11)g(and)g(12)g(to)g(pro)n(v)n(e)f(the)i(prop)r(osition.)0 3890 y Fy(Lemma)j(9.)36 b Fv(V)-6 b(alidity:)40 b(F)-6 b(or)29 b(any)h(message)g Fq(m)p Fv(,)g(every)g(pr)l(o)l(c)l(ess)g (TO-Delivers)g Fq(m)f Fv(at)h(most)f(onc)l(e)h(and)f(only)h(if)h Fq(m)e Fv(was)0 3989 y(pr)l(eviously)i(TO-Br)l(o)l(adc)l(ast)g(by)37 b Fx(sender)p Fv(\()p Fq(m)p Fv(\).)0 4136 y Fy(Pro)s(of)j(\(sk)m(etc)m (h\).)58 b Fx(Consider)34 b(the)h(\014rst)f(part.)57 b(A)35 b(pro)r(cess)e(can)h(only)h(TO-Deliv)n(er)e(at)h(most)g(once)g (a)h(message)e Fq(m)0 4236 y Fx(since)28 b Fv(TO)p 332 4236 V 30 w(deliver)l(e)l(d)39 b Fx(and)28 b Fq(k)j Fx(is)c(k)n(ept)h (up)h(to)e(date.)38 b(When)29 b(a)f(pro)r(cess)e(reco)n(v)n(ers,)g(it)i (rebuilds)g(the)g Fv(TO)p 3261 4236 V 31 w(Deliver)l(e)l(d)38 b Fx(set,)0 4336 y(therefore)26 b(a)g(pro)r(cess)g(cannot)g(TO-Deliv)n (er)f Fq(m)i Fx(more)f(than)h(once.)36 b(Consider)25 b(no)n(w)h(the)h(second)g(part.)36 b(F)-7 b(or)26 b(a)g(message)0 4435 y Fq(m)g Fx(to)f(b)r(e)i(TO-Deliv)n(ered,)d Fq(m)i Fx(has)f(\014rst)h(to)g(b)r(e)g(prop)r(osed.)35 b(T)-7 b(o)25 b(b)r(e)i(prop)r(osed,)e Fq(m)h Fx(has)f(to)g(b)r(elong)h(to)g (the)g Fv(R)l(e)l(c)l(eive)l(d)35 b Fx(set,)0 4535 y(and)27 b(to)h(b)r(e)g(in)g(this)g(set,)f Fq(m)h Fx(has)f(to)g(b)r(e)h (TO-Broadcast)d(\(no)j(message)e(come)h(out)h(of)f(thin)i(air\).)673 b Fi(2)0 4682 y Fy(Lemma)33 b(10.)40 b Fv(A)l(gr)l(e)l(ement:)g(If)32 b(any)f(pr)l(o)l(c)l(ess)h(TO-Delivers)f(a)h(message)g Fq(m)p Fv(,)f(then)g(al)t(l)h(c)l(orr)l(e)l(ct)f(pr)l(o)l(c)l(esses)h (eventual)t(ly)0 4781 y(TO-Deliver)e Fq(m)p Fv(.)0 4928 y Fy(Pro)s(of)23 b(\(sk)m(etc)m(h\).)35 b Fx(Remem)n(b)r(er)21 b(that)f(w)n(e)g(supp)r(ose)g(that)g(new)g(messages)f(k)n(eep)h(b)r (eing)g(broadcast,)g(suc)n(h)g(that)g Fv(R)l(e)l(c)l(eive)l(d)0 5028 y Fx(is)35 b(nev)n(er)f(empt)n(y)-7 b(.)60 b(Therefore,)36 b(a)f(correct)f(pro)r(cess)g Fq(p)1732 5040 y Fp(i)1795 5028 y Fx(has)h(alw)n(a)n(ys)e(messages)g(to)j(prop)r(ose.)58 b(Indeed,)38 b Fq(p)3400 5040 y Fp(i)3462 5028 y Fx(k)n(eeps)d(on)0 5127 y(sending)29 b(decisions)f(to)h(ev)n(ery)e(other)i(pro)r(cess.)40 b(There)28 b(is)h(a)g(time)g(after)g(whic)n(h)g(all)f(correct)g(pro)r (cesses)f(stop)i(crashing)0 5227 y(and)38 b(remain)g(up.)71 b(By)38 b(the)h(fair)f(loss)g(prop)r(erties)f(of)i(the)g(links,)i (these)e(correct)e(pro)r(cesses)g(ev)n(en)n(tually)h(receiv)n(e)f(a)p 0 5280 1512 4 v 62 5334 a Ft(11)127 5357 y FD(Once)d(a)f(pro)r(cess)g (reco)n(v)n(ers,)j Fk(p)977 5367 y Fj(i)1035 5357 y FD(sets)e Fs(R)l(e)l(c)l(eive)l(d)40 b FD(to)33 b Fs(TO)p 1687 5357 22 4 v 26 w(Deliver)l(e)l(d)40 b FD(otherwise)34 b(line)e(7)h(w)n(ould)h(nev)n(er)f(b)r(e)h(false,)g(th)n(us)g(k)n (eeping)g(on)0 5436 y(prop)r(osing)24 b(useless)f(batc)n(hes.)62 5492 y Ft(12)127 5515 y FD(Note)h(that)g(here)g(messages)f(are)g (erased)h(from)e Fs(xmitmsg)29 b FD(otherwise)23 b(the)h (retransmission)f(w)n(ould)g(k)n(eep)h(on)f(sending)h(these)g (messages.)1848 5768 y Fx(15)p eop %%Page: 16 16 16 15 bop 0 -67 a Fx(decision.)35 b(If)26 b(they)f(are)f(lagging)f (compared)g(to)i Fq(p)1545 -55 y Fp(i)1573 -67 y Fx(,)g(b)n(y)g(lines)f (15)g(and)h(23,)g(ev)n(ery)e(correct)h(pro)r(cess)f(receiv)n(es)h(all)g (missing)0 33 y(decision)j(and)h(TO-Deliv)n(ers)e Fq(m)p Fx(.)2675 b Fi(2)0 180 y Fy(Lemma)23 b(11.)34 b Fv(T)-6 b(ermination:)36 b(If)23 b(a)h(pr)l(o)l(c)l(ess)f(TO-Br)l(o)l(adc)l (asts)h(a)f(message)h Fq(m)f Fv(and)h(then)f(do)l(es)g(not)g(cr)l(ash,) j(it)d(eventual)t(ly)0 279 y(TO-Delivers)30 b Fq(m)p Fv(.)0 426 y Fy(Pro)s(of)25 b(\(sk)m(etc)m(h\).)35 b Fx(If)22 b(a)f(pro)r(cess)g Fq(p)1117 438 y Fp(i)1166 426 y Fx(TO-Broadcast)d Fq(m)k Fx(and)f(then)h(do)r(es)f(not)h(crash,)f Fv(R)l(e)l(c)l(eive)l(d)31 b Fx(con)n(tains)20 b Fq(m)p Fx(.)35 b Fv(R)l(e)l(c)l(eive)l(d)0 526 y Fx(-)25 b Fv(TO)p 181 526 26 4 v 30 w(deliver)l(e)l(d)35 b Fx(b)r(eing)25 b(not)g(empt)n(y)-7 b(,)26 b Fq(p)1226 538 y Fp(i)1278 526 y Fx(prop)r(oses)d Fq(m)i Fx(in)g(line)g(8.)35 b(By)25 b(the)g(termination)f(prop)r(ert)n(y)g(of)h(op)r(en)g(consensus,)0 625 y Fq(p)42 637 y Fp(i)106 625 y Fx(returns)35 b(and)h(pre-commits)g Fv(msgSet)p Fx(.)62 b(There)36 b(are)f(t)n(w)n(o)g(cases)h(to)g (consider:)53 b(\(a\))36 b Fq(m)h Fr(2)g Fv(msgSet)44 b Fx(and)36 b(\(b\))h Fq(m)g Fr(62)0 725 y Fv(msgSet)p Fx(.)51 b(Case)32 b(\(a\))h(is)g(trivial)e(since)i Fq(p)1261 737 y Fp(i)1321 725 y Fx(then)g(decides)g Fv(msgSet)40 b Fx(and)32 b(TO-Deliv)n(ers)f Fq(m)p Fx(.)52 b(F)-7 b(or)32 b(case)g(\(b\),)i Fq(m)f Fx(sta)n(ys)e(in)0 825 y Fv(R)l(e)l(c)l(eive)l(d-TO)p 460 825 V 31 w(deliver)l(e)l(d)37 b Fx(but)28 b Fq(p)1026 837 y Fp(i)1080 825 y Fx(k)n(eeps)e(on)h(prop)r (osing)e Fq(m)p Fx(.)37 b(Since)27 b Fq(p)2187 837 y Fp(i)2241 825 y Fx(do)r(es)g(not)g(crash,)f Fq(p)2857 837 y Fp(i)2911 825 y Fx(nev)n(er)g(lo)r(oses)g(the)h(con)n(ten)n(t)0 924 y(of)h Fv(R)l(e)l(c)l(eive)l(d)36 b Fx(and)28 b(ev)n(en)n(tually)e (pre-commits)h(a)g Fv(msgSet)35 b Fx(whic)n(h)28 b(con)n(tains)e Fq(m)p Fx(,)i(th)n(us)g(TO-Deliv)n(ering)e Fq(m)p Fx(.)379 b Fi(2)0 1071 y Fy(Lemma)35 b(12.)47 b Fv(T)-6 b(otal)33 b(Or)l(der:)45 b(L)l(et)33 b Fq(p)1200 1083 y Fp(i)1260 1071 y Fv(and)g Fq(p)1466 1083 y Fp(j)1534 1071 y Fv(b)l(e)g(any)g(two) g(pr)l(o)l(c)l(esses)g(that)g(TO-Deliver)h(some)f(message)h Fq(m)p Fv(.)48 b(If)33 b Fq(p)3752 1083 y Fp(i)0 1171 y Fv(TO-Delivers)d(some)h(message)f Fq(m)1083 1141 y Fl(0)1136 1171 y Fv(b)l(efor)l(e)h Fq(m)p Fv(,)f(then)f Fq(p)1729 1183 y Fp(j)1794 1171 y Fv(also)h(TO-Delivers)h Fq(m)2512 1141 y Fl(0)2565 1171 y Fv(b)l(efor)l(e)f Fq(m)p Fv(.)0 1318 y Fy(Pro)s(of)j(\(sk)m(etc)m(h\).)43 b Fx(T)-7 b(rivial)28 b(from)h(lemma)g(10.)41 b(Since)29 b(ev)n(ery)f(pro)r(cess) g(TO-Deliv)n(ers)f(the)j(same)e(batc)n(h)h(of)g(messages.)0 1417 y(By)e(the)h(algorithm)f(of)g(Figure)g(10,)g(the)h(total)f(order)g (prop)r(ert)n(y)f(of)i(total)f(order)f(broadcast)g(is)i(satis\014ed.)0 1564 y Fy(Pro)s(of)33 b(of)g(Prop)s(osition)f(8.)40 b Fx(V)-7 b(alidit)n(y)g(,)30 b(agreemen)n(t,)e(termination)g(and)h (total)g(order)e(follo)n(w)h(from)h(lemmata)g(9,)f(10,)0 1664 y(11)f(and)g(12.)3338 b Fi(2)0 1943 y Fg(5.4)112 b(Analytical)38 b(Ev)-6 b(aluation)0 2144 y Fx(W)f(e)43 b(compare)e(our)g(algorithm)g(with)i(the)g(solution)f(giv)n(en)f(b)n(y) h([RR00]:)66 b(to)42 b(our)g(kno)n(wledge,)j(that)d(is)g(the)h(only)0 2243 y(consensus-based)31 b(total)i(order)e(broadcast)h(that)h(w)n(as)f (devised)h(in)g(a)g(crash-reco)n(v)n(ery)28 b(mo)r(del.)54 b(As)33 b(w)n(e)f(p)r(oin)n(ted)i(out)0 2343 y(in)d(the)g(in)n(tro)r (duction,)g(the)g(algorithm)e(of)h([Lam89)o(])h(indeed)g(implemen)n(ts) g(a)f(total)g(order)f(broadcast)g(primitiv)n(e)h(in)h(a)0 2443 y(crash-reco)n(v)n(ery)23 b(mo)r(del,)28 b(but)g(b)n(ypasses)f (the)h(consensus)e(abstraction.)125 2590 y(The)g(algorithm)g(of)h ([RR00)o(])g(is)g(e\016cien)n(t)g(in)g(terms)g(of)g(messages)e(and)i (comm)n(unication)f(steps,)h(but)h(to)e(cop)r(e)h(with)0 2689 y(reco)n(v)n(ery)-7 b(,)26 b(a)i(pro)r(cess)f(can)h(only)g (TO-Deliv)n(er)f(a)h(message)f(of)h Fr(d)p Fx(\()p Fq(n)19 b Fx(+)f(1\))p Fq(=)p Fx(2)p Fr(e)p Fx(+2,)27 b(ev)n(en)g(without)i (ensuring)f(in)n(tegrit)n(y:)37 b(3)0 2789 y(of)31 b(these)h(logs)e (are)g(sequen)n(tial.)47 b(As)32 b(p)r(oin)n(ted)f(out)g(b)n(y)g(the)h (authors)e(of)h([RR00],)h(the)g(ine\016ciency)f(of)g(the)h(sc)n(heme)f (is)0 2888 y(inheren)n(t)24 b(to)g(the)h(use)f(of)g(consensus)f(as)g(a) h(blac)n(k-b)r(o)n(x.)34 b(In)24 b(our)g(algorithm,)g(the)g(pro)r(cess) f(that)i(is)f(leader)f(and)h(prop)r(osee)0 2988 y(can)30 b(TO-Deliv)n(er)f(a)i(message)e(after)h Fr(d)p Fx(\()p Fq(n)20 b Fx(+)g(1\))p Fq(=)p Fx(2)p Fr(e)30 b Fx(forced)g(logs,)g(and) h(our)e(algorithm)h(do)r(es)g(ensure)g(in)n(tegrit)n(y)-7 b(.)45 b(If)31 b(w)n(e)0 3088 y(giv)n(e)22 b(up)i(in)n(tegrit)n(y)e (\(and)i(lea)n(v)n(e)e(it)h(up)h(to)f(the)h(application\),)f(w)n(e)g (could)g(sa)n(v)n(e)f(the)i(forced)e(log)h(of)g(the)h(TO-Deliv)n(ered)e (set)0 3187 y(and)27 b(end)h(up)g(with)g Fr(d)p Fx(\()p Fq(n)19 b Fx(+)f(1\))p Fq(=)p Fx(2)p Fr(e)26 b Fx(forced)h(logs)g (\(all)g(concurren)n(t\))g(for)g(all)g(pro)r(cesses.)36 b(Figure)27 b(11)f(compares,)g(in)i(a)g(nice)0 3287 y(run,)f(our)f (total)h(order)f(broadcast)f(algorithm)h(with)i(the)f(algorithm)f(of)h ([RR00)o(],)h(i.e.,)f(the)g(\014gure)g(actually)f(compares)0 3387 y(the)32 b(impact)h(of)f(using)f(op)r(en)h(consensus)f(with)i (that)f(of)g(using)g(traditional)f(consensus)g(in)h(a)g(crash-reco)n(v) n(ery)27 b(mo)r(del)0 3486 y(\([RR00]\).)339 3456 y Fu(13)0 4692 y @beginspecial 0 @llx 654 @lly 349 @urx 839 @ury 2268 @rwi @setspecial %%BeginDocument: AtomicBroadcastNoCrashRR1.eps /tgifdict 58 dict def tgifdict begin /tgifellipsedict 6 dict def tgifellipsedict /mtrx matrix put /TGEL % tgifellipse { tgifellipsedict begin /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /tgifarcdict 8 dict def tgifarcdict /mtrx matrix put /TGAN % tgifarcn { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix end } def /TGAR % tgifarc { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arcn savematrix setmatrix end } def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11.695 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % TEXT NP 0 SG GS 1 W 512 248 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (decide) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 72 64 M 64 24 atan DU cos 8.000 MU 96 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 96 128 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 96 128 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 72 64 M 256 16 atan DU cos 8.000 MU 88 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 88 320 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 88 320 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 72 64 M 192 24 atan DU cos 8.000 MU 96 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 96 256 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 96 256 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 72 68 M 124 28 atan DU cos 8.000 MU 100 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 100 192 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 100 192 8.000 3.000 28 124 TGAT CP F GR % ARC GS 84 60 TR [1.000 0.000 0.000 1.000 0 0] CO 84 NE 60 NE TR 0 SG GS GS NP 84 60 12 15 165 353 TGAN TGSM S GR GR GS TGSM NP 96 64 8.000 3.000 -6 29 TGAT 1 SG CP F 0 SG NP 96 64 8.000 3.000 -6 29 TGAT CP F GR GR % POLY/OPEN-SPLINE 0 SG GS NP 53 64 M 0 321 atan DU cos 8.000 MU 374 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 374 64 8.000 3.000 321 0 TGAT 1 SG CP F 0 SG NP 374 64 8.000 3.000 321 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 53 128 M 0 321 atan DU cos 8.000 MU 374 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 374 128 8.000 3.000 321 0 TGAT 1 SG CP F 0 SG NP 374 128 8.000 3.000 321 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 53 192 M 0 321 atan DU cos 8.000 MU 374 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 374 192 8.000 3.000 321 0 TGAT 1 SG CP F 0 SG NP 374 192 8.000 3.000 321 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 53 256 M 0 321 atan DU cos 8.000 MU 374 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 374 256 8.000 3.000 321 0 TGAT 1 SG CP F 0 SG NP 374 256 8.000 3.000 321 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 53 320 M 0 321 atan DU cos 8.000 MU 374 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 374 320 8.000 3.000 321 0 TGAT 1 SG CP F 0 SG NP 374 320 8.000 3.000 321 0 TGAT CP F GR % TEXT NP 0 SG GS 33 49 TR [0.626 0.000 0.000 1.000 0 0] CO 33 NE 49 NE TR GR GS 1 W 33 49 TR [0.626 0.000 0.000 1.000 0 0] CO 0 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 33 113 TR [0.626 0.000 0.000 1.000 0 0] CO 33 NE 113 NE TR GR GS 1 W 33 113 TR [0.626 0.000 0.000 1.000 0 0] CO 0 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 33 241 TR [0.626 0.000 0.000 1.000 0 0] CO 33 NE 241 NE TR GR GS 1 W 33 241 TR [0.626 0.000 0.000 1.000 0 0] CO 0 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (4) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (4) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 33 305 TR [0.626 0.000 0.000 1.000 0 0] CO 33 NE 305 NE TR GR GS 1 W 33 305 TR [0.626 0.000 0.000 1.000 0 0] CO 0 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (5) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (5) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 33 177 TR [0.626 0.000 0.000 1.000 0 0] CO 33 NE 177 NE TR GR GS 1 W 33 177 TR [0.626 0.000 0.000 1.000 0 0] CO 0 15 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (3) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 409 246 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (propose) SH GR GR % TEXT NP 0 SG GS 1 W 384 316 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (Consensus service \(ACT00\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 452 253 M 0 24 atan DU cos 8.000 MU 476 exch SU exch sin 8.000 MU 253 exch SU L TGSM 1 W S GR GS TGSM NP 476 253 8.000 3.000 24 0 TGAT 1 SG CP F 0 SG NP 476 253 8.000 3.000 24 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 500 253 M 0 24 atan DU cos 8.000 MU 524 exch SU exch sin 8.000 MU 253 exch SU L TGSM 1 W S GR GS TGSM NP 524 253 8.000 3.000 24 0 TGAT 1 SG CP F 0 SG NP 524 253 8.000 3.000 24 0 TGAT CP F GR % BOX 0 SG NP 475 240 M 499 240 L 499 268 L 475 268 L CP F GS 10 SM GS NP 475 240 M 499 240 L 499 268 L 475 268 L CP S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 137 57 M 0 24 atan DU cos 8.000 MU 161 exch SU exch sin 8.000 MU 57 exch SU L TGSM 1 W S GR GS TGSM NP 161 57 8.000 3.000 24 0 TGAT 1 SG CP F 0 SG NP 161 57 8.000 3.000 24 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 185 57 M 0 24 atan DU cos 8.000 MU 209 exch SU exch sin 8.000 MU 57 exch SU L TGSM 1 W S GR GS TGSM NP 209 57 8.000 3.000 24 0 TGAT 1 SG CP F 0 SG NP 209 57 8.000 3.000 24 0 TGAT CP F GR % TEXT NP 0 SG GS 1 W 191 45 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (d) SH GR GR % TEXT NP 0 SG GS 1 W 143 44 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GR GR % BOX 0 SG NP 160 44 M 184 44 L 184 72 L 160 72 L CP F GS 10 SM GS NP 160 44 M 184 44 L 184 72 L 160 72 L CP S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 137 120 M 0 24 atan DU cos 8.000 MU 161 exch SU exch sin 8.000 MU 120 exch SU L TGSM 1 W S GR GS TGSM NP 161 120 8.000 3.000 24 0 TGAT 1 SG CP F 0 SG NP 161 120 8.000 3.000 24 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 185 120 M 0 24 atan DU cos 8.000 MU 209 exch SU exch sin 8.000 MU 120 exch SU L TGSM 1 W S GR GS TGSM NP 209 120 8.000 3.000 24 0 TGAT 1 SG CP F 0 SG NP 209 120 8.000 3.000 24 0 TGAT CP F GR % TEXT NP 0 SG GS 1 W 191 108 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (d) SH GR GR % TEXT NP 0 SG GS 1 W 143 107 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GR GR % BOX 0 SG NP 160 107 M 184 107 L 184 135 L 160 135 L CP F GS 10 SM GS NP 160 107 M 184 107 L 184 135 L 160 135 L CP S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 137 185 M 0 24 atan DU cos 8.000 MU 161 exch SU exch sin 8.000 MU 185 exch SU L TGSM 1 W S GR GS TGSM NP 161 185 8.000 3.000 24 0 TGAT 1 SG CP F 0 SG NP 161 185 8.000 3.000 24 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 185 185 M 0 24 atan DU cos 8.000 MU 209 exch SU exch sin 8.000 MU 185 exch SU L TGSM 1 W S GR GS TGSM NP 209 185 8.000 3.000 24 0 TGAT 1 SG CP F 0 SG NP 209 185 8.000 3.000 24 0 TGAT CP F GR % TEXT NP 0 SG GS 1 W 191 173 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (d) SH GR GR % TEXT NP 0 SG GS 1 W 143 172 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GR GR % BOX 0 SG NP 160 172 M 184 172 L 184 200 L 160 200 L CP F GS 10 SM GS NP 160 172 M 184 172 L 184 200 L 160 200 L CP S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 137 250 M 0 24 atan DU cos 8.000 MU 161 exch SU exch sin 8.000 MU 250 exch SU L TGSM 1 W S GR GS TGSM NP 161 250 8.000 3.000 24 0 TGAT 1 SG CP F 0 SG NP 161 250 8.000 3.000 24 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 185 250 M 0 24 atan DU cos 8.000 MU 209 exch SU exch sin 8.000 MU 250 exch SU L TGSM 1 W S GR GS TGSM NP 209 250 8.000 3.000 24 0 TGAT 1 SG CP F 0 SG NP 209 250 8.000 3.000 24 0 TGAT CP F GR % TEXT NP 0 SG GS 1 W 191 238 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (d) SH GR GR % TEXT NP 0 SG GS 1 W 143 237 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GR GR % BOX 0 SG NP 160 237 M 184 237 L 184 265 L 160 265 L CP F GS 10 SM GS NP 160 237 M 184 237 L 184 265 L 160 265 L CP S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 137 315 M 0 24 atan DU cos 8.000 MU 161 exch SU exch sin 8.000 MU 315 exch SU L TGSM 1 W S GR GS TGSM NP 161 315 8.000 3.000 24 0 TGAT 1 SG CP F 0 SG NP 161 315 8.000 3.000 24 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 185 315 M 0 24 atan DU cos 8.000 MU 209 exch SU exch sin 8.000 MU 315 exch SU L TGSM 1 W S GR GS TGSM NP 209 315 8.000 3.000 24 0 TGAT 1 SG CP F 0 SG NP 209 315 8.000 3.000 24 0 TGAT CP F GR % TEXT NP 0 SG GS 1 W 191 303 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (d) SH GR GR % TEXT NP 0 SG GS 1 W 143 302 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GR GR % BOX 0 SG NP 160 302 M 184 302 L 184 330 L 160 330 L CP F GS 10 SM GS NP 160 302 M 184 302 L 184 330 L 160 330 L CP S GR GR % TEXT NP 0 SG GS 1 W 482 233 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (C) SH GR GR % TEXT NP 0 SG GS 1 W 168 39 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (C) SH GR GR % TEXT NP 0 SG GS 1 W 168 102 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (C) SH GR GR % TEXT NP 0 SG GS 1 W 167 167 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (C) SH GR GR % TEXT NP 0 SG GS 1 W 167 232 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (C) SH GR GR % TEXT NP 0 SG GS 1 W 167 297 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (C) SH GR GR % OVAL 0 SG NP 415 47 5 2 TGEL F GS GS NP 415 47 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 410 47 M 410 56 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 421 47 M 421 55 L TGSM 1 W S GR % ARC 0 SG GS GS NP 415 54 5 4 168 11 TGAR S GR GR % OVAL 0 SG GS GS NP 415 73 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 410 73 M 410 82 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 421 73 M 421 81 L TGSM 1 W S GR % ARC 0 SG GS GS NP 415 80 5 4 168 11 TGAR S GR GR % TEXT NP 0 SG NP 411 113 M 421 113 L 421 130 L 411 130 L CP 1 SG F 0 SG GS 1 W 412 126 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (D) SH GR GR % TEXT NP 0 SG NP 410 91 M 420 91 L 420 108 L 410 108 L CP 1 SG F 0 SG GS 1 W 411 104 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (P) SH GR GR % TEXT NP 0 SG GS 1 W 430 103 M GS 0 SG /Courier FF [12 0 0 -12 0 0] MS (Proposition) SH GR GR % TEXT NP 0 SG GS 1 W 430 125 M GS 0 SG /Courier FF [12 0 0 -12 0 0] MS (Decision) SH GR GR % TEXT NP 0 SG GS 1 W 430 82 M GS 0 SG /Courier FF [12 0 0 -12 0 0] MS (Local forced log) SH GR GR % TEXT NP 0 SG GS 1 W 430 56 M GS 0 SG /Courier FF [12 0 0 -12 0 0] MS (Forced log at maj processes) SH GR GR % TEXT NP 0 SG GS 1 W 4 21 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (TO-Broadcast\(m\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 54 27 M 36 14 atan DU cos 8.000 MU 68 exch SU exch sin 8.000 MU 63 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 68 63 8.000 3.000 14 36 TGAT 1 SG CP F 0 SG NP 68 63 8.000 3.000 14 36 TGAT CP F GR % TEXT NP 0 SG NP 115 47 M 125 47 L 125 64 L 115 64 L CP 1 SG F 0 SG GS 1 W 116 60 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (P) SH GR GR % OVAL 0 SG GS GS NP 120 36 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 115 36 M 115 45 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 126 36 M 126 44 L TGSM 1 W S GR % ARC 0 SG GS GS NP 120 43 5 4 168 11 TGAR S GR GR % TEXT NP 0 SG NP 114 111 M 124 111 L 124 128 L 114 128 L CP 1 SG F 0 SG GS 1 W 115 124 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (P) SH GR GR % OVAL 0 SG GS GS NP 119 100 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 114 100 M 114 109 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 125 100 M 125 108 L TGSM 1 W S GR % ARC 0 SG GS GS NP 119 107 5 4 168 11 TGAR S GR GR % TEXT NP 0 SG NP 110 175 M 120 175 L 120 192 L 110 192 L CP 1 SG F 0 SG GS 1 W 111 188 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (P) SH GR GR % OVAL 0 SG GS GS NP 115 164 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 110 164 M 110 173 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 121 164 M 121 172 L TGSM 1 W S GR % ARC 0 SG GS GS NP 115 171 5 4 168 11 TGAR S GR GR % TEXT NP 0 SG NP 107 238 M 117 238 L 117 255 L 107 255 L CP 1 SG F 0 SG GS 1 W 108 251 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (P) SH GR GR % OVAL 0 SG GS GS NP 112 227 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 107 227 M 107 236 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 118 227 M 118 235 L TGSM 1 W S GR % ARC 0 SG GS GS NP 112 234 5 4 168 11 TGAR S GR GR % TEXT NP 0 SG NP 102 301 M 112 301 L 112 318 L 102 318 L CP 1 SG F 0 SG GS 1 W 103 314 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (P) SH GR GR % OVAL 0 SG GS GS NP 107 290 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 102 290 M 102 299 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 113 290 M 113 298 L TGSM 1 W S GR % ARC 0 SG GS GS NP 107 297 5 4 168 11 TGAR S GR GR % TEXT NP 0 SG NP 475 286 M 485 286 L 485 303 L 475 303 L CP 1 SG F 0 SG GS 1 W 476 299 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (A) SH GR GR % OVAL 0 SG NP 480 275 5 2 TGEL F GS GS NP 480 275 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 475 275 M 475 284 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 486 275 M 486 283 L TGSM 1 W S GR % ARC 0 SG GS GS NP 480 282 5 4 168 11 TGAR S GR GR % TEXT NP 0 SG GS 1 W 231 26 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (TO-Deliver\(m\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 233 63 M -34 15 atan DU cos 8.000 MU 248 exch SU exch sin 8.000 MU 29 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 248 29 8.000 3.000 15 -34 TGAT 1 SG CP F 0 SG NP 248 29 8.000 3.000 15 -34 TGAT CP F GR % TEXT NP 0 SG NP 492 286 M 502 286 L 502 303 L 492 303 L CP 1 SG F 0 SG GS 1 W 493 299 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (D) SH GR GR % OVAL 0 SG GS GS NP 497 275 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 492 275 M 492 284 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 503 275 M 503 283 L TGSM 1 W S GR % ARC 0 SG GS GS NP 497 282 5 4 168 11 TGAR S GR GR % TEXT NP 0 SG NP 412 154 M 422 154 L 422 171 L 412 171 L CP 1 SG F 0 SG GS 1 W 413 167 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (I) SH GR GR % TEXT NP 0 SG NP 411 132 M 421 132 L 421 149 L 411 149 L CP 1 SG F 0 SG GS 1 W 412 145 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (A) SH GR GR % TEXT NP 0 SG GS 1 W 431 144 M GS 0 SG /Courier FF [12 0 0 -12 0 0] MS (Agreement) SH GR GR % TEXT NP 0 SG GS 1 W 431 166 M GS 0 SG /Courier FF [12 0 0 -12 0 0] MS (Integrity) SH GR GR % TEXT NP 0 SG GS 1 W 227 91 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (TO-Deliver\(m\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 229 128 M -34 15 atan DU cos 8.000 MU 244 exch SU exch sin 8.000 MU 94 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 244 94 8.000 3.000 15 -34 TGAT 1 SG CP F 0 SG NP 244 94 8.000 3.000 15 -34 TGAT CP F GR % TEXT NP 0 SG GS 1 W 223 155 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (TO-Deliver\(m\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 225 192 M -34 15 atan DU cos 8.000 MU 240 exch SU exch sin 8.000 MU 158 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 240 158 8.000 3.000 15 -34 TGAT 1 SG CP F 0 SG NP 240 158 8.000 3.000 15 -34 TGAT CP F GR % TEXT NP 0 SG GS 1 W 224 219 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (TO-Deliver\(m\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 226 256 M -34 15 atan DU cos 8.000 MU 241 exch SU exch sin 8.000 MU 222 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 241 222 8.000 3.000 15 -34 TGAT 1 SG CP F 0 SG NP 241 222 8.000 3.000 15 -34 TGAT CP F GR % TEXT NP 0 SG GS 1 W 225 283 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (TO-Deliver\(m\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 227 320 M -34 15 atan DU cos 8.000 MU 242 exch SU exch sin 8.000 MU 286 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 242 286 8.000 3.000 15 -34 TGAT 1 SG CP F 0 SG NP 242 286 8.000 3.000 15 -34 TGAT CP F GR GR tgifsavedpage restore end showpage %MatchingCreationDate: Sat Jan 6 09:35:40 2001 %%EndDocument @endspecial 194 4874 a FD(\(a\))d(T)-6 b(otal)25 b(order)e(broadcast)i (with)f(consensus)g([RR00])1973 4692 y @beginspecial 7 @llx 658 @lly 352 @urx 838 @ury 2242 @rwi @setspecial %%BeginDocument: AtomicBroadcastNoCrashUs1.eps /tgifdict 58 dict def tgifdict begin /tgifellipsedict 6 dict def tgifellipsedict /mtrx matrix put /TGEL % tgifellipse { tgifellipsedict begin /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /tgifarcdict 8 dict def tgifarcdict /mtrx matrix put /TGAN % tgifarcn { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix end } def /TGAR % tgifarc { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arcn savematrix setmatrix end } def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11.695 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % TEXT NP 0 SG GS 1 W 16 23 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (TO-Broadcast\(m\)) SH GR GR % TEXT NP 0 SG GS 1 W 517 251 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (pre-commits) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 53 64 M 0 321 atan DU cos 8.000 MU 374 exch SU exch sin 8.000 MU 64 exch SU L TGSM 1 W S GR GS TGSM NP 374 64 8.000 3.000 321 0 TGAT 1 SG CP F 0 SG NP 374 64 8.000 3.000 321 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 53 128 M 0 321 atan DU cos 8.000 MU 374 exch SU exch sin 8.000 MU 128 exch SU L TGSM 1 W S GR GS TGSM NP 374 128 8.000 3.000 321 0 TGAT 1 SG CP F 0 SG NP 374 128 8.000 3.000 321 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 53 192 M 0 321 atan DU cos 8.000 MU 374 exch SU exch sin 8.000 MU 192 exch SU L TGSM 1 W S GR GS TGSM NP 374 192 8.000 3.000 321 0 TGAT 1 SG CP F 0 SG NP 374 192 8.000 3.000 321 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 53 256 M 0 321 atan DU cos 8.000 MU 374 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 374 256 8.000 3.000 321 0 TGAT 1 SG CP F 0 SG NP 374 256 8.000 3.000 321 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 53 320 M 0 321 atan DU cos 8.000 MU 374 exch SU exch sin 8.000 MU 320 exch SU L TGSM 1 W S GR GS TGSM NP 374 320 8.000 3.000 321 0 TGAT 1 SG CP F 0 SG NP 374 320 8.000 3.000 321 0 TGAT CP F GR % TEXT NP 0 SG GS 33 49 TR [0.626 0.000 0.000 1.000 0 0] CO 33 NE 49 NE TR GR GS 1 W 33 49 TR [0.626 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (1) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (1) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 33 111 TR [0.626 0.000 0.000 1.000 0 0] CO 33 NE 111 NE TR GR GS 1 W 33 111 TR [0.626 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 3 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (2) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (2) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 33 241 TR [0.626 0.000 0.000 1.000 0 0] CO 33 NE 241 NE TR GR GS 1 W 33 241 TR [0.626 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (4) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (4) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 33 303 TR [0.626 0.000 0.000 1.000 0 0] CO 33 NE 303 NE TR GR GS 1 W 33 303 TR [0.626 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 3 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (5) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (5) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 33 177 TR [0.626 0.000 0.000 1.000 0 0] CO 33 NE 177 NE TR GR GS 1 W 33 177 TR [0.626 0.000 0.000 1.000 0 0] CO 0 14 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GS GS 0 2 RM GS 0 SG /Courier FF [8 0 0 -8 0 0] MS (3) SH GR GR GR 0 0 GS 0 /Courier FF [8 0 0 -8 0 0] MS (3) TGSW AD GR TGMAX TGMAX 0 RM GR GR % TEXT NP 0 SG GS 1 W 414 249 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (propose) SH GR GR % TEXT NP 0 SG GS 1 W 381 290 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS ( Open Consensus service) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 457 256 M 0 24 atan DU cos 8.000 MU 481 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 481 256 8.000 3.000 24 0 TGAT 1 SG CP F 0 SG NP 481 256 8.000 3.000 24 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 505 256 M 0 24 atan DU cos 8.000 MU 529 exch SU exch sin 8.000 MU 256 exch SU L TGSM 1 W S GR GS TGSM NP 529 256 8.000 3.000 24 0 TGAT 1 SG CP F 0 SG NP 529 256 8.000 3.000 24 0 TGAT CP F GR % BOX 0 SG NP 480 243 M 504 243 L 504 271 L 480 271 L CP F GS 10 SM GS NP 480 243 M 504 243 L 504 271 L 480 271 L CP S GR GR % TEXT NP 0 SG GS 1 W 227 24 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (TO-Deliver\(m\)) SH GR GR % TEXT NP 0 SG GS 1 W 488 238 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (O) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 66 29 M 36 14 atan DU cos 8.000 MU 80 exch SU exch sin 8.000 MU 65 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 80 65 8.000 3.000 14 36 TGAT 1 SG CP F 0 SG NP 80 65 8.000 3.000 14 36 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 99 59 M 0 24 atan DU cos 8.000 MU 123 exch SU exch sin 8.000 MU 59 exch SU L TGSM 1 W S GR GS TGSM NP 123 59 8.000 3.000 24 0 TGAT 1 SG CP F 0 SG NP 123 59 8.000 3.000 24 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 147 59 M 0 24 atan DU cos 8.000 MU 171 exch SU exch sin 8.000 MU 59 exch SU L TGSM 1 W S GR GS TGSM NP 171 59 8.000 3.000 24 0 TGAT 1 SG CP F 0 SG NP 171 59 8.000 3.000 24 0 TGAT CP F GR % TEXT NP 0 SG GS 1 W 153 47 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p-c) SH GR GR % TEXT NP 0 SG GS 1 W 105 46 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (p) SH GR GR % BOX 0 SG NP 122 46 M 146 46 L 146 74 L 122 74 L CP F GS 10 SM GS NP 122 46 M 146 46 L 146 74 L 122 74 L CP S GR GR % TEXT NP 0 SG GS 1 W 131 41 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (O) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 229 61 M -34 15 atan DU cos 8.000 MU 244 exch SU exch sin 8.000 MU 27 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 244 27 8.000 3.000 15 -34 TGAT 1 SG CP F 0 SG NP 244 27 8.000 3.000 15 -34 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 237 63 M 64 24 atan DU cos 8.000 MU 261 exch SU exch sin 8.000 MU 127 exch SU L TGSM 1 W S GR GS TGSM NP 261 127 8.000 3.000 24 64 TGAT 1 SG CP F 0 SG NP 261 127 8.000 3.000 24 64 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 237 63 M 256 16 atan DU cos 8.000 MU 253 exch SU exch sin 8.000 MU 319 exch SU L TGSM 1 W S GR GS TGSM NP 253 319 8.000 3.000 16 256 TGAT 1 SG CP F 0 SG NP 253 319 8.000 3.000 16 256 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 237 63 M 192 24 atan DU cos 8.000 MU 261 exch SU exch sin 8.000 MU 255 exch SU L TGSM 1 W S GR GS TGSM NP 261 255 8.000 3.000 24 192 TGAT 1 SG CP F 0 SG NP 261 255 8.000 3.000 24 192 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 237 67 M 124 28 atan DU cos 8.000 MU 265 exch SU exch sin 8.000 MU 191 exch SU L TGSM 1 W S GR GS TGSM NP 265 191 8.000 3.000 28 124 TGAT 1 SG CP F 0 SG NP 265 191 8.000 3.000 28 124 TGAT CP F GR % TEXT NP 0 SG NP 265 107 M 274 107 L 274 126 L 265 126 L CP 1 SG F 0 SG GS 1 W 266 122 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (I) SH GR GR % OVAL 0 SG GS GS NP 270 98 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 265 98 M 265 107 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 276 98 M 276 106 L TGSM 1 W S GR % ARC 0 SG GS GS NP 270 105 5 4 168 11 TGAR S GR GR % TEXT NP 0 SG GS 1 W 280 90 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (TO-Deliver\(m\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 282 127 M -34 15 atan DU cos 8.000 MU 297 exch SU exch sin 8.000 MU 93 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 297 93 8.000 3.000 15 -34 TGAT 1 SG CP F 0 SG NP 297 93 8.000 3.000 15 -34 TGAT CP F GR % TEXT NP 0 SG GS 1 W 282 154 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (TO-Deliver\(m\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 284 191 M -34 15 atan DU cos 8.000 MU 299 exch SU exch sin 8.000 MU 157 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 299 157 8.000 3.000 15 -34 TGAT 1 SG CP F 0 SG NP 299 157 8.000 3.000 15 -34 TGAT CP F GR % TEXT NP 0 SG NP 268 171 M 277 171 L 277 190 L 268 190 L CP 1 SG F 0 SG GS 1 W 269 186 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (I) SH GR GR % OVAL 0 SG GS GS NP 273 162 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 268 162 M 268 171 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 279 162 M 279 170 L TGSM 1 W S GR % ARC 0 SG GS GS NP 273 169 5 4 168 11 TGAR S GR GR % TEXT NP 0 SG GS 1 W 279 218 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (TO-Deliver\(m\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 281 255 M -34 15 atan DU cos 8.000 MU 296 exch SU exch sin 8.000 MU 221 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 296 221 8.000 3.000 15 -34 TGAT 1 SG CP F 0 SG NP 296 221 8.000 3.000 15 -34 TGAT CP F GR % TEXT NP 0 SG NP 266 235 M 275 235 L 275 254 L 266 254 L CP 1 SG F 0 SG GS 1 W 267 250 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (I) SH GR GR % OVAL 0 SG GS GS NP 271 226 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 266 226 M 266 235 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 277 226 M 277 234 L TGSM 1 W S GR % ARC 0 SG GS GS NP 271 233 5 4 168 11 TGAR S GR GR % TEXT NP 0 SG GS 1 W 270 282 M GS 0 SG /Courier FF [14 0 0 -14 0 0] MS (TO-Deliver\(m\)) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 272 319 M -34 15 atan DU cos 8.000 MU 287 exch SU exch sin 8.000 MU 285 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 287 285 8.000 3.000 15 -34 TGAT 1 SG CP F 0 SG NP 287 285 8.000 3.000 15 -34 TGAT CP F GR % TEXT NP 0 SG NP 257 299 M 266 299 L 266 318 L 257 318 L CP 1 SG F 0 SG GS 1 W 258 314 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (I) SH GR GR % OVAL 0 SG GS GS NP 262 290 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 257 290 M 257 299 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 268 290 M 268 298 L TGSM 1 W S GR % ARC 0 SG GS GS NP 262 297 5 4 168 11 TGAR S GR GR % OVAL 0 SG NP 405 34 5 2 TGEL F GS GS NP 405 34 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 400 34 M 400 43 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 411 34 M 411 42 L TGSM 1 W S GR % ARC 0 SG GS GS NP 405 41 5 4 168 11 TGAR S GR GR % OVAL 0 SG GS GS NP 405 60 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 400 60 M 400 69 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 411 60 M 411 68 L TGSM 1 W S GR % ARC 0 SG GS GS NP 405 67 5 4 168 11 TGAR S GR GR % TEXT NP 0 SG NP 401 98 M 410 98 L 410 117 L 401 117 L CP 1 SG F 0 SG GS 1 W 402 113 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (I) SH GR GR % TEXT NP 0 SG NP 400 76 M 410 76 L 410 95 L 400 95 L CP 1 SG F 0 SG GS 1 W 401 91 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (A) SH GR GR % TEXT NP 0 SG GS 1 W 420 90 M GS 0 SG /Courier FF [12 0 0 -12 0 0] MS (Agreement) SH GR GR % TEXT NP 0 SG GS 1 W 420 111 M GS 0 SG /Courier FF [12 0 0 -12 0 0] MS (Integrity) SH GR GR % TEXT NP 0 SG GS 1 W 420 69 M GS 0 SG /Courier FF [12 0 0 -12 0 0] MS (Local forced log) SH GR GR % TEXT NP 0 SG GS 1 W 420 43 M GS 0 SG /Courier FF [12 0 0 -12 0 0] MS (Forced log at a n/2 processes) SH GR GR % TEXT NP 0 SG NP 128 87 M 138 87 L 138 106 L 128 106 L CP 1 SG F 0 SG GS 1 W 129 102 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (A) SH GR GR % OVAL 0 SG NP 133 78 5 2 TGEL F GS GS NP 133 78 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 128 78 M 128 87 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 139 78 M 139 86 L TGSM 1 W S GR % ARC 0 SG GS GS NP 133 85 5 4 168 11 TGAR S GR GR % TEXT NP 0 SG NP 193 44 M 218 44 L 218 63 L 193 63 L CP 1 SG F 0 SG GS 1 W 194 59 M GS 0 SG /Courier-Bold FF [14 0 0 -14 0 0] MS (A+I) SH GR GR % OVAL 0 SG GS GS NP 206 35 5 2 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 201 35 M 201 44 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 212 35 M 212 43 L TGSM 1 W S GR % ARC 0 SG GS GS NP 206 42 5 4 168 11 TGAR S GR GR GR tgifsavedpage restore end showpage %MatchingCreationDate: Tue Jan 9 22:07:30 2001 %%EndDocument @endspecial 2187 4874 a(\(b\))h(T)-6 b(otal)24 b(order)g(broadcast)h (with)e(op)r(en)i(consensus)1226 5122 y Fx(Figure)i(11:)36 b(Comparison)25 b(in)j(a)g(nice)f(run)p 0 5244 1512 4 v 62 5297 a Ft(13)127 5321 y FD(Note)h(that)g(our)g(algorithm)f(is)f (also)h(simpler)f(since)i(it)f(do)r(es)g(not)h(require)f(ev)n(ery)h (pro)r(cess)f(to)h(in)n(v)n(ok)n(e)g(consensus,)h(and)f(is)e(quiescen)n (t.)0 5400 y(The)e(algorithm)g(of)f([RR00])g(uses)h(an)g(inheren)n(tly) g(non-quiescen)n(t)i(gossip)d(function)i(\(to)f(ac)n(hiev)n(e)h (reliable)e(broadcast)i(seman)n(tics\).)1848 5768 y Fx(16)p eop %%Page: 17 17 17 16 bop 0 -67 a Fw(6)135 b(F)-11 b(ramew)l(ork)45 b(Arc)l(hitecture)0 162 y Fx(W)-7 b(e)28 b(sk)n(etc)n(h)f(in)h(Figure)f(12)f(the)i(o)n(v)n (erall)e(arc)n(hitecture)g(of)h(our)g(abstraction)f(library)-7 b(.)36 b(The)28 b(arc)n(hitecture)e(is)h(divided)h(in)0 262 y(\014v)n(e)k(la)n(y)n(ers)e Fv(Communic)l(ation)p Fx(,)k Fv(Multic)l(ast/Br)l(o)l(adc)l(ast)p Fx(,)h Fv(Op)l(en)e (Consensus)p Fx(,)g Fv(T)-6 b(otal)34 b(Or)l(der)g(Br)l(o)l(adc)l(ast) 41 b Fx(and)32 b Fv(Applic)l(a-)0 361 y(tion)p Fx(.)43 b(These)30 b(are)e(describ)r(ed)i(b)r(elo)n(w.)42 b(A)30 b(sp)r(eci\014c)g(mo)r(dule)g(implemen)n(ts)g(a)f(failure)g(detection)h (sc)n(heme)f(and)h(a)f(stable)0 461 y(storage)c(mo)r(dule)i(abstracts)f (a)h(hard)f(disk.)37 b(These)26 b(comp)r(onen)n(ts)h(w)n(ere)f (implemen)n(ted)h(with)h(SUN's)f(JDK)g(Ja)n(v)-5 b(a)26 b(1.2.1)0 561 y(and)k(ha)n(v)n(e)g(b)r(een)h(tested)g(on)f(Solaris)f (2.7.)45 b(The)31 b(di\013eren)n(t)g(la)n(y)n(ers)d(comm)n(unicate)i (through)g(metho)r(d)h(in)n(v)n(o)r(cation)f(and)0 660 y(listeners)20 b(for)h(up)r(calls.)34 b(All)22 b(messages)d(are)h (bu\013ered)h(in)g(eac)n(h)g(la)n(y)n(er)e(to)i(a)n(v)n(oid)e(net)n(w)n (ork)h(b)r(ottlenec)n(k.)34 b(F)-7 b(or)21 b(example,)h(if)f(a)0 760 y(message)e(cannot)i(b)r(e)g(sen)n(t)g(b)r(ecause)f(bu\013ers)h (are)f(full,)j(the)e Fv(Communic)l(ation)28 b Fx(la)n(y)n(er)19 b(noti\014es)i(the)g Fv(Multic)l(ast/Br)l(o)l(adc)l(ast)0 859 y Fx(la)n(y)n(er)26 b(whic)n(h)h(itself)i(noti\014es)e(its)h(upp)r (er)f(la)n(y)n(er,)f(and)i(so)f(on.)690 3285 y @beginspecial 16 @llx 374 @lly 496 @urx 836 @ury 2880 @rwi @setspecial %%BeginDocument: ArchABOnly.eps /tgifdict 58 dict def tgifdict begin /tgifellipsedict 6 dict def tgifellipsedict /mtrx matrix put /TGEL % tgifellipse { tgifellipsedict begin /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /tgifarrowtipdict 8 dict def tgifarrowtipdict /mtrx matrix put /TGAT % tgifarrowtip { tgifarrowtipdict begin /dy exch def /dx exch def /h exch def /w exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate dy dx atan rotate 0 0 moveto w neg h lineto w neg h neg lineto savematrix setmatrix end } def /tgifarcdict 8 dict def tgifarcdict /mtrx matrix put /TGAN % tgifarcn { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix end } def /TGAR % tgifarc { tgifarcdict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arcn savematrix setmatrix end } def /TGMAX { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse } def /TGMIN { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse } def /TGSW { stringwidth pop } def /bd { bind def } bind def /GS { gsave } bd /GR { grestore } bd /NP { newpath } bd /CP { closepath } bd /CHP { charpath } bd /CT { curveto } bd /L { lineto } bd /RL { rlineto } bd /M { moveto } bd /RM { rmoveto } bd /S { stroke } bd /F { fill } bd /TR { translate } bd /RO { rotate } bd /SC { scale } bd /MU { mul } bd /DI { div } bd /DU { dup } bd /NE { neg } bd /AD { add } bd /SU { sub } bd /PO { pop } bd /EX { exch } bd /CO { concat } bd /CL { clip } bd /EC { eoclip } bd /EF { eofill } bd /IM { image } bd /IMM { imagemask } bd /ARY { array } bd /SG { setgray } bd /RG { setrgbcolor } bd /SD { setdash } bd /W { setlinewidth } bd /SM { setmiterlimit } bd /SLC { setlinecap } bd /SLJ { setlinejoin } bd /SH { show } bd /FF { findfont } bd /MS { makefont setfont } bd /AR { arcto 4 {pop} repeat } bd /CURP { currentpoint } bd /FLAT { flattenpath strokepath clip newpath } bd /TGSM { tgiforigctm setmatrix } def /TGRM { savematrix setmatrix } def end tgifdict begin /tgifsavedpage save def 1 SM 1 W 0 SG 72 0 MU 72 11.695 MU TR 72 128 DI 100.000 MU 100 DI DU NE SC GS /tgiforigctm matrix currentmatrix def % BOX 0 SG GS 10 SM GS NP 300 396 M 588 396 L 588 444 L 300 444 L CP S GR GR % BOX 0 SG GS 10 SM GS NP 300 588 M 588 588 L 588 636 L 300 636 L CP S GR GR % BOX 0 SG GS 10 SM GS NP 284 780 M 584 780 L 584 828 L 284 828 L CP S GR GR % TEXT NP 0 SG GS 1 W 452 430 M GS GS 0 /NewCenturySchlbk-Roman FF [25 0 0 -25 0 0] MS (Open Consensus) TGSW AD GR 2 DI NE 0 RM 0 SG /NewCenturySchlbk-Roman FF [25 0 0 -25 0 0] MS (Open Consensus) SH GR GR % TEXT NP 0 SG GS 1 W 444 814 M GS GS 0 /NewCenturySchlbk-Roman FF [25 0 0 -25 0 0] MS (Communication) TGSW AD GR 2 DI NE 0 RM 0 SG /NewCenturySchlbk-Roman FF [25 0 0 -25 0 0] MS (Communication) SH GR GR % TEXT NP 0 SG GS 1 W 444 622 M GS GS 0 /NewCenturySchlbk-Roman FF [25 0 0 -25 0 0] MS (Multicast/Broadcast) TGSW AD GR 2 DI NE 0 RM 0 SG /NewCenturySchlbk-Roman FF [25 0 0 -25 0 0] MS (Multicast/Broadcast) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 556 444 M 144 0 atan DU cos 8.000 MU 556 exch SU exch sin 8.000 MU 588 exch SU L TGSM 1 W S GR GS TGSM NP 556 588 8.000 3.000 0 144 TGAT 1 SG CP F 0 SG NP 556 588 8.000 3.000 0 144 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 352 588 M -144 0 atan DU cos 8.000 MU 352 exch SU exch sin 8.000 MU 444 exch SU L TGSM 1 W S GR GS TGSM NP 352 444 8.000 3.000 0 -144 TGAT 1 SG CP F 0 SG NP 352 444 8.000 3.000 0 -144 TGAT CP F GR % TEXT NP 0 SG GS 1 W 344 711 M GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (S-Receive) SH GR GR % TEXT NP 0 SG GS 1 W 572 523 M GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (MB-Send) SH GR GR % TEXT NP 0 SG GS 1 W 224 675 M GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (Receive) SH GR GR % TEXT NP 0 SG GS 1 W 360 523 M GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (MB-Deliver) SH GR GR % BOX 0 SG GS 10 SM GS NP 64 576 M 160 576 L 160 624 L 64 624 L CP S GR GR % TEXT NP 0 SG GS 1 W 112 610 M GS GS 0 /NewCenturySchlbk-Roman FF [25 0 0 -25 0 0] MS (FD) TGSW AD GR 2 DI NE 0 RM 0 SG /NewCenturySchlbk-Roman FF [25 0 0 -25 0 0] MS (FD) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 12] 0 SD NP 108 576 M 108 420 L TGSM 1 W S [] 0 SD GR % TEXT NP 0 SG GS 1 W 32 495 M GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (FD-) SH GR 0 22 RM GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (Update) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 96 728 M 0 44 atan DU cos 8.000 MU 140 exch SU exch sin 8.000 MU 728 exch SU L TGSM 1 W S GR GS TGSM NP 140 728 8.000 3.000 44 0 TGAT 1 SG CP F 0 SG NP 140 728 8.000 3.000 44 0 TGAT CP F GR % TEXT NP 0 SG GS 1 W 148 731 M GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (Message) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [8 8] 0 SD NP 108 420 M 0 192 atan DU cos 8.000 MU 300 exch SU exch sin 8.000 MU 420 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 300 420 8.000 3.000 192 0 TGAT 1 SG CP F 0 SG NP 300 420 8.000 3.000 192 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [8 8] 0 SD NP 160 608 M 160 608 L 0 140 atan DU cos 8.000 MU 300 exch SU exch sin 8.000 MU 608 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 300 608 8.000 3.000 140 0 TGAT 1 SG CP F 0 SG NP 300 608 8.000 3.000 140 0 TGAT CP F GR % TEXT NP 0 SG GS 1 W 180 583 M GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (FD-) SH GR 0 22 RM GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (Send) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [4 4] 0 SD NP 96 756 M 0 44 atan DU cos 8.000 MU 140 exch SU exch sin 8.000 MU 756 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 140 756 8.000 3.000 44 0 TGAT 1 SG CP F 0 SG NP 140 756 8.000 3.000 44 0 TGAT CP F GR % TEXT NP 0 SG GS 1 W 148 759 M GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (Actions) SH GR GR % BOX 0 SG GS 10 SM GS NP 692 396 M 880 396 L 880 444 L 692 444 L CP S GR GR % TEXT NP 0 SG GS 1 W 788 430 M GS GS 0 /NewCenturySchlbk-Roman FF [25 0 0 -25 0 0] MS (Stable Storage) TGSW AD GR 2 DI NE 0 RM 0 SG /NewCenturySchlbk-Roman FF [25 0 0 -25 0 0] MS (Stable Storage) SH GR GR % POLY/OPEN-SPLINE 0 SG GS [8 8] 0 SD NP 588 416 M 0 104 atan DU cos 8.000 MU 692 exch SU exch sin 8.000 MU 416 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 692 416 8.000 3.000 104 0 TGAT 1 SG CP F 0 SG NP 692 416 8.000 3.000 104 0 TGAT CP F GR % OVAL 0 SG NP 803 497 24 10 TGEL F GS GS NP 803 497 24 10 TGEL S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 779 494 M 779 529 L TGSM 1 W S GR % POLY/OPEN-SPLINE 0 SG GS NP 827 494 M 827 527 L TGSM 1 W S GR % ARC 0 SG GS GS NP 803 522 24 15 168 11 TGAR S GR GR % POLY/OPEN-SPLINE 0 SG GS [8 8] 0 SD NP 796 448 M 36 0 atan DU cos 8.000 MU 796 exch SU exch sin 8.000 MU 484 exch SU L TGSM 1 W S [] 0 SD GR GS TGSM NP 796 484 8.000 3.000 0 36 TGAT 1 SG CP F 0 SG NP 796 484 8.000 3.000 0 36 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS [8 8] 0 SD NP 808 448 M 36 0 atan DU cos 8.000 MU exch sin 8.000 MU RM 808 484 L TGSM 1 W S [] 0 SD GR GS TGSM NP 808 448 8.000 3.000 0 -36 TGAT 1 SG CP F 0 SG NP 808 448 8.000 3.000 0 -36 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 332 636 M 144 0 atan DU cos 8.000 MU exch sin 8.000 MU RM 332 780 L TGSM 1 W S GR GS TGSM NP 332 636 8.000 3.000 0 -144 TGAT 1 SG CP F 0 SG NP 332 636 8.000 3.000 0 -144 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 316 780 M -144 0 atan DU cos 8.000 MU 316 exch SU exch sin 8.000 MU 636 exch SU L TGSM 1 W S GR GS TGSM NP 316 636 8.000 3.000 0 -144 TGAT 1 SG CP F 0 SG NP 316 636 8.000 3.000 0 -144 TGAT CP F GR % TEXT NP 0 SG GS 1 W 584 711 M GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (S-Send) SH GR GR % TEXT NP 0 SG GS 1 W 496 675 M GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (Send) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 572 636 M 144 0 atan DU cos 8.000 MU 572 exch SU exch sin 8.000 MU 780 exch SU L TGSM 1 W S GR GS TGSM NP 572 780 8.000 3.000 0 144 TGAT 1 SG CP F 0 SG NP 572 780 8.000 3.000 0 144 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 556 780 M -144 0 atan DU cos 8.000 MU exch sin 8.000 MU RM 556 636 L TGSM 1 W S GR GS TGSM NP 556 780 8.000 3.000 0 144 TGAT 1 SG CP F 0 SG NP 556 780 8.000 3.000 0 144 TGAT CP F GR % TEXT NP 0 SG GS 1 W 444 238 M GS GS 0 /NewCenturySchlbk-Roman FF [25 0 0 -25 0 0] MS (Agreement Protocols) TGSW AD GR 2 DI NE 0 RM 0 SG /NewCenturySchlbk-Roman FF [25 0 0 -25 0 0] MS (Agreement Protocols) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 340 252 M 144 0 atan DU cos 8.000 MU 340 exch SU exch sin 8.000 MU 396 exch SU L TGSM 1 W S GR GS TGSM NP 340 396 8.000 3.000 0 144 TGAT 1 SG CP F 0 SG NP 340 396 8.000 3.000 0 144 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 328 396 M -144 0 atan DU cos 8.000 MU 328 exch SU exch sin 8.000 MU 252 exch SU L TGSM 1 W S GR GS TGSM NP 328 252 8.000 3.000 0 -144 TGAT 1 SG CP F 0 SG NP 328 252 8.000 3.000 0 -144 TGAT CP F GR % TEXT NP 0 SG GS 1 W 352 359 M GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (commit) SH GR GR % TEXT NP 0 SG GS 1 W 244 299 M GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (decide) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 564 252 M 144 0 atan DU cos 8.000 MU 564 exch SU exch sin 8.000 MU 396 exch SU L TGSM 1 W S GR GS TGSM NP 564 396 8.000 3.000 0 144 TGAT 1 SG CP F 0 SG NP 564 396 8.000 3.000 0 144 TGAT CP F GR % BOX 0 SG GS 10 SM GS NP 228 12 M 668 12 L 668 60 L 228 60 L CP S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 556 60 M 144 0 atan DU cos 8.000 MU 556 exch SU exch sin 8.000 MU 204 exch SU L TGSM 1 W S GR GS TGSM NP 556 204 8.000 3.000 0 144 TGAT 1 SG CP F 0 SG NP 556 204 8.000 3.000 0 144 TGAT CP F GR % TEXT NP 0 SG GS 1 W 564 127 M GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (TO-Broadcast) SH GR GR % TEXT NP 0 SG GS 1 W 196 127 M GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (TO-Deliver) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 328 204 M -144 0 atan DU cos 8.000 MU 328 exch SU exch sin 8.000 MU 60 exch SU L TGSM 1 W S GR GS TGSM NP 328 60 8.000 3.000 0 -144 TGAT 1 SG CP F 0 SG NP 328 60 8.000 3.000 0 -144 TGAT CP F GR % TEXT NP 0 SG GS 1 W 448 46 M GS GS 0 /NewCenturySchlbk-Roman FF [25 0 0 -25 0 0] MS (Application) TGSW AD GR 2 DI NE 0 RM 0 SG /NewCenturySchlbk-Roman FF [25 0 0 -25 0 0] MS (Application) SH GR GR % TEXT NP 0 SG GS 1 W 572 359 M GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (propose) SH GR GR % POLY/OPEN-SPLINE 0 SG GS NP 300 232 M 0 -68 atan DU cos 8.000 MU exch sin 8.000 MU RM 232 232 L 232 464 L 324 464 L 324 588 L TGSM 1 W S GR GS TGSM NP 300 232 8.000 3.000 68 0 TGAT 1 SG CP F 0 SG NP 300 232 8.000 3.000 68 0 TGAT CP F GR % POLY/OPEN-SPLINE 0 SG GS NP 300 216 M 220 216 L 220 476 L 316 476 L 112 0 atan DU cos 8.000 MU 316 exch SU exch sin 8.000 MU 588 exch SU L TGSM 1 W S GR GS TGSM NP 316 588 8.000 3.000 0 112 TGAT 1 SG CP F 0 SG NP 316 588 8.000 3.000 0 112 TGAT CP F GR % BOX 0 SG GS 10 SM GS NP 300 204 M 588 204 L 588 252 L 300 252 L CP S GR GR % POLY/OPEN-SPLINE 0 SG GS NP 540 396 M -144 0 atan DU cos 8.000 MU 540 exch SU exch sin 8.000 MU 252 exch SU L TGSM 1 W S GR GS TGSM NP 540 252 8.000 3.000 0 -144 TGAT 1 SG CP F 0 SG NP 540 252 8.000 3.000 0 -144 TGAT CP F GR % TEXT NP 0 SG GS 1 W 412 295 M GS 0 SG /Courier FF [20 0 0 -20 0 0] MS (pre-commit) SH GR GR % TEXT NP 0 SG GS 1 W 604 215 M GS 0 SG /Courier-Oblique FF [20 0 0 -20 0 0] MS (e.g., ) SH GR 0 22 RM GS 0 SG /Courier-Oblique FF [20 0 0 -20 0 0] MS (Total Order Broadcast) SH GR GR GR tgifsavedpage restore end showpage %MatchingCreationDate: Wed Jan 10 16:13:29 2001 %%EndDocument @endspecial 1461 3551 a(Figure)g(12:)36 b(Arc)n(hitecture)0 3750 y Fy(Comm)m(unication.)44 b Fx(This)30 b(la)n(y)n(er)f(handles)h (p)r(oin)n(t-to-p)r(oin)n(t)g(as)g(w)n(ell)g(as)f(m)n(ulti-p)r(oin)n(t) i(comm)n(unication.)45 b(The)30 b Fv(Com-)0 3850 y(munic)l(ation)h Fx(la)n(y)n(er)23 b(is)i(based)f(on)g(the)h(mo)r(del)g(describ)r(ed)g (in)g(Section)f(2.)36 b(It)25 b(uses)f(so)r(c)n(k)n(ets)f(and)i (a\013ects)f(to)h(eac)n(h)f(pro)r(cess)0 3949 y(a)29 b(unique)g(id.)42 b(Pro)r(cess)27 b(ids)j(are)e(tak)n(en)g(from)h(an)g (ordered)f(set)h(and)g(b)r(oth)h(TCP/IP)d(and)i(UDP/IP)g(can)f(b)r(e)i (used)f(for)0 4049 y(comm)n(unications.)35 b(F)-7 b(or)24 b(TCP/IP)-7 b(,)23 b(to)h(decide)h(whic)n(h)f(pro)r(cess)f(listens)i (to)f(the)h(connection)f(and)g(whic)n(h)h(one)f(connects,)0 4149 y(w)n(e)31 b(use)g(a)f(simple)h(sc)n(heme)g(where)g(a)f(pro)r (cess)g(with)i(a)e(lo)n(w)n(er)g(id)h(\(acts)g(as)f(a)h(clien)n(t\))g (connects)g(to)g(a)g(pro)r(cess)e(with)j(a)0 4248 y(greater)22 b(id)i(\(acts)g(as)f(serv)n(er\).)34 b(W)-7 b(e)25 b(hence)f(a)n(v)n (oid)e(double)i(connections)f(and)h(ensures)f(that)h(eac)n(h)f(pro)r (cess)g(kno)n(ws)g(what)0 4348 y(to)30 b(do)h(in)f(case)g(of)h (reconnection,)f(in)h(particular)e(in)i(case)e(of)i(reco)n(v)n(ery)-7 b(.)43 b(The)30 b Fv(Communic)l(ation)38 b Fx(la)n(y)n(er)29 b(has)h(no)g(other)0 4448 y(functionalit)n(y)h(b)r(esides)g(handling)f Fv(send)40 b Fx(and)30 b Fv(r)l(e)l(c)l(eive)38 b Fx(ev)n(en)n(ts.)46 b(W)-7 b(e)31 b(giv)n(e)f(b)r(elo)n(w)g(an)g(excerpt)h(of)f(the)i (corresp)r(onding)0 4547 y(class)27 b(for)g(TCP/IP)-7 b(.)p 0 4673 3780 3 v 0 4866 a Fd(public)37 b(class)g(Communication)i (extends)e(UnicastRemoteObject)k({)71 4945 y(protected)c(interface)h (Listener{)565 5024 y(public)f(void)f(receiveMsg\(Message)k(m\);)565 5102 y(...)282 5181 y(})71 5260 y(protected)d(class)g(SocketSender)i (extends)e(Sender)g({...})71 5339 y(protected)g(class)g(SocketReceiver) i(extends)f(Receiver)f({...})71 5418 y(....)71 5497 y(public)g(static)g (void)f(closeServer\(\))j(throws)e(IOException)h({...})1848 5768 y Fx(17)p eop %%Page: 18 18 18 17 bop 71 -67 a Fd(public)37 b(void)f(closeClientChannel\(\))41 b(throws)c(IOException)h({...})71 12 y(../)0 91 y(})p 0 207 3780 3 v 0 454 a Fy(Multicast/Broadcast.)e Fx(This)25 b(la)n(y)n(er)e(handles)i(m)n(ulticasts)f(and)h(broadcasts)e(messages)h (with)h(di\013eren)n(t)g(seman)n(tics)0 553 y(to)c(a)g(pro)r(cess)f (group.)34 b(The)22 b(v)-5 b(arious)20 b(seman)n(tics)g(are:)33 b(\(a\))22 b(those)f(of)g(the)h(retransmission)e(mo)r(dule)h(de\014ned) h(in)g(Section)f(2)0 653 y(\()p Fc(s-send)e Fx(and)j Fc(s-receive)p Fx(\),)d(and)j(\(b\))g Fv(simple)29 b Fx(sends)21 b(and)h(receiv)n(es)e(also)g(de\014ned)i(in)g(Section)f(2)g (\()p Fc(send)g Fx(and)g Fc(receive)p Fx(\).)0 753 y(The)34 b(simple)g Fc(send)e Fx(mak)n(es)h(only)h(one)f(trial)h(to)f(send)h (the)g(message.)55 b(W)-7 b(e)34 b(ha)n(v)n(e)f(implemen)n(ted)h(the)g (retransmission)0 852 y(mo)r(dule)d(as)f(a)h(thread)f(in)i(the)f Fv(Multic)l(ast/Br)l(o)l(adc)l(ast)40 b Fx(la)n(y)n(er.)46 b(This)30 b(la)n(y)n(er)g(sends)g(and)h(receiv)n(es)e(messages)h(using) g(the)0 952 y(primitiv)n(es)d Fv(send)37 b Fx(and)27 b Fv(r)l(e)l(c)l(eive)35 b Fx(of)27 b(the)h Fv(Communic)l(ation)j (layer)p Fx(.)38 b(W)-7 b(e)28 b(giv)n(e)f(b)r(elo)n(w)g(some)g (excerpt)g(of)g(this)h(class.)p 0 1078 V 0 1268 a Fd(public)37 b(class)g(MulticastBroadcast)j(implements)e(Communication.Listener)k({) 71 1347 y(protected)37 b(interface)h(Listener{public)i(void)c (notifyOverwriteExcepti)q(on\(S)q(tri)q(ng)41 b(error\);})71 1426 y(protected)c(class)g(MulticastBroadcastSende)q(r)k(extends)d (Sender)f({...})71 1505 y(protected)g(class)g(NetworkReceiver)j (extends)d(Receiver)h({...})71 1584 y(...)71 1663 y(public)f(void)f (notifyOverwriteExceptio)q(n\(St)q(rin)q(g)41 b(error\))c({...})71 1741 y(public)g(void)f(send\(Message)j(m,)d(int[])g(dst\))h({...})71 1820 y(public)g(void)f(s-send\(Message)j(m,)d(int[])h(dst\))f({...})71 1899 y(public)h(Message)g(receive\(Message)i(m,)d(int)g(dst\))h({...}) 71 1978 y(public)g(void)f(s-receive\(Message)k(m,)c(int)g(dst\))h ({...})71 2057 y(...)0 2136 y(})p 0 2252 V 0 2499 a Fy(Op)s(en)43 b(Consensus.)67 b Fx(This)38 b(la)n(y)n(er)f(implemen)n(ts)h(the)h(op)r (en)f(consensus)f(algorithm.)68 b(The)38 b(main)g(op)r(erations)f(ex-)0 2598 y(p)r(orted)k(b)n(y)f(this)i(class)e(are)g(the)h(op)r(eration)f Fc(propose)e Fx(and)j Fc(commit)p Fx(.)74 b(Sev)n(eral)40 b(inner)g(classes)g(are)g(used)h(for)f(the)0 2698 y(implemen)n(tation) 33 b(of)h(this)f(op)r(eration,)h(i.e.,)h(for)d(the)i(actual)f(op)r(en)g (consensus)f(algorithm.)53 b(The)33 b(la)n(y)n(er)f(in)n(v)n(ok)n(es)f (the)0 2798 y Fc(Multicast/Broadc)o(ast)g Fx(class)36 b(to)h(send)h(messages)e(and)h(the)h Fc(StableStorage)32 b Fx(class)k(\()p Fv(stableStor)l(e)44 b Fx(function\))39 b(to)0 2897 y(store)32 b(critical)g(\014elds)h(in)g(a)f(\014le)h(and)g (retriev)n(e)e(them)i(up)r(on)g(reco)n(v)n(ery)-7 b(.)50 b(The)33 b Fc(MulticastBroadca)o(st.)o(Li)o(st)o(ene)o(r)27 b Fx(in-)0 2997 y(terface)k(extends)g(the)g(in)n(terface)f Fc(EventListener)p Fx(,)d(while)k(the)h Fc(Sender)d Fx(and)h Fc(Receiver)e Fx(classes)i(extends)h(the)h(class)0 3097 y Fc(Thread)p Fx(.)125 3243 y(Eac)n(h)38 b(of)h(the)h(inner)f(classes)g (within)h Fc(OpenConsensus)34 b Fx(corresp)r(onds)j(to)j(a)f(sp)r (eci\014c)g(thread)g(in)n(v)n(olv)n(ed)f(in)i(the)0 3343 y(implemen)n(tation)31 b(of)g(the)g(op)r(erations)f Fc(propose)e Fx(and)j Fc(commit)p Fx(:)41 b(\(1\))31 b(a)g Fc(Coordinator)26 b Fx(thread)k(that)i(corresp)r(onds)d(to)0 3443 y(the)k(task)g Fv(c)l(o)l(or)l(dinator)43 b Fx(describ)r(ed)33 b(in)g(the)g(op)r(en)g (consensus)f(algorithm)f(\(lines)j(21-39)c(of)j(Figure)f(4\),)j(\(2\))e (a)f(thread)0 3542 y Fc(Commit)j Fx(thread)h(that)i(handles)e(all)h (the)g(commit)h(in)n(v)n(o)r(cations)d(\(lines)i(14-20\),)h(and)f (\(3\))g(a)g(thread)f Fc(Propose)e Fx(that)0 3642 y(handles)24 b(the)h(prop)r(ose)e(in)n(v)n(o)r(cations)g(\(lines)h(4-13\).)35 b(The)24 b(last)g(three)g(classes)f(are)h(not)g(static)g(b)r(ecause)g (they)h(are)e(b)r(ound)0 3742 y(to)28 b(a)g(single)g(instance)g(of)g (consensus.)39 b(Finally)-7 b(,)28 b(class)g Fc(OpenConsensusSe)o(nde)o (r)22 b Fx(\(resp.)39 b Fc(OpenConsensusRec)o(ei)o(ver)o Fx(\))0 3841 y(treat)24 b(the)g(messages)f(that)h(need)h(to)f(b)r(e)g (sen)n(t)g(\(resp.)36 b(receiv)n(ed\).)e(The)25 b(class)e Fc(OpenConsensusRec)o(ei)o(ver)18 b Fx(corresp)r(onds)0 3941 y(to)26 b(the)g(receiv)n(e)f(and)g(s-receiv)n(e)g(primitiv)n(es,)g (i.e.,)i(lines)f(40-59)d(of)j(Figure)g(4.)36 b(W)-7 b(e)26 b(giv)n(e)f(b)r(elo)n(w)g(an)h(excerpt)f(of)h(the)h(class)0 4040 y Fc(OpenConsensus)p Fx(.)p 0 4167 V 0 4357 a Fd(public)37 b(class)g(OpenConsensus)i(implements)f(MulticastBroadcast.Liste)q(ner)k ({)71 4436 y(protected)37 b(static)g(class)g(OpenConsensusSender)k (extends)c(Sender)g({...})71 4514 y(protected)g(static)g(class)g (OpenConsensusReceiver)k(extends)d(Receiver)f({...})71 4593 y(protected)g(class)g(Coordinator)i(extends)e(Thread)g({...})71 4672 y(protected)g(class)g(Commit)g(extends)g(Thread)g({...})71 4751 y(protected)g(class)g(Propose)g(extends)h(Thread)f({...})71 4830 y(....)71 4909 y(protected)g(synchronized)i(void)e (stableStore\(int[])j(fields\))d({...})71 4988 y(....)71 5067 y(public)g(int)f(propose\(int)i(value\))f({...})71 5145 y(public)g(boolean)g(commit\(int)h(value\))f({...})71 5224 y(...)0 5303 y(})p 0 5420 V 1848 5768 a Fx(18)p eop %%Page: 19 19 19 18 bop 0 -67 a Fy(T)-8 b(otal)31 b(Order)g(Broadcast.)38 b Fx(The)26 b Fv(T)-6 b(otalOr)l(derBr)l(o)l(adc)l(ast)37 b Fx(la)n(y)n(er)25 b(atomically)h(broadcasts)f(and)i(deliv)n(ers)e (messages.)0 33 y(It)e(in)n(v)n(ok)n(es)e(the)h Fc(OpenConsensus)c Fx(class)j(to)i(solv)n(e)e(consensus.)34 b(As)23 b(for)f(our)g Fc(OpenConsensus)17 b Fx(implemen)n(tation,)24 b(la)n(y)n(ers)0 132 y(comm)n(unicate)d(via)f(metho)r(d)i(in)n(v)n(o)r(cations)d(and)i (listeners)g(for)f(up)r(calls.)35 b(Class)20 b Fc(TotalOrderBroadc)o (ast)o(Se)o(nde)o(r)15 b Fx(\(resp.)0 232 y Fc(TotalOrderBroadc)o(ast)o (Re)o(ce)o(ive)o(r)p Fx(\))23 b(handles)29 b(the)h(messages)d(that)j (need)f(to)g(b)r(e)g(sen)n(t)g(\(resp.)42 b(receiv)n(ed\).)e(The)30 b(class)0 332 y Fc(TotalOrderBroadc)o(ast)o(Re)o(ce)o(ive)o(r)16 b Fx(corresp)r(onds)k(to)i(the)g(lines)g(12-23)e(of)i(Figure)g(10.)34 b(The)22 b(thread)f Fc(Propose)e Fx(in)n(v)n(ok)n(es)0 431 y(the)37 b Fc(OpenConsensus)32 b Fx(la)n(y)n(er)j(\(lines)j(7-9\),) g(while)f(the)h Fc(to-deliver)33 b Fx(primitiv)n(e)j(implemen)n(ts)i (the)f(TO-Deliv)n(ery)f(of)0 531 y(messages)i(\(lines)i(10-11\).)70 b(The)40 b Fc(to-broadcast)34 b Fx(primitiv)n(e)39 b(is)h(in)n(v)n(ok)n (ed)e(when)h(a)g(programmer)e(desires)i(to)g(TO-)0 630 y(Broadcast)26 b(a)h(message)f(\(lines)i(4-5\).)36 b(W)-7 b(e)28 b(giv)n(e)e(b)r(elo)n(w)i(an)f(excerpt)g(of)h(the)g Fc(TotalOrderBroad)o(cas)o(t)21 b Fx(class.)p 0 757 3780 3 v 0 925 a Fd(public)37 b(class)g(TotalOrderBroadcast)j(implements)f (OpenConsensus.Listener)i({)71 1004 y(protected)c(static)g(class)g (TotalOrderBroadcastSend)q(er)42 b(extends)37 b(Sender)g({...})71 1083 y(protected)g(static)g(class)g(TotalOrderBroadcastRece)q(ive)q(r)k (extends)c(Receiver)h({...})71 1162 y(protected)f(class)g(Propose)g (extends)h(Thread)f({...})71 1241 y(....)71 1319 y(public)g(void)f (to-broadcast\(Messageset)42 b(msgSet\))37 b({...})71 1398 y(public)g(void)f(to-deliver\(int)j(k,)d(Messageset)i(msgSet\))g ({...})71 1477 y(...)0 1556 y(})p 0 1651 V 0 1897 a Fy(Stable)c (Storage.)43 b Fx(The)30 b(stable)g(storage)e(mo)r(dule)i(abstracts)e (a)i(hard)f(disk.)43 b(It)30 b(is)g(accessed)e(ev)n(ery-time:)41 b(\(a\))30 b(op)r(en)0 1997 y(consensus)h(needs)h(to)g(store)f(some)h (v)-5 b(ariable)31 b(in)n(to)g(stable)h(storage,)f(and)h(\(b\))h(a)f (pro)r(cess)f(reco)n(v)n(ers)e(and)j(retriev)n(es)e(its)0 2097 y(p)r(ersisten)n(t)d(state.)37 b(W)-7 b(e)28 b(giv)n(e)f(b)r(elo)n (w)g(an)g(excerpt)g(of)h(this)g(class.)p 0 2223 V 0 2391 a Fd(public)37 b(class)g(StableStorage)i({)71 2470 y(protected)e (String)g(storageFileName;)71 2549 y(...)71 2628 y(public)g (synchronized)h(void)f(stableStore\()h(int[])f(fields)g(\))f({...})71 2707 y(public)h(synchronized)h(void)f(stableRetrieve\()i(int[])e(a)f (\))f({...})71 2786 y(...)0 2865 y(})p 0 2960 V 0 3206 a Fy(F)-8 b(ailure)39 b(Detector.)57 b Fx(A)35 b(failure)e(detector)h (abstracts)f(a)h(distributed)h(oracle)d(that)j(pro)n(vides)e(the)h(pro) r(cesses)f(with)0 3306 y(hin)n(ts)23 b(ab)r(out)f(crashes)f([CT96)o(].) 35 b(The)23 b(failure)f(detector)g(\012)h(is)f(implemen)n(ted)h(along)e (the)i(lines)g(of)f Fi(3)p Fq(S)3149 3318 y Fp(u)3215 3306 y Fx(from)g([A)n(CT00a)n(];)0 3405 y(The)f(failure)g(detector)g (outputs)h(a)f Fv(trustlist)28 b Fx(at)21 b(ev)n(ery)f(pro)r(cess.)34 b(The)21 b Fv(trustlist)28 b Fx(is)21 b(a)g(set)g(of)h(pro)r(cesses)d (that)j(are)e(deemed)0 3505 y(to)j(b)r(e)g(curren)n(tly)e(up.)36 b(W)-7 b(e)23 b(giv)n(e)f(b)r(elo)n(w)g(an)g(excerpt)g(from)h(our)f Fc(FDetector)d Fx(mo)r(dule.)35 b(The)23 b(class)f Fc(elementTL)d Fx(con)n(tains)0 3605 y(the)32 b(pro)r(cesses)f(that)h(are)f(trusted)g (\()p Fv(trustlist)8 b Fx(\))32 b(b)n(y)f(the)h(failure)g(detector)f (The)h(in)n(terface)f Fc(FDListener)d Fx(up)r(dates)k(the)0 3704 y(upp)r(er)22 b(la)n(y)n(ers)d(of)i(c)n(hanges)f(in)i(the)g Fv(trustlist)p Fx(,)f(while)h(the)g(thread)f Fc(FDSenderThread)15 b Fx(k)n(eeps)21 b(on)g(retransmit)g Ff(i)p 3391 3704 28 4 v 33 w(am)p 3537 3704 V 33 w(alive)0 3804 y Fx(messages)c(to)i(ev) n(ery)f(pro)r(cess.)33 b(When)19 b(a)g(pro)r(cess)e(susp)r(ects)i(a)g (new)g(pro)r(cess)f(or)g(stops)g(susp)r(ecting)h(a)f(pro)r(cess,)i(it)f (up)r(dates)0 3903 y(the)28 b(consensus)f(la)n(y)n(er)e(with)k Fv(FD-Up)l(date)p Fx(.)p 0 4029 3780 3 v 0 4198 a Fd(public)37 b(class)g(FDetector)h(implements)g(MulticastBroadcast.Liste)q(ner,)k (MulticastBroadcast.FDLis)q(ten)q(er)f({)71 4277 y(protected)c(class)g (elementTL)h({...})71 4356 y(protected)f(interface)h(FDListener)g ({...})71 4435 y(protected)f(class)g(FDSenderThread)i(extends)f(Sender) f({...})71 4514 y(...)0 4592 y(})p 0 4687 V 0 5120 a Fg(6.1)112 b(P)m(erformance)0 5320 y Fx(Figure)25 b(13)g(giv)n(es)g (the)h(throughput)g(in)g(nice)g(runs)g(of)g(op)r(en)g(\(vs)g (consensus\))f(on)h(the)g(one)g(hand,)g(and)g(op)r(en)g(consensus)0 5420 y(based)36 b(total)g(order)f(broadcast)f(\(vs)j(consensus)e(based) h(total)g(order)f(broadcast\))g(on)h(the)h(other)e(hand.)63 b(Our)36 b(p)r(er-)0 5519 y(formance)28 b(measures)g(w)n(ere)h(p)r (erformed)g(on)g(a)f(LAN)i(in)n(terconnected)f(b)n(y)g(F)-7 b(ast)29 b(Ethernet)g(\(100MB/s\))f(on)h(a)g(normal)1848 5768 y(19)p eop %%Page: 20 20 20 19 bop 0 -67 a Fx(w)n(orking)28 b(da)n(y)-7 b(.)41 b(The)29 b(LAN)h(consisted)e(of)i(60)e(UltraSUN)i(10)e(\(256Mb)g(RAM,)i (9)f(Gb)h(Harddisk\))e(mac)n(hines.)42 b(All)29 b(sta-)0 33 y(tions)f(w)n(ere)g(running)g(Solaris)f(2.7,)h(and)g(our)g(implemen) n(tation)h(w)n(as)e(running)h(on)g(Solaris)g(JVM)g(\(JDK)h(1.2.1,)e (nativ)n(e)0 132 y(threads,)e(JIT\).)f(The)h(e\013ectiv)n(e)g(message)e (size)h(transmitted)h(w)n(as)f(of)h(1Kb.)35 b(Figure)24 b(13\(a\))g(compares)f(op)r(en)i(consensus)0 232 y(and)35 b(the)h(consensus)f(of)g([A)n(CT00a)o(].)60 b(T)-7 b(o)36 b(ha)n(v)n(e)e(a)h(fair)g(comparison,)h(w)n(e)f(measure)f(the)i(case)f (where)g(all)g(pro)r(cesses)0 332 y(prop)r(ose)29 b(and)i(decide.)46 b(Not)31 b(surprisingly)e(our)h(comparison)f(depicts)i(the)g(fact)g (that)g(the)g(more)f(forced)g(logs)f(an)i(im-)0 431 y(plemen)n(tation) 26 b(has,)f(the)h(w)n(orse)e(the)i(p)r(erformance)f(is.)36 b(W)-7 b(e)26 b(ha)n(v)n(e)f(then)h(implemen)n(ted)g(a)g(total)f(order) f(broadcast)g(o)n(v)n(er)0 531 y(op)r(en)30 b(consensus)e(and)i (consensus:)39 b(p)r(erformance)29 b(results)g(are)f(summarized)h(in)h (Figure)f(13\(b\).)43 b(Again,)29 b(since)h(op)r(en)0 630 y(consensus)c(mak)n(es)h(less)g(forced)f(logs,)h(the)h(p)r (erformance)e(of)h(total)h(order)e(broadcast)f(o)n(v)n(er)h(op)r(en)h (consensus)g(is)g(b)n(y)g(far)0 730 y(b)r(etter)h(than)g(the)g(one)f (with)h(the)g(traditional)f(consensus.)48 2172 y @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury 2160 @rwi @setspecial %%BeginDocument: compCons.eps /gnudict 256 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /userlinewidth gnulinewidth def /vshift -60 def /dl {10 mul} def /hpt_ 31.5 def /vpt_ 31.5 def /hpt hpt_ def /vpt vpt_ def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def /BL { stroke gnulinewidth 2 mul setlinewidth } def /AL { stroke gnulinewidth 2 div setlinewidth } def /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def /Pnt { stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore } def /Dia { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke Pnt } def /Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke Pnt } def /Crs { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke Pnt } def /Star { 2 copy Pls Crs } def /BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill } def /TriUF { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill } def /TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke Pnt } def /TriDF { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill} def /DiaF { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill } def /Pent { stroke [] 0 setdash 2 copy gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore Pnt } def /PentF { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore } def /Circle { stroke [] 0 setdash 2 copy hpt 0 360 arc stroke Pnt } def /CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def /C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def /C1 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill vpt 0 360 arc closepath } bind def /C2 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C3 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill vpt 0 360 arc closepath } bind def /C4 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc closepath } bind def /C5 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc } bind def /C6 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 270 arc closepath fill vpt 0 360 arc closepath } bind def /C7 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 270 arc closepath fill vpt 0 360 arc closepath } bind def /C8 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C9 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 450 arc closepath fill vpt 0 360 arc closepath } bind def /C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C11 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C12 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C13 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C14 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 360 arc closepath fill vpt 0 360 arc } bind def /C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill vpt 0 360 arc closepath } bind def /Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } bind def /Square { dup Rec } bind def /Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def /S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def /S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def /S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def /S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 2 copy vpt Square fill Bsquare } bind def /S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def /S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def /S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def /S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy vpt Square fill Bsquare } bind def /S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def /D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def /D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def /D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def /D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def /D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def /D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def /D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def /D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def /D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def /D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def /D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def /D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def /D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def /D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def /D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def /D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def /DiaE { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke } def /BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke } def /TriUE { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke } def /TriDE { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke } def /PentE { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore } def /CircE { stroke [] 0 setdash hpt 0 360 arc stroke } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /DiaW { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V Opaque stroke } def /BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V Opaque stroke } def /TriUW { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V Opaque stroke } def /TriDW { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V Opaque stroke } def /PentW { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat Opaque stroke grestore } def /CircW { stroke [] 0 setdash hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end gnudict begin gsave 50 50 translate 0.050 0.050 scale 0 setgray newpath (Palatino-Bold) findfont 180 scalefont setfont 1.000 UL LTb 702 540 M 63 0 V 6129 0 R -63 0 V 594 540 M (0) Rshow 702 1152 M 63 0 V 6129 0 R -63 0 V -6237 0 R (5) Rshow 702 1764 M 63 0 V 6129 0 R -63 0 V -6237 0 R (10) Rshow 702 2376 M 63 0 V 6129 0 R -63 0 V -6237 0 R (15) Rshow 702 2988 M 63 0 V 6129 0 R -63 0 V -6237 0 R (20) Rshow 702 3600 M 63 0 V 6129 0 R -63 0 V -6237 0 R (25) Rshow 702 4212 M 63 0 V 6129 0 R -63 0 V -6237 0 R (30) Rshow 702 4824 M 63 0 V 6129 0 R -63 0 V -6237 0 R (35) Rshow 702 540 M 0 63 V 0 4221 R 0 -63 V 702 360 M (0) Cshow 1734 540 M 0 63 V 0 4221 R 0 -63 V 0 -4401 R (5) Cshow 2766 540 M 0 63 V 0 4221 R 0 -63 V 0 -4401 R (10) Cshow 3798 540 M 0 63 V 0 4221 R 0 -63 V 0 -4401 R (15) Cshow 4830 540 M 0 63 V 0 4221 R 0 -63 V 0 -4401 R (20) Cshow 5862 540 M 0 63 V 0 4221 R 0 -63 V 0 -4401 R (25) Cshow 6894 540 M 0 63 V 0 4221 R 0 -63 V 0 -4401 R (30) Cshow 1.000 UL LTb 702 540 M 6192 0 V 0 4284 V -6192 0 V 702 540 L 180 2682 M currentpoint gsave translate 90 rotate 0 0 M (throughput [consensus/s]) Cshow grestore 3798 90 M (# of processes) Cshow 1.000 UL LT0 6075 4671 M (Open consensus) Rshow 6183 4671 M 495 0 V 1115 4640 M 206 -391 V 207 -551 V 206 -147 V 2766 2400 L 4830 1495 L 6894 1176 L 1.000 UL LT1 6075 4491 M (Consensus [ACT00]) Rshow 6183 4491 M 495 0 V 1115 2511 M 206 -319 V 207 -146 V 206 -172 V 2766 1066 L 4830 944 L 6894 822 L stroke grestore end showpage %%EndDocument @endspecial 732 2355 a FD(\(a\))e(Consensus)1931 2172 y @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury 2160 @rwi @setspecial %%BeginDocument: compTO.eps /gnudict 256 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /userlinewidth gnulinewidth def /vshift -60 def /dl {10 mul} def /hpt_ 31.5 def /vpt_ 31.5 def /hpt hpt_ def /vpt vpt_ def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def /BL { stroke gnulinewidth 2 mul setlinewidth } def /AL { stroke gnulinewidth 2 div setlinewidth } def /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def /Pnt { stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore } def /Dia { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke Pnt } def /Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke Pnt } def /Crs { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke Pnt } def /Star { 2 copy Pls Crs } def /BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill } def /TriUF { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill } def /TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke Pnt } def /TriDF { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill} def /DiaF { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill } def /Pent { stroke [] 0 setdash 2 copy gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore Pnt } def /PentF { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore } def /Circle { stroke [] 0 setdash 2 copy hpt 0 360 arc stroke Pnt } def /CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def /C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def /C1 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill vpt 0 360 arc closepath } bind def /C2 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C3 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill vpt 0 360 arc closepath } bind def /C4 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc closepath } bind def /C5 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc } bind def /C6 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 270 arc closepath fill vpt 0 360 arc closepath } bind def /C7 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 270 arc closepath fill vpt 0 360 arc closepath } bind def /C8 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C9 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 450 arc closepath fill vpt 0 360 arc closepath } bind def /C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C11 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C12 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C13 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C14 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 360 arc closepath fill vpt 0 360 arc } bind def /C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill vpt 0 360 arc closepath } bind def /Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } bind def /Square { dup Rec } bind def /Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def /S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def /S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def /S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def /S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 2 copy vpt Square fill Bsquare } bind def /S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def /S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def /S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def /S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy vpt Square fill Bsquare } bind def /S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def /D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def /D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def /D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def /D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def /D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def /D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def /D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def /D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def /D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def /D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def /D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def /D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def /D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def /D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def /D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def /D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def /DiaE { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke } def /BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke } def /TriUE { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke } def /TriDE { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke } def /PentE { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore } def /CircE { stroke [] 0 setdash hpt 0 360 arc stroke } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /DiaW { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V Opaque stroke } def /BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V Opaque stroke } def /TriUW { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V Opaque stroke } def /TriDW { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V Opaque stroke } def /PentW { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat Opaque stroke grestore } def /CircW { stroke [] 0 setdash hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end gnudict begin gsave 50 50 translate 0.050 0.050 scale 0 setgray newpath (Palatino-Bold) findfont 180 scalefont setfont 1.000 UL LTb 702 540 M 63 0 V 6129 0 R -63 0 V 594 540 M (0) Rshow 702 968 M 63 0 V 6129 0 R -63 0 V 594 968 M (5) Rshow 702 1397 M 63 0 V 6129 0 R -63 0 V -6237 0 R (10) Rshow 702 1825 M 63 0 V 6129 0 R -63 0 V -6237 0 R (15) Rshow 702 2254 M 63 0 V 6129 0 R -63 0 V -6237 0 R (20) Rshow 702 2682 M 63 0 V 6129 0 R -63 0 V -6237 0 R (25) Rshow 702 3110 M 63 0 V 6129 0 R -63 0 V -6237 0 R (30) Rshow 702 3539 M 63 0 V 6129 0 R -63 0 V -6237 0 R (35) Rshow 702 3967 M 63 0 V 6129 0 R -63 0 V -6237 0 R (40) Rshow 702 4396 M 63 0 V 6129 0 R -63 0 V -6237 0 R (45) Rshow 702 4824 M 63 0 V 6129 0 R -63 0 V -6237 0 R (50) Rshow 702 540 M 0 63 V 0 4221 R 0 -63 V 702 360 M (0) Cshow 1734 540 M 0 63 V 0 4221 R 0 -63 V 0 -4401 R (5) Cshow 2766 540 M 0 63 V 0 4221 R 0 -63 V 0 -4401 R (10) Cshow 3798 540 M 0 63 V 0 4221 R 0 -63 V 0 -4401 R (15) Cshow 4830 540 M 0 63 V 0 4221 R 0 -63 V 0 -4401 R (20) Cshow 5862 540 M 0 63 V 0 4221 R 0 -63 V 0 -4401 R (25) Cshow 6894 540 M 0 63 V 0 4221 R 0 -63 V 0 -4401 R (30) Cshow 1.000 UL LTb 702 540 M 6192 0 V 0 4284 V -6192 0 V 702 540 L 180 2682 M currentpoint gsave translate 90 rotate 0 0 M (throughput [msg TO-Delivered/s]) Cshow grestore 3798 90 M (# of processes) Cshow 1.000 UL LT0 6075 4671 M (with open consensus) Rshow 6183 4671 M 495 0 V 1115 4487 M 413 -680 V 2766 2888 L 4830 2139 L 6894 1613 L 1.000 UL LT1 6075 4491 M (with consensus [ACT00]) Rshow 6183 4491 M 495 0 V 1115 1381 M 413 -123 V 2766 1002 L 4830 859 L 6894 838 L stroke grestore end showpage %%EndDocument @endspecial 2438 2355 a(\(b\))g(T)-6 b(otal)24 b(order)f(broadcast) 1249 2686 y Fx(Figure)k(13:)36 b(Throughput)27 b(comparison)0 3151 y Fw(7)135 b(Concluding)45 b(Remarks)0 3380 y Fx(On)29 b(the)h(one)e(hand,)i(theoreticians)e(ha)n(v)n(e)g(stated)h(and)g(pro)n (v)n(ed)f(fundamen)n(tal)h(results)g(ab)r(out)g(the)h(solv)-5 b(abilit)n(y)28 b(of)h(the)0 3480 y Fv(c)l(onsensus)37 b Fx(problem)g(under)g(v)-5 b(arious)37 b(system)g(mo)r(dels)g(and)h (assumptions)f([FLP85)n(,)h(F)n(C95)o(,)g(CT96)o(,)f(Her91)o(].)67 b(On)0 3579 y(the)34 b(other)f(hand,)j(dev)n(elop)r(ers)c(of)i (reliable)f(distributed)h(systems)f(ha)n(v)n(e)g(b)r(een)h(fo)r(cusing) f(on)h(designing)f(and)h(imple-)0 3679 y(men)n(ting)27 b(e\016cien)n(t)h(solutions)e(to)h(\\practical")f(agreemen)n(t)f (problems)i(lik)n(e)g Fv(total)j(or)l(der)g(br)l(o)l(adc)l(ast)e Fx(and)f Fv(atomic)k(c)l(om-)0 3778 y(mit)24 b Fx([DKM93)o(,)g(GR93)o (,)g(BHG87,)g(EMS95)n(,)g(BvR96)o(,)g(Sk)n(e81)o(].)36 b(F)-7 b(or)23 b(a)g(long)g(time,)j(the)e(t)n(w)n(o)f(researc)n(h)f (trends)h(ha)n(v)n(e)g(b)r(een)0 3878 y(undertak)n(en)d(separately)-7 b(.)33 b(Relativ)n(ely)19 b(recen)n(tly)-7 b(,)21 b(sev)n(eral)e (authors)g(suggested)g(the)i(use)f(of)h(consensus)e(as)h(a)g(basic)f (build-)0 3978 y(ing)j(blo)r(c)n(k)g(to)g(devise)g(mo)r(dular)f (solutions)h(to)g(\\practical")e(agreemen)n(t)h(problems)g([CT96)o(,)i (GS96)o(,)f(Gue95)o(,)h(HMR)-7 b(T99)o(].)0 4077 y(In)25 b(particular,)f(it)i(w)n(as)d(sho)n(wn)i(that)g(the)g(use)g(of)g (consensus)e(to)i(solv)n(e)f(v)-5 b(arious)24 b(agreemen)n(t)f (problems)h(do)r(es)h(not)g(in)n(tro-)0 4177 y(duce)j(an)n(y)g (signi\014can)n(t)g(o)n(v)n(erhead)e(with)j(resp)r(ect)f(to)g(non-mo)r (dular)f(agreemen)n(t)g(algorithms)g(that)h(b)n(ypass)g(consensus)0 4277 y(to)c(solv)n(e)g(the)h(v)n(ery)e(same)h(problems)f([GS96].)36 b(T)-7 b(o)24 b(con)n(v)n(ey)f(that)i(result,)g(the)f(authors)g(of)g ([GS96])g(considered)g(ho)n(w)n(ev)n(er)0 4376 y(a)i(system)g(mo)r(del) g(where)g(c)n(hannels)f(are)g(reliable,)h(a)g(ma)5 b(jorit)n(y)24 b(of)i(the)h(pro)r(cesses)e(remain)g(alw)n(a)n(ys)f(up,)j(and)f(pro)r (cesses)0 4476 y(that)i(crash)e(do)i(nev)n(er)e(reco)n(v)n(er.)125 4623 y(Nev)n(ertheless,)c(consensus,)g(according)e(to)j(its)f(original) e(sp)r(eci\014cation,)j(cannot)f(b)r(e)h(e\013ectiv)n(e)f(in)g(a)g (practical)f(crash-)0 4722 y(reco)n(v)n(ery)26 b(system)j(mo)r(del)g (where)g(pro)r(cesses)e(and)i(c)n(hannels)f(ma)n(y)h(crash)e(and)i (reco)n(v)n(er.)39 b(This)29 b(is)g(b)r(ecause)f(the)i(use)f(of)0 4822 y(consensus)e(in)n(tro)r(duces)g(inheren)n(t)h(additional)f (forced)g(logs)g(\(whic)n(h)h(are)f(kno)n(wn)g(to)h(b)r(e)h(ma)5 b(jor)26 b(sources)h(of)g(o)n(v)n(erhead\))0 4922 y(in)k(comparison)e (with)i(non-mo)r(dular)e(algorithms)g(that)i(b)n(ypass)e(consensus.)45 b(This)30 b(issue)h(is)f(con)n(v)n(ey)n(ed)f(for)h(instance)0 5021 y(in)35 b([RR00)o(],)i(where)d(the)h(authors)e(describ)r(e)h(a)h (total)f(order)f(broadcast)g(for)h(the)h(crash-reco)n(v)n(ery)30 b(mo)r(del,)37 b(based)d(on)0 5121 y(a)k(traditional)g(consensus)f(b)r (o)n(x.)69 b(The)38 b(proto)r(col)g(is)g(mo)r(dular,)j(but)e(rather)e (ine\016cien)n(t)i(in)f(terms)g(of)h(forced)f(logs.)0 5220 y(This)28 b(ine\016ciency)h(is)f(not)g(due)h(to)f(the)h(proto)r (col)e(p)r(er)h(se,)h(but)g(to)f(the)h(use)f(of)g(an)g(underlying)g (traditional)g(consensus)0 5320 y(b)r(o)n(x.)68 b(In)38 b([Lam89)o(],)j(Lamp)r(ort)c(presen)n(ts)g(a)h(total)g(order)f (broadcast)f(in)i(the)h(crash)e(reco)n(v)n(ery)e(mo)r(del)k(based)e(on) h(a)0 5420 y(consensus)25 b(b)r(o)n(x,)g(and)h(discusses)e(ho)n(w)h(to) h(mak)n(e)e(that)i(proto)r(col)f(e\016cien)n(t,)h(b)n(y)f(ho)n(w)n(ev)n (er)e(breaking)i(the)h(encapsulation)0 5519 y(of)i(consensus.)1848 5768 y(20)p eop %%Page: 21 21 21 20 bop 125 -67 a Fx(The)25 b(motiv)-5 b(ation)25 b(of)h(this)g(w)n (ork)e(w)n(as)g(to)i(prop)r(ose)e(a)h(reshaping)f(of)i(consensus)e (that)i(mak)n(es)f(it)h(e\013ectiv)n(e)f(in)h(suc)n(h)f(a)0 33 y(practical)i(crash-reco)n(v)n(ery)d(system)j(mo)r(del.)39 b(In)28 b(other)f(w)n(ords,)g(the)h(aim)g(w)n(as)f(to)h(\014gure)f(out) h(whether)g(w)n(e)g(can)f(de\014ne)0 132 y(a)h(consensus-lik)n(e)e(b)r (o)n(x)h(that)h(w)n(ould)g(preserv)n(e)e(mo)r(dularit)n(y)h(and)h(y)n (et)g(enables)f(e\016ciency)-7 b(.)38 b(Doing)28 b(so)f(is)h(ho)n(w)n (ev)n(er)e(not)0 232 y(trivial,)33 b(precisely)f(b)r(ecause)g(to)h(k)n (eep)f(the)h(theoretical)f(b)r(ene\014ts)h(of)g(reusing)f(consensus)g (\(and)g(all)h(related)f(results\),)0 332 y(its)h(reshaping)f(should)h (not)g(diminish)g(the)h(inheren)n(t)f(algorithmic)e(complexit)n(y)i (encapsulated)f(b)n(y)h(consensus.)52 b(W)-7 b(e)0 431 y(prop)r(ose)22 b(in)i(this)f(pap)r(er)g(the)g(abstraction)f(of)h Fv(op)l(en)h Fx(consensus,)f(and)g(w)n(e)g(de\014ne)h(the)f(precise)g (conditions)g(under)g(whic)n(h)0 531 y(the)i(t)n(w)n(o)e(problems)g (are)g(equiv)-5 b(alen)n(t.)36 b(The)24 b(use)g(of)g(op)r(en)g (consensus)g(is)g(ho)n(w)n(ev)n(er)e(more)h(e\016cien)n(t.)36 b(Roughly)23 b(sp)r(eaking,)0 630 y(our)29 b(new)h(sp)r(eci\014cation)f (pro)n(vides)g(consensus)g(with)h(pragmatic)e Fv(de)l(c)l(ouple)l(d)p Fx(,)k Fv(r)l(e-entr)l(ant)d Fx(and)g Fv(on-demand)40 b Fx(\015a)n(v)n(ours.)0 730 y(The)23 b(signi\014can)n(t)e (optimisations)h(w)n(e)g(obtain)g(in)h(our)f(mo)r(dular)g(agreemen)n(t) f(algorithms)g(\(in)i(terms)f(of)h(forced)f(logs\))g(are)0 830 y(not)32 b(ac)n(hiev)n(ed)g(at)g(the)h(exp)r(ense)f(of)h(stronger)e (assumptions)g(or)h(additional)g(messages)f(and)h(comm)n(unication)g (steps,)0 929 y(with)i(resp)r(ect)f(to)g(alternativ)n(e)g(algorithms)f (that)h(are)g(based)g(on)g(the)h(traditional)e(notion)h(of)h(consensus) e(or)h(simply)0 1029 y(ad-ho)r(c)27 b(algorithms)f([A)n(CT00a)n(,)i (HMR98,)f(Lam89)o(,)h(RR00)o(,)g(Sk)n(e81)n(].)2198 999 y Fu(14)125 1176 y Fx(The)i(\015a)n(v)n(ours)e(of)i(op)r(en)g (consensus)g(mak)n(e)f(it)i(a)f(go)r(o)r(d)f(candidate)h(to)g(build,)i (not)e(only)g(a)g(mo)r(dular)f(and)h(e\016cien)n(t)0 1275 y(total)36 b(order)f(broadcast)f(algorithm,)j(but)g(also)e(other)g (kinds)i(of)f(agreemen)n(t)e(algorithms)h(in)h(a)g(mo)r(dular,)i(y)n (et)e(e\016-)0 1375 y(cien)n(t)d(manner.)51 b(One)32 b(can)h(follo)n(w)f(the)h(approac)n(h)d(of)j([GS96)o(])g(to)g(build)g (a)f(mo)r(dular)g(y)n(et)g(e\016cien)n(t)h(atomic)f(commit,)0 1475 y(group)g(mem)n(b)r(ership)g(and)h(view)g(sync)n(hronous)d (algorithms.)51 b(Moreo)n(v)n(er,)32 b(it)h(is)g(easy)e(to)i(see)f(ho)n (w)g(one)h(could)f(easily)0 1574 y(and)24 b(e\016cien)n(tly)g(implemen) n(t)g(the)h(primary-bac)n(kup)d(sc)n(heme)h(of)h([DS00])g(in)g(a)g (crash-reco)n(v)n(ery)c(mo)r(del)k(using)f(our)h(op)r(en)0 1674 y(consensus)d(abstraction.)33 b(In)22 b([DSS98],)h(the)f(authors)f (prop)r(osed)f(a)i(consensus-based)e(form)h(of)h(primary-bac)n(kup)d (repli-)0 1774 y(cation)k([BMST93)o(].)36 b(T)-7 b(o)23 b(mak)n(e)g(the)h(replication)e(sc)n(heme)i(e\016cien)n(t,)g(the)g (authors)e(had)i(ho)n(w)n(ev)n(er)d(to)j(violate)f(consensus)0 1873 y(encapsulation)i(b)n(y)g(assuming)g(a)g(sp)r(eci\014c)h (consensus)e(algorithm)h(\(the)h(algorithm)e(of)i([CT96)o(]\),)h(and)e (optimised)h(their)0 1973 y(replication)31 b(sc)n(heme)g(with)h(that)g (consensus)e(algorithm)h(in)h(mind.)49 b(More)31 b(recen)n(tly)g(\(in) 63 b([DS00]\),)33 b(the)f(authors)e(re-)0 2072 y(placed)j(the)g (consensus)f(b)r(o)n(x)h(with)h(a)e(di\013eren)n(t)i(building)f(blo)r (c)n(k,)h(named)f Fv(lazy)j(c)l(onsensus)p Fx(.)53 b(The)33 b(sp)r(eci\014cation)f(\(1\))0 2172 y(assumes)22 b(that)h(the)h(pro)r (cesses)d(in)n(v)n(ok)n(e)h(consensus)g(with)h(a)g(function)h(passed)e (as)g(a)h(parameter,)g(and)f(\(2\))i(precludes)e(the)0 2272 y(p)r(ossibilit)n(y)g(for)h(t)n(w)n(o)f(pro)r(cesses)f(to)h(in)n (v)n(ok)n(e)g(consensus)f(with)j(t)n(w)n(o)e(di\013eren)n(t)g(v)-5 b(alues,)24 b(unless)e(one)h(of)f(them)i(is)e(susp)r(ected)0 2371 y(to)29 b(ha)n(v)n(e)f(crashed.)41 b(The)29 b(resulting)g(sp)r (eci\014cation)g(is)g(designed)g(for)g(the)h(sp)r(eci\014c)f (replication)f(tec)n(hnique)i(considered)0 2471 y(b)n(y)35 b(the)i(authors.)60 b(Our)35 b(op)r(en)h(consensus)e(sp)r (eci\014cation)i(is)f(more)g(general,)i(y)n(et)e(simpler.)61 b(It)36 b(is)g(more)f(general)f(in)0 2571 y(the)29 b(follo)n(wing)f (senses.)39 b(First,)29 b(in)g(our)f(case,)g(a)g(pro)r(cess)f(do)r(es)i (not)f(receiv)n(e)g(a)g(decision)g(unless)h(it)g(in)n(v)n(ok)n(es)e (consensus)0 2670 y(\(i.e.,)38 b(our)d Fv(on-demand)h Fx(\015a)n(v)n(our)e(is)h(more)g(general\).)59 b(Second,)38 b(w)n(e)d(in)n(tro)r(duce)g(additional)g(notions)g(of)g Fv(r)l(e-entr)l(anc)l(e)0 2770 y Fx(and)e Fv(de)l(c)l(oupling)p Fx(:)49 b(these)33 b(notions)g(w)n(ould)f(help)i(optimise)f(the)g (replication)g(sc)n(heme)f(of)h([DS00])g(in)g(terms)g(of)g(forced)0 2869 y(logs)28 b(while)i(preserving)e(mo)r(dularit)n(y)-7 b(.)42 b(Our)29 b(sp)r(eci\014cation)g(is)h(simpler)f(b)r(ecause)g(w)n (e)g(only)h(replace)e(the)i(prop)r(erties)f(of)0 2969 y(consensus)35 b(with)h(sligh)n(tly)f(di\013eren)n(t)h(prop)r(erties)f (of)g(the)h(same)g(nature)f(\(termination,)j(agreemen)n(t)c(and)h(v)-5 b(alidit)n(y\),)0 3069 y(without)35 b(in)n(tro)r(ducing)g(prop)r (erties)f(of)h(di\013eren)n(t)g(natures,)h(e.g.,)g(precluding)f(t)n(w)n (o)f(pro)r(cesses)f(from)i(prop)r(osing)e(t)n(w)n(o)0 3168 y(v)-5 b(alues)27 b(unless)h(one)f(of)g(them)i(is)e(crashed)g(or)f (susp)r(ected)i(to)g(ha)n(v)n(e)e(crashed.)2404 3138 y Fu(15)0 3478 y Fw(References)0 3676 y FA([A)n(CT00a])73 b(M.)22 b(K.)g(Aguilera,)i(W.)e(Chen,)h(and)f(S.)g(T)-6 b(oueg.)29 b(F)-6 b(ailure)23 b(detection)f(and)g(consensus)g(in)g(the) g(crash-reco)n(v)n(ery)g(mo)r(del.)395 3767 y Fz(Distribute)l(d)29 b(Computing)p FA(,)d(13\(2\):99{125,)k(Ma)n(y)c(2000.)0 3925 y([A)n(CT00b])68 b(M.)31 b(K.)g(Aguilera,)j(W.)d(Chen,)i(and)e(S.) g(T)-6 b(oueg.)51 b(On)30 b(quiescen)n(t)h(reliable)i(comm)n (unication.)51 b Fz(SIAM)32 b(Journal)h(on)395 4017 y(Computing)p FA(,)26 b(29\(6\):2040{2073,)31 b(April)25 b(2000.)0 4174 y([BHG87])105 b(P)-6 b(.)32 b(A)g(Bernstein,)j(V.)d(Hadzilacos,)k (and)d(N.)f(Go)r(o)r(dman.)55 b Fz(Concurr)l(ency)37 b(Contr)l(ol)d(and)g(R)l(e)l(c)l(overy)i(in)e(Datab)l(ase)395 4266 y(Systems)p FA(.)h(Addison-W)-6 b(esley)g(,)25 b(1987.)0 4423 y([BMST93])55 b(N.)22 b(Budhira)t(ja,)k(K.)d(Marzullo,)i(F.)f(B.)f (Sc)n(hneider,)g(and)g(S.)g(T)-6 b(oueg.)31 b(The)23 b(primary-bac)n(kup)f(approac)n(h.)30 b(In)23 b(S.)g(Mul-)395 4515 y(lender,)34 b(editor,)i Fz(Distribute)l(d)f(Systems)p FA(,)i(A)n(CM)c(Press)g(Bo)r(oks,)j(c)n(hapter)d(8,)i(pages)f(199{216.) h(Addison-W)-6 b(esley)g(,)395 4606 y(second)25 b(edition,)i(1993.)0 4764 y([BvR96])125 b(K.)28 b(Birman)h(and)f(R.)g(v)l(an)g(Renesse.)42 b(Soft)n(w)n(are)30 b(reliabilit)n(y)f(for)h(net)n(w)n(orks.)42 b Fz(Scienti\014c)31 b(A)n(meric)l(an)p FA(,)f(274\(5\),)g(Ma)n(y)395 4855 y(1996.)p 0 4908 1512 4 v 62 4962 a Ft(14)127 4985 y FD(T)n(ypically)-6 b(,)25 b(our)h Fs(op)l(en)i(c)l(onsensus)e FD(abstraction)h(could)f(b)r(e)f(used)h(as)f(an)h(underlying)g (building)f(blo)r(c)n(k)h(to)g(devise)f(fault-toleran)n(t)h(mid-)0 5064 y(dlew)n(are)34 b(service.)62 b(F)-6 b(or)34 b(example,)i(the)f (cen)n(tral)g(abstraction)g(of)e(the)i(CORBA)f(Ob)t(ject)g(Group)g (Service)h(of)e([F)n(G00)q(])g(is)g(a)h(consensus)0 5143 y(one.)j(Replacing)25 b(that)i(abstraction)f(with)g(our)f(new)h(op)r (en)g(consensus)g(can)g(help)f(build)g(e\016cien)n(t)h(fault-toleran)n (t)g(services)g(in)e(a)i(practical)0 5222 y(crash-reco)n(v)n(ery)e(mo)r (del.)62 5278 y Ft(15)127 5301 y FD(Suc)n(h)35 b(a)f(prop)r(ert)n(y)h (actually)g(restricts)f(the)h(applicabilit)n(y)f(of)f(the)i(sp)r (eci\014cation)h(to)f(the)g(sp)r(eci\014c)f(async)n(hronous)i(system)e (mo)r(del)0 5380 y(augmen)n(ted)e(with)e(a)g(failure)f(detector.)52 b(Ev)n(en)30 b(more)g(imp)r(ortan)n(tly)-6 b(,)32 b(it)e(is)f(not)i (clear)f(whether)g(the)h(resulting)f(abstraction)h(is)e(actually)0 5459 y(equiv)l(alen)n(t)c(to)f(the)h(actual)g(original)e(consensus)h (abstraction.)1848 5768 y Fx(21)p eop %%Page: 22 22 22 21 bop 0 -67 a FA([CHT96])109 b(T.)34 b(D.)g(Chandra,)i(V.)e (Hadzilacos,)j(and)d(S.)g(T)-6 b(oueg.)59 b(The)34 b(w)n(eak)n(est)g (failure)h(detector)f(for)h(solving)g(consensus.)395 24 y Fz(Journal)28 b(of)f(the)h(A)n(CM)p FA(,)e(43\(4\):685{722,)k (July)c(1996.)0 182 y([CT96])167 b(T.)25 b(D.)g(Chandra)g(and)g(S.)g(T) -6 b(oueg.)34 b(Unreliable)25 b(failure)h(detectors)g(for)g(reliable)g (distributed)e(systems.)34 b Fz(Journal)28 b(of)395 273 y(the)g(A)n(CM)p FA(,)e(43\(2\):225{267,)k(1996.)0 431 y([DKM93])88 b(D.)38 b(Dolev,)j(S.)d(Kramer,)k(and)c(D.)g(Malkhi.)72 b(Early)39 b(deliv)n(ery)f(totally)g(ordered)h(broadcast)f(in)h(async)n (hronous)395 522 y(en)n(vironmen)n(ts.)33 b(In)25 b Fz(IEEE)i(Symp)l (osium)h(on)g(F)-6 b(ault-T)g(oler)l(ant)30 b(Computing)p FA(,)c(pages)h(296{306,)i(June)c(1993.)0 680 y([DS00])175 b(X.)25 b(D)n(\023)-36 b(efago)28 b(and)d(A.)h(Sc)n(hip)r(er.)35 b(Semi-passiv)n(e)26 b(replication)h(and)f(lazy)g(consensus.)36 b(T)-6 b(ec)n(hnical)26 b(Rep)r(ort)g(027,)3606 661 y(\023)3599 680 y(Ecole)395 772 y(P)n(olytec)n(hnique)f(F)n(\023)-36 b(ed)n(\023)g(erale)26 b(de)g(Lausanne,)g(D)n(\023)-36 b(epartemen)n(t)25 b(de)g(Syst)n(\022)-36 b(emes)26 b(de)f(Comm)n (unications,)j(Ma)n(y)d(2000.)0 929 y([DSS98])132 b(X.)31 b(D)n(\023)-36 b(efago,)35 b(A.)c(Sc)n(hip)r(er,)i(and)e(N.)g(Sergen)n (t.)52 b(Semi-passiv)n(e)32 b(replication.)53 b(In)31 b Fz(Pr)l(o)l(c)l(e)l(e)l(dings)k(of)d(the)i(17th)g(IEEE)395 1021 y(Symp)l(osium)27 b(on)h(R)l(eliable)f(Distribute)l(d)i(Systems)p FA(,)f(Octob)r(er)e(1998.)0 1178 y([EMS95])112 b(P)-6 b(.)35 b(Ezhilc)n(helv)l(an,)k(R.)d(Macedo,)k(and)35 b(S.)h(Shriv)l(asta)n(v)l(a.)64 b(Newtop:)55 b(A)35 b(fault-toleran)n (t)i(group)f(comm)n(unication)395 1270 y(proto)r(col.)f(In)25 b Fz(IEEE)i(Confer)l(enc)l(e)i(on)f(Distribute)l(d)h(Computing)f (Systems)p FA(,)g(pages)e(296{306,)j(Ma)n(y)d(1995.)0 1427 y([F)n(C95])174 b(C.)29 b(F)-6 b(etzer)29 b(and)g(F.)g(Cristian.) 45 b(On)28 b(the)h(p)r(ossibilit)n(y)h(of)g(consensus)f(in)g(async)n (hronous)g(systems.)44 b(In)28 b Fz(Pr)l(o)l(c)l(e)l(e)l(dings)395 1519 y(of)h(the)h(1995)g(Paci\014c)g(R)n(im)e(International)j(Symp)l (osium)f(on)f(F)-6 b(ault-T)g(oler)l(ant)32 b(Systems)p FA(,)e(pages)f(86{91,)h(Newp)r(ort)395 1610 y(Beac)n(h,)c(CA,)g(USA,)f (Decem)n(b)r(er)g(1995.)0 1768 y([F)n(G00])169 b(P)-6 b(.)31 b(F)-6 b(elb)r(er)32 b(and)f(R.)h(Guerraoui.)53 b(Programming)33 b(with)f(ob)t(ject)g(groups)g(in)g(corba.)52 b Fz(IEEE)33 b(Concurr)l(ency)p FA(,)j(8\(1\),)395 1859 y(Jan-Mar)26 b(2000.)0 2017 y([FLP85])127 b(M.)21 b(J.)h(Fisc)n(her,)h (N.)e(A.)g(Lync)n(h,)h(and)e(M.)i(S.)f(P)n(aterson.)28 b(Imp)r(ossibilit)n(y)22 b(of)g(distributed)f(consensus)h(with)f(one)g (fault)n(y)395 2108 y(pro)r(cess.)35 b Fz(Journal)28 b(of)g(the)g(A)n(CM)p FA(,)e(32\(2\):374{382,)k(April)25 b(1985.)0 2266 y([GR93])160 b(J.)25 b(Gra)n(y)f(and)g(A.)h(Reuter.)31 b Fz(T)-6 b(r)l(ansaction)29 b(Pr)l(o)l(c)l(essing:)36 b(Conc)l(epts)28 b(and)f(T)-6 b(e)l(chniques)p FA(.)34 b(Morgan)26 b(Kaufmann,)f(1993.)0 2424 y([GS96])174 b(R.)25 b(Guerraoui)h(and)g(A.)f(Sc)n(hip)r(er.)34 b(Consensus)26 b(service:)35 b(A)25 b(mo)r(dular)i(approac)n(h)e(for)i(building)e (agreemen)n(t)i(proto-)395 2515 y(cols.)35 b(In)25 b Fz(IEEE)i(Symp)l(osium)h(on)g(F)-6 b(ault-T)g(oler)l(ant)30 b(Computing)p FA(,)c(pages)h(168{177,)h(June)e(1996.)0 2673 y([Gue95])140 b(R.)29 b(Guerraoui.)47 b(Revisiting)30 b(the)f(relationship)i(b)r(et)n(w)n(een)f(non)f(blo)r(c)n(king)h (atomic)h(commitmen)n(t)f(and)f(consensus)395 2764 y(problems.)24 b(In)19 b Fz(Distribute)l(d)k(A)n(lgorithms)p FA(,)f(n)n(um)n(b)r(er)c (791)j(in)e(Lecture)g(Notes)h(in)f(Computer)h(Science,)h(pages)f (87{100.)395 2855 y(Springer-V)-6 b(erlag,)26 b(Septem)n(b)r(er)e (1995.)0 3013 y([Her91])155 b(M.)26 b(Herlih)n(y)-6 b(.)34 b(W)-6 b(ait-free)27 b(sync)n(hronization.)35 b Fz(A)n(CM)28 b(T)-6 b(r)l(ansactions)30 b(on)e(Pr)l(o)l(gr)l(amming)h(L)l(anguages)g (and)g(Systems)p FA(,)395 3104 y(13\(1\),)d(Jan)n(uary)g(1991.)0 3262 y([HMR98])92 b(M.)25 b(Hur\014n,)g(A.)g(Moustefaoui,)i(and)e(M.)h (Ra)n(ynal.)34 b(Consensus)26 b(in)f(async)n(hronous)g(systems)h(where) g(pro)r(cesses)g(can)395 3354 y(crash)d(and)g(reco)n(v)n(er.)31 b(In)22 b Fz(Pr)l(o)l(c)l(e)l(e)l(dings)28 b(of)d(the)h(17th)h(Symp)l (osium)e(on)h(R)l(eliable)f(Distribute)l(d)i(Systems)g(\(SRDS-17\))p FA(,)395 3445 y(W)-6 b(est)25 b(Lafa)n(y)n(ette,)h(IN,)g(USA,)e(Octob)r (er)i(1998.)0 3603 y([HMR)-6 b(T99])43 b(M.)33 b(Hur\014n,)g(R.)f (Macedo,)k(M.)d(Ra)n(ynal,)i(and)d(F.)h(T)-6 b(ronel.)55 b(A)33 b(general)g(framew)n(ork)h(to)f(solv)n(e)g(agreemen)n(t)g(prob-) 395 3694 y(lems.)44 b(In)28 b Fz(Pr)l(o)l(c)l(e)l(e)l(dings)33 b(of)d(the)h(18th)h(Symp)l(osium)f(on)f(R)l(eliable)g(Distribute)l(d)i (Systems)g(\(SRDS-18\))p FA(,)g(Lausanne,)395 3785 y(Switzerland,)26 b(Octob)r(er)g(1999.)0 3943 y([HT93])164 b(V.)23 b(Hadzilacos)j(and)e (S.)g(T)-6 b(oueg.)32 b(F)-6 b(ault-toleran)n(t)24 b(broadcasts)h(and)f (related)g(problems.)32 b(In)24 b(S.)g(Mullender,)h(editor,)395 4034 y Fz(Distribute)l(d)36 b(Systems)p FA(,)h(A)n(CM)d(Press)h(Bo)r (oks,)i(c)n(hapter)c(5,)k(pages)d(97{146.)i(Addison-W)-6 b(esley)g(,)35 b(second)f(edition,)395 4126 y(1993.)0 4283 y([Kic96])162 b(G.)26 b(Kiczales.)36 b(Bey)n(ond)25 b(the)g(blac)n(k)h(b)r(o)n(x:)34 b(Op)r(en)25 b(implemen)n(tation.)35 b(In)25 b Fz(IEEE)i(Softwar)l(e)p FA(,)g(Jan)n(uary)f(1996.)0 4441 y([Lam89])127 b(L.)37 b(Lamp)r(ort.)70 b(The)37 b(part-time)g(parliamen)n(t.)70 b(T)-6 b(ec)n(hnical)38 b(Rep)r(ort)f(49,)k(Systems)c(Researc)n(h)h(Cen)n(ter,)i(Digital)395 4532 y(Equip)r(emen)n(t)22 b(Corp,)i(P)n(alo)g(Alto,)g(Septem)n(b)r(er) e(1989.)32 b(A)22 b(revised)h(v)n(ersion)h(of)f(the)g(pap)r(er)g(also)h (app)r(eared)f(in)g(TOCS)395 4624 y(v)n(ol.16)j(n)n(um)n(b)r(er)f(2.)0 4782 y([Lyn96])145 b(N.)25 b(A.)h(Lync)n(h.)33 b Fz(Distribute)l(d)c(A) n(lgorithms)p FA(.)35 b(Morgan)27 b(Kaufmann,)f(1996.)0 4939 y([RR00])163 b(L.)28 b(Ro)r(drigues)g(and)f(M.)i(Ra)n(ynal.)40 b(A)n(tomic)28 b(broadcast)g(in)g(async)n(hronous)g(systems)g(where)g (pro)r(cesses)h(can)f(crash)395 5031 y(and)f(reco)n(v)n(er.)40 b(In)26 b Fz(Pr)l(o)l(c)l(e)l(e)l(dings)32 b(of)d(the)h(20th)g (International)g(Confer)l(enc)l(e)h(on)e(Distribute)l(d)i(Computing)f (Systems)395 5122 y(\(ICDCS-20\))p FA(,)c(pages)h(288{295,)i(T)-6 b(aip)r(ei,)27 b(T)-6 b(aiw)n(an,)27 b(April)e(2000.)j(IEEE.)0 5280 y([Sk)n(e81])161 b(D.)17 b(Sk)n(een.)j(Non)n(blo)r(c)n(king)e (commit)g(proto)r(cols.)23 b(In)17 b Fz(A)n(CM)j(SIGMOD)g (International)h(Confer)l(enc)l(e)h(on)e(Management)395 5371 y(of)27 b(Data)p FA(,)f(pages)h(133{142,)i(1981.)1848 5768 y Fx(22)p eop %%Page: 23 23 23 22 bop 0 -67 a Fw(A)134 b(Equiv)-7 b(alence)46 b(b)t(et)l(w)l(een)g (Consensus)f(and)f(Op)t(en)h(Consensus)0 162 y Fx(W)-7 b(e)33 b(sho)n(w)f(here)g(that)h(consensus)e(and)i(op)r(en)g(consensus) e(are)h(equiv)-5 b(alen)n(t)32 b(in)h(a)f(crash-reco)n(v)n(ery)d(mo)r (del)j(\(under)h(the)0 262 y(assumptions)c(that)h(all)f(pro)r(cesses)f (are)g(w)n(ell-b)r(eha)n(v)n(ed\).)42 b(First,)30 b(w)n(e)f(describ)r (e)g(an)g(algorithm)g(that)g(transforms)g(op)r(en)0 361 y(consensus)e(in)n(to)i(consensus)e(\(Figure)h(14\))g(and)h(then)g(w)n (e)f(describ)r(e)g(an)g(algorithm)f(that)i(transforms)e(consensus)h(in) n(to)0 461 y(op)r(en)f(consensus)f(\(Figure)g(15\).)36 b(Note)27 b(that)g(the)g(aim)g(here)f(is)h(not)g(to)g(devise)f (e\016cien)n(t)h(algorithms)e(but)j(rather)d(sho)n(w)0 561 y(that)j(solv)-5 b(abilit)n(y)27 b(results)g(that)h(are)e(stated)i (on)f(consensus)g(are)f(v)-5 b(alid)28 b(for)f(op)r(en)h(consensus)e (and)i(vice-v)n(ersa.)125 707 y(T)-7 b(o)39 b(distinguish)g(the)h (primitiv)n(es)f(that)h(de\014ne)g(these)g(problems,)i(w)n(e)d(denote)g (b)n(y)h Fv(pr)l(op)l(ose)h Fx(the)f(primitiv)n(e)f(for)0 807 y(consensus,)24 b(and)h(b)n(y)g Fv(o-pr)l(op)l(ose)h Fx(and)f Fv(c)l(ommit)33 b Fx(those)24 b(for)h(op)r(en)g(consensus.)35 b(F)-7 b(or)24 b(b)r(oth)h(transformations,)f(w)n(e)g(assume)0 907 y(that)k(all)f(pro)r(cesses)f(are)h(w)n(ell-b)r(eha)n(v)n(ed)f(and) i(that)f(a)h(ma)5 b(jorit)n(y)26 b(of)h(pro)r(cesses)f(are)h(correct.)0 1054 y Fy(T)-8 b(ransforming)38 b(op)s(en-consensus)f(to)h(consensus)g (\(Figure)g(14\).)53 b Fx(This)34 b(algorithm)e(assumes)g(the)i (existence)0 1153 y(of)f(an)f(op)r(en)h(consensus)e(b)r(o)n(x.)52 b(By)32 b(the)h(de\014nition)g(of)f(consensus,)h(prop)r(osing)e(a)i(v) -5 b(alue)32 b(coincides)g(with)h(the)g(forced)0 1253 y(log)25 b(of)h(its)g(prop)r(osition.)36 b(Pro)r(cess)24 b Fq(p)1148 1265 y Fp(i)1201 1253 y Fx(then)j(o-prop)r(oses)d(the)i (prop)r(osition)f(and)h(w)n(aits)f(for)h(the)g(pre-committed)g(v)-5 b(alue.)0 1352 y(When)26 b Fq(p)282 1364 y Fp(i)334 1352 y Fx(pre-commits)e(a)h(v)-5 b(alue,)25 b Fq(p)1151 1364 y Fp(i)1204 1352 y Fx(then)h(decides)e(the)i(v)-5 b(alue)25 b(b)n(y)f(in)n(v)n(oking)g Fq(commit)p Fx(\(\).)36 b(Note)25 b(that)h(returning)e(from)0 1452 y(the)36 b Fq(pr)r(opose)p Fx(\(\))g(primitiv)n(e)f(coincides)g(with)h(the)g(forced)e(log)h(of)g (the)h(decision.)60 b(Remem)n(b)r(er)35 b(also)f(that)i(all)f(correct)0 1552 y(pro)r(cesses)26 b(in)n(v)n(ok)n(e)g Fq(pr)r(opose)p Fx(\(\))i(since)g(it)g(is)f(an)g(assumption)g(of)h(consensus.)35 b(When)29 b(a)e(pro)r(cess)f(crashes)g(and)h(reco)n(v)n(ers,)0 1651 y(it)32 b(c)n(hec)n(ks)e(if)i(it)g(already)d(decided)j(\(b)n(y)f (testing)h(if)g(the)f(decision)g(is)g(stored\),)h(and)f(if)h(so)f (decides.)48 b(Otherwise,)31 b(if)h(the)0 1751 y(pro)r(cess)26 b(already)h(prop)r(osed)f(\(b)n(y)i(testing)f(if)h(the)g(prop)r (osition)f(is)g(stored\),)g(it)i(in)n(v)n(ok)n(es)c(again)i Fq(o)18 b Fr(\000)g Fq(pr)r(opose)p Fx(\(\).)p 0 1861 3780 5 v 37 2059 a FD(1:)39 b FB(pro)r(cedure)27 b FA(prop)r(ose\()p Fb(v)869 2067 y Fj(p)901 2078 y Fo(i)932 2059 y FA(\))735 b FC(f)p Fs(The)26 b(pr)l(o)l(c)l(e)l(dur)l(e)j(c)l(al)t(l)d(c)l (oincides)g(with)g(the)f(for)l(c)l(e)l(d)i(lo)l(g)g(of)e(\(pr)l(op)l (ose\()p Fk(v)3620 2067 y Fj(p)3652 2078 y Fo(i)3686 2059 y Fs(\)\))p FC(g)37 2150 y FD(2:)115 b FB(if)34 b FA(prop)r(ose\()p Fb(v)618 2159 y Fj(pr)r(oposed)869 2150 y FA(\))25 b(has)h(o)r(ccurred)g FB(then)37 2241 y FD(3:)192 b FA(o-prop)r(ose\()p Fb(v)673 2250 y Fj(pr)r(oposed)924 2241 y FA(\))37 2333 y FD(4:)115 b FB(else)37 2424 y FD(5:)192 b FA(o-prop)r(ose\()p Fb(v)673 2432 y Fj(p)705 2443 y Fo(i)737 2424 y FA(\))37 2515 y FD(6:)39 b FB(up)r(on)26 b FA(receiv)n(e\()p Fz(pr)l(e-c)l(ommit)7 b FA(\))27 b FB(do)37 2607 y FD(7:)115 b FA(commit\()p Fz(pr)l(e-c)l(ommit)7 b FA(\);)28 b FB(return)p FA(\()p Fz(pr)l(e-c)l(ommit)7 b FA(\))365 b FC(f)p Fs(This)26 b(up)l(c)l(al)t(l)i(c)l(oincides)e (with)g(the)f(for)l(c)l(e)l(d)i(lo)l(g)f(of)g(the)f(de)l(cision)p FC(g)37 2698 y FD(8:)39 b FB(up)r(on)26 b FA(reco)n(v)n(ery)h FB(do)37 2789 y FD(9:)115 b FA(initialisation;)29 b FB(retriev)n(e)p FA(\()p Fz(de)l(cision)p FA(,prop)r(ose\()p Fb(v)1614 2798 y Fj(pr)r(oposed)1864 2789 y FA(\)\))2 2881 y FD(10:)115 b FB(if)34 b Fz(de)l(cision)e FA(has)26 b(o)r(ccurred)g FB(then)2 2972 y FD(11:)192 b FB(return)p FA(\()p Fz(de)l(cision)6 b FA(\))2 3063 y FD(12:)115 b FB(else)25 b(if)33 b FA(prop)r(ose\()p Fb(v)784 3072 y Fj(pr)r(oposed)1035 3063 y FA(\))26 b(has)g(o)r (ccurred)g FB(then)2 3155 y FD(13:)192 b FA(o-prop)r(ose\()p Fb(v)673 3164 y Fj(pr)r(oposed)924 3155 y FA(\))p 0 3270 V 914 3452 a Fx(Figure)27 b(14:)36 b(T)-7 b(ransforming)26 b(op)r(en-consensus)g(to)i(consensus)0 3632 y Fy(Prop)s(osition)e(13.) 35 b Fv(The)27 b(algorithm)h(of)g(Figur)l(e)e(14)i(satis\014es)e(the)h (validity,)i(agr)l(e)l(ement)e(and)g(termination)f(pr)l(op)l(erties)0 3731 y(of)31 b(c)l(onsensus.)0 3878 y Fy(Pro)s(of)25 b(\(sk)m(etc)m(h\).)36 b Fx(V)-7 b(alidit)n(y)21 b(prop)r(ert)n(y)g(of) g(consensus)g(is)g(trivial)g(since)h(it)g(is)f(the)h(same)g(v)-5 b(alidit)n(y)21 b(prop)r(ert)n(y)g(as)f(for)i(op)r(en)0 3978 y(consensus.)46 b(Consider)30 b(no)n(w)h(the)g(agreemen)n(t)f (prop)r(ert)n(y)-7 b(.)46 b(Since)32 b(ev)n(ery)d(time)j(a)f(pro)r (cess)f(o-prop)r(oses,)f(it)j(o-prop)r(oses)0 4077 y(only)21 b(a)h(v)-5 b(alue)22 b(that)g(w)n(as)e(prop)r(osed)h(earlier,)h(or)f (the)h(v)-5 b(alue)22 b(receiv)n(ed)e(if)j(it)f(is)g(the)g(\014rst)f (prop)r(osition.)34 b(By)22 b(the)g(agreemen)n(t)0 4177 y(prop)r(ert)n(y)30 b(of)i(op)r(en)g(consensus)e(and)i(b)n(y)f(the)h (algorithm)f(of)g(Figure)g(14,)h(the)g(agreemen)n(t)e(prop)r(ert)n(y)h (of)g(consensus)g(is)0 4277 y(satis\014ed.)36 b(Consider)26 b(no)n(w)g(the)g(termination)h(prop)r(ert)n(y)e(of)h(consensus.)36 b(By)26 b(the)h(de\014nition)g(of)f(the)h(notion)g(of)f(correct)0 4376 y(pro)r(cess,)h(there)h(is)f(a)h(time)g(after)g(whic)n(h)g(all)f (correct)g(pro)r(cesses)f(stop)i(crashing)e(and)i(remain)f(alw)n(a)n (ys-up.)36 b(Hence,)28 b(b)n(y)0 4476 y(the)g(algorithm)f(of)h(Figure)g (14,)f(there)h(is)g(a)g(time)g(after)g(whic)n(h)g(ev)n(ery)f(correct)f (pro)r(cess)h(ev)n(en)n(tually)g(o-prop)r(oses)f(some)0 4575 y(v)-5 b(alue.)63 b(By)36 b(the)g(termination)g(prop)r(ert)n(y)f (of)h(op)r(en)h(consensus,)g(ev)n(ery)e(correct)g(pro)r(cess)g(ev)n(en) n(tually)g(returns)h(from)0 4675 y Fq(o)19 b Fr(\000)f Fq(pr)r(opose)p Fx(\(\),)28 b(then)g(\014nally)g(decides.)2456 b Fi(2)0 4922 y Fy(T)-8 b(ransforming)30 b(consensus)e(to)i(op)s (en-consensus)e(\(Figure)h(15\).)35 b Fx(This)26 b(algorithm)e(assumes) h(the)h(existence)g(of)0 5021 y(a)e(consensus)g(b)r(o)n(x.)36 b(Basically)-7 b(,)24 b(ev)n(ery)g(pro)r(cess)f(that)i(o-prop)r(oses,)f (in)n(v)n(ok)n(es)f Fq(pr)r(opose)p Fx(\(\))j(\(this)f(coincides)f (with)i(a)e(forced)0 5121 y(log\))35 b(and)h(then)h(sends)e(the)h(v)-5 b(alue)36 b(to)g(all)g(pro)r(cesses,)g(to)g(mak)n(e)f(sure)g(that)h(ev) n(ery)f(pro)r(cess)g(prop)r(oses)f(some)i(v)-5 b(alue.)0 5220 y(When)26 b(a)g(pro)r(cess)f Fq(p)638 5232 y Fp(i)691 5220 y Fx(receiv)n(es)f(an)i(initial)g(v)-5 b(alue,)26 b Fq(p)1624 5232 y Fp(i)1678 5220 y Fx(v)n(eri\014es)e(that)j(it)f(did) g(not)g(already)f(prop)r(osed)f(and,)j(if)f(so,)g Fq(p)3567 5232 y Fp(i)3620 5220 y Fx(do)r(es)0 5320 y(not)f(prop)r(ose)e(the)i (initial)g(v)-5 b(alue)25 b(it)g(receiv)n(ed)f(but)h(the)g(one)g(it)g (prop)r(osed)e(earlier)h(\(due)h(to)g(the)g(agreemen)n(t)e(prop)r(ert)n (y)h(of)0 5420 y(consensus\).)37 b(Otherwise,)27 b Fq(p)903 5432 y Fp(i)959 5420 y Fx(prop)r(oses)f(the)j(receiv)n(ed)d(prop)r (osition)h(\(whic)n(h)i(coincides)e(with)h(a)g(forced)f(log\).)38 b(Once)27 b(a)0 5519 y(pro)r(cess)e(decides,)i(it)g(returns)f(from)g Fq(o)17 b Fr(\000)f Fq(pr)r(opose)p Fx(\(\).)37 b(Up)r(on)27 b(commit,)g Fq(p)2292 5531 y Fp(i)2346 5519 y Fx(do)r(es)g(nothing)f (but)h(returning)f(the)h(decision)1848 5768 y(23)p eop %%Page: 24 24 24 23 bop 0 -67 a Fx(since)25 b(it)g(has)f(b)r(een)i(already)d (decided.)36 b(When)25 b Fq(p)1522 -55 y Fp(i)1575 -67 y Fx(reco)n(v)n(ers,)e Fq(p)1955 -55 y Fp(i)2007 -67 y Fx(retriev)n(es)g(the)i(decision)g(and)f(the)i(prop)r(osition)d(if)j (there)0 33 y(are)h(an)n(y)-7 b(.)p 0 153 3780 5 v 37 351 a FD(1:)39 b FB(pro)r(cedure)27 b FA(o-prop)r(ose\()p Fb(v)933 359 y Fj(p)965 370 y Fo(i)996 351 y FA(\))37 442 y FD(2:)115 b FB(if)34 b FA(prop)r(ose\()p Fb(v)618 451 y Fj(pr)r(oposed)869 442 y FA(\))25 b(has)h(not)g(o)r(ccurred)g FB(then)37 534 y FD(3:)192 b FA(prop)r(ose\()p Fb(v)609 542 y Fj(p)641 553 y Fo(i)673 534 y FA(\))994 b FC(f)p Fs(The)26 b(pr)l(o)l(c)l(e)l(dur)l(e)j(c)l(al)t(l)d(c)l(oincides)g (with)g(the)f(for)l(c)l(e)l(d)i(lo)l(g)g(of)e(\(pr)l(op)l(ose\()p Fk(v)3620 542 y Fj(p)3652 553 y Fo(i)3686 534 y Fs(\)\))p FC(g)37 625 y FD(4:)115 b FB(else)37 716 y FD(5:)192 b FA(prop)r(ose\()p Fb(v)609 725 y Fj(pr)r(oposed)860 716 y FA(\))37 808 y FD(6:)115 b FA(s-send\(prop)r(ose\()p Fb(v)768 816 y Fj(p)800 827 y Fo(i)831 808 y FA(\))26 b(to)g(all)g Fa(n)p Fb(p)1164 816 y Fj(i)37 899 y FD(7:)39 b FB(up)r(on)26 b FA(receiv)n(e\()p Fz(de)l(cision)6 b FA(\))26 b FB(do)971 b FC(f)p Fs(This)27 b(up)l(c)l(al)t(l)g(c)l (oincides)f(with)g(the)f(for)l(c)l(e)l(d)i(lo)l(g)g(of)e(the)31 b FD(decision)p FC(g)37 990 y FD(8:)115 b FB(return)p FA(\()p Fz(de)l(cision)6 b FA(\))37 1082 y FD(9:)39 b FB(up)r(on)26 b FA(commit\()p Fz(de)l(cision)6 b FA(\))27 b FB(do)2 1173 y FD(10:)115 b FB(return)p FA(\()p Fz(de)l(cision)6 b FA(\))2 1264 y FD(11:)39 b FB(up)r(on)26 b FA(receiv)n(e)g(prop)r (ose\()p Fb(v)927 1272 y Fj(p)959 1283 y Fo(j)995 1264 y FA(\))g(from)g Fb(p)1271 1272 y Fj(j)1329 1264 y FB(do)2 1356 y FD(12:)115 b FB(if)34 b FA(prop)r(ose\()p Fb(v)618 1365 y Fj(pr)r(oposed)869 1356 y FA(\))25 b(has)h(not)g(o)r(ccurred)g FB(then)2 1447 y FD(13:)192 b FA(prop)r(ose\()p Fb(v)609 1455 y Fj(p)641 1466 y Fo(j)677 1447 y FA(\))986 b FC(f)p Fs(The)26 b(pr)l(o)l(c)l(e)l(dur)l(e)i(c)l(al)t(l)e(c)l(oincides)g (with)g(the)g(for)l(c)l(e)l(d)h(lo)l(g)f(of)g(\(pr)l(op)l(ose\()p Fk(v)3616 1455 y Fj(p)3648 1466 y Fo(j)3686 1447 y Fs(\)\))p FC(g)2 1538 y FD(14:)115 b FB(else)2 1630 y FD(15:)192 b FA(prop)r(ose\()p Fb(v)609 1639 y Fj(pr)r(oposed)860 1630 y FA(\))2 1721 y FD(16:)39 b FB(up)r(on)26 b FA(reco)n(v)n(ery)h FB(do)2 1812 y FD(17:)115 b FA(initialisation;)29 b FB(retriev)n(e)p FA(\()p Fz(de)l(cision)p FA(,prop)r(ose\()p Fb(v)1614 1821 y Fj(pr)r(oposed)1864 1812 y FA(\)\))p 0 1927 V 914 2110 a Fx(Figure)e(15:)36 b(T)-7 b(ransforming)26 b(consensus)g(to)i(op)r(en-consensus)0 2309 y Fy(Prop)s(osition)e(14.) 35 b Fv(The)27 b(algorithm)h(of)g(Figur)l(e)e(15)i(satis\014es)e(the)h (validity,)i(agr)l(e)l(ement)e(and)g(termination)f(pr)l(op)l(erties)0 2409 y(of)31 b(op)l(en)f(c)l(onsensus.)0 2556 y Fy(Pro)s(of)44 b(\(sk)m(etc)m(h\).)69 b Fx(V)-7 b(alidit)n(y)38 b(follo)n(ws)f(from)h (the)g(v)-5 b(alidit)n(y)38 b(prop)r(ert)n(y)f(of)h(consensus.)67 b(The)38 b(agreemen)n(t)f(prop)r(ert)n(y)0 2655 y(of)e(consensus)g (assures)f(that)h(a)g(pro)r(cess)g(m)n(ust)g(not)g(prop)r(ose)g(with)h (di\013eren)n(t)f(v)-5 b(alues.)60 b(Ho)n(w)n(ev)n(er,)36 b(since)f(a)g(pro)r(cess)0 2755 y(stores)27 b(the)i(prop)r(osition)e (and)h(c)n(hec)n(ks)f(to)h(alw)n(a)n(ys)e(giv)n(e)h(the)i(same)e (initial)i(prop)r(osition,)e(the)i(agreemen)n(t)e(prop)r(ert)n(y)g(of)0 2855 y(consensus)k(is)i(nev)n(er)e(violated)h(and)g(th)n(us)h (satis\014ed.)51 b(Consider)32 b(no)n(w)f(the)i(termination)f(prop)r (ert)n(y)-7 b(.)51 b(If)33 b(a)f(pro)r(cess)f Fq(p)3752 2867 y Fp(i)0 2954 y Fx(in)n(v)n(ok)n(es)26 b Fq(o)18 b Fr(\000)g Fq(pr)r(opose)p Fx(\(\),)29 b(since)f Fq(p)1073 2966 y Fp(i)1128 2954 y Fx(sends)f(the)h(prop)r(osition)f(to)g(ev)n (ery)f(pro)r(cess.)36 b(There)27 b(is)h(a)f(time)h(after)f(whic)n(h)h (ev)n(ery)0 3054 y(correct)d(pro)r(cess)h(stops)g(crashing)f(and)i (remain)f(alw)n(a)n(ys-up.)34 b(By)27 b(the)g(prop)r(ert)n(y)e(of)i (the)g(retransmission)e(mo)r(dule)i(and)0 3153 y(the)d(algorithm)f(of)h (Figure)g(15,)g(ev)n(ery)e(correct)h(pro)r(cess)g(prop)r(oses)g(the)h (same)f(v)-5 b(alue)24 b(and)g(decides.)36 b(Indeed,)25 b Fq(p)3469 3165 y Fp(i)3520 3153 y Fx(returns)0 3253 y(from)j(the)i(in)n(v)n(o)r(cation)d(of)i Fq(o)20 b Fr(\000)e Fq(pr)r(opose)p Fx(\(\).)42 b(Of)29 b(course,)f(if)h Fq(p)1910 3265 y Fp(i)1966 3253 y Fx(crashes,)f Fq(p)2320 3265 y Fp(i)2376 3253 y Fx(do)r(es)h(not)g(need)g(to)f(return.)41 b(F)-7 b(or)28 b(primitiv)n(e)0 3353 y Fq(commit)p Fx(\(\),)g(it)g(is)f (trivial)g(since)h(it)g(only)f(returns)g(the)h(decision.)1699 b Fi(2)1848 5768 y Fx(24)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF --------------A6E01A5BE820069935A747E9--