%!PS-Adobe-2.0 %!PS-AdobeFont-1.1: LucidaSansUnicode20 0.9 %%CreationDate: 1994 Jun 06 09:40:52 % Lucida is a registered trademark of Bigelow & Holmes Inc. 11 dict begin /FontInfo 9 dict dup begin /version (0.9) readonly def /Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def /Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def /FullName (Lucida Sans Unicode 20) readonly def /FamilyName (LucidaSansUnicode) readonly def /Weight (Normal) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /LucidaSansUnicode20 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 /2000 put dup 1 /2001 put dup 2 /2002 put dup 3 /2003 put dup 4 /2004 put dup 5 /2005 put dup 6 /2006 put dup 7 /2007 put dup 8 /2008 put dup 9 /2009 put dup 10 /200a put dup 11 /200b put dup 12 /200c put dup 13 /200d put dup 14 /200e put dup 15 /200f put dup 16 /2010 put dup 17 /2011 put dup 18 /2012 put dup 19 /2013 put dup 20 /2014 put dup 21 /2015 put dup 22 /2016 put dup 23 /2017 put dup 24 /2018 put dup 25 /2019 put dup 26 /201a put dup 27 /201b put dup 28 /201c put dup 29 /201d put dup 30 /201e put dup 31 /201f put dup 32 /2020 put dup 33 /2021 put dup 34 /2022 put dup 35 /2023 put dup 36 /2024 put dup 37 /2025 put dup 38 /2026 put dup 39 /2027 put dup 40 /2028 put dup 41 /2029 put dup 42 /202a put dup 43 /202b put dup 44 /202c put dup 45 /202d put dup 46 /202e put dup 47 /feff put dup 48 /2030 put dup 49 /2031 put dup 50 /2032 put dup 51 /2033 put dup 52 /2034 put dup 53 /2035 put dup 54 /2036 put dup 55 /2037 put dup 56 /2038 put dup 57 /2039 put dup 58 /203a put dup 59 /203b put dup 60 /203c put dup 61 /203d put dup 62 /203e put dup 64 /2040 put dup 65 /2041 put dup 66 /2042 put dup 67 /2043 put dup 68 /2044 put dup 69 /2045 put dup 112 /2070 put dup 113 /2071 put dup 114 /2072 put dup 115 /2073 put dup 116 /2074 put dup 117 /2075 put dup 118 /2076 put dup 119 /2077 put dup 120 /2078 put dup 121 /2079 put dup 122 /207a put dup 123 /207b put dup 124 /207c put dup 125 /207d put dup 126 /207e put dup 127 /207f put dup 128 /2080 put dup 129 /2081 put dup 130 /2082 put dup 131 /2083 put dup 132 /2084 put dup 133 /2085 put dup 134 /2086 put dup 135 /2087 put dup 136 /2088 put dup 137 /2089 put dup 138 /208a put dup 139 /208b put dup 140 /208c put dup 141 /208d put dup 142 /208e put dup 160 /20a0 put dup 161 /20a1 put dup 162 /20a2 put dup 163 /20a3 put dup 164 /20a4 put dup 165 /20a5 put dup 166 /20a6 put dup 167 /20a7 put dup 168 /20a8 put dup 169 /20a9 put dup 170 /20aa put readonly def /FontBBox{-615 -440 726 1024}readonly def /UniqueID 5054520 def currentdict end currentfile eexec B854DDA99134D412A0D95C33A56C3CABEC2C8D8EE0E2DD28A6E5FE2C15F3BA4E85066AE8C447D8 0A39B8821F1C31DCA99696356EA6396767B5737CA96A674FCB8B7925B2A4AD63B9003E86D59E3C 04A2C1AC73D6B7CB15262C028BE0F68BB91879B1F4F96215F8EE8399DE8EE7A9AC77F36F5E12BC 5E1D5606C1211E7ECEE863BD065EDC70AD0B396F059C4048C6190E5555CA9A21BACC3569982B45 C58BA3EA6BB3E8E0BE933F523706DE8CE911C4A18C88961B999E41CE119DBDA93D050DC609B0C9 96DCD8381079F528A7C95D3A6E96AED84923F43AE3E8C30548964E9B4CD46DA67ACB01E9817F3D CFA36EB476EA8F4913280CDC28752A0B5803EFC38BD177F91E552A5DDAC4DC9F5DA7ED5C1A0D09 8586AC5843CFE991BA46259E7333D43E2ECDED83F9DBFB039553AC8439BAFC1793D52A662B8002 31B57ECF1AD85544F01DBD04C5611E7F1CC65638BC4DA2D7D832876EA7697C181C37886BF4B9A2 A28FD32D33845BA1C308B6C3BEE566AD9A90EF831D9652B892A4A67A8092A7DC720CAE524D23BA 49D2238A2BE6D934EB5286BC2AC132531EA5A4103FFEADB4223D22637C54EF3AAB5B32D98E9B3A 6A6DA22139FDAB0F36C8EB7D11A6523E9F28C34CECD8CB76A9366C7C7D2509EBD7B418CD1ED5C8 3819AAF647C42C71E9C2D70CF2863783766DE9CDB68D6C54BD09D4212EF01339FF188CD0B8ABC0 134AE8006D92E39B0DF44BAD3334885ED388954C42705ACB20026516DE62934A0E1982FD4F6EFC E52A67DEA6BF518174411F1414B5507B198AED89EBF149BFF99315E8C46896EF477F3461EDF0E3 AD0FF750D48191C5ED93C8E9DF9DDA4238EE1D6E718BCFAEE54C96FA2D89DEAD434FB9D5598A89 A4A5009E2A61D024757230612CF8DC37CEA6EEB5ADD76025F0402D9E5AC18312576BAFE9F9B310 24F02A1249FD2325243FCCAC6B4C696ECF8D180324F7E567B3CB0E9550610E70B028A36EADECA2 A218AB264AAA6D28C08C0BFDABBE1F376F69A88AEE9BD4BDDEB040792B00ED40E2248271D31A00 1B1145CE124D008ACD573F96BD00B12EAD945FE63AF32EEA66BF2106E79631499FB05BB3701115 AAFCC0FA41551ED0656AE6F808EC7DFFCC255E05EB61FF7DC04EF40B27A898F5A55725953B4B89 397E97590472E2E346173073BE6B2741C9911F1F85804647F4462F88BEE48D7E5E02D75CA74B07 553DEFBD06AC84FA7319D329173C2B5EF74D8B7E2347719C834C7184570B6F1387616FC956FDAA 35692CC7CA693BB06CA2D594EF2F297A56F42A6B31B915AD718CF6F7131A4D8515A8EB411C9FE4 B59C36602D92E9EFF00404D6B4DEE57D5F900560A2A84EB6A6FFDEAA217BA8ADF8626D2830559D 9E4B6B06AAFE5A361B936A61EA3BA8133DBA13B187B61431D145B6368FCB2CB2F7478C5ABCA267 96BB61D6D137F08395CEB66F338F32D61DBCD3ED8EACFF3902DE0121DF3FD05DCA7732A29F37A0 88B68A26AA886CC4343DF0D8A4ADB5DCC1FC656BC635501C5CACC8720CA43FB0DF73DE5CB14FD2 63A4FC467F98E4614F8CE4204A89128DBB8E6D2EB3796F86DF4AF75E345F3D60D8C555BCE16D20 AC88B12FC0715AF769A65E679351C4DBA0DBF904E5D685DC5636288BC20C612FE7EDE4CC878192 EB925BB3749CCFEDF6E48B9AB0825BF6FDC6D4E507A73F17CD17BBCBBB73E314927157CB1E9CB3 4D52F1694BB8269E4D484A546589BCCB66D03A1FCBAAF4192FB72637BDC61C1C0973534DB8F48A 45D1F7F9BA70033E36EDA8816878BEE2CA48931404ECC6D7DF3F0D6C94CDBB4348728E46316BEA 9E369399E9E1DEFD9BA4DA2A6A4E8808BDF0AFF8382216C796CAC0F98E47D86B97243370B76C72 EAA994F7B93B19DA481C87FE97E3FC517729B3787ABDB50C6CFED39FF9D8EEFDF59565F2923A7B C9DBF8350951EBBCC0D85C4A7B33F310FCBDC4D2D004B7B01645353ADB43A6B1243AB9E63AFB7F B9E656F9F3D53D8788D460168964768DF77B830EC13EB4FD87EC3E950452183082A50127735124 31556DA9C33ED9DC73CC1CEFE0E56A3EFFA4AFFBF2709E1035D71837CC2190B2D175D732A351C2 FCFAB312AE9EB2080F83DCACA965C089C0F631492DF76F9933FE6AB88D84CB31330F6BF3ECAD81 EC737A05968175973211BCC4E2D97AD1DCC90227867A1162433E1F29D96341B60FF2CB5681E3E6 A516B6AF9667C8678FF6D581BB0C74890A39EA9C4EF2BA1C21F8CD5C7FCEF703601C938C320F30 CCA24D56D2FBD0496686A7BF2D01193F1BD8A5D4EC2AC6FBDAA377912DDCB7E5B31CE1E811AC72 CBAD9366704BF2F5927F0BE8DB6AEDBBBBE495F7C8D1A1F682F219FDA5FEA5110994E23D8FD285 8AECEF1A6C44A35789F51A44AE1C930D2499AB14CD2FCD210652621DE771B3DF499D552E6DD59B FA260C4E3A1FE2471A2041A3F37D6D6BCF4367A827B06869A07AEB28D7084B3F96230A85ADD1C8 1D1D88CC3203AC593297861CCDF52758291CEC08F089357E36068AFA23BBACE92E4F8DDA637992 5DE7C06F66DCA1E1A553CFF90C52D89D1822DFFDA585AB0F999CD980DC87442492E7DFE855EF05 D3BC92B596C1CB31803E8077650ED89CADFF1DB3EEBD0FA34E0FD24FFF57FA2E1D5D636735DAC7 F43EE9C05C9950A72B8DA0BDFF0C48C45F3DB93D4CDFA00B8BE9FE970CEE162E3DAE95095679C6 96DB03295DD2A838CF841E1C328692F224EAE28F26E8CCA2F9A585936180AA0EF3B88C8D698D2A 78126C13EE4C57032527DAC0D76FD451766E9CFC9AF5993095D5FEB712F801BEB18C963537EC20 FF8B0AC659676A0170A6D8C00D37817B36F6A7919E783E86F8A3B79D8C53FB434F0DC79426BAAD DEA158621F73DF096E1F56B664C9E5482E550EF5BFED449A17B14CDD88A2BF90FA3580C7C7947D 444E193F2F2DA953D756A0E52BDF58631DB3C600F9DA18548E32D7125AC2F26BF2D16E17353C35 D95099981177A56E85D8DB4AFB68CCC36F26664FD680D9197021970CCA2A244F94E4FC5A0FB64C 92BDAC4294D703D4B9211179BB8F28F3952D421807F0F59FBE467542EC59A12F6B618AC230B953 26AC1CE589A5B68FE581DC4758B4E1191BD77C21A9F9567E2BF5CF5963D542983DDE3A3A71B4C2 3DA1B8C03BD2163E1F5B4B113EB6764D6792F1784DF2F08ABDB5A3D1AAB53C77AEB0E5C8E3F55A AD872C5FB61EEA65253B92F40ED1974749FBEF9790A299F713B6092B98B3B6A479F337D8C6F29E 5AE0DD8F7A380848ED03B4215369A16475E25B1F3A1CC0A84193B8DB120A92006397F4B348A3DB 12F83412921DD24335CD104166E632E2A0A4B0C5F321EB07E4CA5A92D78B0078B824919D69D7BA D6C8CF72773F7A12BF867A1EF468BBF38F2F2FF93A32CEF2E2F2D62C5AAB0C7C5503D0FCF16538 27DC3AF46ADB825ABB1804EF6D4F6E1B197D335BF8F40E7A92044ACCF37AA1E940612C4236FAE0 C70B3179713441AD386B59605E5E5B40679F6CA9CE0B5563BAC2535F0BC8BB9DB44FB4D2DAF07D FFD1A702165CF8D90FFC19194D73FE1FC52EB509402431B28998B8BE2CFEDD0B2772B01BBEA540 5916C1D7F0F68BCD0AFAFDA1A510903A3A4EA0CCB3390D7AA2E385EA30BFA1A0F70C28B2E04552 4CD98F7B9AC88244D8B044A3A0E29D4512CF5853EEB44CAF163129B7005363290EBB3D4FA364A2 07115282123C5C3A023C6EFADF7DFC7FFE8682E7090B8212F17B63BEBD15995E8BCC0746F846E0 87A616C9BEC7553E0A0F17F76BFF9C3EE0BC19E62C6AB509C4F60BA97D696D55FF0EC9CDB8AF26 23BBC91DBF1DAE195071174FB1824E65D104829916565B71FC977767175CA04D4BB2BAF1C72AFA 33EAE00B35D96E311ECD9B40DA40B316AA35CA9500205C60F067407E84B06BEB653B464505FD5C 98BBACA3D3D92F527AC65F4F10110303AE9EA5FC612D51828AB94C30FAC5EBD70A2382FB888348 125FFE3DB84C1F2F6E1761DA5C69D2CFBD5B9998CA71B5CC8FDAE43F311D17A41925CA26C4F212 30951176CC1533E9A33A29D18604E9B9F6EB6DECAB2B441464354E036050902239BD976A05351F 25426E94FAAE60070BC1DFF52B48101F5E52B1836BAAD5A9894996E65399728ECDD99024795681 B467E149ABF2211181C6EB5F4C242E90642548E822FE33912C526912ED3FEBA33209944A08A0A7 A5B89DFDA6A6E14477E1F73B6F66DA468D3B60CD811FE4AD9E7ADFF3C40A7E3540F2B01FFB74A1 0DD05A415E23AB8A13312FDA3C9B56D7F2A6EE98C675A8B98CC9983FB417B48FCCEAD3DEC542A0 AA96AD75F50DC45EE6B588F98C668482D2AA1040C1A055FC9762FBC35BE4A87E04A6CB53F9950F C98473083BC06377E51BC21CCC21F1A85046D7986F818E0E641892FD3D682C753473A693824D84 8EF0AC3D329703206E5B6C4D8570AC399CC5C6F98F805EA515B9A0C7849D0211D3336DCCFBFE7E 10D309D26A4057BC507AE8981B1C3EB20837C62F1F5583177C39A8DC750C4CCDAE1AE59D61E574 AE340C19EC031767073757A4872B993502B84982915AA6473CDDAC45AF9C9146B9A069E4CACF73 99491380CE08F1F4A77D7FD4E6311D0038FA7371579C2C0DAA26B8C11F3C1A8FF6F3C1AA2BA01E ACFA07003C62C432F8E825A774CED08ED655D58E40F145B5E9CDBF359F484CE908CA9DAAD196A7 057175F4912C023582B4BF27A7EAE721284E0C18D62619E103875FDABAA16664BF52007EDC31D2 C4735CB7588893D85392CCC12E79AC6C689742606EABBDE3F1A6CC42FD54F9899D5B7ED1FDA0F9 2781681F7A26FFF6040E6DDECD2276C94F9B23017410022B6E49E6F882EEC3D1D68A525DD3720D CB20ADB4569778A0D0B3A1EC083C77AF52B675C16B4B49F27D64B6320439764EE5AFBA4C66BC66 8A6A0CF89012C53544C835BC7AA055B8A586090F392D0626F94B6E275F24199D0B1554EDBBFF67 ABB4E8DBABEFC1E5C88970A7834E1E108A793A613542598BFC261DB27E7DA100439EDFB850325E 6633CA926E00F84337C4D400FAC32D2F51EC33C637344E987F307AF32203AA598EAC48DE39009B C334D4799380E48AEDC89539FFE0FC80B9DF52737A39094180ADE6F813832993E97DF1E3ED1531 AAED48CA1F9C1817F7B520AA0309303B3587273FA86BED9CB6E803A0CA023365469A7A64359783 19BD4B5CA1B32D87B448C15217356EE14EA8C68656406A6CB8B791ADEA69CE9CC56B6A00F3650D C966D95745C6147D333924EE81E407AA809FCB45513203096CF88180B484F135D5C941AD8390DA 066744B9FB34D8A99EF1BF30858C521E3AFFF8C78D253F02596FCDA90C52CD2195575CFD4919A4 B133C592AAFE275B49BAFD326B41D7711E490FF5C39E854B5206D43DA4A25D96BC6DD3130E28D7 62E9425D0263640D666F5B2C24BCD0D8298DF8E9D5E471862977AA28537E0A4C965132BC68FD94 EC52AFD9CD115F01BDD111612F24811BCEEDC370EF6450FA965584B332483D80CA68E0816E2D1B 0AE6D36C90AB8914D77DEEFD42B4FF8F6DD6C77E546B97FE42EA69CDBC7B5DE1BCD45616B65C38 DE0373A8C06451FC98BFEEB9403012A9293F1D0AE959F80874B0D00144B44742225BDFFEE0C5A9 37343156F4F2F13B01A1E0D1FADFC9115BB20D58E4CCBD8F7666978FB9BFEE5793C67D584ABD90 4D1F7845E3957407D85595A4EBB499D9E92D0445E943B32AB3531205C282D7972F1CCC03DAE614 2154ABADD707F7A6263880AC1F0DF4D7D36296DE2992A23C6EE473CB52450D846A5428B7A97477 6E67799462A90B122C936AEB7846511E640948DE6983EAF59A72F365237BCAA1C05ABAF5F92AB3 A63381FA460F395E678B02AA967EA2AC1C59DAF9F3901EE6257E9C2798CABCFA419EEC12962EBE 9CCE4696D48844D959F8CD1434EEA0A6BA7C495EB723E171D9A8C6601B3E25E8EF36523DD0F73E 1FF07FD8DC8114FC700D14319826B70FC47D2198AC5946A659EC556C0FE17352586E01C3A6065D 661A60943C17F622834A58BED940CD55E2A1926DDF42A19CA347DD95E0A4CA8E519BD1D01FFC8F 978D462F5CBD6D2CB02DDA6A11D4FA1D865788B5F761DC9A02341AE50DC71362A5EAEC8AAD2D4A 1FF50A5CEB5048F80AD21FC4DE3F08CA30254C2D294AA78978834DA1B00F33881CD8C4D34B0289 67B85A7580809611948BC14308641E34EFC9D9C13BEEA2A4D3698EE5CA6AADAAD3ECADEBB56385 419945465C45EA0CB7B23737F4AEC713CB7FA548C162187734328CC424BCDA1AA4DABF11617AEB BFF5F58417C05060EA552636405A2B3DB26FB23D1C7054C7DF30DE88E66A26F7DCBB04C3D28A3E A9133F86A6697EECCCA507393BEC87D8972BAB172CC8B4F5814F1B9E81AE0809B58F37BB80E180 D4DB59A62EEAF1781CBD85BF047EFCB5CF111CF20CDCF0F5307F601F5B90AF8CC4431B078CB67D 9ECEE822D2584709BE548E2ED908FF74F1F4FB3D42DA4E2EB4EA78EEDA81B7469ED1948F714DF6 52A5D148D5CB208F314E2D2222D42FAFA43F3002DA8CFCDDBE775C3E8710799E5755EA39BEFED6 9F6D6EDA01100BCAD3D86FB4123412CF6868F72F350FE66D561A7186A01F69BC97BF15FE25F48E C45CC022BD72EC89580AB6739C8C8317ECB4CBD29BAC526C8208196AAF63B2BA81AAECA5B990BA A3257D4CD08FEE96B242F61C2CFB7EF764ECBF0942A64F01A911DDA049BB5801C3A8484959AD73 B9E9813474B9DA0BA96A5918D0FE5F330A46B81257894D82BAEC4CFEBEB8BBF710469002E22660 BE40A16786F61460C42F684C628439E3F3A97823A743B1BF03F57A7AB7662CE19E7A1702A27572 677334999E50A62BCE97B0218FCA98340B7880DB23A592CFFF1F826EC40AF5750DD826FB54D3CE 538CFD48D69828C152370E1837CE094136628724C2EB639CEEB3DFEF1F93B1ACAD9E7DE83C4248 C3F9AB0C1622DD4B07573755031386B74B947F756AE28BC1D7D3C36996FFDB6FC35D7EC5D91F98 DB0F6ABFEEB846BA0B2AA54C87D188D6888762F78446881292271B633CCB978C0010466747CC95 468B7756421BDEE43C819D0B5515AB422E31C4DB27F584BCAC7C50493913F09F05186C23A984B0 165A4560A907144394560E407147B7529CA346A7555121BB92EEC1577A786E99A546DFA9D8DFAE 619A17C64332EC53667E9945A845DCF3AF3418806448B6E3CBC036DB4ADC843D5F1A03835841B9 879A90BD40852C559B776BE3C9FCA1EC3266F3171DC9D5D9C092F93A304E85966CCB70A5FEB934 CFD52E35673B957EBDA65F6EF9C7AAD8C1538138EC91547F33450A8BADAF7F443A80C74C01ED8B 12C47BC4A2A76276013264376EAFC33A170BD4E2F4FC9884654420F242BA551C1224BEE146F251 12F6885C1F0C3D1A17DE3D2B1E93FF7F8497C839E4082DFBF0A5BFD14C1DFDF2F8368228283F88 D37CDBC22A19D65F180ACB922518378000D4DD49DB289564EBEE643FA26756354A5ED6444547B1 ED2F9E022DFAE2C6C5EAE209F2415A48189F45820F4D37D480029053015DF3E5C88BEA0DEB4F66 D4D6A2E488901266B2BB3BA971F458D7EBE986EDA71747498C61163B01D0239344D80A957A2329 94BFEB1E392592B8DD58E35F8021C3B0EEDBA3C1684DC2022189E53B97D1DCD371114B46AF79FA BC244F88C94D23194F806FE0E41EE464AF27C5DC02F12D9257A91E25A97049F276776D02E213E2 2F59015ED5756A0C4BC3C445FF0ECD5E3B3B27D9001F74B4EA1862C49D3FAB0727D45F9C4348DC D9A91157B52B58372DBB28E78769DA2931AFF81A1C2A57C961754A8DFA4CFF64EA47ACB7CE2D0C 24BB9161CCED70A7E1FD04B56A5A287A343CB312A6D171A0747640758A48FD8AD946D464F1A52E 6F58D2CBD7ED6B6A413326FB7FA331FD344A7C361F6857D8B382B4C041CBC59F596152D00C694C 51D851837015F27F9CF51FB6F46EBBE3146A8B9CB7062283BB9F9CEE177ADACB7C6ACF6D2B1C63 78C3B17338B19F1AC60A529DAEFCACC3F6A51632EEE7AB2FB1CE92AD8B87C84A8DF086C153A3D3 E7EE61EA7EA33BC881E5891F04CEF4AD2089FCAE6C0A6AA939D8AAAF1D651B5B715265151A03DC 63AAAD14E3D3700E311DE9890E95E90292B354FABDD2FC1E6918683174CB795607719CCF5DCDB0 C225B4B20E1020A32194BD183B9E3A1D0A904D9B5038491E8355CF2DF0ECDE4A88479D5520D785 034E7CFB43A9A463A95B384449F6735A404DB2DEDF1C8DA7AFFA649CA64B3D7DF3C4C25984E487 94E467EDB47DE54CE15B1A4A304267CAFD881F3BF644C591A66EE16FB2944FB8CD07FEB1ABAB43 9CAD945D36B4105D2B38BC80A24B4A076E8C05A5C186120592D690A71FFD7124AE5AAC266625BC 370F51B2AB55955F7B6AD2B2C40D09C0711785F2969F3FCC2D3777D55EBB041F46D6EC8F9599CE A6F981A81D6A5F56EB46B3A56F28804B24963017ABF2D8CEC240D02B90A2765CA5DF8C98A90ACD 52DBD291D2502E0284AE32AA8419F3CD382C1779EC1E60D8BDA601FDD02EBDC0B71D0F77F7DA39 0177D932A7AC1E13BC67AD4B056E85900BB7A7D44F22D05EED58CBD7B7D49E7E886CC98AC7E9A7 E0F3980AFD3E018966F8B6A0A41B2C1B67714BCE087D25C865114F002609667F9B70775C14F388 EB74808C0C76E24383339606D4B781DF60072DF1E8C38815F194D8E3887DFCAE1EF2C5CC54D1F2 4F8C495A458B5C020203FF0D93110680EBDC5E205DEEB9EE508BAE25A7440F9DE36496F500CD80 2F9200C9BE4E552674C3ADF44E7D2A3A545C46AA95C63E1A6A2B46FF4FE6D3D79E67220B65D052 4E3EABA886688E9C8A64DC852EC169753AF3591604604777D86D6511FE6DAD3056CC188EA590CD 40C755B0BB79604C277C3E337621848C55431B19ED7E5FEEEE5D0EFD306B017D700306F3E75150 A47EE598696D0F1D9F43C724C6C670E2912DE4AA0FB531338CF1C94E56B416CF8331663313F8D2 995A802BA4696C1E6BF0D676D63E79214B1B332BC477F3C2FCB4DBC488A6DEE706E0233EAD75ED E6D3B21F23F51549CB6DDE8BED954D705057A0BFDF255A7825C4C0B73FB9EFADE639CA54EE288C 02FE237463E56F4F7471B3D08C050104FC75DFAFB7751B9B463642E995A8ABE00F9BAAED2321C9 982BCB5E6B89C8F1831A92CE86CC52A6DD3E3BC9D9844213DC13602FBEC75C83D89CBD002F0A64 A848478398BDACDB0BA2DB79BBAE084F8DAB7A4AE4C71CFEB9DA5A50017BEC6B7A5CD1BD1A52D7 9D8348F4A545AC858F2765C542E115DF7D83EAA14BA59F66C6E714643E3E1CC6948654154C1184 4EFBCA9008D0DA0F24B737395E18E3B463C278C4ACB7C718D0EC5F59939D273C677B1ED7AAAFD3 ED982F0327FB2DFED8959E6A596DFDE2AEA916B62F2E75B7332D0CCB5002838CA81A2043B83965 5FAFA767F9CBF15581C67F0886DC3D9F44798CABECA8A30C4D62A9591C806E13703962D1E0D87E 7284D4B3B7F25265DC372E5C118047F0CD38B296D1A55F90B260617A825A1229D31FE0E18E2CBB C0F849B1A6DB93E0462DBE5DA7C4376915C229100BA5E3EEDBEA1441C73B213474C16334A804A3 5295A1BBA66DACEF1224F0C664F006AFCDE167B90DF2DB48545764E658FFBECF38877AED5DDD25 DE1831CBC2A45FB0383A6D78388212D9F15A8CE3B3A7F691185DA4C6477A8F2C540A51DE1D49D4 57234D892C3DB129AB2BE6118F63CDF563F7FDEC2EE106ADF67654B4DFEC9057E791D21B2628C1 E683BD6CDC88D7233DB137A24FADE6FFB8CF5E37D993CCB0158704EE8FC209DAEAB73F550A89BB 46F9816F57DDA9E3FCE2332295524437EEAB5646A2078A2F48C5FB4E78E94460E36669CC344368 F2E8903FBB47012142F5A316C5032DFB6AEAC12F510E55F0B3B01234B4DB90200B77AAA009DD49 95A6A6FC8B1F3FAD8F6BB295C4C878DFD69CEFA93758A1C8EB06BD572023474BAD3130F99ABEA1 1AC427F54CF6A43C743AF3FBBE2F9242C94A27270B25E946985ADB452F54E8559E7528F5E5E7BE 7BB23BA2EC7A3FB8EAC129CEAE6D657ADCF5059B48873BF40F1B56D647422175D576B789C0A2CF 9D015C824223353DCE69CB029FE7C5473A2EE9E3205E678D9D2F8368509D1367BFEC1E08AA234A 7BC03987E6B835F5F65B3BE775E8CD80A0351DDB1604CC18B971D39F75260081CCB3CAF7374232 F86B3DC7B084C45F5FC66BEA2229D083670A84E87718DC02B837F4895A7DCE91D209B43C6EFF4C 18CA96D17E175523D2751D635FC229E700BB6514D27634D99E3945F18350011E741F8B4CCECB70 C7931B4D4C512DD7547A547845711A47D9021B95A87FE0416FAD7E65556324EB27A27CF22243CC 84E5D04FB81675E6A37864E6F5CAE6CC4252403EF565AC74256B0DA98E0FEA08BD46BB560F8453 CB7B12914B5746CD96280C11E16E884DDA01BBABE1D2F4AEF1DD11BE6422AC200D6A450E6E68B3 207717F28D71D53776CDAC4749004BE46147C4B9FC905E6CD1B696FDE63282210D4132872B7E4D 3E68396F949E433750A0CD8808851CFC86F431F0869FF705DBF3936D900F228D6644AC6C3CA2E0 962AA4F9078617521D8E700F91A7172B043E2989149A16A9B557197BC4B4CA7D07428C78120C82 F1316FC0288DE1D39AA8284B69C10B88ED89E9656321BFC6AF3436EA01D82BA177DD206E308A4E BF2022D918EE185591AF15B2956C8C81C41F9AB0089F84B60F81922E965E9C5EF2349DEE983896 973ADE7A7ABA6EA04C710B769AA9B7023A3D382C2D3DA8C87151051C5C562C693FDE10C66F42C6 5C631330219D9D56A1ECF74219C7B6ABA6E6DB889A12BF27F6AFE6D0B33AAC968204C75368C638 99FFE289BCC6FAB71D133F31E64EC908EAB9FA57E1E5AB89D0C98DC615D4B93143839F035DD158 BF2D044879A8F77859332B3489564C1B10C25DE50CCEE6F2924E5031ECD830377E0EA7FB792D17 CF4CB705AFAFB6105DE3BB3A22C7B0485CBA2A772FEE67DF60FF3423D8B8D137CD00A86D68CC09 043917A39CF4693C59AF0D0295D7D29162F04BDD60EC3A462D29D8ED835E25CD7EEEFC26E9FFE4 43DCB8A520326CD8E2414F7CAD11AE8FCEEE96C96AB8C02B869095E190EAC403D691A3965FC029 D17E66A77B51C960E5E978734B7DFDE36CAFDDB288FE75742D864D38A9319ECEAE78F450C6B898 EA5420C8B945D47E24B41BF82F3D9C58495E6AA8D2CA54B78A0E6913D9526D00A265A627289D43 7A18708A4B94F1D5B847D4BFBF65D2FABB9D065F0F6BE4122D9B1EF0AB4972E806ED10F1D00FDD AD65ED8BE75AB166A01AC7A993FD5D7674CA5255C5274E2A78BBDA2FEC2D16D73826DEBF6CC84E 81C432827CA9DF15EE5365799B657F2F6A4E805F7AC92EC00B08D9184A453E8D5962E1EFDE033B BA69BAE743F90274D59AE6F11F1226FB8E22C7F1CAB681A54CF9C3785879D6104846E13164ECFC 6A4717A43F756A9223671365541DA00AFD8E99A6B06338FCAFA23DB10E5D2F5704A27CE63BB928 F442FA1F6818F5E2F6C96762956715ACC6C93294FE095CA16515BAB00073AFE0075AE932310C81 3E6AF37EBB2EFBFC26456450296ECD37DD8C33DF752557439DEEE2A6E1D57DD3E6B32BF7156FAA 38FB3B2721A6AB61D8EB34DC6371255DA640937FB1A775F0B2225764A33079DF451D56AC8AAFA9 E719554D51FB22B10CC104B8DC2FF2F2E7D0B409E467A06BA0B16ED12313417DFEF53F3AB17700 0711A39084EB7D6220846FA0D5642054DC2FFED6BCB528397A8F781D51E4ADD8AC4B40A347ADC4 339350B6CEEE1014E509D0317D9A1D8F6F82FFEA3CF20704CA18EFD447BD55B669A25C4D045E60 E12C48AD1BFA21007475CB8CCB6D8FF4E13407F8557CD962B0EBA70F7F4EB19FDB5170C74AE457 E5729193E047B39FD6B5723D0FAE30961B247B62698C01D18DD2671D2986008927D5D1099BDA2A AE758E64804140673A8FD49F09C0871D6FE89842D3C85B2C1393FBF6C91E01921061CE51B99FAF 5D7608E8F898A6B61452861A5F2342C430CF6C0E614DC5621AE20A46FAD31CB27AC661FF772235 E0ADF73F96EF97D50B5738132B8CDB5355D1D72E0586B60B2DEF7A5EAC892F9EF2C35FC5A63FC9 62F9D8200FFA3638DE67645BA64E29772B01FDA8CC886751023F4019632D97A3FCAC4EACD76BEC 5F764CB628A0159BF4B86F6C1472053A9A99690D76285FC91C13C77A19917D44E47D7CDCDBC27C D78E72A95F93E8E13D46C5F3656C1AD9A841EA57E9E8AC7548D62BBADE4E28D55F9AE09FCB4A39 3AE94FBBF339C5D4FE86A4EA5CF24E8F80D122EB9FF95A6C1FB1A0B8311BA65A020DC0296011AD 1D87109BBDD04A2792ACB3CE95DC39820DA84FA2A3A6B81846DD4E8225BF9B3C1D5C1B44B37609 25971D895453CDBA5A4723D397DEAA9D858BF6E6014217FD17B3B17217E1AECD75CE589CD71974 6517AD3E05A3121460B99292EF712DB6BB2F028C900B64B2A68CDEDAA4EF8D06E6A6D381455292 D419CF48EE7FEAC63E833496764C90F1F59F1A458B8E3A0B65718A7E834DC278CE6B3CB7700CF1 6F3AFCF4CA907EE1A02EC310ECC4C806BD40C7FA2C129745794746E9CA1305C240B7B03357A8FB 3D933A5074AABB6FD97A5FF42BFD55D5AC1DE3994C2668BA0D3811041FBA4FEF7DB310813AEEFF FD6E9D6B156EBA485E20EE52DCDA2B3C1FE818DA8AA5485026325BFA20409FB854F8A69DE889BC 5E717E29A5F06EE55DF27E3DF1B580186D94E9564FAA453F827BA7EA8CBF06CFA64D5D5D554B62 1A42087B9B944C11B86BBBFC3AA8DF6ABD451A7491E8E4BBA13FFAF61CAF89DA6FA423B4FC762F 4896285613D5FB2E6692FFE193F0DFF3257378CA226F56F1BD6A77E0EA214098C3DB6D4B210256 E27CE48DB5FE8BB3F8F90F12418B3B2826D2444CB77307AF33606B3C88B48F088D5566B37181E6 1E12CAACFC85C94F9904B0F4AA2136DF4B32608F367C5412AA5072DB6BB7B388A53F78D7C960EF CA6D62352EC9A6D2152BF33258017B7DE6A781669523091672D4C12427E89D91A6D00824AEEFA2 BA82C58F917E19C181EA2F3F58CD5D902E82D09CD551894A728D101B53DA3D384460D12876EF06 DBB996E1AEA8E0FEE0F7CFA8DE2F53B390A233075E70DDC3C0EB6A46D8C053F5CC1A42AC3057FE E34044C8522FD147469E29537B7E03D4811DC0B00A2069500EC55D4E5E6168F8068BA5F718B801 A0B264A3FBAB442F70F72FAC6AED4365CD19064D43E8BEFE1B82CCE3963F09123147F2C90AA211 E4A479AE5502D32259752F3328936811FD8B00DBD34FD77E7D435A13CE3114D5FCBB57AC18CF14 E8EE9A18B5412BC9BBDA6D25949C96B24D1DF434A05B71984B5E33718468B327F8432811752560 2E479129504BC7AA05EBDFD796E6C61778F43F8B1AC6C4BEB4E3BBE9BE2D18018A5F93723DAAC6 A78B157104438C554DC4DC8CD7EF66EE19BB77C3B2951F794F39DD5CC4FCDF93542EC315083151 82B6477ABC08F38EC4303DFCAF6F897B6CA8BA50AEA82F6E4519A133A012058FCB72E6A3F964F6 5604B9F4C2EBEAC4434460AC7FDE1548C002F626097E603EAD625BE5935CD6E4A83CC438B63C06 0D294FB1AB41F878258734CB768F57951B97153B3023EB701A8F8885D3A4159395474842A6062F BB422A81DBB47E73B9F1A400890E65EB59A2CD9C75368704806C559A3A0B8A2A6E60DDF7ED5D2C E89CD91E5E8E3EBAC4B8129D62D3318019D7A8D717094659263691D9AB0ED28B027E77EBE0C828 E31B70863B5FF1D8BA9DB8EFD1C982C3B7A4AE190E22CF74285217321F6434396BDA6C9687E3FF F175AD9919CA41657017A09A0F758F24BEE8166011A7050986705D8B86B0B785A840396629970B D530229AA62A95096A8AA8BD5152B525D259450103AFA7B16F3607571879AA4CC6E185325732E4 FCB35FDD21B2D3B208B61E7DB48276DF9F911020B3CA7E2083A8F85A69A3B970A07018270A9533 E99A98533CF772B6EAA93BFD7AB8B1151E7D7A75B7F4605B64610956C42231244FEF3D1AFA2503 4DE4E3C0E69F9F61D9B6DA0838147D1DED8D00FFE22611E806C1FC25DD4B7E6E9F475BBEB3CBB1 E491BB49B2BDC18F966A96E7D2630F34058D907280FF619A1BF27BF40CD104DC5E26AF822FE129 B9D708F18D91E4E192ABA60E4DDE0EE140522B5C90C4ED64CCC0EDFFC801744A6DE60B6A8971F1 46C3E4897E72EE0376F11D327DEF5032DA8C7A9D08FF47C051734BCEBA829C7CA5C2933CBCEB2E 203BC9F9EFFC557E2EFCA9FF1664D5C1890388E9375D3E9AD21BD2F06589C86126981148F4B415 9729FDE9A85B2891FC0A681917483D3963BA843241D14E8F8955910EF3BA4327C2394345C42FB9 B6A9A104526BFFD6814F000A9E1428C5E405C09FA07CB5144899CE04C09AAEB23ADF0A8B13F483 A8F9080AF18FFEF23DD28B0A551A772B65E820AAB41667BEE8BE5D90D7115116CC45D796EE0BED B273398578828D66BD939AA605EBDFD783E0CA3405149977CF560F2F94C3F1B5CD839150AA08F3 9A68DA3F3E6B8E1D6BBCFA4AE7FB44A81F2549EE346EA1C7F72E67DCC14BA17EDFDCA40859199D 519869E9CE501AB0768C5A8C5EEE091E7D8C9B44A07969B9B7F0DFB2A772FAAD57A94F0C97150C 7366B85CD696E55FEED9C0533DEE4FB54221A1AD120A1070C2EFE1843F6F196924789242FA8A20 B39481C6169C49E1645961340A64A50BAA77407A314C1C2EE6EFAF1404B92B70BA402A6C154311 0DE51F7A60C776D90BE89C2CC44E23DA090F84AC785242B45088589AA1FBEA54053A52EB6EBEC4 783B6CE6BA698DF7E2F66AE0E5811B2DB188ABA124EF18A12324E00F6098ECC1942FF58D16C0C9 899C10F95E3FB42BE4F0BC6EB66FB239A4383981C7042861DEF2144583C67971902551331B63CA 9FA21F4412CF5FF1AFFF3F68A49AC7A6DBF3FAD65951ECD76E50ACB0CCC925575C7207B6C9070F 0CC47ED152D97085415643D5CD3885DE61CFAC4FC0106616313329EE1EEF95317498BA03870F01 EF304C7A1B1661086CD937A45ACAA991A85358F2591982188AC325CE9E0070863AA6431587AD1D 3F47B00CF6A212A873590325E55566B0374ABF3D4184C75CBF5F720CC81EA94D7439DE674C2FA0 1ADACB8F3A675DE366B99D8B0B97743929B0B8B2FDD43435B37ED019C1C67AACFDB360048B0D49 9F436F23AC2F896708EB12438CDF0A298270597AB409CAF9C0CAB64BAF3DB6A65F741C3F156C66 47AA18CC0CE34238ABF6E82AEBB2EE0FA22B3199869D9FB8C885F4AD703DE1AC964BD6FCCEDA7C 23A43EF9300B25D1293E8A313F59F667ECD8FCC19E8A516541A027029B770C0336F81DDC827BA5 0D5A18C44B60604CB8E029C40781D7ED47762D2B125753BC30F98E257F64C35FB0296B9938C00A 6B2054D58A8A432ABA3945EDB3D2F1E1E9FA7E3E01CDA44398BD51F7BD2F191A2AF8808A3C8841 88642BFA6AD6CF4E2A7636C1DAE5C95F98B274AAC69EA7FBEE6CF0DD0AFD661785B9C2BF417EE2 111BF3951994D3387AA5DC3D25205B78D1C8E31CB41689CCC75F9963A597CFDB9DFF87222494EF 66D50C191E7C886E5210F0C3063DBCDE157B3A91953542CDD8C25E0B9E4DA0B0E9E6E3564F67B1 76A311049DFC428CB7DE0332C99FEB791B66BD3CF1E2CBFC10FC5010E8F5ABC9C7F8A197D7AE46 4855D9FBA4D9568241DFA0932B001DE26DC1E503A5CC88C551F09E3046AF2E3991300266F38FA4 1257A23DC35C12EFE34F1B3FA257FBE6B9FD76D7535E9AE582B891F7F0A0CDF8F54C9038CB83AE 5D58E31EFAC37FFE4A930AD7A47513BC17F83F74E0FAE79C067EF426FDBB06EE48C42D24E5FCBD F2031194A5446079A2D5A39DF010456BCD8DF5818ABAB59882E5DC0A4E3D600F0B5962FE507684 C4944D2692229DB2AC4E5807EB0EBD6B5AB09FFCB333C6E66F978424D55D66BC0B9D1ADB3C1B2C 9F8B1041DFDB1F2E5CC4184ECF583B69425CD9762DF15CC13765429D3F26E385B59CBEA8122272 727E7B3D1C1260E8A283702E84CABE17717E2CB76F39B1143972C33A9791498268FB22A0696E9D FAC42105851031698F3C8C54F0308610D2DB6414B4C10ADA54D25A0943CE525A25BB147D1836B4 3C0A4309B9E1462AB488ADF8FCCAF8A0E50DD1DCD6F32921244CD3776E81FC2451263F414FC5C6 49F0359FF5C4BCEE2A3CBC399B5296C1A7EF7B2ACE9EE3853884CFD6A431797BC1050E35795E93 1D60A7E6AC70F641E09CF089BAC394D88E8F0B8E19F457CDB8F9FC5E475589B970B1074BCC094A 19ED1702511593763D31FF025822E8AC8913A161C1B374ACC0AD8975642A0023A7442ABA48ACA2 CCC65A60FCBAD636620CB00E6D79614B56D9009C8F5874C4350075A697DAD1EE1C8E1F92417F68 A226FCD6E78BF014BD66BDE3F881640551BF2EAB325FECA297E998F4C98FB60BFC80E761C4EBE2 3029060F97DFAD5EC020D91B9B43DE2C78150AB822AA20D452F02CDEDD4388043502672E5D50AA 1D857D2DAFBFEC786CDAD95582BC26B1C0D1ADA2D94B0F905C19A47687A5BEE2F9FEEE5A11608A 20E330C490067B202258ABA8102105FEE7F07654169BCB2FC5B6DBB360CA1A68AD0D118D3A916A 0D7FD0F6343E171927EBAEBA9B0F38490BA530518900BCBA17C75DA4EEFFDE6CD6C958733DFDFA AB4EB7335AB6D94AC95E114569AC9F976B282617E03871685B34A40EAD2DDD74CD4F4E694F0C6F 119B5032B305A856160E15A3BB5A87411B709FC0C89372B22E4825A724D2B78B62EEDE608E2699 088E66C52FBD7A556BEED309477668B9D75CA000B1BBA80BA592192513AD25DD6F0A1D3AE19A55 022F008129EEA909917689A013CF2711E4A2F454FDB9CDF93AEEB28A1900EA548387FADCE370FC 56D3AF238C59DD1DB3DDE2F6CB27C6DDB52B58565CB876419891C76EC8AFDF2F606F0A04118A10 D0D2DE3D10D973DB9C038DED5D1B36DEE2505CCBA233C205C77AD4DC6D244054ECFA2C9C7AB1 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %!PS-AdobeFont-1.1: LucidaSans-Typewriter83 1.003 %%CreationDate: 1993 Dec 07 10:43:50 % Lucida is a registered trademark of Bigelow & Holmes Inc. % % This is a copy of LucidaSans-Typewriter hacked to be a size % appropriate to typesetting alongside Times-Roman. % - rsc, 10 jan 2000 % 11 dict begin /FontInfo 9 dict dup begin /version (1.003) readonly def /Notice (Bigelow & Holmes Inc. Pat. Des. 289,422) readonly def /Notice (Copyright (c) 1991 Bigelow & Holmes Inc. and Y&Y, Inc. (508) 371-3286. All Rights Reserved.) readonly def /FullName (Lucida Sans Typewriter 83) readonly def /FamilyName (LucidaSansTypewriter83) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /LucidaSans-Typewriter83 def /PaintType 0 def /FontType 1 def % /FontMatrix [0.001 0 0 0.001 0 0] readonly def /FontMatrix [0.0008333333333 0 0 0.0008333333333 0 0] readonly def /Encoding StandardEncoding def /FontBBox{-12 -205 618 928}readonly def % % We can't reuse LucidaSans-Typewriter's UniqueID, I don't think. % (I don't know if the unique ID is for the font before or after % the FontMatrix is applied.) We could use one of the private ones % from 4000000 to 4999999, but it's even safer to just leave it out. % % /UniqueID 5029009 def currentdict end currentfile eexec 80347982AB3942D930E069A70D0D48311D7190FA2D133A583138F76695558E7AE9348D37CAC66518 06D08527C1BB4A062A4835AC37784CC39AD8841404E438B4D52D3901E47A1DE4F7924E0FB3DAF442 499175BAB1226EDF692A4956739F8828E80592F450C5D5C22AC88BCFBE9748F61D18243A16F4A446 7F084E8E2BE46EF47FC51C3A8199E3CDA62FF9C4FB73956DAB8B6683D2156377808CB35026073E80 523F59A30D195FCF9B9FCE4FFAFFF195AA1C31AE164F9B6A929E4FF572FD5D100F7E72C3258853BB 8A8928B38669590B921E9AB5CD4D604AE6C1E4E917CFFB9D25B5FDEC06E29EBCCA01F203B4FFF0D1 5FCC154910C3473B8BB1349848A84948348D5F7D1C8C99677E192540A106C2E5D7C072044B1342A4 A898D0E11A8BB05DF48BC18677E2EAC3D363200A81536405F42A3A155EB2A4CAA64C1087E14DF889 B0131468C586D2061A3BE7853A84DF2A3BF3C832449479673E63BD7E1BB396D69DF396075092908B 4757E7A3705E3CEDC3B5C75FB4F8960016BA8B91F6C9099D05FE6C775BA9FF429651538051F8A1B5 63650D3538B81FE98AD2766390B28CA9871D7F38E207B0D3A1DF48A939FA933463497A4CA8FDEF76 F90C7BC2CB080C5C92F0312F323000741EC1B9F7F969C5FD5A04FE08DAA9270F26ABF908CBF5C1B0 484677CDED8400C34B4EFC4F4C573B39F4B7361ECE30C41AB0ADFF0A721FE2A1379D8A296B17D18B FF613729B1FB5130CA7E1BF2740A49D5EE61E14DDD9AADA0BD3588F6B87853AC946274DE848F36C6 FCEB6CDC7BE1564677B6B5097E4022077DED0642BCE40B37EF7193B7F185963855392F11614C7FDB F62DA70A31FE157650A77512879EF2BEAA85E5993194825202238B78BE634DBB292635A47381D836 AD137040CE30F549BD8CE6D91E8DD1E3B9F02ED9072FB585FA32F7CDA45F53651577228A42990D66 835C3BA3B47A7102E94DD8ABC4FFA5877F9707B83D87AEE2F5B83EABB347E8D3167260D31585B4AB AAAAFB96613347201166512A97137A47FEDF6A1C91350559A6D458112EF1FA850FA4F1BD9D1711E5 680100E99908F7213CD3030B8255F7C59CAE7B32F29E2B53AA4C4E6B228026191AA17F75D36F7194 C37E1B2EDE3B442965666F20F98CD6DD8CC10E1231763E116AC107F38A21A7E646084C54C26ED170 1649C5F3C80FF3CBC419EF43EC22A93679BD2A6D8E70F039BA9D55448135414172CF93B9B43D1EE8 4E77FA872022C9926E6A00C6D1C574F1043E73CB78D50FB37D61B7F461569A6AFBEE3C89C6233A1E F8D3A2AF4485E2D56F25317C7FBFB9FE6E3EBD443EC5DA4E9885C5DB47923A66962F4AF9B1B62E64 6A5DBAF76F6C7355804E998F6ABA7456AF8458162D424494E8BB2704EB37E84A81B0D976FBEA0272 0F60A740128149645BC6784423AB9BDEA0A77828F74126ABC75A660FEDC531BD75FA864BAA25C90D E1E6F1EA2C15AB002038DEC79E7271767EDE8532D31B84E6CFC4DB0935DC1CEB13FFACBB1528261D E12232992976806812CD8F00B8CF4ACD3E62453DCD22155A37BABDE46B405B20ED68EE263AB4CC81 0775F55803AA22E6BD4618D916A30EC708494799F4F226E1361F3621C2537BE50F85CD10CB2240B2 E24C8585F36DE5D296933BABCDAD9841B483FD07F8412DFDB2D0FD2B8A0CDD91E2EB4E4511336EAD 6A049847E3F119914C043DFE6F770C564FD46B7101FFC01CBAD3BFB95517D8A2C45D0D60EA091889 067710EC2A2783CB50C493699F0E68263B143EE2582C96058D2B137DF1776FF22B51E30ADEC17ED5 A614D678D087B231111D2A9DAC0C40AD4881E9A422773DE7329E539CCE3E101BE0FBA4EE2E4B7931 575B1BD754F974A142800F1E823AA68A0F3DC32D9EE21691E324D582A909C79B817AB971AEC21B99 C854DE530EDD047A53B5B5960149F62F8B36645A49F666504F7F96041F93C927144A48493B209B32 0CC4B3F85C31BE5BB72245218ED830ACF5E525C0517C41D87CAEB7165CF35E7C2D23B2F5AFF639A5 1A814A0408391729344BDC01A56736E64D147F54A0A9D2934E3209D4220BFEE5FE2B9D3886D8B455 0D5216A9A531CF62033929A89C9A06EF93B3D5EFEC7979EB05F5DE7AF64EAC98AFF7F36E4A678BD8 857D176C21D12BAFBA4892733F161A4A8960E4D2CDF70E0BC2CB702A2D9CCE6EB457E00D5AD68EEE 1DCC3161BFEB1508B1C760741CAC9A1BE851F740AF041A698E2D65CB581C266CE0F84E6827915092 D08D78DB2A32A8473ED908A1ACBB6A5ECBB2A80903B3EFEA6A43B924922D6E0ADB1F79860696B5C0 E5B08F88C9FF42A83F83EB72A4BD3BA72EAF7BF6A63D7D0904AEA98DF971B5A4D0AC102C2A0A7E77 7E3A9742F8E59F11E158022077EC2068E4CA6309285E6199FA761EFF3FF401566060BC5F4CC83DB3 632F33B5AA4F881B0A885611C75B3B70A3C679036B9FCEC9F2DE7421A9AF6AB9F7B12AF05A133EAB CFF4B8ACF442FDA230138215D16785341C3038AE36CE13A306E080926688173C86C25B1C1FF05C75 2E150072EAEE9AA8671A3B3CB80BA601DC9F58C02BDB75C68441D7A87716A8DB6D70B1A52B91FB3C 6CE7BCA723C16C70D09C7E8F4576E077BBD5EEBD21F3B395F44297EE74CFC4B5F743C497A77F962C FA87D31E239067AB6131371CD9722A559F7D50AF53DB5B0568F175FF0A06369E5301A9EE90AE2BA6 F3D440DD7C786912D3EB3FBFA504BFAD15DE908F46B606AB184B74C17AB0AF629CEADE877C33A577 807E96D7DF59BCC4EE3526BB7CA3C763C186578D1281BF558A2461541F1CBB1588430E8470CE5B64 3208DEF67DAFEF78D776AC0FCA3C34259900567CA3BE4149ABA57BBC2A9EF57F22D4ECAEEDA15E4C 0B9522FE08E41E08F97909EFB1115A948327DDAE0466FD76E80E99AA9BC408158271C2C120073EB6 F518818DA9095D6AEF9EDDDFC414C57A0CA9A7343568080DD2588E0AC50B1646A5B53D80A56721E7 C127296A7AE17B804EDA28954F5ED60ED96C42F7C9C1C5150D5FB6515BDBFD0163C0304762A700C0 14F6C4969799FEF3389B792513D0898602104DF32A472D5324A413D49A8806C74B5575D0D919F7CB F7F9008FEFDF722AAF10D7FB238085D136332060D218DD9D8AE75F89A18C4B23451142DF6F826D66 E131E405FFC3924923D86BBA7879DE3027020E8A8AF733008B2E8088B7B4224B0834B2512919FD99 7FD926D555625AD9B6A5F1C9E9783982B805B71A7E2C5D19FAD2B290714A7C2CE47E02E012059CBD 3F3E47B7FD9AAE535F8CE94B274F684F7A25628B1BD5E021BE984446AB62E018FA4B37A9F14080FA A03FD51AE522AA36001488008ACCB27474500A2EEBC765A9247D34DAB8DE5C4016018EED9BDB5C5D 446E2482CDD6A3136B2FAB3D7E216F93B237C3725008ED36ED10AAD15BC8FE38CDF68EF5F112CD43 A1F8AED3FF19D582615B432EA4041DC498644FB1EFB012F9B7A24C2F8B4CA02D2A15F9AFE86361B3 981ECC46610BC92E4A55F0BE41EC600009B7DE1444AF1D6B40B11D1E2BB3F6CBF9F5125D501A7DDC E85B1BDC9AD9BA6BFFC8D0915EEC85F2ADFCAA024EE914B38D84B5BD83C87603CB53975AA2814991 8623FDB154E15A9CB0F2962FCF5CEADD6B6065E2B84E65683B9DA53DF277BD786656A92D57EAB3BA 70F58CBFF25B54B3AC954A61EB3101C8EAF896E0185EF17F073E954324A62F5EA10E8EE17151308D 7F3513C3B977C67A6F1F36D794BFD3619D85AC01958C32B8A88FFCEBCBD888C26DD5D75DD3A221E7 83F104811222B521E0DBB11B2D1048E02928AF1181CA59297ECCED92338B42872374A4C45878CF5A 9718ACFBA4E61A813EB2DF6D3BACAC75EEC2CAE433F045912BE593C8E9A369DE63D518C4661F2C1F 00F5F68C2EF939947D456013DA0D80C5DAE5A460240A59F41143CA2A96BB93742DB47824F8FEA054 84F934FC5F649E81EC405D6BC89199C31592E5D0D73590E6DB20579BC82764F9CF5F5E881B862D51 E77924D071739FD160855B65F2280A4F1D302B9642BE9D08636CECF50EADECDC4AA006369B0894DF 4303C0DAC203E5ABCEE18467015016F20551D6097FBEDAF520E01AB7715786F88E1991B44E283E1C 39F5385F6D1A13C69A8CF941EACE3386CFBB2EE1B776718C67A669C5C0D31AE0B32F3A8098E11597 E73B4175782FB4889329A48FE151588535B7F72D3D8CA7AC85F4BED9CF38D3621169EFFE14A390B4 C0281532239B9036D8871F8D4C9A9DC5204C4B9FC20B045BEFC8FE20A0B7B1C955D00495C15766C2 8D5263EE6311C0BFB769F38FBDA24BE7ADDE053145B44680ABB3AE0B7D4EB860969970B5B519ED5E 42DB7820D6A19F99307BCC946487B5315FCE66BAE2E54BD20610DCA53019DE8B515EFCA0CE4774F5 BC79310AB1A0CA93E74403A389525F00274C5894EB80010FD77EBB734907707E29C1E8ABE7357500 2176C43C345A4CE85BAA397A7BCD51631D606DE89935C103AE7648CB4841905E7282EBA54DC3D0B7 9729709355CED80225E5FEEB82B1DB705C712919055985244E721081E93DD213F7ED93541851852A 26A3AC2C6D9E1B121820B07EC27FF7E9453C0F4BBEEA6B8022E15C1E7FC33C664C84F1D06CF17B36 12B2271775070860D775BDCC65E7DC255DFD7B5A812456A7EB28781609F3372D5B0F0B6D94B78CA7 C62597B48412177C647232859B4A9DA35AFD288E394CB723E9ABBD36D87089888901AF6E8D766008 29725313B117161F269CFBB14A160B46B9DE8FF0761209F7B2DD5F19C6325BECA6FEB7AA638E1FC9 D3AE6177FB0F7C6CADCB89159F718FEABABE586B41CE4DAD020647F744A7F5FF2DAA17C26F0E1301 D083164BE0FEF9D60CC2C66319D4135569113EAE174987C77EC433EA2B7B783D091DBE51DCDC4702 722FC7049B30BEA7D0C1228965E28ECE1609F52157E2FFD2F465B47235257755C3F9A9962D95032B 63E09FB9FD0D523DAA08998FFEF96184271B5329B8C5D047EB5983D50E0068BE0D1DADDC22B8AC96 B7E5E42BA1D12AF80061BD2148AE149C09FD325E3031B1820DBCD170ED3178447D1C351BCCC4B1D6 F3602661A6741AAEE55A15C0949E1DD9C993D0F88CD2DCA25E4981109BDC5A3FD2FA92EA6EED8A32 37EA523E544D09C97D232A6117459097758864DB287ED7C3E9216C6E3FEC4A5C31C04277A591DC85 376693B385737DCE6CFD27CE6E4251CBD7E97E91544738903B27FFC04D5AE20B1012BC6E39249679 3C0113DC8E875EE132E776B339F1FB789B4A1A3EFD177266F9D40E238F474F51FBD5CDF96165BDB5 F673EF193D6421580FF43342309F94A3B516B3DEC92EEABE3A0529846B70B52791E18788899DD29D CABD656C19EF1102226E146E65D5D4B78B81AB91B8FE016CE87307E5EB7257F45A0C8A40A15AACF4 AF68968FB5B4605D03BCFF286F873666DE682819102296C3000871433CE9DC6334A22708A01655D3 BB91875BB8F23841892935E5CF791E7B65FDBC05771E09B28DFEF457E1A81040DA1301DD1F2FC5F4 17D0715546D5A01E346E319203EFEA677C80132C66E8CE92684C3A2E01605AB7A1F299C5A6082513 A1FBE5830F6C19B94FB2BCC9F93B8144056DFB906628EDA3540C0431EED16991479DF6727B5D4D32 EF563D88555DDE7BDD8B83300D4B3D5D6C81D8CDA03EE2870D1A241E77434B8ADF36E0CE6D830949 6A59475093FFB833F202E6B6DCA3CABBD68C3DC919A3E4EC0DFC31F4F95EED52EB825942D9DC5EF2 0BD9149A2C38A442068581F5DEAE47E806219F20FEB4E228923910739BCBB7B58E32106B706FC526 EAE0E03BC4625BECAF67CC05F3ED092EF69FD4286AF10EC2CA2F5943F58907421D9170DC4C8D7F28 6C846D4C6864F867690DB8A5A6615989B3C2B9C6F6B93BC081E9C5EA2948D98547E31355C541A300 FC983609A56A91CE719F612C1FB9BF360B17F927E9FD488CD86929E61EBBB4CA8E7CE6719DC72AB8 CBAFCF9D503C4083CC9E0123053FBDA18D0C4700263BEEEC6894EA45A20BA47912A67E46C970ED25 77A546DDEDA49774475246CD0E32A0945379F91D65A070E5963E4DED4374268A07F574E7E6E79D73 17353B99CBEBEE9CDBDFEA305C711FB0CF1A48ED66AEC764C3F3F82CCB1E2B0D587590EA1714E787 C743496AC5EFB96CB08B702D0E99395901457687C5485496B5E39996E811BC883383DA4847D0EA69 2AE9FA4966FC70C46133E4A72CAEFEDAC8CF1DC3341F6D85FFAA800607CB8544B9FDE76E33FCC845 73AA68C01B64CD5DE1A5054F11DB94265D6FE331146DD1702D042722B99AF4AC49487135825DFBC3 13C313ECE0138364A7F3D95BEAD409168A040F1AB890DAE0DF0F88CEFF0662802D43AE636D1E05C0 BD477456FAD7E2B067FCA66763DDF2B2F48C35FE6AFBF4FB94C71A090B1B22494C0E40CD02546524 660E5679D22CB569DC1FCF9800865DC4BE8054FF3B7141992CD3C43F4812EE52011BD1495A170AE9 B9C50FF0B3B71A35F0381EDEB68C007BBB36CB9C9D84234580A229205DDDFDF5E64D14C16D40C0ED D7B1810A488F43C469E927370EFC0670C8BE1AC737464BACDB6B2C731DC8CC153A072E2C908AE987 879C3D6EB1B9938D737F621B539F25F6F6E827382CF7DE633E657C0B728B0ED2F1A6748DA9E4944D 4CD89967D1FA8F4459670FB83B55D35F0B1E252851B97816B116603F8973B569993E907E466A23B6 FB210BAF37818744C23E82F081830259EDE57DDA652167EDFAA46EE27167845EAFA6E2EE049C31CF C7D3E3CC450CA873634B9F203CE5E3E1CBAF3A233872AE92C8DA42F94D8B3453B4962993C186682F AE7D3707EC032283DBB107897AC64E7C36CCF0E56FF3BFC4E0A9C65CE4CEA2B42F39A4F6A57C74B4 300577850DF849DF24B0481AE7C76CD43D04B80A7CCCDB8E3600550243C7100237E9AEA0126BD52C 5B1CB73AE45BD48478C6EB2FEFAB9DF9A83C88353695286EA021BABF9B4887F3709A46930FDF8905 651138D70B5A472A67DDBBE343A54960B8F30BE92BF0FEE15CA238961550B391D332809F59E58DFB 2CE34FA60A8AA50B00DA8091362129DDC7735A63926A8F7E97DB69CE55FD928515BD2B49EE44E225 687D167A0C37992C0173DB1A5122D7CF34315C82D9E4CE1231A28EE4ACFEC38C5B0F5F60C94025DA 4114121CF1F54BEB83375C50D77D1B4CA88BE0F359A42A97B1D5CFF7844D33D511A43545D1437EA0 3BBE19D79BE26F65C99044C5321EE327C8B5C18B0A4BB6316426901F9B8EFF2C94E12EEE1DC7DD13 1AD6B5E3CBD5A8715BD08B65A2AB8EDBA47DAA97BB30064F5613C92519E9B6B57AE188A83E5314BC 4B7C8FBB1E65CE75ABA028161B0654763214F8C0517E104C1BA3365A725416392313D023656DF547 E668383E981FE0B47EE47E8AADE05E056E3CE11D8EE4ED6EA75509610E3FA72C8A114C91ED36C8E1 0F49AF79B58CC4DC4C2EE75FC406AB1145133035E272C7DE4702AE746E696FED6CCE73E2D8EB5B2E 5B76571D0EC223870F7F070708C3765504E4DA1FE4F0D265EC038612D0357AA0B7955FDDA48D4836 FEBBBE883CC3ADFEBD9BEBADC1252572B5BDA920AF018FD0F0A4BF1784CF8CD1B3DF93F54EE9670C B20E15C4E175D0E7B7EDD9A23AEB4CAE31EC62440B1131FBE36CD897F3635575AB613F0681F86BD5 4AA325587335EC4DFE96CBB83125DB1FC22F163248643C9BA4C18D791A6A02E445F0C1EA7A2984FF F475F77A816FBA783761E3DF373A0D67FBD746F02B28B5FBF9A4111FAA90BF43C4B0CC735576A3A8 0768A37B53EF1C572E4F9E5034AF1D724F7968CB67172C260C0978734894D9FEE4962C0253FF45A1 D430BC811C4B6A3BDB41DBE14E7BF613253455B5CE94D280152ACB404A831686EDA6F73E08D1BD92 3D34015C5F719BF51DDEA94CBF1CDA88A69B428FB80BCE5FBD4883F24D490420FC98AD264135807F 094402DCEF720B3EA1E9DBBABFCC9A8D7AF57B6B2947F7E8B10D3F9651658B7B1EE1894FD8F3E365 A834BBFE1AE0BD7623279BCAEC50F798DF73887F42C53190D650FD1F1C5BD06CD44B48860CD3CDB4 92E0327DD6F862906A05AEA32D0A6353A729DFE4CFD51AF6101972D3005BC698C459CE627692C5B7 742F4022F16939602EDABA26FACB235A1C0EFC9C6950D7011BAE92C78A25865E129D9E81824B18B3 EA9F2CC49D70F99FDBC426090836F7D71384A60657FB7DEE4349CEA8646DC9AA31A76E974D32C325 FDA6B72B3208F01FFCF876FC29D82C552F9B2B1C0A7240BCC2F5B0312AD679DA1DD3B9919629DDEA D61FBFF78DF1C5DB67E8D113A2AB1B593B853584CACED175084AD759B80082AF87A678FD3FEDA9DF A1F3BF74DBE41591E038E69AAE06F0A264CD9293B5DFD22BC301145E2AF7024FCD3AE5331C88BDC4 7634D25D072E3CC40F4294CD918344A410F9629D11DF1EF5A2AF06229E7623E22644A504D3DB978B 4AB30D65E8BE2DF68581D03DFDC3592CB062A5DFDEE297CF5FFC53EB1DC823C945741929270938B6 8E1BBBB7CDFA84083496A81E13BFBFCA2499E00D55F76CB8DBAC73F323AFE1FBAD876A9DD5F6B2FB 20F327052CD97B53C402319ABADF7B5C0C25E29BB9948D624056B6C0E1438922E7E4D0FFCDB57C4A FC712523B1AB8DE52A597C863636AFE60FDEE42E80CB77926FDB919D159E08817292F39F0E70FA81 978FB4A84EDCC17CD081BC0E3B26BFE1A1C90734789D91D298B2F528EBA92EE9B1DC1D872E20E3DB F2E48C3D102BFC521C5952AFDF8F3B2724636FB948BF5A32A44800CA86728AD6FE3A28E5A8AA88AF 21BCE92824A5FE0C350BC8DD45C179FC99D8EDE7C4E2E540BBECB5D4ECA4FCA61B9EB4931510A022 433F3958913ABB171980B2293A228D39F2F44714C6BC608C74FDC38F30D7BBD035BC0D59DFF95C7E 4DBB7051B624134E94C5256460A8B80B50266D4AE3197C792AC29A17D43687A380CD2C4CE33576F3 54C9249D12B06C6434B7EB010AF6CBC8A996502CD5CEB596B1DB59AEA6E9E574BB75EFB792C68E9A C4BB33B4CCA25C49E75BE532E70764B7D33815AD2BB426BA9016263DAFE484537D7D3BBDBC8A993D A7E203796C89A7FB00A1CB1C2E6F20B999FC5B48DE08D7352C779E0BD6E738124508859D6F20FE35 550A1DF28FF2C2B2A0FEECA943F7E82A0E26998FB5F025F0D39BFA2B98503D6D0224C9E7D172D2B5 9B15A1E4EA69E98981A6C78D5BA939D7EB72C26846E1B26CA6BC330678556195F0C274C6813BB44E 9FFFEE955E5C8C6E12EA000D9DC9403A9D27D62B9F08A88D03C328009EB84CB337E9E3CEB50B16BD 5C39A65B39C41EC8AB5BE869BF418C3265D240E692EDE50B6F4ACD86955682E44F22C0BE7C8431A1 400D8DA19CCC022100EE4313D44E310A33369ADDFAABC8A2DC1A8770673E8F0F2D4A7C0645FF518B 6EDF52516AAAF8209539DEFB283EDF8E7A9E37A9F24278740640A031B0D7D7434898AA663FE729A7 E26BB48BCAF3A970ECE76CA17664D78D07B3C3466DDB39D2AF51B7662E1558939DA84CF608FD7C32 FBEC38E8F54896E23CB21CDC8C7923B09EC9640755E713A78F61B4B45A2FC07C1F06F9F4255C91EB 5232A339CD63F75BCDF45EA035E2B96B47E47365245F960581C5D97D51D13B78E3E359091A70747A F05FB337AF170C90FF30C007B6599C0DB5732CC4303392690CB2FDFE033140604692F0D5A4E365D5 A8EE1FBD32D2A53F446946521955D5DF87AE6E14AC1E8A0693307715C8D894AC2434A96A7A4A9732 46738DE3311497A9B1942513AC5E9471AB02DB7BBA2E74FC7D3E9129C801FDF493FDF1FF022E65AA 75DE37ED4301EEACD5428B0993681BA64A7E36B5C74B38E5423FCD620D2EE4159078E3A58B332EAD 5B9DE338AAD660ACC2B6950AEC2C3BDB289367D8F9F7A9962D9551BD6969FC2553876104BE1BDF57 ADFD6CDE5AD047F832F2F015AA1F99B38216CD8BDDB3AB8183F205F37B97D4035FCAFEF127623159 1B6C82587DAF42D7FBBEE606B6123F25A15442287299DCA7A8A34F15BFCCD296D192CA8FD06C2437 948FFB9C3F25B459EE494D5E546DD9C75DCC0AAF4F4C76289AA899BC162119A7A0EF713217DA826C B9760C48C2914B98F00886CEA4CC5FC04C587BD2945A227E168B6AD9CE4C1362F852E4AB3F2E8739 D9B79E45649C50FDFA6D65AE7B45A2729DF2CFA6DEBB1C816B7A2065AC59E542F6823AAF429590FA 1862B212CB122651F961F1A356DCBCD1AF549A7751F4DB86A70884C73FA94FB82138308071A253BA DBAF146BC004141F752F74D44D5D7F55D58AE914F0BD8A2566A65C619F561835D9648BDE284B89AA 8A53023C36389FDB6288FB2FC218ED885306940C52FB774BDA7627AF008A3678B30914997B05B1C4 09C88A985F90F3FF7FE23D1482B58618E5FD7936DBA63CC820650E5412E7D62B45452B3217B713B8 6D51E7446B0FF3469560A28F2820853946F486DD17DFAA17C74003FA12DE3DD305CBA22D9A50EA35 DB906F1A8217FD071AB82458233ECEF214D288374C9BE83B037AD4FB633C634AA9F09B798D21D1B8 DF90054A1B2B885786D77B1192DBE60FD32FF40410AD68539C133C354C6010048EA85BA346CF60EF F9EEFAD0108AE75BCEED3E10F286DB6FB7869C884E3138445C031743F8F86BEE3918A8A3980E56CA 73608B61A2D98BA969D01049850D5EF412D278962F8C36B27ED6834B94F8EAAD50D7492E60426D47 120B871A54EF9A59EAE00F422682DD8B9A324707273C7F670BF986D3505066380E4475D590744F04 E99E09857AD34EFD29B511EB2C785B20C5A674F7BF2E4ADC21144C4673F4F08155E3455DEB2942D9 B43314CF1061D82D85B3453D1E60DCC00F302E8CCE62EB03E30FFC68C9E35D3B133CF47B4C22357D 66EA9EF24A08E83CD01B49FB4A0F080439EC635FEAC1AAA7EB8F10DBB8F4A9BF589798682CD9C76D 475A83EE38578ED97240ECA8CF3ABC86E9039C0648EDA0AC7A3DF5E9513305DC57E959959A4AB17A 36B2F5AB95ADA16426DBCCBA44222D08CC2D5001C93DA9CC80C4C64704C32723505DD8E010F2105F 71A7624556A5F99036767785D8D6CBE71B618EC534D0E0B6CDA8A05AC3DF8EFF71A34D62B5685A34 7D35069848018BF071990E045DFE4B83B3CCAA03ED98745E79297EEC74FC6105A2BA13BD3C3388F3 1F3D7DD671749538CD1F92D548E1E7A2E060E34D6C77583C6C84CB8D69121DEC579DADA9B4CECD31 983D50A8B43D83DA2EB087322C2F6D63113007E200132028654E7315AA91AE1EB41DAD32B5433D0C 180D728A8E06EF6D743206715208C5A23B3EAB4F2CAE378EC9F3FCD3CF21F1542F7936C6BCCB6C5F 62EE7D20738308410B7CD713B11288B8FD486184CB3E245D760972D1149AAFC0101151590F83A3E0 BA818F8DEE183D44F4B1BA5F1549C42E6F594BB6BD46F781E36195B970AEFB95D97AA3C275F4C61B 106ACF580D39A662FEE59C3928B14FFC8584AF74012EC28F815172B1DD745966AFE1EBC7D006CE7A DC4A71BB7A2C2EDEF03B3B4A5D261EB60E694DB0161196E3424B1B341076FEB779EA7BD8587DEFF5 5B651240D62C5D9F5A12BB3B67429D7FC20A48F9CDF80750381B9AE9FF392C73C12B85F4821DE8C1 482CB2ED52888CE61A6CF714351718F041C825F4E057345CCD97D54F654627A7EA321C68624C459A A3E24A44CC4A1888198F48D6A7713226AFE74934C528167BE92DA5DADE309964F41B210EE50599A4 35E2C6B388B927D012700E796F64ED7E6BDAC411CD0E25528A3FC0310AA3E2C2121BC38B1FD73395 3CDB98DD301484E45C9489B9366616817DD8979F9160F1B772A28C3562262BC8B049036D04B95BB5 F1371B51193B752E5DFF1ACFE48A2F2518A45AED8F144592CB31B04FB714847A753C0EC1686981E5 4C960F610F7C33CA71BDA5C9F4DE0C08DC75E01BB4CDF514CE5F2FEECBC7547FB519F5CBC38A9828 8DA77C4E356BBAF79728A13A62DE1C8E615D1D62A0848ECD5DF9DEA921993964B3FDE3B962E55CB5 F3989C5422EDAEA23D7E015828A02AB1E4B5940EC14EBDF382EFA326989E70F9C787EB077BDEE3EC 99D0285E8D773F0756065898A908C01C067C0C35A0D16D4981577527DD768EA39010060BDFB4649B CCEC6B6180877BE87FE245E5754E59BC6BB1DBBD93B74A96DB6272C25ED551C56CAC3F1F745325DF 82949244F1DBA6B4EBB7610F3579133A755B134BC1B1EE8FBBA2AF5001CF661ECFC2A91373C0F02B 51999C0AA92C2709439B2FCEFB5162F08D15174B2CA3DA9B51912A65E98028B2EFB8A9E10F441BEF 3CB13A09BDDC84533BB4CBA1C206326989C0F2E8930176FAD49C78AAA0525D0E6075A07A3F39D31D 9CD9AEBDA82C14766F19E92C33EFA0EC50FE845BED28EB50F9DBE902DA3B0F74E24916B4215F0D92 6D80C6040804D161CE9A94C2C220FE0BAF924C8C7E058853D2E6010752076C6CE09CEE7D657AD344 2E43A81289BB710D97E29FB63B8E6752B7748BBE757E8B0A3DCD949B6BBE93EF241A001741FD32AD EDD56CCA2EBAB10F31DDAC909947B298A8DB477CC5BB6BAB746160F0F55AFDB57A5160C84B6BC90A 1406494CACD5C315425D8A109AA335676C6F515DF429789EF40B50623DF66ACE39198F58301BE456 A8B41252446382B835281694605880C8977AFEFDEA4E1F3668004EBF88634D0DC5A432FA8783A815 1BF6C33A2B7EED5A806A4B32BFF45F611FB648547A9E6E6D70444EFC0211A2927672D790CA7284CE FF818499669D16440134ECAA5D6AAABFA5AFCBC5CEDFBE0C02F6263AF2C3D6EF7209CA72B6814C93 EC17B226D568A2B0DDA5B80038C8CDB3735FE6C331D9010BE8AFF004B255886D2D2288B8C0EFD09A 5F355346FAF07EB49A280EC3825A9AA616B78CBE810D469E896AAFD5F6C067FF30C199A02D1FB433 E2FB007B69FE51F00F455021E4530956B56A334FA16D1C284129EBA2D3017C749552D78ABC252BAE E36519E72E35E55C1574706E4054FE6144FA5ADD33694633DE2552D2E4F4C4D4116051C8CED1E01D 23F09939226AE71B81C342ADDB52F2B5450F62A4BC7F698CEE716B7074E646C4F5BD3EC2AE6862E9 CE85010F4C0873E5ADD4F6020958BFDD0032DB6A554AB14F85D5E07634D734081993ACDA7077A7CC 8C4176DFC682D58AE0FA8708B6E9EF4813F4145FDD8ADE57AE8F97607B044F88A5F7678E9D457EDC F479F004AFF3D3C261D453797AB1D678717C0D5F8840DA2B67C0E656D7D07B5245D5FDED44DE63D5 6430DA5D2AF09F428DCADEFEC43718D9A6BDBB3E4192345308B3C816C0CAA79B6A688D15D078D5F8 BFCE1DB975D0B9E30332EA7C6E129C6DC71793D763E2B6B4DD8D4C08F8EDA4D5A130F02DD51553CF 972B0EF9756DB691B6C73447051A7E20E184C86BB15A4F6DFA4B45BCA782F940BDDAD49AD09A5B99 23A0FE8349E48A8BDBFDD87917529AE502C1BC13587B1439BBD6F2A73F09F8934B4E5FB733F0BC07 7781B985D557B97C1437B83D9104024BA8878735F64E3B5538873C51636A658FE150EECB05A43B4A 0113D2C8070A0FEFAF5DDD3DA0906A48CC0B2CD1517E9F586FCF5DD1F8997F1F115B15B10324E054 ABD563B42B1F3A72D56E7245E8A435C3411D06DC0435DD87801566EB6A024BA9EBACB893B85903CE 125FE69740D4F744E61D694E7219DAD84211494D1AB8C8780B10AA90FF4734A9857A254EA9FA9E31 4C36D55458E8183B9BF4B8FB539887B4E010264F9614C82B0B8FDFC3864DC5C0BC6B84E18E19BA44 A8ADF4215F38DCF7F5ADAF8965E2F932A11A367C609733F016220D781E269940327EF297151D63DA 444F604D9F9724D819337F5675D544D2E8E4CDA2346D7D5CAEC7DD343A8C0257CB19837EF8C2E77F 96A3074E657ED05F42D3936829D7796A43E177C2C19F4BF88293821221154909DFCCFE498C9EFB1E 14A9C1F7AD77B96202B092B040D9AE30A87FFAA34F88105EFF846F4F8EF7264DDDCE905EC7C84396 0220F10ADC59119D6D06B9D247C5461F8CBF681178CEFEEE323AE09F613B2522BAB825B333A70B90 1CDF8375C618C83E58B829229C2ABD03BF0AFDBCF8634ACC60DAA587DA70F648D99CCAF73AB7DF09 C537C2D1635C6B5FE35C5DB458FF06C59B644DFE250A12D34DBC6C31BF89A11CE5485A773270859F 3C488F2B60904908130C0A5E2F16CF62DCF3C12BE566E2614237B8A5FAFE0C8AAE18B5184F2D6C98 C1F0F165AE856A1743694C87C84ABD3D0F17B5E4FF8DC1BD2D6CE94E5FB36F2899F1DDC548282992 C3531FC51016C04359C7EFEA514920597EDB0964996215AECC91DB25C3990578FAB7EF75D59BD78D EDBD06FD1AD8B4F8E575FBA2ED7B0DA4F026BDA03BDF5BA7D8170C06F0EB9BB69AA2DB5783B74538 3F2E3996BCB25F2FD2063E127B75BBDD079B859B37543003D02EE7B95400152A5F303D8363FF2095 EF7CDF4F66AC11B30CDBAFB208B83B6B924371AFCE88290D376CFA4AB9C76D3E5AD057E03DCA5B6E A54A940F0017577993BC968A0B3527C30B18D027CA61B02E29E6AFC4F749359C7EF508F12461BB50 C01F148A6298B124E77CD3C3BB708555AC18B12A801A74B3A5D1046FF37D7362D2AFB4FD9DE49998 5C375A8BD28F341E2FC27BF18CB3E359B03123D70B74017FF0DBCD3653656570C7B80E515C458F35 3FA8EB9CC191F41E50D5FF59BEEF3164DE3C4AE2799E95DE6B3E6FED2D959433054E64D5FD92D712 CEAFB788B6F5A8DFE7E2A0A6E48CC2F2F69B853EF7A18B42C682909D4E1146A4A7B95116411230D3 0780E2348230325CC710D517CCA422A59077335D45DD6BD5736F4D749BBF4E406452196D47AC032F 6C4FCA712F237C53679163966D9F4F4ADA45F06DA077A06681B8B539CDBC773B810F0E02642F9E49 5520F7950CB9C45C461BF70409FDE1871213CC9F1546C39ACC71E36001F06A2A181CCBA3C2C55DC0 76C493D6FAC14BFBFEC84C3E12C5E198052C2B9A49A66D20457382C89149A598EEF9339FCE2CDBBD 9AF29BAAC264136EE3E44B4EEDC87C881610C05A5582C448FB93CA91712A3076B54257908448CC71 CB7227643A9A96DF4C7D9B8A0D996A19A0E11EF80828A0090BF2654326217B8D7F990EC76CCD6D72 0CBE9FA5E8EAC40E49D43481E6BED53D07FC9A6FAEEE5CC8CE3A0A029E81A98257B6D38E40A3C451 AC155D28A6FDAD25B05BCC64D9FED3C5CA600CEBF0FECA2AD224705F35B178E653420C638CA892AF 01C12A45A1EA9B032E87FAC7A3F8A69958D3F39D90363A846FCB4375A3BF0DEFE9A9672EFD9CFCA3 CC0911E6F06DE7E102BA0A0B8EC32B3EDA3286C24B9DFD7C43844D8D3D0B92115191AFEC6B1BA5FA 21BD14D2280A834DD8A50AB94815712F6D59397F6F8F6D63F2E5B6FB7CEBBCDB865CCF09C372A403 CE102BB0A90859EC9F4AAD5D99C71CC96D71D358EC06FC69CE829469CABBA887A42E46DD7BDB6BE0 E1D67E2E93AA7B4D9FC75AD4EB0765746649DD8B6A3B4FD16E5E2CA44B292BDC69811373F019B85F 2F890240DBC2F791AD2698117D472AB3BD118225B88AA181575F8C1C7E7481279C1107F3254D0798 B31C4EDABF0E432050F7067FE95DDC9DF01E05300BCCA6788A88289D543023A09D020C642D65F22D 1FAD2C14228E0D595227A090B3F82A5CE118F608FD187E5F13B1E9F1CB54CA1341B98292C762EF6E 1E52810AE05E8554B5CA4D87675FD683289CA82B0CBD708C90FD94C8E9B3A3214BC0856C98CAD6F9 F3B56214AD55170C0A3A4219B91B0A0C801E84D5F56B97B853EA74D9B58BD57EECC17FD28FE0AEA9 117AB7D2F1A5FBD75F727A9D100986BCAB0927738CF220F0CE18399A542C56D3C0BD12F8F2460046 18A86E9E18DD7FADCDB8404E02AE6404EF073C1FE34543399F4772CD6E22D5714DB9C2CCE15C2E2C BCCC9A68265EA3A32721605C53A4C306DBACD8A779D9A0DF8A1926F8E42E2CDB1F46C31FB412F98D 9808972DF4002FD65D7F5B96B314004AE6B6B709EFA2E6A49B1C31BA550A10DD1945B136F921EC17 E21F3C9D6815375925E8EEEFD8FD7C2F15D7194A834DF35A35BE8B24BB45B3952D93235376D10391 D5E58730040D5B253830F3E655222B09C3E3A664D5794B04E635C10BFDD36F18DDEDB17E51F800AC 25F05965C8707D2933403E9FE4AB48360E419002114F9CEF75D3EB54286C7F00B684E5FFA031AD01 2B8E0DAB9447F78BE250CFF72D11E24BFE1264FA4B71D6BA4DF7CB1385BB1D1C6EF00AF8282030AB FBF29DE78B1916A44717EE583DB2C84059C7CCAAB49BE02C30D53FF768C8F231C9D5C8772E0FBC9A 7A1536D7F5D4888E944D0BCB958DC530FDCD04F2207AE63DF8E6DDFAC7C9D0369F0BEE2F4F9795B4 1D5BD7EC7692EEDA3E1A8A0453A0B40DE0BB9FAA328A73550C63E27D38F64DAA400CA3C81E2578C1 CC3BB055BDD49B22B52B88593497F1B6DBC999CB1C327BE56E059621C8BFD536F310E03873E81B58 95FC68C4A0C72FCB98B8A98CC122635A811306830400547A90A05A7327609240F35D8790B922621B EFF076D6E647AFC9032EA1953C90A9A9D11BD364E9D87543FF80E34C200820F7F8BB68EAA09B6338 88CC422C929A1FCA49B0C8393BE700519D4665D21D7BCC4EC8510C41F5CC8689A010BD296695A51D 21311DA3870A51495C3D9A13813ABDC18823B1769AF5CFEED3A8392558BEC27D969A221BDA4D144C C3932A6802BDED7B25CEA53BF95C4A72FCD47372755B37DC6CF5AFD06277E76609AA469DE57D466F EE4E715D1AC66F64CF9DB8D05BCD1859B5DC1DAF729B383164CB053BF7E4C4D493BCF44D99CF2087 33DBDAE346BA78FEBA77D0B17A2DACC1DE0F39A8775AAAD9801C8418FADA320FED9E65A49C36772B 2DBF7D71CD102746D59E7725D37BEA820C5D6305310C5CD7A50F39E18E137D4B6B1EE220F169C1FC EF8A98C4CED943B281247AE08D386ADADA8CCE9336D87BC5E7D692C2841AF112286AD49D5EF79B98 6ED45430BC405521BD830FF16615BE70784CD01B0618A1853F5E9A88D04E51D4AC23EAB78BF4F85E 47CD4DB133029413C18644944BCDC34A24640B771499B40638F78E5B623DAC344E749FFFDD9290AD 0F7BE9C685AD0907B6E4AA05F33873352D9DB2EB0915F113725A14BDDA96967C87A23E2A6275B455 F253B97D75C6713CF009F1E418C6E884721FEACD3A6CFE38F0864D679FAA2B2C31709BD0801A9933 4667C825E67660C12BD8CA5C572DC3722824F9E25A1B1812CAB1406325974AF78D670C8F2807103D 541C59C5F2E06234089015F8FD6FBFBEB35D75AE47CB5041AD85E67218D00A8179530FED513183C6 2BCE29DA93F3F3D70B25B14DDCEDEA1F2F48248311955E29412FCAE9DB44E395FF396A7A06D5A943 044618C2842722E872376FB6E4BDE34155096DD1711ECEE313725726D719EF982730D17DA8F26BB1 4DE0384F0FC0D9EE37460BDFB6D9C8386FA60FFD86903F26C397062111986DFFDF147AB56704B467 AC7C7561B372C8ABB68339E951A9E87F8546B221E1246155521FC4A48CE4F84A28072BE14AA4319F B6423AE21D46E0C186BEE518ED3C1621818C00B20202B177FACA5D2A85BC7447E00332F11260DAB9 CD96BF6A11C5D4A09A9F263C1F6C6699B1CB3CDC59F2F4B2CF6E525F9A010828738C9DF39BDC8599 964AEE155ACE538B8F6BF722EC89DA93206D462D776DF245B3321F89F4E46890C007C7E333AECAF4 DBD225E8FD258A0450837BCEF402753457BCE9067C05185AC346F5E44EDD0B68637C237FB7B1C2F4 C75F507DDCD66E7E101093E44898F41BEEC8B9BC48D0DCEB874C15BED8B25368FD484C5DFB8B6BC4 FA6786945230DF8043EAA343B6BE8FA132D41359B43A4F60F2C983B2B4D906EC2D5ED2C2696C67D0 8E52D0E1798C4AF43B9B2763BC2BF12039F72EF27FD80DE60D92EBE9CBC1A3E8163F5CE2C00915E4 3A5C83496F45615D9381F68DD0D098273BFBFC7629CCD3A4A7AE1D11A486557C9DB608C1782CDF3B CD87E2EE66F7468F4251692A871F3057E862661E815A6DBDA226985D9FEC11A8591304B1B18DBCC7 4013988E9D3B93D5FFAF27381DDBD216ADF278E5B71575CC2BDD17E907A23E19445A306D30E8FA8C E1DA8944597EB3950AA88453D3DB6A4CA02A93633AC02FB1A7745EDD01A622AAF9B5415838D133E6 F80163B097AFA4AB0E9182DD78A457566804D399118404EA8A9499FF2CD1EEC42B3F281B15391F3B 310A99F4F9164D622F8842F3F963C5472CFE321717C4D33C2C819951701163CB605B9046561A6FBE 2502527618DB66AF43AC1327ECF117F3E85D6CE81A8DBF43B28B68D745BE0BCE958C004B04F78B82 C480FF101857B92D4B9E9815E7C355E9AA3DE5C39CA54A209C4DCA9C21C9BCBFA0749214787D7C24 7B7FC748959DDAC2F640C24D33BB37EFFB4DF28CD65750C1258E70CAC3B3C36A200899112179C297 B946A568757F36F7CB774570C85B349BB139F784BDD3C920F86E8DA4B788D205772D2B62F7477BE1 3FA0E9610B238335A67954716B4909907D20F0CFE6196D857FDE7A44F39312B316030838D02A36EB CF8B870391EE40FB292AEDDC9DEED63BCF0C8409E252A173AE07D9A611D4141840CDCA032D6AE8E8 3A820423D15FB4F63998B376B7F50186A4869F8E384B37F73ABD480EFCF4A583F8A5875941602FE5 C7D896777D7A0AF8E3F1C562DF8BC838B7017A6B47E13FB3FBBDBEF6BB53A405F077FF283CEBB694 01B418EE4576D4229329DA34D892A7B79CB6247C3093FF086361A54244449478FD24EDFF75317428 3BD2D23B04A43A539DFDA813783A2673EAD394DC1C7BA99521E111D2E110614CB4BE1239F953ABAA C0700882F1617E0D489F1CE93F5A48F5E154095EE460866CE774D5814B0A8619DF648F48D47D9BA2 3D38DAB204C1EBDE97B71724A22A7841DB447BE695A3AA9388AE8D1758EB235E941312EEBB7A7C07 D2AB10850A4389BB5545AF0A0DA374DD3C0DD99647805AAD730FBEA3887E926B517134D1080159B4 D8DCAB9C172B56E759EBAE0A46C3BE2FD8F5754D8AB7182A54FBFC44D3584DB57252560FE95BCE46 6B3E218D239C6E06F05DFDF4FE8568EBEF0228FAB2FBC6FD0F8685D229375F308643D36B73A300D7 E8756A1F8AD9472A37C0ACD37E3040A2AFE716C1755407D4B906170C85D489EA734296E0FB7B7ACA 211FA5EAE56B74A41BE5F95997AD6413317C0AAA8D173240D337B32A7135FFD717545238D54ABCD1 F944477CCA6D6028C6FB5A6A737B7C1AAA39C69090BC2A53794D68B4AF866EBF33856ED2E8B0DF3B A0A09777001F471D7181B05063794FC89EDDAE2A68C085ABD09786DCFD6743F15127B2D5ADEFD7EB E51E0486F07E9429400955A45929834C76A786E00C04DDEDEB5C1B76128E9068A1AEAE4698BE63C0 E395FD18826E6CCDFB8C213FD1F829314043E93E5651677615C08AC37731FC55C21CD07720D3E121 E909BDC9C4A5EFD4C68372C583F526FB89F9143D19AF9D69053BFD270B8716CAB06174F57A51CADB B715510C5E044E7E320531505158A5D576E223018D84C3D7269C9938AA60B0D170877A8B40D12EEB BFA13F176152ED8EF28523FFCDB41B39B5FA1D15ED76CDBE81C4275DD0FCF5ECE65CF6AFF6005357 77C62B44E6EDA97600D0E1BE18AE3E783AC4FDFCAF3E4EDD6F64509C2CC6F52241187836FC6855BA C1767C17E51846461598E6FF50E5D83B836C045313D0B05D2255030D6D8ACAC59E8D19112ED35D90 907315A4337C24F2B37732DA72E5434213E401D199F6D522B631B2F41A5957A83C1E3AFA22BCAE28 F96E28102CF54473EBE69B91C5AE89FAFC7599357EADE06FBA3FDB22C05585981DB1DE82015B5568 A96CFFB401C19697B7211620097FEDE0ACC60197CE35BBE8F702C237EE6323D8042AB0D6EBCC95D1 5296AE877D4F1381F0F5905FA3E89DD29FAB61F3946922D8B35ED0B4B72E1DD48E10801D824AE57B A03A658F4884915D0019CC5FEE2CC608AB01148C16CDC9FA5882AAF57683F36B9B5A6DF113405088 DE6103CFE4383EDC9867788BAAF26696F6557A073E3DE77CD28C3E27164EDA87EF315A4F5B7B40FF D2323928C7D2650BB39A7ADA11DF5939B82835DA765D1B0A748B0EE387DEB549DC867CB2CCDB3280 870BA08E81BF592314B5F82D8546A4034D5640A04743C9161FB84E0CA3BE45833D8944D539D0B36D 279DFC5845C66514D4B2D7D2156A4AF72A091379F3666A93B786DC1BB81C997A34F0299F67EC943D 095FC4C602EE580A4F8911C6E972A70BBFB9BC654F46111333AA1B5C541CD644BA9858AFE25F6209 D3B71A64D9C9B3ECBDC79DC58732FC534C4CF670096D9B093F654B13493F0396E0136837AFCE1483 829B30A1B3C119BB3091E4E22CB40E7E5E80C6A37A33FDE00EC668988A09EF9DE214CB72A03C0518 CD274E694B611C33C0532769C8A54735953514626EF4111E7450461257BA5CE74AA8758F795644DC 7C4824ECE4FF0B04745F72B31B14A999961D6646FEECC62D4CC32E9C829616A5D3E557F3C3BA0C07 C384625B66B28D62465BF56A7361E0136722FA532EFBD55EDABF443FDE0F534897C62F65A7F6072C C9469CCE92AC1C7A453DECE5D1EC9A49DD9FC3676BCFD905CE7AED294C1628B900D02BFD67FF36F0 F7E093BE743C40851D9F555A4D9769107E9BAA74DD77F49E2F267F3B1CE16365B95ECF58491A78C3 8889D8EA183B2A46B5A5A9F7CB2C92E6853C32814BCBCC87DC59E472A974EAF549841C90A6177120 E9B88BD46619F82888737A264F60F42EB160A9D027695BF7BF633E311B69B953A925277862954881 EF4D2DEF6FEBD17CFF70A22A3E42E9FA7F2488550FA654243BFFCC031BD954905626095855BC4AE6 DADE90AF2D16B9EC3C942428065E707A0EF65C322A03C9AE3AB46DD85938C19D1628F91DD016AE57 4637DCFE1F323ABC2A3810ED8E398C3C7940F136CD20B270F52B94E51631A87C3325857A005BDD3D 60A0D6E7CE191187D6F3E6D1B99F489E800DA18CD5180FA5BA082F71E69F292E870FF74B6228BE9D F6EE24CF5DA97EFE2DA4B58FB08F5B08D346F34D0996E2C14E991E8312BB9D0839F361C6487E62E4 130912B4E2CC9EF0870E5323E3FD0CC99A89079D2C5A3A13D373DDC02A978CF60F127E4699A465BD 531EBD6CDAE38EF80B06327CD5C6DFEC55D74B38AD5CE7A57BA6944E0B3970ADA9F7C4986BBA65FB 0C65A44E6D46FC7975339273165AC3044B36EA90D02260ABADB4BBC814EE0D790E2D9B3CE1F9DE5F BD0E919EC87E17CBBE01AE9DBFB229F2FABEF668CC8AA7E603CCEA85CD4EAD276848919BE1FA01AB 638C9E1071DA42CA17BFC2F1887B0E45162F159A6178C4ECDD80D6B44FC6AD617FE55E474677D4F2 CFCBD97917DB0F544E41D2DEC35CAFE5E3595D6B2ED09CDF4B045766BC62EE0EE914F9F2778C152D 23878EC16A4B814DDF4A883818DC1D44FC8973496B6037FCE8E4A731DAC9A4F9268980703296D04A C9A53EAB3BF5ED7455CC32C6C208DB744089101E0236525E217B70C03705B953F68811D2CB7464D6 165CCE30EA5E767BB3698643F13375A4130BF5E97FCCDF7BFF99CDB4F39CDEEAF81A080C288A2CA5 D361BF168343AB03D36CEBE860841C37EF52DF82A43882C9570256DA290A0CF749C6C7CE93DAB353 1F00E8BEA53E15B1110D5A734B1495D11341B4FD68BA619FFF2DA63C6242DB22560026055DF454C8 A814C039349E525BD852E006B9B7668EEC5F4AEE12B44EB2DC26033B92892DFA7347075BD6056032 8028C9EB6EFB146C4F8196812DEF47353337502C4098B90A3DAD5A280671B6FABC5F65B54DB02D45 D29595778209CEA884D7C56CC028BCFE3C7A3392053D9F063D7D2DF78599329DB13EBA49211D3284 0FF231C379825E3BB9627654DF612A0535CD81498961ADAC6BEC414DCA2E21BBBEB447E5C6B1A157 F285BA680FFC83F042ABF78BB438CC97B3F50A28137C99F5D7BFB0D7479FA9584A90BEC374B5FEA7 AF96B49C5ED5A26E81BFB27F2B4DF36445FE422019BFDA71349B9AF421FE2F682949035999D0796F FCBA7181C3309059401E011BA660B5680AB60D5D1F7386E10BB72FF3A147AEC947C35872511AE673 BBE88963B56C3C0FA1B0FFE1B8A33D12ED714FD9595481FED55AFFF3057FDADE75E42F3C0079B504 04C980FFD51596795AAD2DAA665E836EA1163031D964B3C118FF934B8987D36F909FF64A2A9A7CEA E9EE69E17921B77A1494034F3A6840C94957A7C1A7E23F393BE569F8ED7CCC2378112807F23F8CCC F87B73927D35FD956582CE4CCD1108CC79641822240872F79A115F6D33ABEDE36E285757F0D92163 9A6F24F0206A8382ED126EA7C8979506DD0D1E4514ECF586AF9BF3D5E10E30DEF997429D261204D4 961180FA62EB145C91EBE47EE3F5C884152D1F61F4D70D7CDADE3CECC993000AD523A71BBA4393A0 6C543F12E1156AFD5D65AC954BA9937B87F1F7C9B96C7D4798EDEFDB1FB05BE7FF94F96FE5BE338C 15F9EF6098819CB5802FDB3E72EF67EAEE7856DAC816DB5DBE6BF3FD0111D282428650C5932B10B6 BE12361F69E8F4688193CA93970B92627434422578CC4003F81F5387DD733DBA53AA585E23C7A20F FE149D68A4D639EA12C831FA47061C1A89384321FF047D3A64A2893323E2D43C6D0416F19A79BE56 DF5C2041C3292F2392399B1DE67A2BDC9028D7671366940D5E5B8B5D007C8B3D53CA44332A2ADFA0 5800A77C0B1DF4BEFCFC874DF5B9D57AE882A4989944C032BA40F2A1D1B9220C6F061075D605EA70 0BD6A891F6BD64230839B355B58A1892641B78DB9E0F1141D42422AA341FB68C7FC90B57695DA8A6 4DDFE8D8B4E44E4CD131279D2E0962D19010BFCBCAC566A08EBDB99E39F64D54C07DABD00F3D328C C5C65D196A8BC8AD6255DD3A33E1146EDD911C654D3189ACF60C190D1CC5E799D645C774F879BE91 B76508D99197B8A60254054A68353D2893790CE0D11B70F5BDFB0A775CF879AA9EDBDBFAC2131A8D B2A24C1F3412579A7A37148C97814835B174C92F72AE56EA550DEF367F83FE50EA54CE3A0B5F7B79 B35332D04EA2A94F02D45F5C0B0C76519C25E20EB7E245B71F68B86CCB20B3A6B755AAEB6DB0614D C6F6A94E94B439D67A6427448C85B336E258C47E26498B1F31EB989BF6562630AF6C6A7E46BB2962 BEAA8E95685BFE76E43050AC70C18521E6803CE9DF184985FADB3DD13BD42769801F43A0DF483F3E E980569B2806F421455D96E1E6C0191A9392CC3DBAF35615BC2ADDB5359B8326E0704457841C7330 798FF80A756845A729E38E4FF92FE39BD2A5A30D767CE603850474EC24E42E654FDE170686157167 566F4C4371C30C556933CD3591CD03E744829CEE4E16758C4C50A7E9ACA1C415A04247353B89BF66 96AB6ED79C92FA2B8028A3B8D5747F07A38D5AEAF2566266A8D0E14392A61D6590428FAEDE28C9C5 47D29572A5BC0F4DB8AFEB8F645B710B94C1DA6218DE06B2AF35ABA9CD313085AAFE9696029FF621 49AE8B443D7FA405130E407A8E003B4B1E1CCC3601240341AB7DA66FD3980FAB563A511F684F61DF A210A358E19C644C00BCD219190FB506A069CD49EB4131BC27BFA3D8A1E0B2E5957D84AA0947638F 157DC432ADCF45C9533869455A09B06DC7F5E762FEE8B42F0740B07697CC74E335B7A8E9EAC55A41 34B1EEECE4DEEB00C28534C68F84A99A57AB811A48285556EE8C1CD8E172B6C664474CE910E43160 B5C94B377890FC2F98B3C11A4D610AB6C482662BE303A2CA61B78430040B2BE4FEAC3358EE74FEA1 2A10BF9963013BDC4B9A5EF1D79E6F3B3079D3EE5984098532DDBFD9C8765403B3F470D14025925A F7429282855562EA17C547699028442CC6FD6527961208438078AEA6C9A2FB733E2C72AFCDA26CFA 1B4CE6E6464BB15A2715CA8F809831A23ABCA866604814525B20AD472111B682078FCB1D960C5E37 5855E9C1D80651D14399737DE2D38F48D09D337A02C64E9EB9A1C0E23D690CE6E9258EE14EFF596A 958699DD810DC8B222883D43F7869A8E213740E162ECC2783904487CBF3A3C97C56C4AEE84E85332 71D02F896B8EB751F542ED1D2983226BB3E57CDEB4AB5567B1432BF7BEA1F8F7894FC682EEF187AD 81B3039FB86F145A50988D4DFEF875B2C5DC4E49482B8EF771EB5BC54851A73D7B56E9DE49ABF01D 583D6ACFF6477AD40F2ACA0FBDBFA6A40067A3222ECCAE1303B4690B5A1407102DE47AF40222AB45 9C4EAC55C9BDEEAC5F8DA0D654BA0A234D3C41154CC17DEA99B5106B0F9AB27B278FF7FDDC96B1F1 68893E2012001B7E593C5AA6D8F3F9D35EED9A5FFDE0020CFE52C05282EF07A948EFCAC9933847F0 9F065CBC2CBE94B941757AA94226BD5A8C91B2EE4D8B3CBADA7218C21F7F729D66C7F5105AE36A75 C545582C25B9B1802CA9B2EA745255B52D47EA2FD9C24FB97A7283BD50A9CC03AA1AD62A8A02765D 74858B964FA2FADC2A2BC486E29644E42D508992CB4E872C6ABF33C64631BD6CF58AC5439124920B 901CC163DB5F612E42B4707869BAD07633538468173D4C9DD48C1AF8C92EE1997BC51A2FAB8FE503 38D4749C4359702692A4AFA55526FD413BEE9DB5AF4CB7D7828A80636F7FA06D29CFFD5B04C977DB 4271B523D1E741CAD63FC362A2202BF69519C4902A8F40C1AB648E17122DC5E03D0BD34E138A7E8E B55889504CB628B0EB62329CB20BA119F8C17FAED74BA7674E61032B06E0002770A09F752D2E70EA FF01D45E7C59B21DF3DD19F4118431AF7D25753FC58A03CD1D1EF0FFDD52C3ED6A1D4A0262106CB7 3E68690A0C8E4A8DDAED8B69E2BF4D65BAAA8C0312B6768123B47EB1AC65E4E194695F7BC3BA5149 09848DD02B00401DCBAA5F0F0380874E762BD8DD3ADC9A3C2044B3B67B91FF7E5B1DDD2F6FCD0D34 37B9400602A1767E6E5838592697B146CDE3596DA1FF9DE0B1056B24A875D5BD44A0676B04F32DB3 85EA594FEF43DFA0932B45533DF133ECDB6876F9479A639F6B261727D92074D1394EC144D001187D EB273A233BF57DC9C85B1E3556E563A42917A501B4471BA87FFF51AA45C839C94840640FEC93C684 0E13598AF12AF9B1A295DDEA337AED3FB0D03FEDAE105E416AF3C492F8BE6991507D0CFEF533F4BC 45ADCF2A5A388546386B0DCFAB9F31146F9A301CBA7BED659E538556D012CE4FED30C1E9104F2363 185AF568D43E9A1943667EB976A20FCBBCA89E3D092D7BE98F9E3DF0D48E09B4E0313450DC13895C 8F513FF1BBAAB38D5381410E9B8F318FFEF7C7C7B2F45426684E5131BA0969E0065113BB6E83DE77 1660C126980B24781516AFB2F0BAC2EB9B702DA33E2820EDDA16A9AD5407DA34D1CB67D793E86369 8942C07B609A8C8B88E231703AA662303101A8673B923CFE67A73593A9BEF84CFFCF53FE3248197B 4ECEA6238A8F92A5131CCA4D64343B69B569603F4DF8D4D1EC5A3B68A7C6CBD8365E56A0A5261080 52824081F0B8D78C69BBA02E8C72EC7EA453D9EA3EE4E9E140918A29643C98422192824F885EBEF7 3E9F33B8F48FE8FD12B1700D2111FDD8882430B6A6EAA914FE4264F95BF77E5E5F710A645F5CB6AF 1CDFD36C59958D13B19986DA56EE816A564E5BEC79CCD7B568040CAF66D37DC5984D674747228AC3 90D5E759103F4C543FDC1EDBE06B7B20861DE6440D00BDC04C64FA797176D3E2B310231430AF9C40 A88ED9F6221218FF9BB415A7A4AB3C4DAA41A0F9E0090BA49DFBD2BCA7ED706126C7213B79CC6C0C 7F8CD21A0C52054F76CA33760CB9B1993DB2FEF43D9238DC3DFEFC4DAED5B2135FA02B2343AAD0B4 ACE70E241DBD27DBC46A56FA1C0195C832594424C7125CC041002BBFF738A4D74D7A1BC221A0B77B 4F96DECEA0D07BE373DEBCE653C06493ABC66E6749738D82C32457D6359D3BA2BAE0D04060401528 A2A21259C75C82DB9E5187EC11D12E588DB76BE357D3156116C9B46A25A5DD03667BF4C43656A1AF 21AF6877B7CFB28E409C664825DB7764C12BF2EB48AC80D24FA2084B29A19690E353058D9511F66E 9FB66F4B02610310E5ED3BC55AAE9E3D6A68FCD22472F51D851D84D4DD2784B8511EF998BAE50FBE 0420A3E2BF0076DEE20166B996310FA532E160392A7721FFBFE25E6A69D6F5B16CD2061A38EA814D 34055FE2CC65A79C6B22F6D2A7776075F84167CAEE14FE886B29B08BB95FECFB4451D774DCD191DD A8894387910C0BEF73DE1DE664A49191BEB6768BBD92C7E7D5281B1D51E7DC8FCB496D46895D2A14 8B642ED57CDA5664884F6B70CA7A3A091AB3E2339D12EBCE9B47EB1707E48B56BD8F29DAC469F427 025172B67C4937399E7C316954363B69C0EBBCDCEB711309C8EA26E0FD1045A3692C738C31BB97F2 8C777CF1922142F441EEF8E93F02A51935F100FD66626B9C3D3E8C3B83D595282DE70AD3972DA525 6430EC845CDB0BD2734E819BF9E95FAB963DC5B4D4091D2A5E8DE0627CC66E2931F6DA7F71764BE6 3AE929289B110F4A9AFE2C369052D26AB4A96E028C077034D1FF17064AFBB88BE82D89874CB66909 B6C81F18AE0A86789168D9B12B7B7BEA6BEB15A73CC7A005162C1E457AE16A617A1988D3C1473D58 60077D2FF90948B0BD19FD27596F28BA3113491797E84C756DB59E807D488A824067D46640852FFF E3B7B8FD241D1BAC1BBB32DF42B1B42914E2FA4E12B76EACF42FD8FABEAF5C11A256D26459955C27 E3EB3CFC27C92029EEC69DFCFD57E2AB17B2DF848ACDADFC14DE5FC9CDC11C310BDCA14008FC4152 6FCA4A305194197B3F5663A4F2B167728CA682896732ECA225D6A2D9A5A8DAE07F29B32CA5748FC9 A4769BA800B85177C7232CF9FF4239954B2C9D67793E181F9D1777189107B8CCFB27B78A20A717F8 4026040644ABD08E36FB945379144B7BD28C3C26473D6E1B54F5D9852AA5262EC45F73F77FC1D23D EED42448109F5B07DCAF7F65B255F91CD1D2803DEC7EB6274A699E70F2085B50833C8739EB175282 318DF6DEFC7EC9BE52C59102C0BCE45605D5106E47D5BC617628A904CD04E8F5B6AFE2D15B708682 51015AF9AA13B02DB03A24D54358886CBCDE6C5F92220DD809577A85AFD0035A393BC25314899EC0 B6BF1877E5B649EFC9A3FB1F1BDFB458573C969961ADD6D584E6EF1EEF516BA2B53EDFBDF7A1D8E7 42311F88275E6414934DAE2C7BAD2536A8B8B6BB636BF9EE59371DDB92BFD229F101F5D1E0016AC7 33CFEC9E4EFE210C75A875860C6B30A0FB4D59A68B45D1F86BCCAEB64069A5B8B74841F9769A5DC4 2D9D9997C3D1C75534081D44B2E866FA168D1C8E99831EEB5E51BDE2A858AF18F34427CC6611EF89 293496FC353C7618F423991EB0C5499B7B5F31F18DECF2C5B58C0DAA57E06BB8CB5F16182E60AD68 D8973C8C88CC5CB0DBF436C7396567DBD8364EF84B8B4255B8A6E078B5F4FE72D5E94711CE14C0AE 6A3FDB7025ECA332E0F0E73AA9A345E0F07405D7DE0E3717DB9C1872BE57604D8CC0B60F5CBAAC2F D58AADFC97E6E4D20E2B4A2049C64B12F4AFD03E1FB8407F2485C0283A9C9E29C5A469525599A80D 35087150B19A9664E867A3EF85629E27AF8C32522E06EFA204179573A6C8B91C8B2FA87A21A14238 370F8E25F454A84F65D46D6032DF1B80C6C65B11BE58B6857C777EC5F08094FC463D7E2BCA255176 B7181D312602207226A5D645E9050785C2CE0CE541AFF12E72E0885161975974374832D80D66667C EA20425B951F8B284928D731056736730A601E24C644A57BDFA39C2A47D1374CAC0DFB32B6E8BD03 AD4FB5D65D70A71F61CB60E6D5C543A30B539A55DC0D25DC2B26E89BE4EDAA97725D17E15661520D B4EC2C91C7DFAA02FEA8E1BEE8FCD1AEE0883CF0D71318E54864DF4D64977CA9EC63B1E80F0DC57B 8F28B0FC1F82F0C65A62597794B3D07F850EE592550DB3316146A637C5374D500E95CDAF32ADBB1C DBB26AFF2390E6ACA9057CAC94E20BD8594B9D8AFBFB83450F859D8E509CA55C4B0731565B803E6F 4164CB9CDB1A567622621BA8B1ABF656EC9FC8CDEE8462EB1E34FFF1A05981551A4AAB7A2905F1AB EDD56C7571C71F82CE6A4713F2BB7C962FDC547D57A316FADB15D9A656B2A52713B5D3DC13931D67 2A2CD26AABF8192C63D662CBC09605C13CD361C1985B626401C71F7FC6C95620B390310E404B9821 EDDA0C2252C67558AC71DABD86C60B28ABEFF122D88E4BCBAD706BE21398983BDDA7A0BEE1E5FEE3 B1C43141660F420F6DBC56D20C8C8870B1C8A73E0F6099B5A314B97C04A3633F23A2DCCB0968AE32 B9D00D941C2768A82E59EF75127DE80A548411F7883F556FF356680B109B6365DA4164E558548330 F99856C1FD15DDC164BB77204DEAB3C54F62B2FB464E4E76850AD14886EFD8788EAE3E0DC6F6FA0B 2E304FBA04856033301F8A580055539E14B91C2F7FFE7C34CE3B54A18FDE8538939D38C854C8EDC9 B7DFC61C1D7FD04596E71AA0D3DFD8A5086F5529BC78625E19329EB91D03A510F6D90E6D4A70B6B0 2C999F4ADDF87EB893C120FDAFBF8643074DE177691CF3861C54C5F6479AF71DED476F30164B5437 F75609892F059B79CD8D4DF9DF08FF3D356458587D86EC5B75F4688151E08FF5E3F7E15059B00BF0 2A6071BEC3BFBD09026EE3E44B4EED8B9892C9C4A5996EB8BFD9F2C3F8E120D62B863F65C2912950 355AE8F5F961FF03DA04AC9D172843FD370343932F9089CC1BCC97FD9EA1302B335D328C945F31B6 3E1B11392FDF32DF4982648F4214B8156B9BBD604842E446C5BA91326AE2105FFE6B5D60E8AEB89B 6DA38926742089816CC8D970890D686B593742B7E4ACC4AF5642DB6DE618D35BC777DCB78681BA28 98DF7C8B6599DDB71C4E9767D486976AC0945A093A8921DF989FEE56977435068E5E3B1E777B3101 DE057DE46363ED35F29D1D8BD5607EF3F3F405E7A9CF0FA0F6C75D0E1945B7F115D4F1C3820483E5 91809B24C0FE08DD7BE132DD404ABC80A104CE6F23165094BAA2C6B26F25D9E4E3EEBD280037C981 527A4A92286632B261918293CDDF14FC5AC579ADEE68728DA2D1EB4E7A7CE9F35AA2B553CF88D768 76B7CF669C698FF001F3B74FE5A0F279866E4B1DC74DEB73F20201A5B488B48A4B7134D80A563ADA 5F56D8988F85AA869D898596CB628D342AB3DFB754BADADF20A5F6A7A4A096B5E06A2D529848EB49 3F5C279ACA127B4642CB46FF78F546089D360E2847A64FF3881DB7F5D58A07F5FD3898E7A23C8BA4 3DA812643684AB81B95C78600D58AF3FE1C7215A7F51103081C938EC5C942BE3A349FEDF4A790B60 CD497BFF4995260EB2B03576BE129CD14C8D25425067F49867A320664346BE5ED2714778F69D7E18 237778661F75F00F4FBEED52A4ACEE7D07631084C77D8818AEE151C9EBEEF041DBCB32C5DA35F9C2 F29429C280ADC8B4806333B1A2E1C04DE755D0A6494AC50ACCE092111AE534DE1F1E096E66553D2F 882A7A5C4682B003C5CAC009B9E8CB1DCE098603A0C66DA81CD06F5B6E3F11725A4F8A43D2714318 85826ABA1F5B62F19EBA700201D733D0F485A8C84DD42A3437AF9E4D252958D6EBB5AF05E8327B1E 48CF5E504F63C6A7AE307F9B2FD50823A84CE1BC7FC0D399C7056C69236B54E9AD27B2CBBB65280A 1E92D5D0B1ABE64F9B3F223D1969E095E294D60BF3A7EE0E444DF073EF6DF079659EE7EB96067377 E3A6AC3F716AC6A67D2CF348CE94F4BC7C0567C9A42AE9E6F2C137936A192F04C16264CD6B33E339 F664040772112A5C993DD64E3F4F2EC74E5A920650E5B10427F30D1B47D8F07AFE973DA8125BD040 66C9065F77C733F516A6E04B1E2C77A85EE796C4B255665739396D14691DFE6ACCA718A072D333C7 2FE2F149F7EF0FB8ECB3D8CAA86A59327A244A19F52A73227027F936C828E1A818226FC07DD62047 6324A40C3CF26996B4CC434C6A922DFF3510A2EA7009E7460207E68D3B6E382633059EE70ED6F985 E7BFB9A5EEA5B5649CC54EFC0123B68341BCE62B06A06E7B532118269C6E5329E898DC781D5A3B16 0222D22EA6197FE5E57226BDCB9279AF8B6D4060FFCD523FCDA77372EBAFDD0DE50AF4A02D2AF6CB 1B8AE822AA1FCB9F89D05B67704DD347BC5475A45AE1B1CD1404C4991C3D81B1FD2ED40314F9F6CA AE0CBF6492523EB48A8AD47D65B906D5E8B9341273D6D2FED1B1DAB8981E7DACC352BD2FAD2E68AE 5640EE8B571E59DA4C79E80CB6FAE9C04545D586D3440B6ACB143C423ACEEDC11362C055ADC4E005 7D01B7248BC1746917A55BA0B6177A12C2CF02CFED592FF6C3517D47293E0A992D6A831BDF5855C6 320BEBD3FBDFC6DB4FE559A6D9807C389B1EE6413071F8E6BC170F246994B1516CCD55C35507ADDB 63038326FD77C6C89800A85C512498C7DB43D3BA4E69BFFC78BA43CB380FB257691289AF0C288E36 690C29C904C79245CBFBA9FF5E949384E075B189C052B0D6FC990ACD232A7470CCF70F4ECA2B1760 1C45EDEDD84AC6C8A27812482BE6276F8004C55B9FFDE8121AB911E56CA1124C963DBA9CD95B169E A152172DFFFAFEC440727A94FFFB5BE82275E03C59775BABD36C2FA89048152E3AF9CC153B89A5F6 1F350F1DC66200036BF96405E771CB344B52EAC96E23928C3823812E28878CC2078146BD9B9810A6 C41CB6256281EC107760898EC967BBDE56F508F1FDEA0DDBA93FF86EF0E66FB038DCBA58B515BCDF B290D3B28527AFAF825F1AABE2A385B79892C461A624256B4B959B9F4A7AE9E846A27602932402F0 7E5E360D3ACD0EF2092ACE9C9360E164E92B7EA5FB9701BBA12605501F30B4B2BA357E4D943B3AD3 52C2C3E3B40F3C539AB12994D2DC927567D9ABE7614A73342A679BFDFD3628C08338E9D1767E4964 41F33A6F9DEFAB64B4C442BBE4025B64E8A12F660611DD5D7F5F0E142F9D4EB3F349B9DF32685655 9E27C4FAA8CC210AC101AC6C90F16CDCE70C6CB10160E353269572D13D1F2CF4C76E81022540E91E C82D673BCD4019BFED28896CDE1B25D69CE7C80C194B5F1D9A4D4C19B7556203E088E55D0EC411D1 ACB8287DA4E128B8AAAB35D0E9D628817ED04BAD8F86872D4253884AE65A16718436F8315E22C943 D093E1EFF6A1D64ADDB89F9F3D6F670043531F1ED5653F45C84513C4B4B5C997DF41E8A831750423 FB403E1542C988F2ECE71C3CB38303B103CDECBB88E009FBAC4B551B80B39AEA6E647504505BB779 55ADDE0931783E2AED5597D0C645B1095E9ED313385D29D279DDDC4AC49B8087B9E50EC103456485 6A231E2F3D3C9A04DBDF6DE8A045A46845EF87E674B8605A097DFB72B12645904D1CFDB0D8CB5BB8 7DBA997F68A6DC62D2E81A42B011BB0D8C7D5D8A5A81AD95E2A7140258AE4ECDBDA30D5AEDE8EFF4 375151A6D408A2C522510CC34DFC2A9EC729505143711BF851E2D7770201B0AE6AB508A9F650A377 D7DD307EAD18A588B2855311C3231BCB25D92A1ABE095A6AE6DB8BBE6C8A7276E5B49C4E0AFE1C51 64A833E6C7C67A19E8269566BC2C1C999A5F012FD42B1C23848E71B5855A0CF6F5F99EF2DA0C0CAF 3ADE979A7A8CD593DB6CC6CA2C4469AE5CF95A1D2E0324CA918B2559D6787571AD08E9C2560C38F6 A4B09EBA079F0A3518E7ECB53AAD8EE37E3F69CD6256F141CA498168425598ECDF2DC6844AC8EA07 293A59C6B3B8B103D8D49A1CCE2023B72EF6AB271A6031CA3F4D10EF334A1C339E3BA3556FFFECDA 64FC49BABF5B1C4A4C1865DCA3788526C09FF0A11BA209B9FE59BD3E4FF0F00083A1C469EDC6D5BE C739378EB7879ED3C8228046532C32502DD4BC69E418B298A6C43046DD7FD422F914D56471602C28 C7228E713CA64BDFAC11D01F63A648B9CC182C0D09B26C6CE1E0642D689145BB5BECF10491EE137E E8E6871B8D1411837C2B4D07D8C60E0E6BA8EF39BE53F89E0C7EF30BA237A63D2A860E7D8DEBE935 1298EFABC6909674F9CAE43E608F0C15341252C452C0D0457DE692F825B04EAE56100BD2E224E176 75D938C5948B6310D444D803AD8F2EF6F808529ACE131AB84D81CE168C8331E6F4551FE86AA52C40 28447444BE4E8DB2CF36DE7A106F8C460EFFC56BA0D3B5C6E22E6C0AE54AB480B177FD81BF41F2D3 89BB19E47CE98A1F0E943A1837D29D9E0DB9E49C079DF7D36DE5B253192FCFE6B890CD44C5925069 2602ECB3DA5FBFD8B5C2D174BA46FECFD139111D4B06A5C6E1E977D4E65D2532A9E6BED141D0C7CD 241E02F607E118369CFA5C077D7399EA411B6DF118ACEBD61808E84025F1BD17B1F365FC82B25EC2 92B0BD1453C312DBAEEA075058B7E2A076B773CACA3A367B5E45F53CEB177AE25417BE06DC440786 24E2E871A10F90BC341DA979F2BB7026DA11FFA15352FCA7D6999E111E5BF8BAF04542345DB050BB 5B9EB59812BFBE86C41CBB82931CE69F76D3979CAB2E2F32C21E9708A44C072CB6A2A6FEDACE5A43 6A294C98879DF73C54973A902145FD96A083C5DD25DBFCC41E1E1D738E2290EDB1E424C4017386EB 7828DA15D4AABAD16F6A1946893E0486D738294D4DE535547BB0CB70EE87B8CF7A4067FBDF77E6EB 7505D378FB944D017D3873B1B7C648E57A284B51EC33253D0D300DB5C91D1C0D5BE7A27D1444B1ED 7AAAEA3BF5DC2B3BA22246F2764AC360B1E339F9F62409FB4F059E8BC33DAD0ABCD986BD8D3F9D40 F7726C3F0A019C381152487E4F32CDB0FB1FA225AFF04D68B5BF9D61A0C50E88D4F7B905E46F5A0F 52BF052A6077CB01EBF51ADBBE43B7952839BBCD4DC7BA6CDE368730E772EA68F73F8D088E156C59 5760AAC12D6C196AE8824F90A7E3BEC1E48CD99046CFD36C5F744BAA619BC681152A70BB42CAEF8E D3B37B713510106C494DE34A682D49011C3A2DE2909FF5E97635831AF676C49268FBEBDA1D877F81 E50BADA456935D7A5F67798D5D90243C62BFB7EA16BD2E0C38773EFBF9B6CE7F8121845330596E92 28EB4570E0FD4563C763B61D2378D15E871DF2C180D371A7E8B522F94447CA5FD631461E4E923307 031D1C7F525FD692D665173F11CB1611C6AA9E2E64CD7E1C0D594C3F81B8A80D88EFA3E8BBA82DBE 99D954DE0D5164D66EACC56E8DB5FABF645EDF69054628AD4C68F02AC935D5FCC1469DE9E33CAD65 74F9E9C1DC6A40EF89D03AD93A3AC47E49347A5207A57946E72686AFC72FA20A43C79E13770502F7 45E2A89E5AE6A534E434FC2FEA7F377FF916E2947B1E8E1B5B53FEB4E5D5067B818198008988331E 7F09AA7720680E694F88F94FC62E82E284A40A01E5C19626218277633B5FDAC33CBD2A89CFE51DF3 CFAF5AD9CA44B333CFC4001649C5E59A7005ACEDE2D21F149CA8AA2FC080047187142878DD224373 E2594B4A6E2EAA6E08CA2FD1BDD079AFC2E9A7CF4FCC57D0CA62D1C43EB402904BE9A5AA2D4B364A 4471A4979EE4A80C2DAE9B944B6362815DFEE4EBA189DE7A0546C6EDEF5BE6AC4A9E87F65770A482 7FD4774E8D97ABDB5DE4FFCFA1A01B92DA3525701700786F3DA6129DEBC1783F3DB14322AB9B30A1 CB2F365F6DB3A7036EE76E3AD0054CF800708F24FC2BA03D3EB297D2001192EF57B84C8F98FA2B84 03F63F3A82220089B8D742FB85B83552A9A58EA1F2E2B22FDF96927306F2F0EF11A9E389F8571BBD BB948305D11B10FAC6EA68082B7FC210C10E35D138051995D57E45C2356F60EAC7AC895E10C46D35 0194CC8BBD3914694456F216A2BBA872ED26EC0A92CF32FC0C86BF74CA3C679EFA12DF549075B593 E886AA2CC19F112CDEA530727AE6389B8F3D8767C187CC9DEFE73B32F4C6B8B4B190F0D3E3F44CDD EE0505F0F9A374B3B8146FE5508E4EE41CAF82BAA2013243EF03BD53D67581A1B80B96AEC280A0BF A45C698CB917D650C31665E3FFA9413A2F901D1FA96945E6628B7479FFBEFD28C1692555C6DEE0F1 CA39D6D2208320F47EA3D7A2F2A6EE8CDC5E84B1E09A3AB908C39D698A684C7A34A671516FD3A82A 378C18012E0407B9024114DBA2DC872EC7700613C068CC520150E71F65C8F68A97692643F708AF39 8D8CE88887C22287A57D5BC3E890ABC2EAC841526C77789E389DD24EA263A9DCBC66775A9BDC13AA 2E59977E90D354309E7BE04F9578E54C99DC68B7C0072AEAE1978458ACFA56A847FFA38C298DCBF8 257826588F9AE94B1996BA7C07D67354A2A57DA5C499E6BA5CB7001A7BF534B3558DC2BFD9AF68EA 2671601BDCF8220CFBEE27122A7CFF01915B2496E00C4D55CBCD80F75547898D0B7D52BCB10B8BE9 FE97120D26ABB67DABE38D5E0A7E11235E3ACE13126DA4296B0A748663A5FF0F784688FD0AD4EF01 D9B6C60BD35D8EF581886235D020C4AE0E4C60C0270F6C80FC59A9A2E93BC26C90D99A293533BB27 6E94BD41E38EBE26E2EE26D4706CB58529CE97A64BF989F83EBA022E660A488B7BFBBB957E946972 570F3524E4AE398AF63E355B7CBED51947D57A0757A6B70DC3E14E489CC3C0A85E1B89D35C37D91C 95D63362541BDB71C719534341A574512A6F3B42040C7F962AA555FBE963FEDFCD9C0C400CBD57BF D4D8D1639C26427C97CA9A1249202871C127084A1514FF7D10CEECD7B9AD892364EFB929F2D250F7 CC048DD93274A3E5EA5D83FA072FD1C7B6576551E9585C91CF15E72E35E54BE529CF74B0505520D2 2D3F42551C315DE3987DE084973499DD79EB5C3C93BFB65AFFBD531CFFDEC705A9FC1AB99E6D02F6 601107D45CF1B6DAD436767D681FCFAC276C5E12AE94EFFE963C1E06FF39AE292869E6EEFF3DEFAF 0505710F8FFE499C1E087D67C472CBB5DFA62D98D46EDE92910466285AA6C01CF1B7452DFC1E43A9 B8BD6F9DFA036B67361C22BFB630AC0C3A3C5705D70F7CD582349B6F0C03E4A8EBAC31FD1A571A95 93289796D0EDE52B6A2759B8F7C70486CF4E48AE8430D135CBFB84E86BCCAE96E534B59EF8A044BB 6FF7243B2B876D2A60E3F4DFF82DF100F678D87E234408D4A11CD668A49285DC7E76AA5FFD323C98 0FC8A2ED7322B786346E177C097F6949013D146DFE17D0E098B7916E6D182CAB71590A26579FDCEF AB937BEAB669C7D53E3655B980EEF2F069AC324228533053061C040C80A51C72613498B689EA087F 00517C0433949A9455219AD3BF63716CDC6EAD6950D507F48912C2F81DAFC57DFC55839735080A88 B781AD0F4DD39C3C4F67FB160E0AF9446A5E7BF2FEA8862EADFBE3F848653BF171126EB617DE9637 AA1F2C10CF6DAED1E4B375A1AFED43B0B6184F96423E774D6DFD82AC4CDB7D9B7D5E015647C14126 A7076613CD4BFF90044E63E173F6DDF479C99DED7F4A817E20C8D732F5A6DF24EBC6B0EA562204F4 496C140A6703B102E573FE7143F19A07C8EA08A79CBACD100D1A4F110059E6CC2552F08EA200C9FF A68A15B27B8E899847AA6C8E5B2147D5CA9A001A49E40E768FA625B0F2FB59C265A82B7DD316E8D2 4DF1C37B43CB06D560A5E098305A0E3BA91E5EE8B15D74E2DE05739D7EC683DE3D040228225D33BA CA2AEA8941202981495239DB7C7902000743D158AE7B0403525A10C5FB67AC51DEFED5E11DA96325 2EF3E6321D28DDB995E43796C26254789760E23FE91D93112BEF6D7E73B706978F9A3320AE0BAA88 E9E5CE72A173DC9823E3328F2CEB8D54A4194A2EB624BECB042AF35CE8EBE640E6AB7CDCF3977A63 8C120BCC8D3CF16D1E3886260C94787BD81950985FE1585AF56E75A32F72719F933B32B0EFBCDF6F C9866C1BEF5C1D24D36A44A396E7934DF2893D6FDA7DFE1ED78F1CBB17770465423A1ED92C032743 6F0D3EE716751B00865BE1BC72033D6EF49EEBE9659E5AF17EACA02E2FA65807954AC9A81EBFB397 111C77B5FA4F4883760B80F65DF76FB11AB820E4330BFAF999FA96012C3EF20EC105FF40429C107B A590499ED9B9F62CB139766987E58E36507C0593F6E20E314EE96C617B04C14C5BC39C38F42B4F9D DB7BE676820DF530D87C1CAA5C91A35A05E5F565121A1897AD81C878A4F0A051AB24D28A60D09A44 560685EBE9D1A8B6C50C93FB445066B599076AC8B486E174AE265FE494EAC2E381AA48D6BEEBA8AE DD3140C85246F54123DE9905DCB409CD5B2B4A4AB7043644A945D612DA34C172AE630EC25EFE4BCD A0A0BA8AA13ABA9044C96F18E2F817876F768B5C843057D382363DF658BE9A11D66AF675130F39EE DD460F2A2B0AEBEBE81B082B51B4D7222E342DE5DF9011B73444A272C394FB616A01AF6C1057DCD1 9A5CD49191F755327F11FD7E65600EB331394A61B6788558352C9A60809903AE2B4D9C9D2285E10C 69EAAC4DC12AB5BF95EB77C6FC5790122D5C5A4598BFF66CE01BD7190F852B5883891CE5088F19EC CAA29F88677AD08C1F83AF3EA696B15732EBA4B709EFCAFFC3798C4200F91F70878BBA86641AD7AF 5BEF57F7B217F58E6585A3383808E8552EB377D30E245F9F2BE278B1D0F749E061E40B590E92283F 72D82EFE635E4181755EC8CAFC0D3DF460A2E6E16845F5AEEE149B5854ABF1CD856F517A0538527E 2D2F5A1CE2E3EA151CF77176A50113B54432E5B8B1E983212540F9C7C3FA63CAB53E75B02481E7B9 E725AA51B100C5B0CA251F54132D8BA3AA574B472E4B05FF2A213F6E7AFBFA27F796F5B622338AC7 602CCC54BB721C81E1B931ABBAF0AA1A8C 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %!PS-Adobe-2.0 %%Version: 0.1 %%DocumentFonts: (atend) %%Pages: (atend) %%EndComments % % Version 3.3.2 prologue for troff files. % /#copies 1 store /aspectratio 1 def /formsperpage 1 def /landscape false def /linewidth .3 def /magnification 1 def /margin 0 def /orientation 0 def /resolution 720 def /rotation 1 def /xoffset 0 def /yoffset 0 def /roundpage true def /useclippath true def /pagebbox [0 0 612 792] def /R /Times-Roman def /I /Times-Italic def /B /Times-Bold def /BI /Times-BoldItalic def /H /Helvetica def /HI /Helvetica-Oblique def /HB /Helvetica-Bold def /HX /Helvetica-BoldOblique def /CW /Courier def /CO /Courier def /CI /Courier-Oblique def /CB /Courier-Bold def /CX /Courier-BoldOblique def /PA /Palatino-Roman def /PI /Palatino-Italic def /PB /Palatino-Bold def /PX /Palatino-BoldItalic def /Hr /Helvetica-Narrow def /Hi /Helvetica-Narrow-Oblique def /Hb /Helvetica-Narrow-Bold def /Hx /Helvetica-Narrow-BoldOblique def /KR /Bookman-Light def /KI /Bookman-LightItalic def /KB /Bookman-Demi def /KX /Bookman-DemiItalic def /AR /AvantGarde-Book def /AI /AvantGarde-BookOblique def /AB /AvantGarde-Demi def /AX /AvantGarde-DemiOblique def /NR /NewCenturySchlbk-Roman def /NI /NewCenturySchlbk-Italic def /NB /NewCenturySchlbk-Bold def /NX /NewCenturySchlbk-BoldItalic def /ZD /ZapfDingbats def /ZI /ZapfChancery-MediumItalic def /S /S def /S1 /S1 def /GR /Symbol def /inch {72 mul} bind def /min {2 copy gt {exch} if pop} bind def /setup { counttomark 2 idiv {def} repeat pop landscape {/orientation 90 orientation add def} if /scaling 72 resolution div def linewidth setlinewidth 1 setlinecap pagedimensions xcenter ycenter translate orientation rotation mul rotate width 2 div neg height 2 div translate xoffset inch yoffset inch neg translate margin 2 div dup neg translate magnification dup aspectratio mul scale scaling scaling scale addmetrics 0 0 moveto } def /pagedimensions { useclippath userdict /gotpagebbox known not and { /pagebbox [clippath pathbbox newpath] def roundpage currentdict /roundpagebbox known and {roundpagebbox} if } if pagebbox aload pop 4 -1 roll exch 4 1 roll 4 copy landscape {4 2 roll} if sub /width exch def sub /height exch def add 2 div /xcenter exch def add 2 div /ycenter exch def userdict /gotpagebbox true put } def /addmetrics { /Symbol /S null Sdefs cf /Times-Roman /S1 StandardEncoding dup length array copy S1defs cf } def /pagesetup { /page exch def currentdict /pagedict known currentdict page known and { page load pagedict exch get cvx exec } if } def /decodingdefs [ {counttomark 2 idiv {y moveto show} repeat} {neg /y exch def counttomark 2 idiv {y moveto show} repeat} {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat} {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat} {counttomark 2 idiv {y moveto show} repeat} {neg setfunnytext} ] def /setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def /w {neg moveto show} bind def /m {neg dup /y exch def moveto} bind def /done {/lastpage where {pop lastpage} if} def /f { dup /font exch def findfont exch dup /ptsize exch def scaling div dup /size exch def scalefont setfont linewidth ptsize mul scaling 10 mul div setlinewidth /spacewidth ( ) stringwidth pop def } bind def /changefont { /fontheight exch def /fontslant exch def currentfont [ 1 0 fontheight ptsize div fontslant sin mul fontslant cos div fontheight ptsize div 0 0 ] makefont setfont } bind def /sf {f} bind def /cf { dup length 2 idiv /entries exch def /chtab exch def /newencoding exch def /newfont exch def findfont dup length 1 add dict /newdict exch def {1 index /FID ne {newdict 3 1 roll put}{pop pop} ifelse} forall newencoding type /arraytype eq {newdict /Encoding newencoding put} if newdict /Metrics entries dict put newdict /Metrics get begin chtab aload pop 1 1 entries {pop def} for newfont newdict definefont pop end } bind def % % A few arrays used to adjust reference points and character widths in some % of the printer resident fonts. If square roots are too high try changing % the lines describing /radical and /radicalex to, % % /radical [0 -75 550 0] % /radicalex [-50 -75 500 0] % % Move braceleftbt a bit - default PostScript character is off a bit. % /Sdefs [ /bracketlefttp [201 500] /bracketleftbt [201 500] /bracketrighttp [-81 380] /bracketrightbt [-83 380] /braceleftbt [203 490] /bracketrightex [220 -125 500 0] /radical [0 0 550 0] /radicalex [-50 0 500 0] /parenleftex [-20 -170 0 0] /integral [100 -50 500 0] /infinity [10 -75 730 0] ] def /S1defs [ /underscore [0 80 500 0] /endash [7 90 650 0] ] def % % Version 3.3.2 drawing procedures for dpost. Automatically pulled in when % needed. % /inpath false def /savematrix matrix def /Dl { inpath {neg lineto pop pop} {newpath neg moveto neg lineto stroke} ifelse } bind def /De { /y1 exch 2 div def /x1 exch 2 div def /savematrix savematrix currentmatrix def neg exch x1 add exch translate x1 y1 scale 0 0 1 0 360 inpath {1 0 moveto arc savematrix setmatrix} {newpath arc savematrix setmatrix stroke} ifelse } bind def /Da { /dy2 exch def /dx2 exch def /dy1 exch def /dx1 exch def dy1 add neg exch dx1 add exch dx1 dx1 mul dy1 dy1 mul add sqrt dy1 dx1 neg atan dy2 neg dx2 atan inpath {arc} {newpath arc stroke} ifelse } bind def /DA { /dy2 exch def /dx2 exch def /dy1 exch def /dx1 exch def dy1 add neg exch dx1 add exch dx1 dx1 mul dy1 dy1 mul add sqrt dy1 dx1 neg atan dy2 neg dx2 atan inpath {arcn} {newpath arcn stroke} ifelse } bind def /Ds { /y2 exch def /x2 exch def /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 5 x1 mul add 6 div y0 5 y1 mul add -6 div x2 5 x1 mul add 6 div y2 5 y1 mul add -6 div x1 x2 add 2 div y1 y2 add -2 div inpath {curveto} {newpath x0 x1 add 2 div y0 y1 add -2 div moveto curveto stroke} ifelse } bind def % % Tries to round clipping path dimensions, as stored in array pagebbox, so they % match one of the known sizes in the papersizes array. Lower left coordinates % are always set to 0. % /roundpagebbox { 7 dict begin /papersizes [8.5 inch 11 inch 14 inch 17 inch] def /mappapersize { /val exch def /slop .5 inch def /diff slop def /j 0 def 0 1 papersizes length 1 sub { /i exch def papersizes i get val sub abs dup diff le {/diff exch def /j i def} {pop} ifelse } for diff slop lt {papersizes j get} {val} ifelse } def pagebbox 0 0 put pagebbox 1 0 put pagebbox dup 2 get mappapersize 2 exch put pagebbox dup 3 get mappapersize 3 exch put end } bind def %%EndProlog %%BeginSetup mark % % Encoding vector and redefinition of findfont for the ISO Latin1 standard. % The 18 characters missing from ROM based fonts on older printers are noted % below. % /ISOLatin1Encoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron /space /exclamdown /cent /sterling /currency /yen /brokenbar % missing /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree % missing /plusminus % missing /twosuperior % missing /threesuperior % missing /acute /mu % missing /paragraph /periodcentered /cedilla /onesuperior % missing /ordmasculine /guillemotright /onequarter % missing /onehalf % missing /threequarters % missing /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth % missing /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply % missing /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute % missing /Thorn % missing /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth % missing /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide % missing /oslash /ugrave /uacute /ucircumflex /udieresis /yacute % missing /thorn % missing /ydieresis ] def /NewFontDirectory FontDirectory maxlength dict def % % Apparently no guarantee findfont is defined in systemdict so the obvious % % systemdict /findfont get exec % % can generate an error. So far the only exception is a VT600 (version 48.0). % userdict /@RealFindfont known not { userdict begin /@RealFindfont systemdict begin /findfont load end def end } if /findfont { dup NewFontDirectory exch known not { dup %dup systemdict /findfont get exec % not always in systemdict dup userdict /@RealFindfont get exec dup /Encoding get StandardEncoding eq { dup length dict begin {1 index /FID ne {def}{pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end /DummyFontName exch definefont } if NewFontDirectory 3 1 roll put } if NewFontDirectory exch get } bind def setup %%EndSetup %%Page: 1 1 /saveobj save def mark 1 pagesetup 12 /Times-Bold f (Persistent) 2050 1230 w (9P Sessions) 2587 1230 w (for) 3202 1230 w (Plan 9) 3385 1230 w 10 /Times-Italic f (Gorka Guardiola, paurea@gmail.com) 2109 1470 w (Russ Cox, rsc@swtch.com) 2351 1590 w (Eric Van Hensbergen, ericvh@gmail.com) 2042 1710 w (ABSTRACT) 2643 2150 w 10 /Times-Roman f (Traditionally,) 1330 2410 w (Plan) 1905 2410 w (9) 2111 2410 w ([5]) 2189 2410 w (runs) 2333 2410 w (mainly) 2533 2410 w (on) 2839 2410 w (local) 2967 2410 w (networks,) 3189 2410 w (where) 3608 2410 w (lost) 3879 2410 w (connections) 4053 2410 w (are) 4559 2410 w (rare.) 1080 2530 w (As) 1313 2530 w (a) 1453 2530 w (result,) 1526 2530 w (most) 1802 2530 w (programs,) 2026 2530 w (including) 2457 2530 w (the) 2864 2530 w (kernel,) 3015 2530 w (do) 3318 2530 w (not) 3447 2530 w (bother) 3603 2530 w (to) 3886 2530 w (plan) 3992 2530 w (for) 4192 2530 w (their) 4336 2530 w (file) 4547 2530 w (server connections to fail.) 1080 2650 w (These programs) 2161 2650 w (must) 2827 2650 w (be) 3048 2650 w (restarted) 3168 2650 w (when) 3537 2650 w (a) 3779 2650 w (connection) 3849 2650 w (does) 4313 2650 w (fail.) 4522 2650 w (If) 1080 2770 w (the) 1173 2770 w (kernel's) 1322 2770 w (connection) 1670 2770 w (to) 2134 2770 w (the) 2238 2770 w (root) 2386 2770 w (file) 2573 2770 w (server) 2732 2770 w (fails,) 3001 2770 w (the) 3224 2770 w (machine) 3372 2770 w (must) 3736 2770 w (be) 3957 2770 w (rebooted.) 4077 2770 w (This) 4502 2770 w (approach) 1080 2890 w (suffices) 1473 2890 w (only) 1811 2890 w (because) 2017 2890 w (lost) 2360 2890 w (connections) 2533 2890 w (are) 3038 2890 w (rare.) 3187 2890 w (Across) 3420 2890 w (long) 3726 2890 w (distance) 3933 2890 w (networks,) 4289 2890 w (where) 1080 3010 w (connection) 1380 3010 w (failures) 1875 3010 w (are) 2231 3010 w (more) 2409 3010 w (common,) 2671 3010 w (it) 3103 3010 w (becomes) 3215 3010 w (woefully) 3620 3010 w (inadequate.) 4031 3010 w (To) 4569 3010 w (address) 1080 3130 w (this) 1406 3130 w (problem,) 1578 3130 w (we) 1963 3130 w (wrote) 2106 3130 w (a) 2360 3130 w (program) 2431 3130 w (called) 2796 3130 w 10 /LucidaSans-Typewriter83 f (recover) 3061 3130 w 10 /Times-Roman f (,) 3411 3130 w (which) 3463 3130 w (proxies) 3735 3130 w (a) 4057 3130 w (9P) 4129 3130 w (session) 4263 3130 w (on) 4580 3130 w (behalf) 1080 3250 w (of) 1358 3250 w (a) 1470 3250 w (client) 1542 3250 w (and) 1792 3250 w (takes) 1964 3250 w (care) 2197 3250 w (of) 2390 3250 w (redialing) 2501 3250 w (the) 2884 3250 w (remote) 3034 3250 w (server) 3339 3250 w (and) 3610 3250 w (reestablishing) 3782 3250 w (connec\255) 4365 3250 w (tion) 1080 3370 w (state) 1270 3370 w (as) 1487 3370 w (necessary,) 1604 3370 w (hiding) 2050 3370 w (network) 2340 3370 w (failures) 2701 3370 w (from) 3034 3370 w (the) 3263 3370 w (client.) 3420 3370 w (This) 3727 3370 w (paper) 3940 3370 w (presents) 4196 3370 w (the) 4558 3370 w (design) 1080 3490 w (and) 1377 3490 w (implementation) 1557 3490 w (of) 2221 3490 w 10 /LucidaSans-Typewriter83 f (recover) 2340 3490 w 10 /Times-Roman f (,) 2690 3490 w (along) 2751 3490 w (with) 3009 3490 w (performance) 3223 3490 w (benchmarks) 3762 3490 w (on) 4280 3490 w (Plan) 4416 3490 w (9) 4630 3490 w (and on Linux.) 1080 3610 w 10 /Times-Bold f (1.) 720 3970 w (Introduction) 845 3970 w 10 /Times-Roman f (Plan) 720 4126 w (9) 931 4126 w (is) 1014 4126 w (a) 1114 4126 w (distributed) 1191 4126 w (system) 1652 4126 w (developed) 1963 4126 w (at) 2406 4126 w (Bell) 2511 4126 w (Labs) 2711 4126 w ([5].) 2939 4126 w (Resources) 3139 4126 w (in) 3583 4126 w (Plan) 3695 4126 w (9) 3907 4126 w (are) 3991 4126 w (presented) 4146 4126 w (as) 4562 4126 w (synthetic) 4679 4126 w (file) 720 4246 w (systems) 896 4246 w (served) 1256 4246 w (to) 1559 4246 w (clients) 1680 4246 w (via) 1984 4246 w (9P,) 2149 4246 w (a) 2323 4246 w (simple) 2410 4246 w (file) 2720 4246 w (protocol.) 2896 4246 w (Unlike) 3321 4246 w (file) 3635 4246 w (protocols) 3810 4246 w (such) 4224 4246 w (as) 4449 4246 w (NFS,) 4574 4246 w (9P) 4825 4246 w (is) 4973 4246 w 10 /Times-Italic f (stateful) 720 4366 w 10 /Times-Roman f (:) 1015 4366 w (per\255connection) 1083 4366 w (state) 1721 4366 w (such) 1944 4366 w (as) 2167 4366 w (which) 2290 4366 w (files) 2574 4366 w (are) 2786 4366 w (opened) 2947 4366 w (by) 3275 4366 w (which) 3415 4366 w (clients) 3699 4366 w (is) 4000 4366 w (maintained) 4107 4366 w (by) 4592 4366 w (servers.) 4733 4366 w (Maintaining) 720 4486 w (per\255connection) 1239 4486 w (state) 1867 4486 w (allows) 2080 4486 w (9P) 2371 4486 w (to) 2506 4486 w (be) 2613 4486 w (used) 2736 4486 w (for) 2948 4486 w (resources) 3093 4486 w (with) 3498 4486 w (sophisticated) 3705 4486 w (access) 4256 4486 w (control) 4539 4486 w (poli\255) 4851 4486 w (cies,) 720 4606 w (such) 931 4606 w (as) 1145 4606 w (exclusive\255use) 1259 4606 w (lock) 1833 4606 w (files) 2037 4606 w (and) 2241 4606 w (chat) 2417 4606 w (session) 2615 4606 w (multiplexers.) 2936 4606 w (It) 3518 4606 w (also) 3611 4606 w (makes) 3804 4606 w (servers) 4091 4606 w (easier) 4405 4606 w (to) 4669 4606 w (imple\255) 4779 4606 w (ment, since they can forget about file ids once a connection is lost.) 720 4726 w (The benefits) 970 4882 w (of) 1492 4882 w (having) 1601 4882 w (a) 1899 4882 w (stateful) 1969 4882 w (protocol) 2289 4882 w (come) 2648 4882 w (with) 2890 4882 w (one) 3094 4882 w (important) 3264 4882 w (drawback:) 3679 4882 w (when) 4120 4882 w (the) 4362 4882 w (network) 4510 4882 w (con\255) 4863 4882 w (nection) 720 5002 w (is) 1043 5002 w (lost,) 1139 5002 w (reestablishing) 1338 5002 w (that) 1922 5002 w (state) 2101 5002 w (is) 2313 5002 w (not) 2408 5002 w (a) 2564 5002 w (completely) 2636 5002 w (trivial) 3108 5002 w (operation.) 3375 5002 w (Most) 3830 5002 w (9P) 4064 5002 w (clients,) 4198 5002 w (including) 4512 5002 w (the) 4918 5002 w (Plan) 720 5122 w (9) 925 5122 w (kernel,) 1002 5122 w (do) 1303 5122 w (not) 1430 5122 w (plan) 1585 5122 w (for) 1784 5122 w (the) 1927 5122 w (loss) 2076 5122 w (of) 2259 5122 w (a) 2369 5122 w (file) 2440 5122 w (server) 2600 5122 w (connection.) 2870 5122 w (If) 3385 5122 w (a) 3478 5122 w (program) 3549 5122 w (loses) 3914 5122 w (a) 4141 5122 w (connection) 4212 5122 w (to) 4678 5122 w (its) 4784 5122 w (file) 4907 5122 w (server,) 720 5242 w (the) 1016 5242 w (connection) 1166 5242 w (can) 1632 5242 w (be) 1798 5242 w (remounted) 1920 5242 w (and) 2375 5242 w (the) 2547 5242 w (program) 2696 5242 w (restarted.) 3061 5242 w (If) 3481 5242 w (the) 3574 5242 w (kernel) 3723 5242 w (loses) 3999 5242 w (the) 4226 5242 w (connection) 4375 5242 w (to) 4840 5242 w (its) 4945 5242 w (root) 720 5362 w (file) 919 5362 w (server,) 1090 5362 w (the) 1396 5362 w (machine) 1556 5362 w (can) 1932 5362 w (be) 2108 5362 w (rebooted.) 2240 5362 w (These) 2678 5362 w (heavy\255handed) 2955 5362 w (solutions) 3553 5362 w (are) 3954 5362 w (only) 4114 5362 w (appropriate) 4331 5362 w (when) 4824 5362 w (connections) 720 5482 w (fail) 1226 5482 w (infrequently.) 1388 5482 w (In) 1955 5482 w (a) 2067 5482 w (large) 2140 5482 w (system) 2368 5482 w (with) 2675 5482 w (many) 2882 5482 w (connections,) 3133 5482 w (or) 3664 5482 w (in) 3775 5482 w (a) 3881 5482 w (system) 3953 5482 w (with) 4259 5482 w (wide\255area) 4465 5482 w (net\255) 4885 5482 w (work) 720 5602 w (connections,) 969 5602 w (it) 1515 5602 w (becomes) 1615 5602 w (necessary) 2008 5602 w (to) 2439 5602 w (handle) 2561 5602 w (connection) 2871 5602 w (failures) 3353 5602 w (in) 3696 5602 w (a) 3818 5602 w (more) 3906 5602 w (graceful) 4155 5602 w (manner) 4525 5602 w (than) 4868 5602 w (restarting the server, especially since restarting the server might cause other connections to break.) 720 5722 w (One) 970 5878 w (approach) 1174 5878 w (would) 1577 5878 w (be) 1865 5878 w (to) 1997 5878 w (modify) 2113 5878 w (individual) 2440 5878 w (programs) 2884 5878 w (to) 3299 5878 w (handle) 3415 5878 w (the) 3719 5878 w (loss) 3879 5878 w (of) 4073 5878 w (their) 4194 5878 w (file) 4415 5878 w (servers.) 4586 5878 w (In) 4957 5878 w (cases) 720 5998 w (where) 957 5998 w (the) 1227 5998 w (resources) 1376 5998 w (have) 1779 5998 w (special) 1994 5998 w (semantics,) 2298 5998 w (such) 2744 5998 w (as) 2954 5998 w (exclusive\255use) 3064 5998 w (lock) 3634 5998 w (files,) 3833 5998 w (this) 4057 5998 w (may) 4229 5998 w (be) 4428 5998 w (necessary) 4549 5998 w (to) 4962 5998 w (ensure) 720 6118 w (that) 1007 6118 w (application\255specific) 1185 6118 w (semantics) 2000 6118 w (and) 2422 6118 w (invariants) 2594 6118 w (are) 3016 6118 w (maintained.) 3165 6118 w (In) 3687 6118 w (general,) 3798 6118 w (however,) 4144 6118 w (most) 4540 6118 w (remote) 4763 6118 w (file) 720 6238 w (servers) 887 6238 w (serve) 1202 6238 w (traditional) 1445 6238 w (on\255disk) 1889 6238 w (file) 2222 6238 w (systems.) 2388 6238 w (For) 2788 6238 w (these) 2960 6238 w (connections,) 3198 6238 w (it) 3733 6238 w (makes) 3822 6238 w (more) 4110 6238 w (sense) 4348 6238 w (to) 4597 6238 w (delegate) 4708 6238 w (the) 720 6358 w (handling) 875 6358 w (of) 1258 6358 w (connection) 1374 6358 w (failure) 1845 6358 w (to) 2138 6358 w (a) 2249 6358 w (single) 2326 6358 w (program,) 2599 6358 w (rather) 2996 6358 w (than) 3262 6358 w (need) 3468 6358 w (to) 3690 6358 w (change) 3802 6358 w (every) 4118 6358 w (client) 4373 6358 w (\(including) 4629 6358 w 10 /LucidaSans-Typewriter83 f (cat) 720 6478 w 10 /Times-Roman f (and) 895 6478 w 10 /LucidaSans-Typewriter83 f (ls) 1064 6478 w 10 /Times-Roman f (\).) 1164 6478 w (We) 970 6634 w (wrote) 1141 6634 w (a) 1401 6634 w (9P) 1478 6634 w (proxy) 1617 6634 w (called) 1883 6634 w 10 /LucidaSans-Typewriter83 f (recover) 2154 6634 w 10 /Times-Roman f (to) 2538 6634 w (handle) 2650 6634 w (network) 2950 6634 w (connection) 3311 6634 w (failures) 3783 6634 w (and) 4116 6634 w (to) 4294 6634 w (hide) 4406 6634 w (them) 4612 6634 w (from) 4846 6634 w (clients,) 720 6754 w (so) 1034 6754 w (that) 1151 6754 w (the) 1329 6754 w (many) 1479 6754 w (programs) 1729 6754 w (written) 2134 6754 w (assuming) 2445 6754 w (connections) 2850 6754 w (never) 3354 6754 w (fail) 3602 6754 w (can) 3762 6754 w (continue) 3927 6754 w (to) 4298 6754 w (be) 4403 6754 w (used) 4524 6754 w (without) 4734 6754 w (modification.) 720 6874 w (Keeping the recovery logic) 1306 6874 w (in) 2415 6874 w (a) 2519 6874 w (single) 2589 6874 w (program) 2854 6874 w (makes) 3218 6874 w (it) 3499 6874 w (easier) 3581 6874 w (to) 3839 6874 w (debug,) 3943 6874 w (modify,) 4238 6874 w (and) 4578 6874 w (even) 4748 6874 w (to) 4962 6874 w (extend.) 720 6994 w (For) 1073 6994 w (example,) 1249 6994 w (in) 1649 6994 w (some) 1764 6994 w (cases) 2012 6994 w (it) 2259 6994 w (might) 2352 6994 w (make) 2623 6994 w (sense) 2875 6994 w (to) 3127 6994 w (try) 3241 6994 w (dialing) 3388 6994 w (a) 3702 6994 w (different) 3782 6994 w (file) 4161 6994 w (system) 4330 6994 w (when) 4644 6994 w (one) 4896 6994 w (fails.) 720 7114 w (This) 970 7270 w (paper) 1223 7270 w (presents) 1519 7270 w (the) 1921 7270 w (design) 2118 7270 w (and) 2454 7270 w (implementation) 2673 7270 w (of) 3376 7270 w 10 /LucidaSans-Typewriter83 f (recover) 3534 7270 w 10 /Times-Roman f (,) 3884 7270 w (along) 3985 7270 w (with) 4283 7270 w (performance) 4537 7270 w cleartomark showpage saveobj restore %%EndPage: 1 1 %%Page: 2 2 /saveobj save def mark 2 pagesetup 10 /Times-Roman f (\255 2 \255) 2797 480 w (measurements.) 720 840 w 10 /Times-Bold f (2.) 720 1080 w (Design) 845 1080 w 10 /LucidaSans-Typewriter83 f (Recover) 970 1236 w 10 /Times-Roman f (proxies) 1350 1236 w (9P) 1674 1236 w (messages) 1810 1236 w (between) 2217 1236 w (a) 2579 1236 w (local) 2654 1236 w (client) 2879 1236 w (and) 3132 1236 w (a) 3307 1236 w (remote) 3382 1236 w (server.) 3690 1236 w (It) 4014 1236 w (posts) 4106 1236 w (a) 4343 1236 w (9P) 4418 1236 w (service) 4555 1236 w (pipe) 4868 1236 w (in) 720 1356 w 10 /LucidaSans-Typewriter83 f (/srv) 836 1356 w 10 /Times-Roman f (or) 1074 1356 w (mounts) 1195 1356 w (itself) 1528 1356 w (directly) 1766 1356 w (into) 2108 1356 w (a) 2301 1356 w (name) 2382 1356 w (space,) 2635 1356 w (and) 2918 1356 w (then) 3099 1356 w (connects) 3308 1356 w (to) 3694 1356 w (the) 3809 1356 w (remote) 3968 1356 w (server) 4282 1356 w (on) 4562 1356 w (demand,) 4699 1356 w (either by dialing a particular network address or by running a command \(as in) 720 1476 w 10 /Times-Italic f (sshsrv) 3853 1476 w 10 /Times-Roman f (\).) 4103 1476 w 10 /LucidaSans-Typewriter83 f (Recover) 970 1632 w 10 /Times-Roman f (keeps) 1349 1632 w (track) 1605 1632 w (of) 1833 1632 w (every) 1945 1632 w (active) 2195 1632 w (request) 2462 1632 w (and) 2779 1632 w (fid) 2952 1632 w (in) 3092 1632 w (the) 3199 1632 w (local) 3350 1632 w (9P) 3573 1632 w (session.) 3708 1632 w (When) 4076 1632 w (the) 4343 1632 w (connection) 4494 1632 w (to) 4962 1632 w (the) 720 1752 w (remote) 884 1752 w (server) 1203 1752 w (is) 1488 1752 w (lost,) 1596 1752 w (the) 1807 1752 w (remote) 1970 1752 w (tags) 2288 1752 w (and) 2490 1752 w (fids) 2675 1752 w (are) 2866 1752 w (lost,) 3028 1752 w (but) 3239 1752 w (the) 3408 1752 w (local) 3571 1752 w (ones) 3806 1752 w (are) 4030 1752 w (simply) 4192 1752 w (marked) 4506 1752 w (``not) 4846 1752 w (ready.'') 720 1872 w (When) 1091 1872 w 10 /LucidaSans-Typewriter83 f (recover) 1363 1872 w 10 /Times-Roman f (later) 1747 1872 w (receives) 1958 1872 w (a) 2319 1872 w (new) 2398 1872 w (request) 2599 1872 w (over) 2922 1872 w (the) 3134 1872 w (local) 3291 1872 w (connection,) 3520 1872 w (it) 4018 1872 w (first) 4109 1872 w (redials) 4305 1872 w (the) 4606 1872 w (remote) 4763 1872 w (connection,) 720 1992 w (if) 1225 1992 w (necessary,) 1328 1992 w (and) 1782 1992 w (then) 1968 1992 w (reestablishes) 2182 1992 w (any) 2734 1992 w (fids) 2920 1992 w (that) 3112 1992 w (are) 3304 1992 w (not) 3467 1992 w (ready.) 3637 1992 w (To) 3950 1992 w (do) 4102 1992 w (this,) 4243 1992 w 10 /LucidaSans-Typewriter83 f (recover) 4454 1992 w 10 /Times-Roman f (must) 4845 1992 w (record) 720 2112 w (the) 1002 2112 w (path) 1152 2112 w (and) 1352 2112 w (open) 1524 2112 w (mode) 1746 2112 w (associated) 1997 2112 w (with) 2436 2112 w (each) 2643 2112 w (fid,) 2854 2112 w (so) 3019 2112 w (that) 3137 2112 w (the) 3316 2112 w (fid) 3467 2112 w (can) 3607 2112 w (be) 3774 2112 w (rewalked) 3897 2112 w (and) 4291 2112 w (reopened) 4464 2112 w (after) 4858 2112 w (reconnecting.) 720 2232 w (Reestablishment) 1322 2232 w (of) 2020 2232 w (remote) 2140 2232 w (state) 2454 2232 w (is) 2674 2232 w (demand\255driven:) 2777 2232 w 10 /LucidaSans-Typewriter83 f (recover) 3445 2232 w 10 /Times-Roman f (will) 3831 2232 w (not) 4023 2232 w (waste) 4187 2232 w (network) 4450 2232 w (band\255) 4813 2232 w (width or server resources establishing connections or fids that are not needed.) 720 2352 w (The) 970 2508 w (details) 1159 2508 w (of) 1454 2508 w (what) 1571 2508 w (state) 1799 2508 w (needs) 2016 2508 w (to) 2277 2508 w (be) 2389 2508 w (reestablished) 2517 2508 w (vary) 3072 2508 w (depending) 3283 2508 w (on) 3733 2508 w (the) 3867 2508 w (9P) 4024 2508 w (message.) 4165 2508 w (The) 4588 2508 w (rest) 4778 2508 w (of) 4957 2508 w (this) 720 2628 w (section) 892 2628 w (discusses) 1202 2628 w (the) 1601 2628 w (handling) 1750 2628 w (of) 2127 2628 w (each) 2237 2628 w (message) 2446 2628 w (and) 2811 2628 w (then) 2982 2628 w (some) 3181 2628 w (special) 3419 2628 w (cases.) 3723 2628 w (We) 4009 2628 w (assume) 4173 2628 w (knowledge) 4493 2628 w (of) 4957 2628 w (the 9P protocol; for details, see section 5 of the Plan 9 manual [9].) 720 2748 w 10 /Times-Bold f (Version) 970 2904 w 10 /Times-Roman f (.) 1303 2904 w (Not) 1386 2904 w (directly) 1569 2904 w (proxied.) 1907 2904 w 10 /LucidaSans-Typewriter83 f (Recover) 2295 2904 w 10 /Times-Roman f (assumes) 2678 2904 w (the) 3044 2904 w (9P2000) 3199 2904 w (version) 3538 2904 w (of) 3865 2904 w (the) 3981 2904 w (protocol.) 4136 2904 w (It) 4552 2904 w (is) 4646 2904 w (consid\255) 4746 2904 w (ered) 720 3024 w (an) 929 3024 w (error) 1061 3024 w (if) 1292 3024 w (the) 1391 3024 w (remote) 1551 3024 w (server) 1866 3024 w (lowers) 2147 3024 w (its) 2451 3024 w (chosen) 2584 3024 w (maximum) 2899 3024 w (message) 3343 3024 w (size) 3719 3024 w (from) 3912 3024 w (one) 4144 3024 w (connection) 4326 3024 w (to) 4802 3024 w (the) 4918 3024 w (next.) 720 3144 w 10 /Times-Bold f (Auth) 970 3300 w 10 /Times-Roman f (.) 1187 3300 w (Not) 1271 3300 w (directly) 1455 3300 w (proxied.) 1795 3300 w 10 /LucidaSans-Typewriter83 f (Recover) 2185 3300 w 10 /Times-Roman f (requires) 2570 3300 w (no) 2926 3300 w (authentication) 3061 3300 w (from) 3662 3300 w (its) 3891 3300 w (local) 4021 3300 w (client,) 4250 3300 w (and) 4532 3300 w (uses) 4711 3300 w (the) 4918 3300 w (local) 720 3420 w 10 /LucidaSans-Typewriter83 f (factotum) 942 3420 w 10 /Times-Roman f ([2]) 1370 3420 w (to) 1514 3420 w (authenticate) 1620 3420 w (to) 2130 3420 w (the) 2235 3420 w (remote) 2384 3420 w (server.) 2688 3420 w (9P2000) 3008 3420 w (has) 3341 3420 w (no) 3501 3420 w (mechanism) 3628 3420 w (to) 4110 3420 w (reinitiate) 4215 3420 w (authentica\255) 4597 3420 w (tion) 720 3540 w (in) 906 3540 w (the) 1014 3540 w (middle) 1166 3540 w (of) 1474 3540 w (a) 1587 3540 w (9P) 1661 3540 w (conversation,) 1797 3540 w (so) 2362 3540 w (using) 2481 3540 w (the) 2728 3540 w (local) 2880 3540 w 10 /LucidaSans-Typewriter83 f (factotum) 3104 3540 w 10 /Times-Roman f (is) 3534 3540 w (really) 3631 3540 w (the) 3888 3540 w (only) 4040 3540 w (choice.) 4248 3540 w (A) 4588 3540 w 10 /LucidaSans-Typewriter83 f (recover) 4690 3540 w 10 /Times-Roman f (running) 720 3660 w (on) 1065 3660 w (a) 1199 3660 w (shared) 1277 3660 w (server) 1571 3660 w (could) 1848 3660 w (use) 2104 3660 w (the) 2271 3660 w (host) 2427 3660 w (owner's) 2628 3660 w 10 /LucidaSans-Typewriter83 f (factotum) 2982 3660 w 10 /Times-Roman f (to) 3415 3660 w (authenticate) 3526 3660 w (on) 4041 3660 w (behalf) 4174 3660 w (of) 4456 3660 w (other) 4572 3660 w (users,) 4810 3660 w (allowing) 720 3780 w (multiple) 1104 3780 w (users) 1473 3780 w (to) 1713 3780 w (share) 1826 3780 w (the) 2071 3780 w (connection.) 2228 3780 w (This) 2751 3780 w (connection) 2964 3780 w (sharing) 3437 3780 w (behavior,) 3766 3780 w (which) 4175 3780 w (would) 4454 3780 w (need) 4739 3780 w (to) 4962 3780 w (trust the) 720 3900 w 10 /LucidaSans-Typewriter83 f (uname) 1070 3900 w 10 /Times-Roman f (in the) 1345 3900 w 10 /LucidaSans-Typewriter83 f (Tattach) 1595 3900 w 10 /Times-Roman f (message, is not implemented.) 1970 3900 w 10 /Times-Bold f (Attach) 970 4056 w 10 /Times-Roman f (.) 1258 4056 w (Not) 1334 4056 w (directly) 1510 4056 w (proxied.) 1841 4056 w 10 /LucidaSans-Typewriter83 f (Recover) 2222 4056 w 10 /Times-Roman f (keeps) 2598 4056 w (a) 2852 4056 w (single) 2923 4056 w (root) 3189 4056 w (fid) 3377 4056 w (per) 3515 4056 w (named) 3669 4056 w (remote) 3962 4056 w (attachment) 4266 4056 w (and) 4731 4056 w (tre\255) 4902 4056 w (ats) 720 4176 w 10 /LucidaSans-Typewriter83 f (Tattach) 856 4176 w 10 /Times-Roman f (as a clone \(zero\255element walk\) of that root fid.) 1231 4176 w 10 /Times-Bold f (Walk) 970 4332 w 10 /Times-Roman f (.) 1204 4332 w 10 /LucidaSans-Typewriter83 f (Recover) 1296 4332 w 10 /Times-Roman f (reestablishes) 1688 4332 w (the) 2240 4332 w 10 /Times-Italic f (fid) 2404 4332 w 10 /Times-Roman f (if) 2552 4332 w (necessary) 2655 4332 w (and) 3084 4332 w (then) 3271 4332 w (issues) 3486 4332 w (the) 3768 4332 w (walk) 3933 4332 w (request.) 4170 4332 w (On) 4551 4332 w (success,) 4716 4332 w 10 /LucidaSans-Typewriter83 f (recover) 720 4452 w 10 /Times-Roman f (records the path associated with) 1095 4452 w 10 /Times-Italic f (newfid) 2395 4452 w 10 /Times-Roman f (in order to recreate) 2687 4452 w 10 /Times-Italic f (newfid) 3467 4452 w 10 /Times-Roman f (if needed in the future.) 3759 4452 w 10 /Times-Bold f (Open) 970 4608 w 10 /Times-Roman f (.) 1204 4608 w 10 /LucidaSans-Typewriter83 f (Recover) 1288 4608 w 10 /Times-Roman f (reestablishes) 1672 4608 w 10 /Times-Italic f (fid) 2216 4608 w 10 /Times-Roman f (if) 2356 4608 w (necessary) 2451 4608 w (and) 2872 4608 w (then) 3050 4608 w (forwards) 3256 4608 w (the) 3644 4608 w (request.) 3801 4608 w (On) 4174 4608 w (success,) 4331 4608 w 10 /LucidaSans-Typewriter83 f (recover) 4690 4608 w 10 /Times-Roman f (records the open mode associated with) 720 4728 w 10 /Times-Italic f (fid) 2289 4728 w 10 /Times-Roman f (so that it can be reopened in the future.) 2420 4728 w 10 /Times-Bold f (Create) 970 4884 w 10 /Times-Roman f (.) 1257 4884 w (Handled similarly to open, except that) 1332 4884 w 10 /LucidaSans-Typewriter83 f (recover) 2883 4884 w 10 /Times-Roman f (must also update) 3258 4884 w 10 /Times-Italic f (fid) 3955 4884 w 10 /Times-Roman f ('s path on success.) 4061 4884 w 10 /Times-Bold f (Read) 970 5040 w 10 /Times-Roman f (,) 1192 5040 w 10 /Times-Bold f (Write) 1242 5040 w 10 /Times-Roman f (,) 1491 5040 w 10 /Times-Bold f (Stat) 1541 5040 w 10 /Times-Roman f (,) 1713 5040 w 10 /Times-Bold f (Wstat) 1763 5040 w 10 /Times-Roman f (.) 2018 5040 w 10 /LucidaSans-Typewriter83 f (Recover) 2093 5040 w 10 /Times-Roman f (reestablishes) 2468 5040 w 10 /Times-Italic f (fid) 3003 5040 w 10 /Times-Roman f (if necessary, and then forwards the request.) 3134 5040 w 10 /Times-Bold f (Clunk) 970 5196 w 10 /Times-Roman f (.) 1238 5196 w (If) 1315 5196 w 10 /Times-Italic f (fid) 1408 5196 w 10 /Times-Roman f (is) 1541 5196 w (ready,) 1635 5196 w 10 /LucidaSans-Typewriter83 f (recover) 1908 5196 w 10 /Times-Roman f (forwards) 2285 5196 w (the) 2666 5196 w (request.) 2815 5196 w (If) 3181 5196 w 10 /Times-Italic f (fid) 3275 5196 w 10 /Times-Roman f (is) 3409 5196 w (not) 3504 5196 w (ready,) 3660 5196 w 10 /LucidaSans-Typewriter83 f (recover) 3934 5196 w 10 /Times-Roman f (simply) 4312 5196 w (deletes) 4613 5196 w (the) 4918 5196 w (state) 720 5316 w (it) 944 5316 w (is) 1041 5316 w (keeping) 1149 5316 w (for) 1506 5316 w 10 /Times-Italic f (fid) 1663 5316 w 10 /Times-Roman f (and) 1810 5316 w (sends) 1995 5316 w (a) 2258 5316 w (successful) 2343 5316 w 10 /LucidaSans-Typewriter83 f (Rclunk) 2794 5316 w 10 /Times-Roman f (.) 3094 5316 w (There) 3185 5316 w (is) 3458 5316 w (one) 3566 5316 w (special) 3751 5316 w (case:) 4069 5316 w (if) 4309 5316 w 10 /Times-Italic f (fid) 4411 5316 w 10 /Times-Roman f (was) 4557 5316 w (opened) 4752 5316 w (remove\255on\255close,) 720 5436 w (the) 1449 5436 w 10 /Times-Italic f (fid) 1605 5436 w 10 /Times-Roman f (must) 1745 5436 w (be) 1975 5436 w (reestablished) 2104 5436 w (if) 2660 5436 w (it) 2756 5436 w (is) 2847 5436 w (not) 2949 5436 w (ready,) 3112 5436 w (and) 3393 5436 w 10 /LucidaSans-Typewriter83 f (recover) 3572 5436 w 10 /Times-Roman f (rewrites) 3957 5436 w (the) 4313 5436 w 10 /LucidaSans-Typewriter83 f (Tclunk) 4470 5436 w 10 /Times-Roman f (into) 4805 5436 w (a) 4996 5436 w 10 /LucidaSans-Typewriter83 f (Tremove) 720 5556 w 10 /Times-Roman f (when forwarding the request.) 1095 5556 w 10 /Times-Bold f (Flush) 970 5712 w 10 /Times-Roman f (.) 1210 5712 w (If) 1290 5712 w (the) 1386 5712 w (request) 1538 5712 w (named) 1856 5712 w (by) 2152 5712 w 10 /Times-Italic f (oldtag) 2282 5712 w 10 /Times-Roman f (has) 2568 5712 w (been) 2731 5712 w (sent) 2949 5712 w (to) 3140 5712 w (the) 3248 5712 w (remote) 3400 5712 w (server) 3707 5712 w (on) 3980 5712 w (the) 4111 5712 w (current) 4264 5712 w (connection,) 4577 5712 w (the) 720 5832 w 10 /LucidaSans-Typewriter83 f (Tflush) 872 5832 w 10 /Times-Roman f (request) 1202 5832 w (must) 1520 5832 w (be) 1745 5832 w (forwarded.) 1869 5832 w (Otherwise,) 2358 5832 w (if) 2823 5832 w (the) 2913 5832 w (connection) 3064 5832 w (has) 3531 5832 w (been) 3693 5832 w (lost) 3910 5832 w (since) 4084 5832 w (the) 4318 5832 w (corresponding) 4469 5832 w (request) 720 5952 w (was) 1051 5952 w (sent,) 1249 5952 w (the) 1479 5952 w (request) 1645 5952 w (is) 1977 5952 w (no) 2088 5952 w (longer) 2232 5952 w (active:) 2531 5952 w 10 /LucidaSans-Typewriter83 f (recover) 2841 5952 w 10 /Times-Roman f (frees) 3235 5952 w (its) 3472 5952 w (internal) 3611 5952 w (state) 3960 5952 w (and) 4187 5952 w (responds) 4375 5952 w (with) 4774 5952 w (a) 4996 5952 w 10 /LucidaSans-Typewriter83 f (Rflush) 720 6072 w 10 /Times-Roman f (.) 1020 6072 w 10 /Times-Bold f (Special cases) 720 6348 w (Remove) 970 6504 w (on) 1349 6504 w (close) 1491 6504 w 10 /Times-Roman f (.) 1696 6504 w (Before) 1782 6504 w (forwarding) 2089 6504 w (a) 2568 6504 w 10 /LucidaSans-Typewriter83 f (Topen) 2648 6504 w 10 /Times-Roman f (or) 2934 6504 w 10 /LucidaSans-Typewriter83 f (Tcreate) 3053 6504 w 10 /Times-Roman f (request,) 3439 6504 w 10 /LucidaSans-Typewriter83 f (recover) 3788 6504 w 10 /Times-Roman f (removes) 4174 6504 w (the) 4549 6504 w (remove\255) 4708 6504 w (on\255close) 720 6624 w (\() 1097 6624 w 10 /LucidaSans-Typewriter83 f (ORCLOSE) 1130 6624 w 10 /Times-Roman f (\)) 1480 6624 w (bit) 1552 6624 w (from) 1697 6624 w (the) 1930 6624 w (open) 2091 6624 w (mode,) 2324 6624 w (so) 2610 6624 w (that) 2738 6624 w (the) 2927 6624 w (file) 3088 6624 w (will) 3260 6624 w (not) 3455 6624 w (be) 3622 6624 w (removed) 3754 6624 w (on) 4141 6624 w (connection) 4279 6624 w (failure.) 4755 6624 w (When) 720 6744 w (forwarding) 989 6744 w (a) 1463 6744 w 10 /LucidaSans-Typewriter83 f (Tclunk) 1538 6744 w 10 /Times-Roman f (of) 1869 6744 w (such) 1984 6744 w (a) 2199 6744 w (fid,) 2275 6744 w 10 /LucidaSans-Typewriter83 f (recover) 2443 6744 w 10 /Times-Roman f (rewrites) 2825 6744 w (the) 3178 6744 w (message) 3332 6744 w (into) 3702 6744 w (a) 3890 6744 w 10 /LucidaSans-Typewriter83 f (Tremove) 3966 6744 w 10 /Times-Roman f (to) 4348 6744 w (implement) 4458 6744 w (the) 4918 6744 w (remove\255on\255close.) 720 6864 w 10 /Times-Bold f (Exclusive\255use) 970 7020 w (files) 1580 7020 w 10 /Times-Roman f (.) 1752 7020 w 10 /LucidaSans-Typewriter83 f (Recover) 1834 7020 w 10 /Times-Roman f (does) 2216 7020 w (not) 2431 7020 w (allow) 2591 7020 w (opening) 2845 7020 w (of) 3200 7020 w (exclusive\255use) 3316 7020 w (files) 3892 7020 w (\(those) 4097 7020 w (with) 4374 7020 w (the) 4585 7020 w 10 /LucidaSans-Typewriter83 f (QTEXCL) 4740 7020 w 10 /Times-Roman f (qid) 720 7140 w (type) 874 7140 w (bit\),) 1072 7140 w (to) 1262 7140 w (avoid) 1366 7140 w (breaking) 1614 7140 w (the) 1989 7140 w (exclusive\255use) 2137 7140 w (semantics) 2706 7140 w (on) 3126 7140 w (such) 3252 7140 w (files.) 3461 7140 w (This prohibition could be relaxed) 3708 7140 w (to) 720 7260 w (simply) 848 7260 w (disallowing) 1171 7260 w (reestablishment) 1688 7260 w (of) 2365 7260 w (exclusive\255use) 2499 7260 w (fids,) 3093 7260 w (but) 3319 7260 w (disallowing) 3498 7260 w (all) 4016 7260 w (access) 4167 7260 w (seemed) 4472 7260 w (safer,) 4822 7260 w cleartomark showpage saveobj restore %%EndPage: 2 2 %%Page: 3 3 /saveobj save def mark 3 pagesetup 10 /Times-Roman f (\255 3 \255) 2797 480 w (especially) 720 840 w (in) 1145 840 w (cases) 1249 840 w (such) 1485 840 w (as the mail system where the exclusive\255use files are used as locks that protect other,) 1694 840 w (non\255exclusive\255use files.) 720 960 w 10 /Times-Bold f (Directory) 970 1116 w (reads) 1412 1116 w 10 /Times-Roman f (.) 1645 1116 w (9P) 1728 1116 w (imposes) 1867 1116 w (restrictions) 2228 1116 w (on) 2705 1116 w (the) 2838 1116 w (offset) 2993 1116 w (used) 3253 1116 w (in) 3469 1116 w (a) 3580 1116 w (directory) 3658 1116 w (read:) 4052 1116 w (it) 4285 1116 w (must) 4375 1116 w (be) 4604 1116 w (zero,) 4732 1116 w (to) 4962 1116 w (start) 720 1236 w (reading) 926 1236 w (at) 1259 1236 w (the) 1365 1236 w (beginning) 1521 1236 w (of) 1955 1236 w (the) 2072 1236 w (directory,) 2228 1236 w (or) 2647 1236 w (it) 2764 1236 w (must) 2853 1236 w (be) 3081 1236 w (the) 3208 1236 w (sum) 3363 1236 w (of) 3563 1236 w (the) 3679 1236 w (offset) 3834 1236 w (of) 4094 1236 w (the) 4210 1236 w (last) 4365 1236 w (read) 4537 1236 w (and) 4741 1236 w (the) 4918 1236 w (number) 720 1356 w (of) 1052 1356 w (bytes) 1162 1356 w (returned) 1400 1356 w (by) 1759 1356 w (that) 1887 1356 w (read.) 2065 1356 w (Internally,) 2314 1356 w (most) 2755 1356 w (9P) 2978 1356 w (servers) 3112 1356 w (keep) 3422 1356 w (an) 3638 1356 w (internal) 3760 1356 w (representation) 4093 1356 w (of) 4686 1356 w (where) 4797 1356 w (the) 720 1476 w (last) 872 1476 w (read) 1041 1476 w (on) 1242 1476 w (a) 1372 1476 w (fid) 1446 1476 w (left) 1587 1476 w (off) 1750 1476 w (and) 1896 1476 w (treat) 2069 1476 w (a) 2275 1476 w (zero) 2348 1476 w (offset) 2548 1476 w (as) 2804 1476 w (meaning) 2916 1476 w (``start) 3289 1476 w (over'') 3556 1476 w (and) 3828 1476 w (non\255zero) 4001 1476 w (offsets) 4384 1476 w (as) 4679 1476 w (mean\255) 4791 1476 w (ing) 720 1596 w (``continue) 877 1596 w (from) 1316 1596 w (last) 1539 1596 w (read.'') 1707 1596 w (It) 2023 1596 w (is) 2113 1596 w (not) 2209 1596 w (possible) 2366 1596 w (to) 2723 1596 w (start) 2830 1596 w (a) 3031 1596 w (directory) 3104 1596 w (read) 3493 1596 w (in) 3694 1596 w (the) 3802 1596 w (middle) 3954 1596 w (if) 4262 1596 w (the) 4353 1596 w (connection) 4505 1596 w (is) 4973 1596 w (lost) 720 1716 w (and) 894 1716 w (the) 1067 1716 w (read) 1218 1716 w (must) 1418 1716 w (be) 1642 1716 w (restarted.) 1765 1716 w 10 /LucidaSans-Typewriter83 f (Recover) 2187 1716 w 10 /Times-Roman f (handles) 2566 1716 w (a) 2900 1716 w (failed) 2973 1716 w (mid\255directory) 3229 1716 w (read) 3807 1716 w (by) 4007 1716 w (causing) 4136 1716 w (it) 4470 1716 w (to) 4555 1716 w (start) 4662 1716 w (over) 4863 1716 w (at) 720 1836 w (the) 826 1836 w (beginning) 982 1836 w (of) 1416 1836 w (the) 1533 1836 w (directory,) 1689 1836 w (duplicating) 2108 1836 w (entries) 2592 1836 w (that) 2892 1836 w (were) 3076 1836 w (returned) 3303 1836 w (on) 3669 1836 w (the) 3803 1836 w (previous) 3960 1836 w (connection.) 4339 1836 w (This) 4862 1836 w (behavior) 720 1956 w (is) 1096 1956 w (not) 1190 1956 w (ideal,) 1345 1956 w (but) 1591 1956 w (is) 1746 1956 w (not) 1840 1956 w (worse) 1995 1956 w (than) 2260 1956 w (the) 2459 1956 w (other) 2608 1956 w (stateless) 2839 1956 w (approaches.) 3198 1956 w (Perhaps) 3722 1956 w (the) 4064 1956 w (best) 4212 1956 w (approach) 4399 1956 w (would) 4790 1956 w (be) 720 2076 w (to) 840 2076 w (read) 944 2076 w (the) 1141 2076 w (entire) 1289 2076 w (directory) 1542 2076 w (to) 1928 2076 w (implement) 2032 2076 w (a) 2486 2076 w (zero\255offset) 2556 2076 w (read) 3013 2076 w (and) 3210 2076 w (then) 3380 2076 w (serve) 3578 2076 w (subsequent) 3814 2076 w (reads) 4284 2076 w (from) 4521 2076 w (a) 4742 2076 w (saved) 4813 2076 w (copy, but this issue does not arise frequently enough to bother us.) 720 2196 w 10 /Times-Bold f (3.) 720 2436 w (Implementation) 845 2436 w 10 /LucidaSans-Typewriter83 f (Recover) 970 2592 w 10 /Times-Roman f (is) 1357 2592 w (implemented) 1461 2592 w (as) 2020 2592 w (two) 2140 2592 w (shared\255memory) 2327 2592 w (procs,) 2990 2592 w (one) 3268 2592 w (reading) 3449 2592 w (local) 3785 2592 w (9P) 4016 2592 w (requests) 4159 2592 w (\() 4524 2592 w 10 /LucidaSans-Typewriter83 f (listensrv) 4557 2592 w 10 /Times-Roman f (\)) 5007 2592 w (and) 720 2712 w (one) 894 2712 w (reading) 1068 2712 w (remote) 1397 2712 w (9P) 1704 2712 w (responses) 1840 2712 w (\() 2258 2712 w 10 /LucidaSans-Typewriter83 f (listennet) 2291 2712 w 10 /Times-Roman f (\).) 2741 2712 w (Both) 2854 2712 w (procs) 3079 2712 w (can) 3325 2712 w (manipulate) 3493 2712 w (the) 3967 2712 w (per\255fid) 4119 2712 w (and) 4419 2712 w (per\255request) 4592 2712 w (state) 720 2832 w (and) 934 2832 w (can) 1109 2832 w (issue) 1278 2832 w (new) 1509 2832 w (messages) 1706 2832 w (to) 2114 2832 w (the) 2223 2832 w (remote) 2376 2832 w (server;) 2684 2832 w (they) 2986 2832 w (use) 3189 2832 w (a) 3353 2832 w (single) 3428 2832 w (lock) 3698 2832 w (to) 3901 2832 w (avoid) 4010 2832 w (both) 4263 2832 w (running) 4472 2832 w (at) 4814 2832 w (the) 4918 2832 w (same) 720 2952 w (time.) 959 2952 w (Errors) 1221 2952 w (writing) 1504 2952 w (to) 1827 2952 w (the) 1939 2952 w (remote) 2095 2952 w (server) 2406 2952 w (connection) 2682 2952 w (are) 3153 2952 w (ignored:) 3307 2952 w (connection) 3673 2952 w (failures) 4144 2952 w (are) 4476 2952 w (noticed) 4630 2952 w (as) 4957 2952 w (failed) 720 3072 w 10 /LucidaSans-Typewriter83 f (read) 972 3072 w 10 /Times-Roman f (s in) 1172 3072 w 10 /LucidaSans-Typewriter83 f (listennet) 1339 3072 w 10 /Times-Roman f (.) 1789 3072 w (The) 970 3228 w (difficult) 1154 3228 w (part) 1505 3228 w (of) 1689 3228 w (writing) 1801 3228 w (a) 2119 3228 w (program) 2192 3228 w (like) 2559 3228 w 10 /LucidaSans-Typewriter83 f (recover) 2738 3228 w 10 /Times-Roman f (is) 3118 3228 w (testing) 3215 3228 w (it.) 3512 3228 w (One) 3648 3228 w (of) 3844 3228 w (the) 3957 3228 w (authors) 4109 3228 w (wrote) 4433 3228 w 10 /LucidaSans-Typewriter83 f (recover) 4690 3228 w 10 /Times-Roman f (in) 720 3348 w (1999) 833 3348 w (for) 1068 3348 w (the) 1219 3348 w (second) 1376 3348 w (edition) 1688 3348 w (of) 2001 3348 w (Plan) 2119 3348 w (9.) 2332 3348 w (It) 2467 3348 w (worked) 2563 3348 w (well) 2897 3348 w (for) 3104 3348 w (day\255to\255day) 3255 3348 w (use) 3722 3348 w (mounting) 3890 3348 w (file) 4308 3348 w (servers) 4475 3348 w (across) 4791 3348 w (wide\255area) 720 3468 w (internet) 1148 3468 w (connections,) 1489 3468 w (and) 2027 3468 w (was) 2208 3468 w (used) 2400 3468 w (until) 2620 3468 w (9P2000,) 2841 3468 w (the) 3209 3468 w (current) 3368 3468 w (version) 3687 3468 w (of) 4018 3468 w (9P,) 4138 3468 w (was) 4306 3468 w (introduced) 4498 3468 w (in) 4962 3468 w (2001.) 720 3588 w (Even so, it occasionally failed in mysterious ways and was never fully debugged.) 995 3588 w (To) 970 3744 w (test) 1114 3744 w 10 /LucidaSans-Typewriter83 f (recover) 1286 3744 w 10 /Times-Roman f (after) 1669 3744 w (convering) 1884 3744 w (it) 2316 3744 w (for) 2406 3744 w (use) 2556 3744 w (in) 2723 3744 w (9P2000,) 2835 3744 w (we) 3200 3744 w (added) 3350 3744 w (a) 3622 3744 w (testing) 3700 3744 w (flag) 4001 3744 w (giving) 4190 3744 w (a) 4480 3744 w (sequence) 4558 3744 w (of) 4957 3744 w (deterministic) 720 3864 w (read) 1270 3864 w (failures) 1469 3864 w (to) 1795 3864 w (introduce) 1900 3864 w (\(for) 2304 3864 w (example,) 2480 3864 w 10 /LucidaSans-Typewriter83 f (3,5) 2870 3864 w 10 /Times-Roman f (means) 3047 3864 w (that) 3329 3864 w (the) 3506 3864 w (third) 3655 3864 w (read) 3871 3864 w (should) 4069 3864 w (fail,) 4363 3864 w (and) 4548 3864 w (then) 4719 3864 w (the) 4918 3864 w (fifth) 720 3984 w (read) 925 3984 w (after) 1129 3984 w (that) 1344 3984 w (should) 1527 3984 w (fail\).) 1828 3984 w (These) 2078 3984 w (read) 2350 3984 w (failures) 2555 3984 w (are) 2888 3984 w (interpreted) 3043 3984 w (by) 3509 3984 w 10 /LucidaSans-Typewriter83 f (listennet) 3643 3984 w 10 /Times-Roman f (as) 4127 3984 w (connection) 4244 3984 w (failures,) 4716 3984 w (causing) 720 4104 w (it) 1059 4104 w (to) 1149 4104 w (hang) 1261 4104 w (up) 1489 4104 w (and) 1623 4104 w (redial.) 1801 4104 w (We) 2112 4104 w (tested) 2284 4104 w (recover) 2551 4104 w (using) 2883 4104 w (a) 3133 4104 w (small) 3210 4104 w (workload) 3460 4104 w (that) 3870 4104 w (exercised) 4053 4104 w (each) 4462 4104 w (message,) 4677 4104 w (running) 720 4224 w (the) 1058 4224 w (workload) 1207 4224 w (with) 1611 4224 w (all) 1816 4224 w (possible) 1943 4224 w (combinations) 2298 4224 w (of) 2864 4224 w (one) 2974 4224 w (and) 3145 4224 w (two) 3316 4224 w (simulated) 3493 4224 w (failures.) 3909 4224 w (This) 4285 4224 w (testing) 4490 4224 w (turned) 4785 4224 w (up some bugs, but the deterministic framework made them easy to isolate and correct.) 720 4344 w 10 /Times-Bold f (4.) 720 4584 w (Performance) 845 4584 w 10 /LucidaSans-Typewriter83 f (Recover) 970 4740 w 10 /Times-Roman f (runs) 1349 4740 w (on) 1550 4740 w (Plan) 1679 4740 w (9) 1886 4740 w (and) 1965 4740 w (also) 2138 4740 w (on) 2328 4740 w (Linux) 2457 4740 w (using) 2725 4740 w (the) 2971 4740 w (Plan) 3122 4740 w (9) 3330 4740 w (from) 3410 4740 w (User) 3634 4740 w (Space) 3852 4740 w ([3]) 4120 4740 w (libraries.) 4266 4740 w (We) 4673 4740 w (mea\255) 4841 4740 w (sured) 720 4860 w 10 /LucidaSans-Typewriter83 f (recover) 965 4860 w 10 /Times-Roman f ('s) 1315 4860 w (performance) 1416 4860 w (using) 1948 4860 w (the) 2194 4860 w (Postmark) 2345 4860 w (benchmark.) 2752 4860 w (All) 3274 4860 w (measurements) 3431 4860 w (are) 4031 4860 w (shown) 4181 4860 w (as) 4470 4860 w (the) 4581 4860 w (average) 4731 4860 w (of 16,384 transactions.) 720 4980 w (Figure) 970 5136 w (1) 1263 5136 w (compares) 1345 5136 w (the) 1759 5136 w (performance) 1913 5136 w (of) 2448 5136 w (direct) 2564 5136 w (file) 2824 5136 w (server) 2990 5136 w (connections) 3266 5136 w (against) 3776 5136 w (connections) 4092 5136 w (proxied) 4602 5136 w (by) 4940 5136 w 10 /LucidaSans-Typewriter83 f (recover) 720 5256 w 10 /Times-Roman f (,) 1070 5256 w (in) 1129 5256 w (three) 1241 5256 w (different) 1474 5256 w (configurations) 1851 5256 w (running) 2462 5256 w (on) 2807 5256 w (Plan) 2941 5256 w (9:) 3153 5256 w (a) 3265 5256 w (local) 3343 5256 w (user\255level) 3571 5256 w (file) 3998 5256 w (server) 4165 5256 w (running) 4441 5256 w (on) 4785 5256 w (the) 4918 5256 w (same) 720 5376 w (machine,) 958 5376 w (a) 1354 5376 w (file) 1431 5376 w (server) 1598 5376 w (connected) 1875 5376 w (via) 2313 5376 w (a) 2469 5376 w (1Gbit/s) 2547 5376 w (ethernet,) 2876 5376 w (and) 3256 5376 w (a) 3434 5376 w (file) 3512 5376 w (server) 3679 5376 w (connected) 3956 5376 w (via) 4394 5376 w (a) 4550 5376 w (100Mbit/s) 4628 5376 w (ethernet.) 720 5496 w (The) 1119 5496 w (local) 1302 5496 w (connection) 1523 5496 w (is) 1988 5496 w (bottlenecked) 2082 5496 w (mainly) 2619 5496 w (by) 2924 5496 w (context) 3051 5496 w (switching) 3372 5496 w (overhead,) 3788 5496 w (so) 4205 5496 w (introducing) 4321 5496 w (a) 4809 5496 w (sec\255) 4880 5496 w (ond) 720 5616 w (user) 897 5616 w (level) 1090 5616 w (process) 1311 5616 w (essentially) 1637 5616 w (halves) 2086 5616 w (the) 2368 5616 w (throughput.) 2517 5616 w (The) 3033 5616 w (overhead) 3215 5616 w (of) 3607 5616 w 10 /LucidaSans-Typewriter83 f (recover) 3717 5616 w 10 /Times-Roman f (is) 4094 5616 w (far) 4188 5616 w (less) 4325 5616 w (noticeable) 4502 5616 w (on) 4940 5616 w (the ethernets, where local processing is no longer the bottleneck.) 720 5736 w (Figure) 970 5892 w (2) 1259 5892 w (shows) 1337 5892 w (a) 1615 5892 w (similar) 1688 5892 w (comparison) 1995 5892 w (for) 2490 5892 w (Linux,) 2635 5892 w (using) 2928 5892 w (a) 3174 5892 w (local) 3247 5892 w (connection) 3470 5892 w (and) 3937 5892 w (a) 4110 5892 w (1Gbit/s) 4183 5892 w (network) 4507 5892 w (con\255) 4863 5892 w (nection.) 720 6012 w (In) 1109 6012 w (this) 1237 6012 w (case) 1427 6012 w (there) 1643 6012 w (are) 1887 6012 w (three) 2053 6012 w (configurations) 2297 6012 w (in) 2919 6012 w (each) 3041 6012 w (comparison.) 3267 6012 w (The) 3827 6012 w (first) 4026 6012 w (is) 4231 6012 w (the) 4342 6012 w (Linux) 4508 6012 w (kernel) 4791 6012 w (mounting) 720 6132 w (a) 1133 6132 w (user\255level) 1206 6132 w (9P) 1628 6132 w (file) 1763 6132 w (server) 1925 6132 w (directly.) 2197 6132 w (The) 2581 6132 w (second) 2765 6132 w (is) 3071 6132 w (the) 3167 6132 w (Linux) 3318 6132 w (kernel) 3586 6132 w (mounting) 3864 6132 w (a) 4277 6132 w (user\255level) 4350 6132 w (9P) 4772 6132 w (file) 4907 6132 w (server) 720 6252 w (via) 996 6252 w (the) 1151 6252 w (Plan) 1306 6252 w (9) 1517 6252 w (from) 1600 6252 w (User) 1827 6252 w (Space) 2048 6252 w (program) 2319 6252 w 10 /LucidaSans-Typewriter83 f (srv) 2690 6252 w 10 /Times-Roman f (,) 2840 6252 w (which) 2898 6252 w (multiplexes) 3175 6252 w (multiple) 3675 6252 w (clients) 4041 6252 w (onto) 4334 6252 w (a) 4544 6252 w (single) 4620 6252 w (ser\255) 4891 6252 w (vice) 720 6372 w (connection.) 924 6372 w (The) 1450 6372 w (third) 1643 6372 w (is) 1870 6372 w (the) 1976 6372 w (Linux) 2137 6372 w (kernel) 2415 6372 w (mounting) 2703 6372 w (the) 3126 6372 w (user\255level) 3287 6372 w (9P) 3719 6372 w (file) 3864 6372 w (server) 4036 6372 w (via) 4318 6372 w 10 /LucidaSans-Typewriter83 f (recover) 4479 6372 w 10 /Times-Roman f (.) 4829 6372 w (On) 4918 6372 w (Linux,) 720 6492 w 10 /LucidaSans-Typewriter83 f (recover) 1011 6492 w 10 /Times-Roman f (posts) 1388 6492 w (its) 1621 6492 w (9P) 1743 6492 w (service) 1876 6492 w (using) 2185 6492 w (the) 2429 6492 w 10 /LucidaSans-Typewriter83 f (srv) 2578 6492 w 10 /Times-Roman f (program,) 2755 6492 w (so) 3145 6492 w (the) 3261 6492 w (comparison) 3410 6492 w (between) 3903 6492 w (the) 4262 6492 w (last) 4411 6492 w (two) 4576 6492 w (config\255) 4752 6492 w (urations) 720 6612 w (isolates) 1072 6612 w (the) 1403 6612 w (slowdown) 1556 6612 w (due) 1998 6612 w (to) 2173 6612 w 10 /LucidaSans-Typewriter83 f (recover) 2282 6612 w 10 /Times-Roman f (.) 2632 6612 w (The) 2713 6612 w (relatively) 2899 6612 w (large) 3307 6612 w (difference) 3537 6612 w (between) 3971 6612 w 10 /LucidaSans-Typewriter83 f (srv) 4334 6612 w 10 /Times-Roman f (and) 4515 6612 w 10 /LucidaSans-Typewriter83 f (recover) 4690 6612 w 10 /Times-Roman f (on) 720 6732 w (the) 854 6732 w (1Gbit/s) 1010 6732 w (connection,) 1339 6732 w (especially) 1835 6732 w (in) 2267 6732 w (light) 2378 6732 w (of) 2595 6732 w (the) 2711 6732 w (relatively) 2866 6732 w (small) 3276 6732 w (difference) 3526 6732 w (on) 3962 6732 w (the) 4095 6732 w (local) 4250 6732 w (connection,) 4477 6732 w (is) 4973 6732 w (unexplained.) 720 6852 w (Profiling) 1291 6852 w (using) 1680 6852 w 10 /LucidaSans-Typewriter83 f (oprofile) 1931 6852 w 10 /Times-Roman f ([8]) 2365 6852 w (indicated) 2515 6852 w (that) 2915 6852 w (most) 3099 6852 w (of) 3328 6852 w (the) 3445 6852 w (time) 3601 6852 w (was) 3813 6852 w (spent) 4002 6852 w (in) 4247 6852 w (locking) 4359 6852 w (routines,) 4693 6852 w (suggesting) 720 6972 w (a) 1174 6972 w (performance) 1244 6972 w (problem in either the Plan 9 from User Space thread library, but we did not inves\255) 1773 6972 w (tigate) 720 7092 w (deeply.) 968 7092 w (We) 1310 7092 w (did) 1474 7092 w (not) 1628 7092 w (measure) 1782 7092 w (Linux) 2140 7092 w (on) 2405 7092 w (a) 2531 7092 w (100Mbit/s) 2601 7092 w (ethernet) 3039 7092 w (connection,) 3386 7092 w (nor) 3875 7092 w (did) 4034 7092 w (we) 4188 7092 w (measure) 4331 7092 w 10 /LucidaSans-Typewriter83 f (recover) 4690 7092 w 10 /Times-Roman f (posting a service without) 720 7212 w 10 /LucidaSans-Typewriter83 f (srv) 1747 7212 w 10 /Times-Roman f (.) 1897 7212 w cleartomark showpage saveobj restore %%EndPage: 3 3 %%Page: 4 4 /saveobj save def mark 4 pagesetup 10 /Times-Roman f (\255 4 \255) 2797 480 w 720 840 5040 840 Dl cleartomark saveobj restore %ps_include: begin save /ed {exch def} def {} /showpage ed {} /copypage ed {} /erasepage ed {} /letter ed currentdict /findfont known systemdict /findfont known and { /findfont systemdict /findfont get def } if 36 dict dup /PS-include-dict-dw ed begin /context ed count array astore /o-stack ed %ps_include: variables begin /llx -40 def /lly -28 def /urx 438 def /ury 152 def /w 0 def /o 0 def /s 1 def /cx 2880 def /cy -1560 def /sx 4320 def /sy 1440 def /ax .5 def /ay 1 def /rot 0 def %ps_include: variables end {llx lly urx ury} /bbox ed {newpath 2 index exch 2 index exch dup 6 index exch moveto 3 {lineto} repeat closepath} /boxpath ed {dup mul exch dup mul add sqrt} /len ed {2 copy gt {exch} if pop} /min ed {2 copy lt {exch} if pop} /max ed {transform round exch round exch A itransform} /nice ed {6 array} /n ed n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed urx llx sub 0 A dtransform len /Sx ed 0 ury lly sub A dtransform len /Sy ed llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed rot dup sin abs /S ed cos abs /C ed Sx S mul Sy C mul add /H ed Sx C mul Sy S mul add /W ed sy H div /Scaley ed sx W div /Scalex ed s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed urx llx sub 0 A dtransform exch atan rot exch sub /rot ed n currentmatrix initgraphics setmatrix cx cy translate Scalex Scaley scale rot rotate Cx neg Cy neg translate A concat bbox boxpath clip newpath w 0 ne {gsave bbox boxpath 1 setgray fill grestore} if end gsave %ps_include: inclusion begin %!PS-Adobe-2.0 EPSF-1.2 %%Creator: jgraph %%BoundingBox: -40 -28 438 152 %%EndComments 1 setlinecap 1 setlinejoin 0.700 setlinewidth 0.00 setgray /Jrnd { exch cvi exch cvi dup 3 1 roll idiv mul } def /JDEdict 8 dict def JDEdict /mtrx matrix put /JDE { JDEdict begin /yrad exch def /xrad exch def /savematrix mtrx currentmatrix def xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /JSTR { gsave 1 eq { gsave 1 setgray fill grestore } if exch neg exch neg translate clip rotate 4 dict begin pathbbox /&top exch def /&right exch def /&bottom exch def &right sub /&width exch def newpath currentlinewidth mul round dup &bottom exch Jrnd exch &top 4 -1 roll currentlinewidth mul setlinewidth { &right exch moveto &width 0 rlineto stroke } for end grestore newpath } bind def gsave /Times-Roman findfont 9.000000 scalefont setfont 0.000000 0.000000 translate 0.700000 setlinewidth gsave newpath 0.000000 0.000000 moveto 432.000000 0.000000 lineto stroke /Times-Bold findfont 10.000000 scalefont setfont gsave 216.000000 -16.000000 translate 0.000000 rotate 0 -6.000000 translate () dup stringwidth pop 2 div neg 0 moveto show grestore grestore 0.700000 setlinewidth gsave newpath 0.000000 0.000000 moveto 0.000000 144.000000 lineto stroke newpath 0.000000 0.000000 moveto -5.000000 0.000000 lineto stroke newpath 0.000000 4.800000 moveto -2.000000 4.800000 lineto stroke newpath 0.000000 9.599999 moveto -2.000000 9.599999 lineto stroke newpath 0.000000 14.400000 moveto -2.000000 14.400000 lineto stroke newpath 0.000000 19.199999 moveto -2.000000 19.199999 lineto stroke newpath 0.000000 24.000000 moveto -2.000000 24.000000 lineto stroke newpath 0.000000 28.799999 moveto -2.000000 28.799999 lineto stroke newpath 0.000000 33.599998 moveto -2.000000 33.599998 lineto stroke newpath 0.000000 38.399998 moveto -2.000000 38.399998 lineto stroke newpath 0.000000 43.200001 moveto -2.000000 43.200001 lineto stroke newpath 0.000000 48.000000 moveto -5.000000 48.000000 lineto stroke newpath 0.000000 52.799999 moveto -2.000000 52.799999 lineto stroke newpath 0.000000 57.599998 moveto -2.000000 57.599998 lineto stroke newpath 0.000000 62.399998 moveto -2.000000 62.399998 lineto stroke newpath 0.000000 67.199997 moveto -2.000000 67.199997 lineto stroke newpath 0.000000 72.000000 moveto -2.000000 72.000000 lineto stroke newpath 0.000000 76.799995 moveto -2.000000 76.799995 lineto stroke newpath 0.000000 81.599998 moveto -2.000000 81.599998 lineto stroke newpath 0.000000 86.400002 moveto -2.000000 86.400002 lineto stroke newpath 0.000000 91.199997 moveto -2.000000 91.199997 lineto stroke newpath 0.000000 96.000000 moveto -5.000000 96.000000 lineto stroke newpath 0.000000 100.799995 moveto -2.000000 100.799995 lineto stroke newpath 0.000000 105.599998 moveto -2.000000 105.599998 lineto stroke newpath 0.000000 110.399994 moveto -2.000000 110.399994 lineto stroke newpath 0.000000 115.199997 moveto -2.000000 115.199997 lineto stroke newpath 0.000000 120.000000 moveto -2.000000 120.000000 lineto stroke newpath 0.000000 124.799995 moveto -2.000000 124.799995 lineto stroke newpath 0.000000 129.599991 moveto -2.000000 129.599991 lineto stroke newpath 0.000000 134.399994 moveto -2.000000 134.399994 lineto stroke newpath 0.000000 139.199997 moveto -2.000000 139.199997 lineto stroke newpath 0.000000 144.000000 moveto -5.000000 144.000000 lineto stroke /Times-Roman findfont 9.000000 scalefont setfont gsave -8.000000 0.000000 translate 0.000000 rotate 0 -2.700000 translate (0) dup stringwidth pop neg 0 moveto show grestore gsave -8.000000 48.000000 translate 0.000000 rotate 0 -2.700000 translate (100) dup stringwidth pop neg 0 moveto show grestore gsave -8.000000 96.000000 translate 0.000000 rotate 0 -2.700000 translate (200) dup stringwidth pop neg 0 moveto show grestore gsave -8.000000 144.000000 translate 0.000000 rotate 0 -2.700000 translate (300) dup stringwidth pop neg 0 moveto show grestore /Times-Bold findfont 10.000000 scalefont setfont gsave -28.960001 72.000000 translate 90.000000 rotate 0 0.000000 translate (operations per second) dup stringwidth pop 2 div neg 0 moveto show grestore grestore gsave gsave grestore gsave gsave 11.368421 120.614395 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -120.614395 lineto 5.684210 -120.614395 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 45.473682 115.680000 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -115.680000 lineto 5.684210 -115.680000 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 79.578941 114.753601 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -114.753601 lineto 5.684210 -114.753601 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 113.684204 120.307198 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -120.307198 lineto 5.684210 -120.307198 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 159.157883 60.163197 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -60.163197 lineto 5.684210 -60.163197 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 193.263153 56.822399 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -56.822399 lineto 5.684210 -56.822399 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 227.368408 56.467197 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -56.467197 lineto 5.684210 -56.467197 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 261.473663 60.163197 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -60.163197 lineto 5.684210 -60.163197 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 306.947357 14.952000 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -14.952000 lineto 5.684210 -14.952000 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 341.052612 14.251200 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -14.251200 lineto 5.684210 -14.251200 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 375.157867 14.251200 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -14.251200 lineto 5.684210 -14.251200 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 409.263153 15.129600 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -15.129600 lineto 5.684210 -15.129600 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore grestore gsave gsave 22.736841 61.079998 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -61.079998 lineto 5.684210 -61.079998 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 22.736841 61.079998 1 JSTR grestore stroke grestore gsave 56.842102 57.686398 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -57.686398 lineto 5.684210 -57.686398 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 56.842102 57.686398 1 JSTR grestore stroke grestore gsave 90.947365 57.379200 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -57.379200 lineto 5.684210 -57.379200 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 90.947365 57.379200 1 JSTR grestore stroke grestore gsave 125.052628 61.079998 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -61.079998 lineto 5.684210 -61.079998 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 125.052628 61.079998 1 JSTR grestore stroke grestore gsave 170.526306 54.004799 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -54.004799 lineto 5.684210 -54.004799 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 170.526306 54.004799 1 JSTR grestore stroke grestore gsave 204.631577 51.014397 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -51.014397 lineto 5.684210 -51.014397 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 204.631577 51.014397 1 JSTR grestore stroke grestore gsave 238.736832 50.664001 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -50.664001 lineto 5.684210 -50.664001 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 238.736832 50.664001 1 JSTR grestore stroke grestore gsave 272.842102 54.004799 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -54.004799 lineto 5.684210 -54.004799 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 272.842102 54.004799 1 JSTR grestore stroke grestore gsave 318.315765 13.540799 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -13.540799 lineto 5.684210 -13.540799 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 318.315765 13.540799 1 JSTR grestore stroke grestore gsave 352.421051 12.840000 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -12.840000 lineto 5.684210 -12.840000 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 352.421051 12.840000 1 JSTR grestore stroke grestore gsave 386.526306 12.840000 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -12.840000 lineto 5.684210 -12.840000 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 386.526306 12.840000 1 JSTR grestore stroke grestore gsave 420.631561 13.545599 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -13.545599 lineto 5.684210 -13.545599 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 420.631561 13.545599 1 JSTR grestore stroke grestore grestore grestore gsave 431.999969 144.000000 translate 0.000000 rotate gsave gsave -91.284210 -3.000000 translate 0.000000 rotate newpath -5.684210 -2.400000 moveto 5.684210 -2.400000 lineto 5.684210 2.400000 lineto -5.684210 2.400000 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore grestore /Times-Roman findfont 10.000000 scalefont setfont gsave -81.599998 0.000000 translate 0.000000 rotate 0 -6.000000 translate (direct connection) dup stringwidth pop pop 0 0 moveto show grestore gsave gsave -91.284210 -15.000000 translate 0.000000 rotate newpath -5.684210 -2.400000 moveto 5.684210 -2.400000 lineto 5.684210 2.400000 lineto -5.684210 2.400000 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 -91.284210 -15.000000 1 JSTR grestore stroke grestore grestore gsave -81.599998 -12.000000 translate 0.000000 rotate 0 -6.000000 translate (recover) dup stringwidth pop pop 0 0 moveto show grestore grestore /Times-Roman findfont 9.000000 scalefont setfont gsave 68.210526 -4.800000 translate 0.000000 rotate 0 -5.400000 translate (loopback) dup stringwidth pop 2 div neg 0 moveto show grestore gsave 215.999985 -4.800000 translate 0.000000 rotate 0 -5.400000 translate (1000Mbit/s) dup stringwidth pop 2 div neg 0 moveto show grestore gsave 363.789459 -4.800000 translate 0.000000 rotate 0 -5.400000 translate (100Mbit/s) dup stringwidth pop 2 div neg 0 moveto show grestore /Times-Roman findfont 8.000000 scalefont setfont gsave 11.368421 4.800000 translate 90.000000 rotate 0 -2.400000 translate (create) dup stringwidth pop pop 0 0 moveto show grestore gsave 45.473682 4.800000 translate 90.000000 rotate 0 -2.400000 translate (read) dup stringwidth pop pop 0 0 moveto show grestore gsave 79.578941 4.800000 translate 90.000000 rotate 0 -2.400000 translate (append) dup stringwidth pop pop 0 0 moveto show grestore gsave 113.684204 4.800000 translate 90.000000 rotate 0 -2.400000 translate (delete) dup stringwidth pop pop 0 0 moveto show grestore gsave 159.157883 4.800000 translate 90.000000 rotate 0 -2.400000 translate (create) dup stringwidth pop pop 0 0 moveto show grestore gsave 193.263153 4.800000 translate 90.000000 rotate 0 -2.400000 translate (read) dup stringwidth pop pop 0 0 moveto show grestore gsave 227.368408 4.800000 translate 90.000000 rotate 0 -2.400000 translate (append) dup stringwidth pop pop 0 0 moveto show grestore gsave 261.473663 4.800000 translate 90.000000 rotate 0 -2.400000 translate (delete) dup stringwidth pop pop 0 0 moveto show grestore gsave 306.947357 16.799999 translate 90.000000 rotate 0 -2.400000 translate (create) dup stringwidth pop pop 0 0 moveto show grestore gsave 341.052612 16.799999 translate 90.000000 rotate 0 -2.400000 translate (read) dup stringwidth pop pop 0 0 moveto show grestore gsave 375.157867 16.799999 translate 90.000000 rotate 0 -2.400000 translate (append) dup stringwidth pop pop 0 0 moveto show grestore gsave 409.263153 16.799999 translate 90.000000 rotate 0 -2.400000 translate (delete) dup stringwidth pop pop 0 0 moveto show grestore -0.000000 -0.000000 translate grestore %ps_include: inclusion end grestore PS-include-dict-dw begin o 0 ne {gsave A defaultmatrix /A ed llx lly nice urx ury nice initgraphics 0.1 setlinewidth boxpath stroke grestore} if clear o-stack aload pop context end restore %ps_include: end /saveobj save def mark 10 /Times-Roman f (Figure 1: Performance of) 1357 2280 w 10 /LucidaSans-Typewriter83 f (recover) 2388 2280 w 10 /Times-Roman f (compared to direct connection on Plan 9.) 2763 2280 w cleartomark saveobj restore %ps_include: begin save /ed {exch def} def {} /showpage ed {} /copypage ed {} /erasepage ed {} /letter ed currentdict /findfont known systemdict /findfont known and { /findfont systemdict /findfont get def } if 36 dict dup /PS-include-dict-dw ed begin /context ed count array astore /o-stack ed %ps_include: variables begin /llx -40 def /lly -28 def /urx 438 def /ury 152 def /w 0 def /o 0 def /s 1 def /cx 2880 def /cy -3240 def /sx 4320 def /sy 1440 def /ax .5 def /ay 1 def /rot 0 def %ps_include: variables end {llx lly urx ury} /bbox ed {newpath 2 index exch 2 index exch dup 6 index exch moveto 3 {lineto} repeat closepath} /boxpath ed {dup mul exch dup mul add sqrt} /len ed {2 copy gt {exch} if pop} /min ed {2 copy lt {exch} if pop} /max ed {transform round exch round exch A itransform} /nice ed {6 array} /n ed n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed urx llx sub 0 A dtransform len /Sx ed 0 ury lly sub A dtransform len /Sy ed llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed rot dup sin abs /S ed cos abs /C ed Sx S mul Sy C mul add /H ed Sx C mul Sy S mul add /W ed sy H div /Scaley ed sx W div /Scalex ed s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed urx llx sub 0 A dtransform exch atan rot exch sub /rot ed n currentmatrix initgraphics setmatrix cx cy translate Scalex Scaley scale rot rotate Cx neg Cy neg translate A concat bbox boxpath clip newpath w 0 ne {gsave bbox boxpath 1 setgray fill grestore} if end gsave %ps_include: inclusion begin %!PS-Adobe-2.0 EPSF-1.2 %%Creator: jgraph %%BoundingBox: -40 -28 438 152 %%EndComments 1 setlinecap 1 setlinejoin 0.700 setlinewidth 0.00 setgray /Jrnd { exch cvi exch cvi dup 3 1 roll idiv mul } def /JDEdict 8 dict def JDEdict /mtrx matrix put /JDE { JDEdict begin /yrad exch def /xrad exch def /savematrix mtrx currentmatrix def xrad yrad scale 0 0 1 0 360 arc savematrix setmatrix end } def /JSTR { gsave 1 eq { gsave 1 setgray fill grestore } if exch neg exch neg translate clip rotate 4 dict begin pathbbox /&top exch def /&right exch def /&bottom exch def &right sub /&width exch def newpath currentlinewidth mul round dup &bottom exch Jrnd exch &top 4 -1 roll currentlinewidth mul setlinewidth { &right exch moveto &width 0 rlineto stroke } for end grestore newpath } bind def gsave /Times-Roman findfont 9.000000 scalefont setfont 0.000000 0.000000 translate 0.700000 setlinewidth gsave newpath 0.000000 0.000000 moveto 432.000000 0.000000 lineto stroke /Times-Bold findfont 10.000000 scalefont setfont gsave 216.000000 -16.000000 translate 0.000000 rotate 0 -6.000000 translate () dup stringwidth pop 2 div neg 0 moveto show grestore grestore 0.700000 setlinewidth gsave newpath 0.000000 0.000000 moveto 0.000000 144.000000 lineto stroke newpath 0.000000 0.000000 moveto -5.000000 0.000000 lineto stroke newpath 0.000000 9.599999 moveto -2.000000 9.599999 lineto stroke newpath 0.000000 19.199999 moveto -2.000000 19.199999 lineto stroke newpath 0.000000 28.799999 moveto -2.000000 28.799999 lineto stroke newpath 0.000000 38.399998 moveto -2.000000 38.399998 lineto stroke newpath 0.000000 48.000000 moveto -5.000000 48.000000 lineto stroke newpath 0.000000 57.599998 moveto -2.000000 57.599998 lineto stroke newpath 0.000000 67.199997 moveto -2.000000 67.199997 lineto stroke newpath 0.000000 76.799995 moveto -2.000000 76.799995 lineto stroke newpath 0.000000 86.400002 moveto -2.000000 86.400002 lineto stroke newpath 0.000000 96.000000 moveto -5.000000 96.000000 lineto stroke newpath 0.000000 105.599998 moveto -2.000000 105.599998 lineto stroke newpath 0.000000 115.199997 moveto -2.000000 115.199997 lineto stroke newpath 0.000000 124.799995 moveto -2.000000 124.799995 lineto stroke newpath 0.000000 134.399994 moveto -2.000000 134.399994 lineto stroke newpath 0.000000 144.000000 moveto -5.000000 144.000000 lineto stroke /Times-Roman findfont 9.000000 scalefont setfont gsave -8.000000 0.000000 translate 0.000000 rotate 0 -2.700000 translate (0) dup stringwidth pop neg 0 moveto show grestore gsave -8.000000 48.000000 translate 0.000000 rotate 0 -2.700000 translate (50) dup stringwidth pop neg 0 moveto show grestore gsave -8.000000 96.000000 translate 0.000000 rotate 0 -2.700000 translate (100) dup stringwidth pop neg 0 moveto show grestore gsave -8.000000 144.000000 translate 0.000000 rotate 0 -2.700000 translate (150) dup stringwidth pop neg 0 moveto show grestore /Times-Bold findfont 10.000000 scalefont setfont gsave -28.960001 72.000000 translate 90.000000 rotate 0 0.000000 translate (operations per second) dup stringwidth pop 2 div neg 0 moveto show grestore grestore gsave gsave grestore gsave gsave 11.368421 135.811203 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -135.811203 lineto 5.684210 -135.811203 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 56.842102 128.774399 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -128.774399 lineto 5.684210 -128.774399 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 102.315788 127.718391 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -127.718391 lineto 5.684210 -127.718391 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 147.789474 135.811203 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -135.811203 lineto 5.684210 -135.811203 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 204.631577 80.591995 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -80.591995 lineto 5.684210 -80.591995 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 250.105255 77.068794 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -77.068794 lineto 5.684210 -77.068794 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 295.578949 76.406395 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -76.406395 lineto 5.684210 -76.406395 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore gsave 341.052612 80.371201 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -80.371201 lineto 5.684210 -80.371201 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore grestore gsave gsave 22.736841 54.182396 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -54.182396 lineto 5.684210 -54.182396 lineto closepath gsave 0.300000 setgray 6.1 10 -45.000000 22.736841 54.182396 1 JSTR grestore stroke grestore gsave 68.210526 52.070400 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -52.070400 lineto 5.684210 -52.070400 lineto closepath gsave 0.300000 setgray 6.1 10 -45.000000 68.210526 52.070400 1 JSTR grestore stroke grestore gsave 113.684204 51.715199 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -51.715199 lineto 5.684210 -51.715199 lineto closepath gsave 0.300000 setgray 6.1 10 -45.000000 113.684204 51.715199 1 JSTR grestore stroke grestore gsave 159.157883 54.182396 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -54.182396 lineto 5.684210 -54.182396 lineto closepath gsave 0.300000 setgray 6.1 10 -45.000000 159.157883 54.182396 1 JSTR grestore stroke grestore gsave 215.999985 49.545601 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -49.545601 lineto 5.684210 -49.545601 lineto closepath gsave 0.300000 setgray 6.1 10 -45.000000 215.999985 49.545601 1 JSTR grestore stroke grestore gsave 261.473663 47.558399 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -47.558399 lineto 5.684210 -47.558399 lineto closepath gsave 0.300000 setgray 6.1 10 -45.000000 261.473663 47.558399 1 JSTR grestore stroke grestore gsave 306.947357 47.116802 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -47.116802 lineto 5.684210 -47.116802 lineto closepath gsave 0.300000 setgray 6.1 10 -45.000000 306.947357 47.116802 1 JSTR grestore stroke grestore gsave 352.421051 49.756802 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -49.756802 lineto 5.684210 -49.756802 lineto closepath gsave 0.300000 setgray 6.1 10 -45.000000 352.421051 49.756802 1 JSTR grestore stroke grestore grestore gsave gsave 34.105263 45.388798 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -45.388798 lineto 5.684210 -45.388798 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 34.105263 45.388798 1 JSTR grestore stroke grestore gsave 79.578941 43.977600 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -43.977600 lineto 5.684210 -43.977600 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 79.578941 43.977600 1 JSTR grestore stroke grestore gsave 125.052628 43.276802 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -43.276802 lineto 5.684210 -43.276802 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 125.052628 43.276802 1 JSTR grestore stroke grestore gsave 170.526306 45.388798 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -45.388798 lineto 5.684210 -45.388798 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 170.526306 45.388798 1 JSTR grestore stroke grestore gsave 227.368408 22.243200 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -22.243200 lineto 5.684210 -22.243200 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 227.368408 22.243200 1 JSTR grestore stroke grestore gsave 272.842102 21.580799 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -21.580799 lineto 5.684210 -21.580799 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 272.842102 21.580799 1 JSTR grestore stroke grestore gsave 318.315765 21.359999 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -21.359999 lineto 5.684210 -21.359999 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 318.315765 21.359999 1 JSTR grestore stroke grestore gsave 363.789459 22.454399 translate 0.000000 rotate newpath 5.684210 0.000000 moveto -5.684210 0.000000 lineto -5.684210 -22.454399 lineto 5.684210 -22.454399 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 363.789459 22.454399 1 JSTR grestore stroke grestore grestore grestore gsave 431.999969 144.000000 translate 0.000000 rotate gsave gsave -91.284210 -3.000000 translate 0.000000 rotate newpath -5.684210 -2.400000 moveto 5.684210 -2.400000 lineto 5.684210 2.400000 lineto -5.684210 2.400000 lineto closepath gsave 1.000000 setgray fill grestore stroke grestore grestore /Times-Roman findfont 10.000000 scalefont setfont gsave -81.599998 0.000000 translate 0.000000 rotate 0 -6.000000 translate (direct connection) dup stringwidth pop pop 0 0 moveto show grestore gsave gsave -91.284210 -15.000000 translate 0.000000 rotate newpath -5.684210 -2.400000 moveto 5.684210 -2.400000 lineto 5.684210 2.400000 lineto -5.684210 2.400000 lineto closepath gsave 0.300000 setgray 6.1 10 -45.000000 -91.284210 -15.000000 1 JSTR grestore stroke grestore grestore gsave -81.599998 -12.000000 translate 0.000000 rotate 0 -6.000000 translate (srv) dup stringwidth pop pop 0 0 moveto show grestore gsave gsave -91.284210 -27.000000 translate 0.000000 rotate newpath -5.684210 -2.400000 moveto 5.684210 -2.400000 lineto 5.684210 2.400000 lineto -5.684210 2.400000 lineto closepath gsave 0.700000 setgray 6.1 10 45.000000 -91.284210 -27.000000 1 JSTR grestore stroke grestore grestore gsave -81.599998 -24.000000 translate 0.000000 rotate 0 -6.000000 translate (recover) dup stringwidth pop pop 0 0 moveto show grestore grestore /Times-Roman findfont 9.000000 scalefont setfont gsave 90.947365 -9.599999 translate 0.000000 rotate 0 -5.400000 translate (loopback) dup stringwidth pop 2 div neg 0 moveto show grestore gsave 284.210510 -9.599999 translate 0.000000 rotate 0 -5.400000 translate (1000Mbit/s) dup stringwidth pop 2 div neg 0 moveto show grestore /Times-Roman findfont 8.000000 scalefont setfont gsave 11.368421 9.599999 translate 90.000000 rotate 0 -2.400000 translate (create) dup stringwidth pop pop 0 0 moveto show grestore gsave 56.842102 9.599999 translate 90.000000 rotate 0 -2.400000 translate (read) dup stringwidth pop pop 0 0 moveto show grestore gsave 102.315788 9.599999 translate 90.000000 rotate 0 -2.400000 translate (append) dup stringwidth pop pop 0 0 moveto show grestore gsave 147.789474 9.599999 translate 90.000000 rotate 0 -2.400000 translate (delete) dup stringwidth pop pop 0 0 moveto show grestore gsave 204.631577 9.599999 translate 90.000000 rotate 0 -2.400000 translate (create) dup stringwidth pop pop 0 0 moveto show grestore gsave 250.105255 9.599999 translate 90.000000 rotate 0 -2.400000 translate (read) dup stringwidth pop pop 0 0 moveto show grestore gsave 295.578949 9.599999 translate 90.000000 rotate 0 -2.400000 translate (append) dup stringwidth pop pop 0 0 moveto show grestore gsave 341.052612 9.599999 translate 90.000000 rotate 0 -2.400000 translate (delete) dup stringwidth pop pop 0 0 moveto show grestore -0.000000 -0.000000 translate grestore %ps_include: inclusion end grestore PS-include-dict-dw begin o 0 ne {gsave A defaultmatrix /A ed llx lly nice urx ury nice initgraphics 0.1 setlinewidth boxpath stroke grestore} if clear o-stack aload pop context end restore %ps_include: end /saveobj save def mark 10 /Times-Roman f (Figure 2: Performance of) 1192 3960 w 10 /LucidaSans-Typewriter83 f (recover) 2223 3960 w 10 /Times-Roman f (compared to) 2598 3960 w 10 /LucidaSans-Typewriter83 f (srv) 3119 3960 w 10 /Times-Roman f (and direct connection on Linux.) 3294 3960 w 720 4080 5040 4080 Dl (Overall,) 970 4200 w (the) 1337 4200 w (performance) 1502 4200 w (of) 2049 4200 w 10 /LucidaSans-Typewriter83 f (recover) 2176 4200 w 10 /Times-Roman f (seems) 2570 4200 w (entirely) 2858 4200 w (reasonable) 3207 4200 w (in) 3677 4200 w (the) 3799 4200 w (configurations) 3965 4200 w (where) 4586 4200 w (it) 4873 4200 w (is) 4973 4200 w (expected) 720 4320 w (to) 1105 4320 w (be) 1214 4320 w (used.) 1339 4320 w (On) 1603 4320 w (Plan) 1756 4320 w (9,) 1965 4320 w (using) 2071 4320 w 10 /LucidaSans-Typewriter83 f (recover) 2319 4320 w 10 /Times-Roman f (on) 2699 4320 w (a) 2829 4320 w (fast) 2903 4320 w (network) 3077 4320 w (connection) 3434 4320 w (incurs) 3902 4320 w (approximately) 4176 4320 w (a) 4783 4320 w (10%) 4857 4320 w (performance) 720 4440 w (penalty.) 1254 4440 w (On) 1629 4440 w (Linux) 1782 4440 w (the) 2052 4440 w (penalty) 2205 4440 w (is) 2530 4440 w (higher,) 2628 4440 w (but) 2939 4440 w (we) 3098 4440 w (suspect) 3245 4440 w (performance) 3570 4440 w (bugs) 4104 4440 w (in) 4325 4440 w (other) 4435 4440 w (software.) 4672 4440 w (Over slower long\255distance connections, the performance penalty is hardly noticeable.) 720 4560 w 10 /Times-Bold f (5.) 720 4800 w (Discussion) 845 4800 w 10 /LucidaSans-Typewriter83 f (Recover) 970 4956 w 10 /Times-Roman f (is not the first attempt to bring persistent 9P connections to Plan 9.) 1345 4956 w (In) 970 5112 w (the) 1089 5112 w (mid) 1247 5112 w (to) 1439 5112 w (late) 1553 5112 w (1990s,) 1733 5112 w (Phil) 2033 5112 w (Winterbottom) 2232 5112 w (added) 2830 5112 w (this) 3105 5112 w (capability) 3287 5112 w (to) 3718 5112 w (a) 3833 5112 w (development) 3914 5112 w (version) 4467 5112 w (of) 4798 5112 w (the) 4918 5112 w (Plan) 720 5232 w (9) 927 5232 w (kernel,) 1006 5232 w (but) 1309 5232 w (it) 1466 5232 w (was) 1551 5232 w (never) 1735 5232 w (robust) 1985 5232 w (enough) 2264 5232 w (to) 2587 5232 w (be) 2694 5232 w (relied) 2817 5232 w (upon.) 3073 5232 w (Writing) 3352 5232 w 10 /LucidaSans-Typewriter83 f (recover) 3692 5232 w 10 /Times-Roman f (in) 4071 5232 w (user) 4178 5232 w (space) 4373 5232 w (made) 4623 5232 w (test\255) 4868 5232 w (ing) 720 5352 w (and) 903 5352 w (debugging) 1102 5352 w (considerably) 1579 5352 w (simpler.) 2145 5352 w (Use) 2551 5352 w (in) 2762 5352 w (high\255performance) 2896 5352 w (situations) 3666 5352 w (might) 4106 5352 w (require) 4396 5352 w (moving) 4734 5352 w 10 /LucidaSans-Typewriter83 f (recover) 720 5472 w 10 /Times-Roman f (back) 1102 5472 w (into) 1322 5472 w (the) 1510 5472 w (kernel,) 1664 5472 w (but) 1970 5472 w (doing) 2130 5472 w (so) 2390 5472 w (would) 2511 5472 w (require) 2793 5472 w (finding) 3107 5472 w (some) 3427 5472 w (way) 3669 5472 w (to) 3866 5472 w (conduct) 3975 5472 w (exhaustive) 4322 5472 w (failure) 4780 5472 w (testing in order to be robust.) 720 5592 w (Peter) 970 5748 w (Bosch's) 1218 5748 w 10 /LucidaSans-Typewriter83 f (aan) 1583 5748 w 10 /Times-Roman f ([9]) 1776 5748 w (protocol) 1935 5748 w (is) 2311 5748 w (also) 2421 5748 w (used) 2625 5748 w (to) 2852 5748 w (provide) 2974 5748 w (persistent) 3323 5748 w (9P) 3750 5748 w (connections.) 3900 5748 w (It) 4471 5748 w (serves) 4576 5748 w (as) 4869 5748 w (a) 4996 5748 w (lower\255level) 720 5868 w (transport) 1205 5868 w (protocol) 1591 5868 w (just) 1955 5868 w (above) 2131 5868 w (TCP,) 2400 5868 w (using) 2640 5868 w (a) 2888 5868 w (custom) 2963 5868 w (protocol) 3283 5868 w (to) 3647 5868 w (provide) 3756 5868 w (the) 4092 5868 w (view) 4245 5868 w (of) 4470 5868 w (a) 4583 5868 w (persistent) 4657 5868 w (network) 720 5988 w (connection) 1084 5988 w (across) 1559 5988 w (multiple) 1845 5988 w (TCP) 2216 5988 w (sessions.) 2437 5988 w 10 /LucidaSans-Typewriter83 f (Aan) 2853 5988 w 10 /Times-Roman f (is) 3041 5988 w (protocol\255agnostic) 3146 5988 w (but) 3883 5988 w (relies) 4049 5988 w (on) 4303 5988 w (having) 4441 5988 w (custom) 4751 5988 w (software) 720 6108 w (and) 1099 6108 w (persistent) 1279 6108 w (state) 1698 6108 w (at) 1917 6108 w (both) 2025 6108 w (sides) 2239 6108 w (of) 2475 6108 w (the) 2594 6108 w (connection.) 2752 6108 w 10 /LucidaSans-Typewriter83 f (Recover) 3276 6108 w 10 /Times-Roman f (depends) 3662 6108 w (only) 4025 6108 w (on) 4238 6108 w (custom) 4373 6108 w (software) 4697 6108 w (and) 720 6228 w (persistent) 895 6228 w (state) 1309 6228 w (on) 1523 6228 w (the) 1654 6228 w (client) 1808 6228 w (side.) 2062 6228 w (As) 2305 6228 w (a) 2448 6228 w (result,) 2524 6228 w 10 /LucidaSans-Typewriter83 f (recover) 2803 6228 w 10 /Times-Roman f (is) 3185 6228 w (slightly) 3284 6228 w (easier) 3617 6228 w (to) 3881 6228 w (deploy) 3991 6228 w (and) 4295 6228 w (is) 4471 6228 w (robust) 4570 6228 w (even) 4852 6228 w (against) 720 6348 w (server) 1041 6348 w (failures) 1322 6348 w (or) 1658 6348 w (restarts.) 1778 6348 w (Vic) 2153 6348 w (Zandy's) 2334 6348 w (TCP) 2698 6348 w (racks) 2919 6348 w (and) 3166 6348 w (rocks) 3347 6348 w ([7]) 3600 6348 w (also) 3753 6348 w (provide) 3951 6348 w (persistent) 4293 6348 w (network) 4713 6348 w (connections,) 720 6468 w (and) 1260 6468 w (although) 1442 6468 w (they) 1830 6468 w (are) 2040 6468 w (implemented) 2199 6468 w (differently,) 2759 6468 w (for) 3243 6468 w (the) 3397 6468 w (purposes) 3557 6468 w (of) 3950 6468 w (this) 4071 6468 w (discussion) 4254 6468 w (they) 4709 6468 w (are) 4919 6468 w (logically equivalent to) 720 6588 w 10 /LucidaSans-Typewriter83 f (aan) 1639 6588 w 10 /Times-Roman f (.) 1789 6588 w (Finally,) 970 6744 w (note) 1309 6744 w (that) 1512 6744 w 10 /LucidaSans-Typewriter83 f (recover) 1693 6744 w 10 /Times-Roman f (is) 2074 6744 w (targeted) 2172 6744 w (mainly) 2524 6744 w (at) 2833 6744 w (traditional) 2936 6744 w (disk\255based) 3378 6744 w (file) 3836 6744 w (systems) 4000 6744 w (and) 4348 6744 w (is) 4523 6744 w (not) 4621 6744 w (appro\255) 4780 6744 w (priate) 720 6864 w (in) 974 6864 w (all) 1079 6864 w (contexts.) 1206 6864 w (Synthetic) 1616 6864 w (file) 2021 6864 w (systems) 2181 6864 w (such) 2525 6864 w (as) 2735 6864 w 10 /LucidaSans-Typewriter83 f (/net) 2845 6864 w 10 /Times-Roman f ([6]) 3072 6864 w (often) 3215 6864 w (assign) 3447 6864 w (meanings) 3724 6864 w (to) 4134 6864 w (individual) 4239 6864 w (file) 4671 6864 w (oper\255) 4830 6864 w (ations) 720 6984 w (and) 1002 6984 w (destroy) 1189 6984 w (state) 1526 6984 w (when) 1752 6984 w (files) 2011 6984 w (are) 2226 6984 w (closed.) 2390 6984 w (On) 2738 6984 w (such) 2903 6984 w (systems,) 3129 6984 w (simply) 3514 6984 w (reconnecting) 3830 6984 w (and) 4388 6984 w (replaying) 4575 6984 w (a) 4996 6984 w (sequence) 720 7104 w (of) 1123 7104 w (opens) 1244 7104 w (and) 1515 7104 w (walks) 1697 7104 w (does) 1968 7104 w (not) 2189 7104 w (recreate) 2354 7104 w (the) 2705 7104 w (state) 2864 7104 w (at) 3084 7104 w (the) 3193 7104 w (time) 3352 7104 w (of) 3567 7104 w (the) 3687 7104 w (connection) 3846 7104 w (failure.) 4321 7104 w (Handling) 4668 7104 w (these situations requires failure\255aware applications or infrastructure such as Plan B's) 720 7224 w 10 /LucidaSans-Typewriter83 f (/net) 4121 7224 w 10 /Times-Roman f ([1].) 4346 7224 w cleartomark showpage saveobj restore %%EndPage: 4 4 %%Page: 5 5 /saveobj save def mark 5 pagesetup 10 /Times-Roman f (\255 5 \255) 2797 480 w 10 /Times-Bold f (References) 720 840 w 10 /Times-Roman f ([1]) 720 996 w (Francisco) 862 996 w (J.) 1276 996 w (Ballesteros,) 1366 996 w (Eva) 1862 996 w (M.) 2044 996 w (Castro,) 2185 996 w (Gorka) 2498 996 w (Guardiola) 2774 996 w (Muzquiz,) 3200 996 w (Katia) 3607 996 w (Leal) 3850 996 w (Algara,) 4054 996 w (and) 4377 996 w (Pedro) 4548 996 w (de) 4808 996 w (las) 4929 996 w (Heras) 720 1116 w (Quiros.) 982 1116 w (``) 1334 1116 w 10 /LucidaSans-Typewriter83 f (/net) 1400 1116 w 10 /Times-Roman f (:) 1600 1116 w (A) 1657 1116 w (Network) 1758 1116 w (Abstraction) 2136 1116 w (for) 2631 1116 w (Mobile) 2776 1116 w (and) 3094 1116 w (Ubiquitous) 3267 1116 w (Computing) 3741 1116 w (Environments) 4221 1116 w (in) 4811 1116 w (the) 4918 1116 w (Plan B Operating System.) 720 1236 w (6th IEEE Workshop on Mobile Computing Systems and Applications, 2004.) 1809 1236 w ([2]) 720 1392 w (Russ) 867 1392 w (Cox,) 1094 1392 w (Eric) 1318 1392 w (Grosse,) 1516 1392 w (Rob) 1850 1392 w (Pike,) 2049 1392 w (David) 2284 1392 w (L.) 2560 1392 w (Presotto,) 2678 1392 w (and) 3063 1392 w (Sean) 3239 1392 w (Quinlan.) 3465 1392 w (``Security) 3869 1392 w (in) 4300 1392 w (Plan) 4410 1392 w (9.'') 4620 1392 w (USE\255) 4818 1392 w (NIX Security Symposium, 2002.) 720 1512 w ([3] Russ Cox.) 720 1668 w (Plan 9 from User Space.) 1323 1668 w 10 /LucidaSans-Typewriter83 f (http://swtch.com/plan9port) 2346 1668 w 10 /Times-Roman f ([4]) 720 1824 w (Jeffrey) 870 1824 w (Katcher.) 1180 1824 w (``Postmark:) 1579 1824 w (a) 2085 1824 w (New) 2163 1824 w (File) 2385 1824 w (System) 2575 1824 w (Benchmark.'') 2904 1824 w (Network) 3514 1824 w (Appliance) 3897 1824 w (Technical) 4341 1824 w (Report) 4768 1824 w (TR3022, October 1997.) 720 1944 w 10 /LucidaSans-Typewriter83 f (http://www.netapp.com/tech_library/3022.html) 1719 1944 w 10 /Times-Roman f ([5]) 720 2100 w (Rob) 873 2100 w (Pike,) 1077 2100 w (Dave) 1317 2100 w (Presotto,) 1564 2100 w (Sean) 1954 2100 w (Dorward,) 2185 2100 w (Bob) 2602 2100 w (Flandrena,) 2807 2100 w (Ken) 3269 2100 w (Thompson,) 3473 2100 w (Howard) 3964 2100 w (Trickey,) 4323 2100 w (and) 4696 2100 w (Phil) 4878 2100 w (Winterbottom.) 720 2220 w (``Plan 9 from Bell Labs.'') 1356 2220 w (Computing Systems,) 2446 2220 w 10 /Times-Bold f (8) 3306 2220 w 10 /Times-Roman f (, 3, Summer 1995, pp. 221\255254.) 3356 2220 w ([6]) 720 2376 w (Dave) 864 2376 w (Presotto) 1102 2376 w (and) 1458 2376 w (Phil) 1630 2376 w (Winterbottom.) 1820 2376 w (``The) 2459 2376 w (Organization) 2708 2376 w (of) 3257 2376 w (Networks) 3368 2376 w (in) 3784 2376 w (Plan) 3890 2376 w (9.'') 4096 2376 w (Proceedings) 4290 2376 w (of) 4806 2376 w (the) 4918 2376 w (1993 USENIX Winter Conference, pp. 43\25550.) 720 2496 w ([7]) 720 2652 w (Victor) 862 2652 w (C.) 1143 2652 w (Zandy) 1261 2652 w (and) 1542 2652 w (Barton) 1712 2652 w (P.) 2010 2652 w (Miller.) 2118 2652 w (``Reliable) 2445 2652 w (network) 2871 2652 w (connections.'') 3225 2652 w (Proceedings) 3845 2652 w (of) 4360 2652 w (the) 4470 2652 w (8th) 4619 2652 w (annual) 4774 2652 w (International Conference on Mobile Computing and Networking, 2002, pp. 95\255106.) 720 2772 w ([8] OProfile ) 720 2928 w 10 /LucidaSansUnicode20 f (\024) 1230 2928 w 10 /Times-Roman f (a System Profiler for Linux.) 1355 2928 w 10 /LucidaSans-Typewriter83 f (http://oprofile.sourceforge.net/) 2529 2928 w 10 /Times-Roman f ([9] Plan 9 manual.) 720 3084 w 10 /LucidaSans-Typewriter83 f (http://plan9.bell-labs.com/sys/man/5/INDEX.html) 1508 3084 w cleartomark showpage saveobj restore %%EndPage: 5 5 %%Trailer done %%DocumentFonts: Times-Roman LucidaSansUnicode20 Times-Italic Times-Bold LucidaSans-Typewriter83 %%Pages: 5