%!PS-Adobe-2.0 %%Creator: dvips(k) 5.78 Copyright 1998 Radical Eye Software (www.radicaleye.com) %%Title: icfp.dvi %%Pages: 12 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: CMR12 CMSY10 CMR10 CMSSBX10 CMR9 CMSY5 CMR7 CMTI9 CMMI9 %%+ CMR6 CMSY9 CMMI6 CMR5 CMSY6 CMTT9 CMBX9 CMTI7 CMTT8 CMMI5 CMMI7 %%+ CMEX10 CMR8 CMTI8 CMMI8 %%EndComments %DVIPSCommandLine: dvips icfp.dvi %DVIPSParameters: dpi=300 %DVIPSSource: TeX output 2000.03.08:1523 %%BeginProcSet: tex.pro %! /TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} forall round exch round exch]setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]} if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict /eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 2 string 0 1 255{IE S dup 360 add 36 4 index cvrs cvn put}for pop 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{pop false[ (Display)(NeXT)(LaserWriter 16/600)]{dup length product length le{dup length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse} forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ 4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet %%BeginProcSet: texps.pro %! TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2 index /UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin Encoding{exch dup type /integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} ifelse}forall Metrics /Metrics currentdict end def[2 index currentdict end definefont 3 -1 roll makefont /setfont cvx]cvx def}def /ObliqueSlant {dup sin S cos div neg}B /SlantFont{4 index mul add}def /ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding exch def}def end %%EndProcSet %%BeginFont: CMMI8 %!PS-AdobeFont-1.1: CMMI8 1.100 %%CreationDate: 1996 Jul 23 07:53:54 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 21 /lambda put readonly def /FontBBox{-24 -250 1110 750}readonly def /UniqueID 5087383 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98 74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730 48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f 15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427 bdd7da12534ba078ad3d780414930e72218b3075925ce1192f11fc8530fcd5e3 038e3a6a6db2dcfbae3b4653e7e02730314e02b54a1e296d2bef8a79411d9225 dad7b4e6d6f9cf0688b69ba21193bf1495807e7a196cf14c95a4e02f9cd2da8c db2546c6df52e524745992e18d9ff87aa25e4e1800bbe4ebb357c6ef55ed6d03 6d3a00c1ee8073266c21d2f0ac85d656abf61d7e5a4fa87da8ec3b5329e434d0 d2adab706b42a2e5331be5295399d803ccac03f631f01f39a022fcdf63486b68 7d15ef284a77def7fde4898543e7b5f7ec267756103e477f547cfb8d2311c4b0 09deff56085f5d419697af1846c8b88c1bbbae149f0f19ca3c8dafe19cec48fe 6b38357246d8b5cef80b53bab4cbbbe8bc8318cc462a4158258f456e697f6058 86010493f252073ee4e4c9531f23485415ad6bc901bbaea659ef701f825f4b6d 5c9bed0dce7b63810f906b33ea4955531ca1ed1fc120cc56dc1e277a33222cc6 c3a97552607b865783faf0895cbeccd0df54f57bd162a88494768435eda71a39 69718c0c5912d3167bb0971546d733e735aa9bcd89f5aa154656031ab3f6fe41 94ec225ad03ab8b67a9da43ab365c4df17c23e79f685c3b6fd5b654e4a6f2603 6cec3a8641b0b57f93eb95f9e238832aeac2061f3153e0f375513c974f1c38f7 b59edcc94716f2862cf71c9a2be8430985da1cd813b1e1c1b9310564a2eb1aff 52c190f50fc981dccb64bb2c1f7a62c216f211c162c2ed1c554ef49fbaf12b31 aa3b2a80fee259dc0a2a4242869ddec7c29e2941792b28bba7f2c6f77ef69638 12b07d6843f33b51e01c8626b26edc34e1e0fffadede5fb468e8cd5de7e5a64c 366967578f415484d122834de4a647541d66989f7d8b25d1712d8d16729bd9a6 472df1ef13518758e7ab8ce8429d80f39ebd0dd390e067820f0c69e08b9ed6b5 3248d9978b010a2915c85a69f99df4a08039d30bd4ee65356b44a105ee3f540b b7c8a8d6cb06f492c697aa0e0e49692fcff96489e293dd73022d970aa2af8035 0316a88ffb329b1641de204d72f394aa5e0548979eac748b855ea2fbff83b7e2 388f59cc0f141d5e81341384744c1ee1647ed1194b47a7ccc9a615860b5da986 a814e216ea3088c28c9aadf9b1dcfdf1767aabe3fa54b7c585fbbc4c20728b3f a3dfa5760886993b50824154455eb22fffed520d2bb1107fd740b263d09e21d9 3be215fccfa1c862c3d20ac5e313680ca52130c888c438a8557bc1254f1f7f49 129697ea5771b64bcaad52d4101d08870f5302fdde1bdae765c9f6a9090bf1c3 f25175c8 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTI8 %!PS-AdobeFont-1.1: CMTI8 1.0 %%CreationDate: 1991 Aug 18 21:07:42 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTI8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMTI8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 45 /hyphen put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 73 /I put dup 74 /J put dup 76 /L put dup 77 /M put dup 78 /N put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 87 /W put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put readonly def /FontBBox{-35 -250 1190 750}readonly def /UniqueID 5000826 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65 66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7 695aba81f0260cd5248b9e649cd803271dc8bb1656323089e9e2bb50f2b95088 87d31dc36f6372968dbd0df8505aef5b22e57f2b9834fef2c2798f9d715aa323 3e09b183f8d92797bbd3a990980982018887612cdc5507a47581f07a1cf99a5c 587021d6b67b0524e780517e7a088a6388097ced01e5a59aa8779c6ad82af704 f6283c0a8b62d57cc5d24220e4d52a7c736389ff9d77df48c0de3d3db6482774 72a5e726bf4d83d29751b70eca9ee9d04a18fb7d011542a2b2737eff052a4eff 2800d8dbc1aeeb7273d9172927c2912b597c90faf4eb15f30201e026c5d06c94 122d69e4c81882d9f10b74f81d8a85a329a5946464c9765706a4e979e3b76913 83ea8ff66e4608e5c6fa0171e0c14bba3efb8fbcd0285e6ca408671bf068e1b9 f1c040e0417a92557f6b43a2b49c772c5d6e1e6fe0315378d71f1b762c987f29 6ada445624744ef29f727436345875bab3b78eff3a86027026983eae46ee5cb6 baefe7a95b00007094774550ad81f1b2c7e3c042a77548631e4baeacfb244b62 80922062c83c0f96d439448951a8f4e8bdf68d60245c60c8a8cf3e340644ff00 efbbcbd9abfe6018af21b3fe10b1381325d2599e22b2c5ad47bd6d5ecf1f55fc 7b382f2bf4889af9fb6beb58dc03087e9de3624e2e171c669acc08ff9a88f879 48749ad40d3c781c14e04ad93b147a89b1f29c82f756d9de7c26ded8977921aa dc1ece18b2010fc175172c626433eabd9a8d3aaa209ebe02d7526858ab012ff3 264e153925baefe32978a494f3708718a384981d929086b146bb99bab1d6b99e 0b6fef5833e88137a805ab776f7f14b4cb1b91f60c618b3575902e57d7c4d1f4 a40d4af6b4c901b8ccf101cc0420275fa38bb536d71a2f8539f0b0a90f53f6ad e2ac0661c06108ed695895ad31266e3c3fd066cad3d3506685c8e9ff161b7933 7ad225409dd87600b915f86774d509221355732399100ecaa4b76874bc2336fa 825827fe4ede1fbe98b4ce37765be643436731919405ba9cdcd23fc17799c89f dde6aca7a876d512a3043caed572ef7490b3bc5d8d93b982c0579aeee5b29465 3b6f490458a3028124d5c2a64eb62309982501038006f3f35634513827dff601 646ccbabfe984f89a2b84946f5a7a1c15611b5c7e276b45c1ea853eaac057cb4 c11dfacc5da061de3514599f54a458d6afcbd5c877393965de6f04526c650531 adcc6e94d9a024601ec2e793ec777e8ac2d45f3a9dac012da5347554e1142b40 fa385f09089675f79200b7df3f2df49e00cb32aa11933869745ebeaf4cb4ab01 36111b04705c403e75c299bede08e3da72243c9f6e616c1715b5b8ec27a0fd81 f2d99fdce9ff0e3f0b8b627ac4278b2535007bb44adb7e5a4d2e8847d23f14ff fd17cfe0dd56ec176ef6e3fdf63c5eb4aa360b3d71e0f0c22b12cfec63bb6973 acd6c3a0c9414ebb0289c6efc679c52196adfa95f9dd5a5c928d50489a1fc88a 792447f9d665ffa938cc97b0e2705ce4eec865702c0f88c217ab8d719e01e9b0 d821ab4ed05cb5b5f5db9ea3a599725e89a5efbe067d23bbd7e2fc8ec0aeeff8 732a9add5534e3f4788c65983c39caba69184148feee04385ad6b1d95029191c eb4b0418f7a8ac7e7c1840db2d079ad093119fb18b9b95c7851df5b53ccf74ac cf747e460fb4e5f389d91b67c6e9f5212ac5d3ead1bde848b6c504daeb29914a ba9cd7e506bc3155b9c86b0c55930bc9d3784d547a1a760e53d44397978368ce 51014f29d4ec3a5b331af9e722321e8350cf38893904659bc48acabe630609f5 325cabcf7536cf37a5c04cbe00f4a623f5b9fa5112bb04722a94fc02455b3b64 fd5666a1abdb8d1d4943c2c9e79cb93514f7a750d2e208d9ac705590224098f2 8fed56c558008ce703a00c87822011f83c41c806a2c18c42222d0117f70ab964 896b71823c7f8096b85b6323bf9879168fa58442b4dc0a550877ca97b33426b2 eb9140441ca8f756046019e9f835f644202513275947e5cb8bc5f36702b2e575 de742607fbd86de5e4675c221c83c9fec7f4c484fe68a60bdd792fa628a57a6f b34e7253e5e20d9d9aaca4218c3eac6772b4eb2771c3379a0b041d60282f1076 340520f7ef666b5d850318f910d1897a617b38d6ea13b0311b3962e62913ff6c f265465c2282b71f2484e7f03d82f8430da2aaf4cc08b5feee7ffd70ab68cab9 ccd949c43b70e4f9affc73a36fd3febbf4b195893b4020786f56163eaad4889b 87a86330bf2fafca6d2c8e431ab01de8724d1b4acb8415aafae4c9a563e79f85 818ba79097f491f71d6278dfa8273a5ba90e862bb55cdd5f0bc025ce7a99780c 6c1be1db0265e3806d2406e6d874a8cd2bf758e9716731ca249ad4b5ceeb2b19 a4649eca97002c42873c8a16637f64c29ea83dc7afc3aea91c150521f4f525ef 2c03481b13eac4404f127b600a4666d819970fe774bcf88b0e98f738d97e639b 563bca9cc5860bb9b3c6dde02b701c36c0b7278934bc566a4d882da0c5441c9d ac43365f8b534c9f09d34c542ebea5e9631cb6dfcccdd3fde6eb9d41691c0493 a7ce8fb4c6ec3dd171d64db305808d629aa651f5a26f1dddaa4bef0c08c1aa1b c69f0f06d9d791524b445feaed5b5e45531c3dbe489d4987bbb5ef5a8588937d 85835cbafe0ac00b8af10bd556e0846982fda9efe19e461e24ec2d322548c3c7 3d6b4bef6070aa3fa4415a801a02847be7b0ace65a1fbd35792dc3fd85afaa10 5eaa7bc45a68650339ea197842b505bbfbbe6cbe361abb00a26c05efa57fbee0 203e61b477fe39fb549155513e578482e82ed05ff9f4e0787904bdd2900cf8c9 e2b66cb92ec341d56319011d8ce9b666df218f8b3f7051358395a866e63b36d9 b14fd403008eb0b5ee3dd8b376cf1083061390a548b11dcaa215cb92bdb39a3e 78cede0180b1128693e37a9e628507040f0d6fb517b685c962f9f565a309da9f 5991d3dbc2c162f0f13eeea7894f3234790c4e5730eb882836c91d876ba85c3f 0c0e0986410285f2720ec10f5f2b390b50009d5719b45d6356ac2d261c2755a2 3e6d98904eaff13ddcdf5bdd4e3ffdbd5b667b4a45cc6a5dc5fb4832a2dc666d 8cf61bd8e0a76436b496c6e4b7523ddca04091d186e215fe62ddb55969e3af41 c8c892ec35c8df4a0a72d3956390d0682525a935a12e370cfbca391781a0cbab 591ac9a143f23e1f04e897ee357db81b938bfe5866c606fdcaf9c784c199fd45 e23d613e549c28a16af64b7f2fbb6bc71ea6b2fbe213259ae4aed4d847afbcba 196bbd3a23418fad19b1bb99ab9fa0645a1b3ca1c21f288dcf38067476218f99 8502ee0098b2ec06045b8b99a3def693ad8c1c2d95a4377d813d58a3f4138d9f 1b384da93cd8433bc3115eadb6ae19592d1774fc97f36901ae6e3461cae19fe1 fa6fed82b271507c4cbc393caf869bbead727d93b0c281ba376d64a9fa2ff417 e30f510a0c6a62a134e58589c2ae064a57f656cb70b5cd14781c68025cae776d 3c8e9d5c77035ea541d02a8257bb87f05ca1bd0d1af1628e501bc0f561c2a64d 2e2b1e54df1862a0c88f596db8496f6aea9e9003d448b68488eee0b4237e133a 871473c6666260b4e3f2b1c025498d624df8e406447a140a4228c6013cbc2f7f 2157cad5b3cba287fecf3527aad97bfcbf9ac30b249ee14d92253536fd68f8e4 65b082ad847e07c21840aaa0f622477a3f11f39943d420ce29e9d97536ad94d0 5454450607e439088dae5b39f78f3de396e4b0dbd24f6f758f07f1f2b9b9b40f 871e452f669ea495129c05a5fe8182ef43b031f6745cc277f7d0972fcdb17b30 418ddd8a651a6b145aad96b2d82892702c659bd3ff1f00795a8d24e9fd4639ef 7c89bacdea2bdca28ad1fb920bac0b88a7419fc7341ea4628c1b7b62b800154c 6e4b84f8171c6fcb64e0098e54d8b625edafec9cf03649fd2ea50c98e1e10b77 06d9944e3cb545d4484e70684fd931c35fc6bfcc07930c3f87f72707fdd1d12c f5bc0da98b433e78fa180c3d995ab089e4dbf6a50f443281982c1c03cffbfa57 138139ecf2236d860b576df67ebc27b3f31cdb79683ac5c185977b3a6229ec14 8f293eac2ae4298e123f5d9262da39cba5738a63ecbe1cc6e147084ca0c6948b 19362a897dd78254c9db4f04264eb069e1d3e455f9349b4ff790ab0b5aebeebb 8484afa6f42f225be54859c7067f2aa8991ccc1dcee170f20601a7621b8c33cc 19b2ea4bbfbbd8dc9af12fe21e860de8a6b12d56e9b67f3740e6bebfdbd7083b 56146b42e29191939a40d06d29df9f25b936868ac37091c4dca6953ddbd32e36 421663124c3f7d665a3832b200c052eb15a9d88b4602c1b9df1790eae5a69f55 63716b24715edb2719d65760cb45cfc6c9c9aec1360df7dfafa17c0663eede28 766467b2d131918b4cc40e11d6985487901920a2749bb5a1ecc25994cf145da8 6458b1b1800474f66fd88c49a5dda2c9ce41323c7fd38051b5e3782512da2fc3 42136175fc743015551ebd9bce8ea2be40d805d37ea50e4c4c819276aa835d7e 236b8eecd87f7fa04a754c156c279e3500747eddea3778288a39f67508c0e667 7c852d8d23a6b60db5362c01f8cee2882c3015d39ab30c67f70d9dc9fffe79c2 68a5a5296e23b6349b186d9fc7a86f0fdd5f96914d3957bb3cbdcf5bff02bf11 b3a985212c52f460339fc85b58e7513082ab5b21171cda7548a6315f39f4f705 293c4bda94def83efe4edd934f119dfffb1970779ab113f95f56fe6d38a72a4e 70547341652ee0a6e662fb6a869fda5adf844f5e38c5c1d6aa389004de400648 5926d11947f3b465352d9bd875be8a94d7e2f889a65b313ecc9cb3619cd34885 5c42d94e7d0b3653a17205b47bbd33df5ea3f94ed89246d7e4aa4eb478c3754a 8a1f19bb4e4e49ffadd8c5d8d9db4c4b3f19b22ec24205fba989498aaa60f313 f4677bdf3f9d3c01187777bed2d5ea5b51fe1da8b0d02edb48ef7dd1c77558c6 9b18fbba714173cded0e009dceea5ca552e3d96a6a793a531a611a6600f2446b 3212323f402b71d8dad535c7e629d9a6c3f19a34de500a4d5e4b825ee9dda22c a9cd14a9937faeb44cc266a277c2232959896e3f61ded023f90b340480a71c8e cc3a4688d9a0ea773496a952269edcbc24a62fba35b00f1c540c983604ef4de7 e257988e8812a72fdf18ccab39daefbd826e3fcb6ee232abf58b754e663c1e51 8b900be7042533498a3e236ca2b9397130ec05bce7b58e55b4645a35fa140c9f 195e8fd02382ac66b4d7e595c434c173fdf2ab058c807f7f298e5f8230b3eb06 1a0b50ddcd1f7f1d358bc4fae4d37b4d30eecf365f7e7f129fc9dbc83c30635e 7c54c35bff50238d9f606a4b3ed3f85dc0decb87fe9d28edd6071e14e25578e7 4b90062f25aef0a0865885e8af3a15a2be2d1bbea16b9213b299277718384c80 00af5081853aafcab6e92bce1021a905e01f0d84dd7c9df5929df0846aaf97e9 abc6f7f2ae0b3d1e98ba07666a7836797f8afe7322768ff046a6d155847e5656 b6df52682756cb5a64387f454b23f682b6483daf541e8958445ab37c2fe3d0d7 d1266747f0caa80e9bc4eb3b224c97555e41e23d84bbbc9ad7737dfe1afdf3f4 b4d3cd9aa3908238d914512b7951df29733bf9daf0c74e3514a614f4cb005ea9 87506c513e1912ba36bc1cc666b7840fbd39e0806a13a8d86e0f38d49bee76b7 633352683ec5ee39c53608f4f47d9f3a8efc2c505b491b3c8eca453f79777efb ad740b7b3f9417868c063864e0223d767eb37b6db5b6abcf85c2e44f8ba93d68 eb8f2b404ee45b7ec0758aa9a212523f2456733b55adc4fd95acf78e8ef080d9 549567e247be021afe4d2c67e87feeea62763ecdee4cf2add3dacb32ba710796 1fb3904f3b6bc01c2d8bbec67b751c2dddec109b1d81ac6da6126e11ec6cbf75 5b056193c9c637ee1563b3c858228d42d3b5e09503ce86c0bbd182e64e0306dd d836ec40985e40a203c2756e44f61e4699dfe36e201f77cbbb89ad0a13581505 61a2a35f644fc14771c4e7329416aa87e24432c129e60b08cd2ff8ec57f40eb2 c1bf02ee8b199481654d1518bad35ec528bf175c1b840c5f318bdb99c14ac628 870bed1ec70da7268ba2c6628affba299f3ef5c0a103f08d094d75e99dae506b c804cb6eb99f95e666fd2d44b08f0ad6bdf2d09469fb5bc270ed3c9c2cdf7bf3 99103056ed4646ccc1afca4a6f7666c9eb6f753aa8f112f45d90193223045316 3917b04210f911a7f84e1828297e8aac822773623f1e2f4aa8afe1b261b01c40 027e548e70fc0451dd5c9b28bca406d570e033e2253299fcd80385f18eede32c 5c07ad4e58d5973775926a9aa2a9ec1157ed3e40da7288368d39c1909d8e8b69 fd389b9b690c043f7539dd94187332e3390053c79188a96d2125022cea279647 81c8b4300b52b458c25bc3da94958d10227a312824ac7461c1872e04dffc7715 47e6dd241399b3489fbf1d009452a939acf81e5db5345f8b7e9d92ad70993165 52afa5d936108b5467e94c06cecef774ebe096f28724f3ed0d4f515b65c5c21e 4ec3205aa1287624dacaa469234fbc2608052d78bf034d834e0c89ff251ef632 a9b2d7fb4510933771e68a1087c047210427fa78a0f603fd05e2b6fe178e496c 06a6efa8b6ad0e18a999ce090849e6eaa1ac8f21ec955c055cf1cba1f1c4febd 18810a8314197ffedf07af433b46e52cbec984d427b02e4321e8516dcea69992 4c979c752acfa3104b99ae79663a9bf9e9a6011f8de6f96db4a5f119995dbb22 5962ebb0c0643c949de67e1b58ff7942c76e1ae8f461be7ba2f224dc234a6ee1 8c8356a94e131fca462c3b529e526f5a94936b50bc3bd5a78c038b4bf2e06949 1bf74f3af49f52d1c61ea98aef0a9a9fe925251204e75dab69b53e8d4b6a883a 755b24eda21f4764e38fed2d2f55d44803694c8185a422daa5c719da09fd40f0 be4ab89505564607997127dffad864426391d2340419ef67f89fe403c37d42e1 8b5e258d382488db4903c3655e83db9b6271a47b23653f741d0bb10d277e8869 d734f4c08ba754927046257972e3160eb9967a31254e1a5db1e411f783d81d03 6163d4689300cebcbaad872f6ed8c551888dc125a83feb99bd390011647682b8 a7fd3808e58bce2f90a0a4cdb78d76a85a31993f1b3849e1b5300ffc8bfca458 4eb3099a95d685b546c4636561dc1faf4db8e1ee720463f5d07750d333d07cf8 87b716eabc7aba49ce1962422e794d54734354dba048e0edec8d70d43be745a3 4b25de2a540539b379033ccdb429ba71dac5b01e076fc7eb0637b818bd40ca67 a62ab9c41c8bbea82d38c1c6d9d512db09dd89d70c93e48f182002502070c30e e2936cc7b705f1dffefeb177725433c1f248aea503c95d3e8f771dff33fea326 3ccf6b6feea617fbc3faf8a86e0b59b26793297df033c281b8ef819d3877988d 5d7955eec74f437ad55efad232b87d5cd17e8e101dff24fe9c365740edcf3072 0a9648ca34d41570f2805ac4eae67e50480c9bd6da9c4bcd9e1262b6b8e65ac5 6399025efaa961ad9e8120bed7991641c53e14db9d0562149a8e6086ef1a654b 33ae1353d412e139d24303eea1aeb0895a57bc91f838b3c01ba26e641e1b6beb 6323c3bfd24c0aafe7c38d575fd277dbca3afbb37b0a1f15df4f0fa5f8d4535d 57aa8852347bb6dbb53fd1316e08fb69fc7b22ef25839f49462927a2c8ff82b7 ab0dd61103cf2895e4c0b5d14ab620a23df9bd3a151a8f71cc817e8f54c0515a 987bf1e201437413e81163e767ae7790944c640b8684cc1bb9441f5c387f45da eb352a18b949b7abfe692d372af08948e0692a0664e816c3b41c1686fffd68e8 c52a790ca43eabf000e92cf84efd43f709ce41ce34add3ac5db5ca6fa242fb7c bf74bfd747d8114f177cbd9738b04509ec34919bfd5a221560c52a3c2a8ec5ec d152345ae2ebb9211011a38d1897f74feac4fc360081b534f41fb964b6e53402 e5831ce6475d1efd6edcc108cc90b61b557e4ac9a3d4af6863fe20ed3dcf5c2e 4c887d6582f20a8eb905c0e8b56660475bf204a789ad0815898b504ad86dc8a2 de43d77f5151602b42a79588d5372ce5a82b4d86390e41dffb1e623faebf4a7d 0f262295d5d12354e00c5c7078e4aa1833699e792506719e49a5edcd72da6393 856f7a4299e5c40a27c7bdb7861fd960f3f4a1a79aba7f8d0fd0860331ca9a18 96304baa5b3272a1c8565fb43fa3bf9611155de36406c23d409c0c9557a2b287 77d5bbcdcce2fc0e210fb56e527a18c6431edea130bbb2bb2ad334f1214800eb 848e8593aefb4dc339b78e1deadcb8cacac09b618f2f6fcf0e31104ff4472a7b f97206d4d11b43077dcc5319078fd3f1ac11fe0abd5301f8787dbd7c8c6b9c48 52b892dffb4b6cd0a34295d1b1c5ab8e38c51d4af7a6c45c6ddf428a54e8e781 cd7e2d5170c8ec58d50c9a085c5f49bbcb0be90ba57ccd173b06e764ed09572e b12f62bc1cea58038abfd018b95722f06abe338d48793f7bf044552c5bceeb5e 85596e269cfb18466fac9860db35e57f43617834511b28acf595c5c30ac5f4b2 b1c5ebf4a2e939891fad20cf5585a23e5fe8925cf571130d1aad8d6fc8aa2880 c2dce9cce9d608ad730ff1f5315f48cfe76ff534ca367d021870dc9248da30b0 26d8255f7e127a957661f9fc50bbc24fd886e394f2d1e353a20532d8829c7260 9764fbb3015c7ed5f89492c7bfd5a622e7e759b212b8f496d8c7001537b8b702 e9a7c7ed3fba83919a0e34ce655e5652ffc34d2895adc099f73c72218b4fd819 8b4231eb93edd395a569b37c2e8e38975f6df0167a5c2323cd40370f6c7e1171 362db2a4237b6765db61787c5c3510a34b1eb13f9060be3c41a01d926a724bf1 b4af29e846d12ba92abafc1b862fd7d8159a2e4243a410ca7bddd10e50329feb 2c271bb5b9835086fc9e89be6898248c9b5523eab8bf702f78359bc436c6ede1 b9261884b7f2878f442f73d42debfa453b44e366e8ada408aeb6ec065b558a2c c74ead80e2e26063cad16bed3442326d2ef4b89a4afb263cd84db18892489c63 d1da3942068feeb88f2c86160e173f6b50717e75d04a7eb4f5225df9b72ec04c 6417ba4535bb32744b76cb19591be0765f8011297ac5ed8a8584394b099600d8 06dc35d58d6cab4aa7107ebda243705de538a983223ed938cac62ee46a7c9b75 8d3d7728911a39ccdf389a4aad5bd7a3950d7d7c387ea3cf7700654d897ca03f b76ae7861acecb6c7d467955818c56ee51c8cbc7f32b8b53bc58298d489f6960 ec7da6dc5573ff340801cd93375f3488fd6c47368d9b6b3f78eefbcfbf377de9 cdb5e3c4c49b75eca3ecdb3652cf91e9a8c6bf67a870d02d7058d9ab68b86add e6c8249be532cf22a009396a23cc3be8a69213df1f768b4f52a179645f5cc85f 49b2c5e92d1be09e5403b01742ad746f9045e6f8900940c0836e7afb3588be75 555c57334f4a08e1de1f5eaead1455a8a0ed7e3cc6ea1b56c813669f5cfe2fe9 6140ab6927bcccf00a98d7479711aeb0abcdbb56ea3cf510607ffccb7bf0bc59 3a58ea262b9470718f013afa365b1b1fe9853e41aa409227a3977a0dcf687c91 7f03e07e8996ee8b171a37b62cbd1cfd9373300014a65327b766bd952cc1e3ca 84b852326c416e1f2b61dc768b1c645b3c55919207128d415303856543de90a6 0060e32cef7306c5f5a2019c268f7d98c9137bc1bb1b4918268e4ca03d10d211 1c0993f2de824591a3dc17e238ae6db7e28647e738b3ad7f38b9557bd947389e b4d492ba3f133ce112fdfd210d0d43390ca94dcf9bafaaad91f9dbf649439eb9 9ad06748ecba75184aee8f8e8f8fe6e61a503fe3ae53898035f2e5f469129fae 88bda8515d402b378531cc7a72a9ee338b375dad1bf66f1092329c80b5e70d70 ddc0d24f80cceb41c520ef0d1f9ac6865a8ee40ec38651d98f79d895579ae6aa 7ca70a9d6e37882a7507b726addaf23bd7172e3cdc8dba0542c48e0c95abd110 b269975a4919f5bc6fc3039edab13bd782edc9e398e37ed01c33eb618431f2d9 b7c987e458833b4a75e075c15a558df40e1d39d841987a390f61e482142d2dfd b872e4807f25106c1b85be9a961f47bbe7213648e1d708cf925a84abb89db371 4350b3c337ccb4ff5d8f087de5a340ff5d6019456e8d9524f4f33163bcb37a9a 946ed0ee1b3f80a0e5f21813d323a90405d2b2e5a5f54ca2260c904c4082aa8b 3a3c96746c404ccfa2433c476fb95c09a3018392120e3ecc3cc00452c1b55504 cfbd73b315aa06498fc3c846b0cdd4b09fa38618578b6364705b263b7aa49364 91965850a2242155deacdea51713a88c56d000512dc24d32482c80a29fa0dbed bce6d15502ee76951c61afc12fb544429819d6584071f9c885b7e66beaf6e055 eae40496a0d2ac17637b11903c04bb1cd3b2bf1429bf7fe0e151689e2fa7e99b 79c30ee7e705c5b7ef2d08962f51933507de6964383df4be973107b717738502 2686ae83c4096383811c2149795570755741fae06b791b71880a2afaacdf8cd0 9dd4ce7989acc4ed90dfc59eae95cd8b95c43a9d0a5d5342f7ceb6e471d2141c 9ea5995096074b783593a931ab83eabd5f60133f42d9550292fa8902001bb953 61004d81d811ef402f20c8b6c91bb4f7f82e94a596d77622833bbbb873b81f42 b1cfd2a08c3c93709953753f7fdff250c11d5f888d4a509cdf4d37c08a934df5 f0242ebb76ce6e6035938ad737234e24bf42354b4c7c42d5d1273211efc20b62 489748365423245d010d0515ce683f86ab28f97d70f10017363459ed136683cf 1b22b925a8efecbc1ec08e9f3de7b0d4afe38b679c8b16c35c464b4d608b1549 fd86ac3704c906211fd238525d0c828ac3ec935e3410a6185058629b22a8de47 6a79244e192dcdd73f89774ec527926af4c358f24c65513246cd2466f4cf0f16 cb19531a9b7efefbb3d676e940623092f9d4684e244d6b07b38c51444159d474 d75196fd96d18967fb1e118eddb0b24debfaadd20ee8e0053198dc22e9ebc742 21c38a3c2689200363e1bb6237a836efebe2031eef2ba1f03f4c6f4b4ee88dee 71b154f0db7f079eaef7538abab2b3d1f0a1a93200353d641a68a0d68abe9291 9d4242b5dffc3c7f5d082915dce18c4533468044cc428e90f0091bcdb2fa5035 d62a4ffc7164a192c99b79e26871305cc4088c9f8b469b38accc441a026b79ce 9a8d42684eb7828b48a70a9f3d0e07806a3efa287ee6b162332b2f651b18e495 c86739a0982030d7389d7c03f45e41255fd5534ecfa74de69242e122e6dc164f 1c55fe972b0dbb1492695fb41b5793a1fb472523a1a5c165b6efae37bc2f0ab8 1330836166ca3a6774ef8862e270fe5f2d068356331108396b973bedb817acee c06f44f0897dcac08ab616c1aa301dab436dd05988951b4355189dfb873ba804 3c256481769320e1d6407bae27af98b3bf205c2118ed8fe2b4bb39721ba2370a 3e8d16f3480d51746d67691d34a30260ac3e2b9e5be36fe55d271776217e2046 bff486e07dd3376698353b4544b187a5a13a4b501e1be67d6484648e559fa2ba f26c829b213dee5c9a0662f4cc1970eba875bf0e082db27a57871632b8c312b5 e3ba46e8e2fa06cfc6fa2e72cdb87a44c823b374916da3b10450140a63ce3963 fbc10796ec85d6ff35c99c92ff0e634e40973fd7cdf1e048639e7f7543c91c51 494bee7ba736cb764c317e630327d045ded01de51899a9aa0f031bc7e3cf249c a9865f5f9a7e4c6b174e91a538e25288367d6b129fffbc2a74e4fed634363a2f 408b5896ba9f892926e7f704c7ecfce9b88300a6986be12443b9bc937d2017a6 759dedad4b51a73851a1dc37108f4937e3713a4ddbfd1f0201241f960b719eca 980e6a0f6fabf4e50329475a7b25d8c679f25e0ba3a9edc902fa60f805984398 90663e9f6c23885d591d1f976c1708efd34c8f6aa22a288197ddaecbf06f86ee 493c44630d318766c14cdf1670336dfa83f8cd3b0d490a85dea0a49b884e4f74 b3c0424a14e0b096e43e47a8d850bcaefd347a2a6c453163c74bada9c05eba69 5c2d6211c7bf955f59815649b240f5f1077834a50865af5a9c4389d94e2f8f1c 2ee7fccdcfe538088dfb976cfd7090e9d3d3a62c6fdbc40fe261e8e6a8ba2723 0ef87302a2d90bd194aca5029e4477650ffeef137dee424e0168630f225eb39a c1e9c95ad5f4beaeff221438cbfe16a286f42a61378613c30e257fe49cc549a7 6cf7a9ba50dcbc74c7e45d47c74872b9c86ac204639a3f632f90010fb3b21053 48c2a704c2295be328a9e9dfedf676fab763e832b23f7d491018911c23402d34 94b0afdcb7d7aff9d6dccaaecbdff2923251ecd6bd5cbedf900f5279291c6c63 4a210c1c0ceb6f6063d84cc30f008c75ed040a42f6c5b8a891636c6770176682 a462d59788e039b20864e84d2110235ccf34913e1005e0d4823771326fe1dca8 3b45b3b0bdb6599d46bc5d528f076b71ceccc1bbb10035b3ff65f0337917ba23 f1f7475c4dcadd9b83b05fbae981ebb0f1ba1e99bc077e0178772cbf90502b5d 67da252038927ddcdeadec3c31f580c014253673adf9bfbf6e2cd220f2 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR8 %!PS-AdobeFont-1.1: CMR8 1.0 %%CreationDate: 1991 Aug 20 16:39:40 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 13 /fl put dup 14 /ffi put dup 33 /exclam put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 63 /question put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 88 /X put dup 89 /Y put dup 91 /bracketleft put dup 93 /bracketright put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /endash put dup 127 /dieresis put readonly def /FontBBox{-36 -250 1070 750}readonly def /UniqueID 5000791 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf 5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b edad3b72ad63c2918b6e5a2017457e0d4ebc204b094541f345ec367ae85ca9bd 24568a01d3b9f8095f7420e6c423c414b3dcce6da48dd1c89a56d078e0d0e2f2 62a13640a06d17e44ee3866c3471fb58fedf5a3b77294517651c16bdd7267d39 a54e7171752dbde63ac19bb4b3021ce95eb5fe67390b09ae4d9ed4d704a67443 f55dce17acd996c1f5e023c9e5a18cbeecc3097f23763acb86cdd7cd13381ae7 4e48495ec7fa520539d87f8a8dcb3c826275469b6800876a457e7d1e5be867c7 b1ccad69742a8c9b0ad943482bf2a4ad0aed40baeb69a0233bad36b4ca2d2da7 322956c70375d152653500b2f22d2ab6990cadde2da14b4917f7515e64bc3d96 bf775258fc7dae4e42a4c9b6da8eddec4a800c8aadc8d75e48cae52137e05c03 677f5d6a82fa46d9f2fc7f56d62e5c605a1b7898b8d1401c2cac1a0122a2c8a7 aae09607f2c5f29293a09b9959399283be89051452898238b777db9830ff4318 a298b221c4a820c700ca964fc99e6b1d9eb0bafc39be9aa9dffa2fa326b2a466 1e67261bb3dbc85844e76f9313ab533ee16bcb478166de5502b68e6ec1ea6110 f53206cf1cfea419571b0243244b32ea38b828a01e62b03bcf476a32c2341cec b8a0fa2a3f3f339315d5f3aa7704408f6617d0278d5c892bb12e35c9c7c11c20 a6ddf5832b2ff46bff9cde62a884dd607933864f6e1e9e2899faa6f2c9712eb5 22f0e723416ff6662065e9e132ecfba92a0c51ae000c87515df4d95aa141a0ee 5e16a5f3f833aec3b0951bd68b348f65df291829a67ee1ca79e14902eac1b912 6016755a1dcc184c6087667bc8aa7cd79507d23799c678826d169c172a7567b8 b783af25752af5a7ae470e8076782899d4879c8369eae52c461c6a0dd23db999 1f761be0d12e4e35d089ae387d5811d74a78d372280e4940428460ac0854d012 881ee692ec023dff18b2dfb3444ad8274a1478a6d7b444cd6db622359cd0c159 e5279ab3547f191b23268fe966ecd7dca785dcc2b61def624f609f8c5ed9ba2f ab7484fd49fc5da7ac15e2c578474301a2b2997d9da54d690a46c533bd8c0211 e9fb8dfee4987d883a4e15a7322786f9038c009dc59420c4dc24a1374f47caef 12b8719267797832161224c9a2b0b2fb07bcb4b2366e84078f056815e86c25e8 d7359a168af060ed1ce4da16e7eded261ae5a09b4be2abdd4e9e76a30ac92e34 6d76ef0e05af8ae93b92e19ef3aec7d5d9537fb1b5563ad7f96067583596f537 144a50b012743db065ec9b1c7c2f9c74fd7b07ea402985153481037b7f483642 91ed8a484820cc64c8a67b7ba571efab321a28c28cba2a5afe2daeabb92c003a 180bdcd78ee135c4c8e0e0cc4d4c2d2360d3972b1e79f78da5b3c4a5b36f4a0c bd2ace9ce26d247e62a8d4f8a8090508850d9ec9ea7ad0e5c07a726730b91141 31ce67aac18fd4e93eb6e54dd831630962be29c7e81c66937f1e489e20257e9e c4ae7178861bfaf1334bf8fd0995c97a0c9db1445e4f19259149fe09aabb0349 7da4ec32febf1c5af1769f5d38cddd5c9ffcfd6ce1fe1df7f36488a0e0337bc5 ff7ae5e4740f6ed7bd7e6e1318169c78eec341ef61eb845968485a5dcf2cbd65 bf556148db92801809cedcb6469257c049c3cf2c8a48928fa062a66c70cd6946 a180786c312f1ba4f118b7488784592194887231682b38d19fbfd4e9fb81caa9 c9653e4ef5ac4234e5db9c1aa644e4cbb9d5253b5935d835f5ab4221e2e5d8c7 471850567ab6e0b884bb59ba2a6909fb1c742cab2a89012093278c768fbfb7c6 b10f20780c113ed1743d95727dd135a297202b1d5f9f58821efb67569cd7204f 6e1bb2f4f4ecceb64e09687ec8ff0fa6689eb7d66b402bdc452bfd2088446ece 01af0616b4ef422a30f2eff66fbae315535dd56a6991cb761200243d04c571bc 41c1e62aeb2dd863027cac42d4aec6cd5e05d98072771a088c94e1118cb572a8 7a4c2ee349c8a9f878e016763548dcc9263325825fd00b92b72258a03586b7f6 a4f5723b967d5f6d4b4db350788a2e25b54d3474286291980ea89128fb912050 ee176b08bd453bc5b2b3e0bc50ecc2fdbf70319bf19edacf4a54505a2aecd4bd 8f5198df945f733844bbf83fe45f02701c3f93035fe0cd5306e1045008af0998 fb821a04cf4076dd70ce22a32e0304463d48c1eb919d7c7cda9ff98a44c06267 8087ebf7abf0e18b1b2257fed3242b0ea9bbceb31eedee06086a87a65197d34e d519435f14557baea92fb21a191d232ed39df8f394dcadb761ba6fd402a5cad6 4844888a25af5620f15d763b680bf1c4e8797abb7a951bbc16e3b3ee8fc891f0 105f0ce35e342ebaf99bcf7144b86e181daf1b66b62e962d8b29dc6198c62b60 17a333afbc0b3f71b713a4e154b19f6a855e72fd1b3b2f38c527db51c833296b b8d8ffd6b5556095f4a825103d073e5370f32c4ec669d62853cc9966c6ebc7ce 8a6feb2a692b993d13e18e2a56ac87705c95814db484628588206844e3c25655 50d8256d95e042853e8e383144e0471e9786489a677a5326c71d3acaafd49a2b c00e96e5298e52c9ac808e59927bb8b60a6219ea131e80c70a3e9fadf8c6aab8 4c4c9c58a5a6bcebfdbcefd958eb00d5ec1bc6d84c22ffc8f7a9788208fa0f82 f36fe6f2f8d25feaf3e32a243dd851b754a4cf9dc59e1e57b9dbb20de94fedde 9db226833141083d3f7436ca0f48730eeb4dd8d8a09845f7cda60edef54ff67b ac9de861c0216f4026381cd83d0bd9408c4b673bae8a0f4aaf951ffbc37070f2 7ad04e62812a32471a47f8bc3db5140b010e5d694ec0ee27db0aa1a33d68c797 019f1a2be0af3c404fbd9c5272d3de61d436dce94fab68843fc7ea3a01c95a43 3eaa1d5285cde98bd26632d8ea6a9fabb701a3dc0cc9edeeda84e488a6b03d42 ab074066c5ebc034af2452bdd3a0508a9d4cba4e936717bd958617bfa97e8d21 daa86110ab863682631f7ab1a080e3e859146d31c4bdbebaec1c01e09caf559b d8890e79d7ae9d1d35fb0dc1569863c101ef1da09b5d2fa57da08c833dbed09a 122837039faa99457d134912d6c4989f0dbe02e81651b6480f524152bf6b6a5a b747dea7817e1def94ffdcbbcec38553083374afb4794c62687d5ddef4b03aaa 05db774ae1ff67713450a57388f3c09a36153c9792719d9a2305e8d1ab1c79fa 6de265b314d9cf2a3d5b912a7ab7f84a98dd86b8644b3f6fe37a6d00f78e1613 866edb4aaa2b51b42699a9926651bd48ac261953ffd09dc2ef961599ed2a1a9b 3f0aa75ef6c801e8465d78af3a914cc868f19e029babedb412b514085ddea288 9433d9979bef8552be28e527ee373879633fd09c6d7db5e38c0ede5711f6443c ca3678a8dff048179617474fe9670d7f88730d6a9a3e7d4545ecfcfb7a7e480d 220a2d4c4eb389f6d70a5abe51b7123f467984f4c4e86514eb3df0b25d6d03eb 0b32b998a988bfd3da1ff34e19ae2858a998a14bdbb20036d52623b94933dbc1 6f92e63101f4c909c0c294ecac16804e067a1808f6d70963789f08fcf39976f9 7f8fa4798dc00dbaa17cd6b607efc0fcfd3151d2962bf30565fc5297e78dcfcc 08044788f283f8d057392edd717480aca3785aa68b6438a7322e96b9065a0cca 6875c6ccbf158316c7c20c670beed67649ad85e9a90db1b00f7ae7b7035eae95 8a5fc8d740484dad405ca53dcaef48f20f5223c4e2fe271179e450140e31ccdd 7881ee0ad19a41cbc79f44ca0eb0993648839818987b8ca868bf53549ba1018d 63effb92d125d514e5f904bc7c6a6f8f71cd95b15190439c8d7e1a39c2043d22 d15c84dc38da202a0818195f3a00df9d5b1df0a70ffac58e8a04d1baef96c53e dd2fe5668bed8d29500ac0ae65ee720f0fa68d7b86c8d287487cee190f096c80 5d5b57e1f178b5866a3f896869b872ba93580b818302c217fac7e5c7649a2d2a abda65ed607fd781ad48040ebf4c44c12c06a9f69b58473bb52669a33c4ecd21 c897d47b7b0e236b1778d8d4689821746feddbb9dfb7779ffddfef27ca5e58f6 5e011e4c8684068fb9a424188327974e6cb64c2574689b702df29386e9fefc67 1e22d4d75f3ef9d2a9c1fab252032705fb647d034416bdd5db4fd514db259f5b b64c8cc2de7ada0aa639c2bc928dba1ead583974d905fc683830b3cf8a551343 126460a728e957942b8b0351febb621480c8f2ac7c572b897abd3f9a641b19f0 fb20b2d41312ab18ee292a82cae55536ff098f60109b4df669e6f38aa41321aa f23338d071f2a8a8337ba001cabe5b81c96912cab4307f2007486057e96ab64e 09d3f6ec5bc13b0c8ce18df49e96dc90f0e72c0e2d9edd177fbfa08a333a46fa 2a0216f822a82a317d0e0c15b5518d46f4fc858cca8063fb6d7f867b4824287b 0862b822bbb64ed4098a5fa01a412d806932db641120c3252d1ea263bf8867a7 938fdecafa7ce3ac83f4e4b2ed6537e7cfa471f2a26731f825faffa0df909bb3 520b5a0782f3726fa420279f34fb2a3a60cf063b80895f0e61979369693fa2bd acfca423927d2fb5d60c80269c36cd17e566eef5c8d905373d16f9b9c52f8729 3df7470f557b9dcfd76078780675ab555141c5763f2c1214e53c3d6ae4aaabae b73d303fcd737dec9d34f4d677dccd80ba09b6149dfee2991533643601da5a8f df456fc1994eb8b9481dea214281ba66f305a63be5ab11417e514f4f21f6f075 134f31400d43957aa88c0be43d179c9fca2505d09292708928832ea4365c0255 db76d008efa0339bc24840c25295b6f5d42cbd3448aa7add3058827daefde1df ea42a7a302825f36189467e94a3423c561c9f8f5273613bcd2c13c5e8ac23f67 9cd038363d58e6be4be9f8c21ec31ba3c70d700c96a40c0bae924f8475594a81 7adea9cadbda13b1bbfd1f87d44692e197cf347d827e4dc42fd1040d573f5606 a38acd46aa7523e818a6b7b4fca9a50a36873555890774f604b15124466f8f0f d901de6b7eb607d34d3c9d112b4c8f8430e3b68287f4207482c47325a13c1f7e 786c7c99a05e9d329a2a5cc418a185dd37cb30bd269feb60f5626f8b13161193 d14e70983ee4b095c9dd94b1655e53c8be6383a613267b045426c6e162771b47 843b931cf6503fc3c90d9bda62b4fdd3c968f059e1b4e4cb917311a45b4b51bd 0bd93e9c06f7114d7dc94cf209f6b774e49123b381bba6d5baf41d87e0f9d408 a0fe003c5b8db6ab02dff8383fbc40cbb96775bcbbbcf12e004731273af8d660 2b6b09684080c10535868a2ee19b9d419bff345324bcf0b079d86b70c7b19274 85d93ca3928cab172653b37213f6fd67634df9343985fa507ccee595d5744fae 52e9cca4fc913ce58a2c81add7f500e6ab506e845722e8eeb217d86ebc3a4810 473e92a4ef2a7c51bb4c2c94b8b100695ae575c2233e7e1922418006f9fcc721 b539252e871b017bb22467563c4fe9bfa2eb5465c129675411d7250c3345e452 f72f0932e83af73aabbfc79bfc5f1a5d43c8444f45b24a1bf7e07b467377b7b5 496b278f7fbd654e256b52dddc11472e959ba21355aa24da1e344f8f099623d0 d5c2636bc791d92407aa658d5572137391b8a09d4242862c8b5d56555fe70da5 cf97666375c0489027607076648ae27cf8f855e38900f6f48e42e9d2f3d64b9e 61cb6549914211aac3571273d929bcf8997d47690b4992a1494ad4094f0c4a3c cee41cf1a2c932edaaf30d232070704ca3d4dd9ad8c059727de0692caf1af6cc 4e3077d92c94fefd9f58e98893e38cc913146933bfed7e8545e8e5ae3fb6a207 45e41899ed3b7337a538c78a26fa9f0694e29dc7ea1b8968efe783850f307169 aad27951a6a11ab981e96a1a41c5ac147347cf8a1eb0b4e438da0e10e205002b bdfb168a93c6a79683f1d7acc0afc2d115a15d427e2a7b8bb28eb727f3e9d4fd 4c82249dcd45334c0e3f70e1f72a6fb5aabcc4c42685bdf2058317f462ea3b33 23c066d65381513bd0b0313dcefaa4cf7383bb67cbb878f83c178d7283f2f17f 8b7fcb2b66d601e30272de8ffbd683f4e8077aaab76e21bc04534671a7337b55 edd0e5c79e9f433678dc0aed5f8f7b6c0681affaa7a020a59d282142f8d63e0c 0e426b6a80ded3da6545509033331ef31697bdcc92c0f395f69c1f3d55921c06 6cf5319ad67d57b5592deba6236c8923b1068150973366f954230914ffda0fda fc4dbc86b830c418bf12e049eb09108c488f91402e39a548caadf52ea2951bfe c38ec8f803229acf65b8f66a207fd99209647e6a6ad0a4f6f539cb32d77834d1 b53b06f002195365c2d8afca254bee7a002178af2490995b0463cf73c6aa33b2 e6d2090c8a1b6e953ae0f1133d43dc69ca9f674a854eb2d00de22a3f7491dc84 7dad460c4b2053dc6cf37cbedbfb67a11505c03137f87a722db257deaed3abbd efc94c5663eb9e2d3192b971dd4f798ea9481f35576babbf1b96e681eeae8856 c84ae46c2b7d6ab5194bc73d324cb047232e13a97b53d0bcdcbe086c808042c9 6a0a4e4ce0deeef7634272023d071e2f78c513f96942fa5f966d0b764ebd33f4 06f903ac9e5bb6ad6484b4bc480bd71e2a5b26d10254e819528ee273acbfcf44 7fa372284fe7530b6c2f99bac108ea52d44c782da68cbfd5ee471a637849ede1 81c998edc84e641a01967c03fc7a68b7860bbb34f9cb056da2ceaa5139b78af4 5353dcaf7e9591d73fa2ab43b6e8eae2d7dba9e5fb0d44a6cd88beb4764944d5 ed075b71abd5d73b74128b418ed163336b4c89a4fbde325668a4bfe81289254c 728e1cad757e01275e32a253d62da33ab86423c68881172cf36b386cdb87e3e3 0e50f4beb8760ac19b7d27faa5ad2dc72c9ab2d1d2c808f070f0a13f30bf8b7b d5549bef73ff81f78e697b78d3951e26b629c32c3c1032175bf85bbd1ce2823f 3be68f960d273d64cdb481bb77ffc6e118ec3d3aee2165dfc40f3c46bfb608ec edda9826938e3bbd7cd0f03a04f323ef0cc2acdce6f0af76a0727fc3959315ce 05d739e8b156163506fe5f91cec7b77624d87aae9389d6e276d45003f17ae581 d7e7ce3ec4720810a65be674ded82bbfd08cced912105db9550d3830d87ef8fc be73da0a5354646d73eb031cb04c90ef87b222a4d6c95a5bda3a0810e4355618 502a770bf94c24adcbb70aa0389113ae26da4dbdd834481b399c39411910d246 b055bf445011b1b4b85108412128f8d9bbde3c0e237cfc22015ba9d9ae6cdb82 6709a1f73fb2ec81d5f1c2a7f76f0d76976526ddfb8b7cdaadab3df69e4885f2 9c5f152f36a9dc6c0fc15c6892842694bfea528192408ca2b47dc529432b633a 098cc40f854214cf0a709b9da6f712e78b687484fc19fb5f17211ecfc0b8281f 8c39b682b4a1d4af54d9ed09932e9774e39066bfd917695f75daaa28c2c086be eb804b257ccf9bdb19ceba8fc2cd557b285f458694b9f00f35bc9852e091fa0c d5844a605f3c587599a3feee223944a1ba6cd78aa0ffe99a5c579eb057568602 381d5c973b467b71287163a3d7e16b69f72c2140216ada7c4c9825b90e0bf331 75ff0297c7ede51c3060c06b99d1c20fb13babbead62a655ea756d9d77a1e071 e175bb5d652d39dfb800c7ea4be630227e9b77029f892a5191d1ba4d46279e56 209cb98bb110a1efa72f471d542da30d9fa879d253a98944200109b45eee507a 1c321f1eeebfb5941a3ae97e6ef429595236104c088290a72722690ad2d221ec abe035f2d5005ed7f0e7065df637f05d98a259a1aceb4379ee57fe1858edd85d 19ace2a66ce6d79eabb3e0bda7ff0254da38546ec4030bbc7ef84bd0d893fa67 7ebb3c9a027f492d17943eb2eb5cb0c7f24549ae8333fe1a38625722bfdd8487 611fb6a78d51452a82f9afe2a92d6bd0838438a0b9100126d485998b79fd3d14 59bb3bf8cb6ba79f716a522777e707d7dffef598dbe85eb69b008c474057df14 19df365a41f613b444978e0528d5f9cdb16f25bdfd51280993d358c918fe40a4 08166a6a487fa74109f17682ea2cc014d4bb351cefa5e90aef982b278462e59b dcdc27f08ef5e8558f36ea9921634c46a3e33feda1bcc8ba8d8ec29116212805 3578f1449c36eb5666f73d10b19f1e61e271b9f4bc6faebe0cb78409d73eabf8 c1a73034d2a992f2ec24f166bdc5977622fe2418107d2650af019481cd03377b ecdd8d8a593cf998867bbe10f3789788d11ab9bcfad31c60f78906b8a25be8c7 3e6b51fc5a03f2ad5c02e2e2aba7e3d7c29e077f07407ae7421f30ea0d95a9a9 a913fbd5bad5a2b63eef6dc54216d44c379ef348991c91efa96db003ddbc301b ed3bd6b4c29a6b5959aaa767bae5a60e624ba55a0c0c5bac02e65696312e624c 68f053380d7bf78f14d45ec703e3f4248689306872c33dfd23541cbf8d47da8f a085eb7e6be5e084399eb0d68501cec8941669975cb6ab5ad1343b15d8f8afcd 533b68981a52cb66a67dba8386fb7fc5bb63ade499ec39010983a305e56c5524 6a336f5595eea0f2ad269ecdb1cd666688affd16b4e4527b4807e0c41ab7f92a b8a3883079d15b5628d973712638a943b685f9032c1d74ce4c8785dfe4d068f1 f5e7de066eab19183c517ae86277a34e653b7475bfb30e624cb0a7a93bd31508 3e784566fef380b4b0acc16abf6638460bb2c8c1e197983ff3e0ac868079597a 24627505d364b3dbc7891f2823eda07a02d124103cae25d73d13bda6d05fd425 0d2f26bc8a289851039653204423b1908dfab8c9c97651856e861c93b6e0389f 319079cdfadcb16e223c00144dfc9561f390cceb56f281679016db259ef94468 dcc21eb8df8c9775820ab913ccacb39887ea56bfa5d44ddaceb2dc22a87c2b09 df6028bc9882840370b0fa3dbd786a92d255d5ed01a2466324fb7184ccd5f19f d4639cf23b6b81b3d6e77354a98db06037cd4142b74482459a9ef1fb03d2597a 993dc076893f8ae9fb9f3a5fd328698bdcfa5133c753f7927447be36f5b09a12 493842385d3299686f0325d82bcfc6105a48f9ce114c95e378e1bf6a7c74a84d 3037481e0b0bd25001106579ab5a9454fbd50bf3f38ddf1510a1f5f540132008 02c5d5fab6debf23d4af21f38a936f95554623f58c5c94566409631ebe02032f 2d765ea4eff11667a21ea58886fc0fd7784e681de472a245ed38676a1cdabdbb 70fbabbc903ce9a38976f7fcfc374137c9b0e72d85f35b0370b87d10be7e9403 6660c7bde3849d6144cd15146950f2afcd47dac28dd4ffe75cd6e7a768c33458 2af5945abf7d913135f52c7107184034cc53c6a8260b07e7c9a3e98c52b88177 dcc2a30fe1eb6a24aa2ea11da011af19d4e6b6c3798ef0e9228153a18fbb0855 4c216a61ad0ebc8907742bdaea76bb95c341f4a5730cd775dc0e8c31a3cb6c30 14b7c87514b719463c2637d5e9888ef428031e3b9e5bf3c8398d26109dbe8fdf 2faa97b7c3e2bd4583c4acbde917efcf414e5f6ef144d4967f0a3ea3e00abd8c d9a317487bb0c446ada43b24959ca766a9e8f1a8172c40e786ab84927b49246f ba311b3305fae98941e2bf0041e1189e0b08388bc547a800017db6d476b3b2d8 d3a1533624aaa208f0f1e08b50943d5208e57cb021cd890c3a49bd0b363b9ab0 e5269c66737a9051260f33fa185d8860b4a78dffc6ad21bfcdd406eba23ea7c0 3d6a9a6b870cd95de953552131683e14b08803d319f8af0172c3bf066b92bbec da782e1c15d8f61bb0743069d0725a4d26bc0af521ab162091278b990c1d59c9 0646994e6a1f4f6b0f9f4fabf2cd3d183b5ca854ac5d460f5acb947e2b72b36b 876e671e154bab038bead1d474015f007bb63cca7115638ea8a7109a7410517a 2104891268b1a32f3d5c51b8692d82dadf5e01e06fef63a61feede0581c02dad 4b42821702cdc2d8e9b7b6121fd505a08632ee630aa7c7dc602f92a5242f5f8a c5be73a5d5304c549f7bb9186f908bbf813243321968e889fb2c1809f56e478e d57b8864d3cc287252bd6d16cbf7fbc3f7c5af219d1f1cec097b7cf4b68aeda5 92a2b386b3d710ab77647de0670e2df083497a6a0f93d4768a62f9245136a2d2 8d19f99eabca9502671624bf68b732f8fa90261c1a1904727d5eec56403d2e29 adf9b730ab351dbecb7274c4bb4564519960416f7c63c073cf9495f9daf3ccab e7fdc7d8598d7d2308461225db3f92eb376ac3203b141c4899c7bca510de5b61 6d73eef72a363bba00dbdc3fe28d11dc8003b2c37e17be0875e03004a5f8bc86 200acf0510f672483062d223a3cc40ee84d608e4c4c6aa79db2d2f22ad37e633 b3889c573126d788052ad78f9e9db7fc9f39019919e822953ea77549a8c3a880 af1c125325a499961a1928978e6444f4298d78e29669e92a88432b5585a98cf1 26a3a21e47abc6a2c55fec2b694b898593b0091ee965b6065e1ba092374ca362 6ec8b3cf5b0f0378ba29451954890ae2d04bac14d7e0411653d30aaaa3f101fe a0138d6a8f3a098d3dd3bd6b385395e6db0e4c1798b31371b802eeda241e4562 1481acc34d4fb52c09ab79878e13fd777637901c33cf1b2cea84f141e8f279c9 e3980a684498b1748264a0c2e1b377f83d894d38fb3be36a2287feb4b93f602d cec4c0f62921a80ba7dbc382c446d33e5707617208f02bf1dac9603e426e7a14 90948ab5bffc71e742368483608a49a247bc162e042647bfd4286047849d0bd5 df0eb6f7644c9383940abb8b8f279956b00da40d3bb9562b35c8ce3bc1c347a0 72458abbf9ec356d9a8046177b44d4e471557b5b8903a5f4eecd7d43b90aebf8 3612c6e489ffb8e9b702bad6646742766d79a6fb2682b7ede114938d1126717c b793f27787ee4a135d1b280046d00200af69f934f2b5d240bab71ba9c742f26f 58326244ccd5dba9e10aeeb690864638943273c374dc08221df9127fc8f1c25e b4be848c184ac78c5f5f11d83ca22a297f9c4c50f29e1aa014a9de69a9caad99 acefad4296520ac014cb6fc745b1cb944d3f50d1a5b282f2933b5c391e5e1d65 b4b7de82a0fb6db225e1e3eefb736b5599c3d11b627f951573248754637858cf 198eaff6b7c91067efb57c1fe7ccb846e9b1c8bce3ec55966c3731fc4969600b 59c3033548914cad9750c1cb6e017b6c4bfef68c8d9cdcfea311e64918453c1e 255ad166012644783fc0f211c8a8bc5243284cb8b6e1e80a790caaf4b34dc4a8 4d1bdb60f107e85cc88d7a51d424211d6ab85591d0e2a0a2022fec40d0a9b89b 367f2749e9af8bef71eb56f2719249aa5e2e0b221033847bed62f2c8762c265f 304c392f40c0fc213c53854ee2ebc215899b2c53164be707f6928b136f4e7f03 ca3c641c20d32342bed53277ff41a73ab38f536e9a11bc6b13a77ee933ad99b3 598f259de47145206167d3408f56c1f51c9bd3d6f6ac56d1672126f11e9eac61 124c9cebaabb29e4dfad1a8dd450c18b3475a2fc3e980168e05124662a606aed a90780e1cbb72007f2e0d6a64a84b77edd30efcfc6a6a8e1b47429b9167f0a23 893d2404730eebf71adfcc6d61a6812e6311156981f56786b1f84ad53058ec3e b310c70a0d5f8cbbb293e1fd4215dfa8ad14bfbede25b780f8b3c9702ae9c7bc 20dcc1885e54132891d4e117eecd48c8a495057aa98df957ec00914c8c3b1a48 05c090f87a9b4824216dd8be7a5409bb7607bf620d15b11518fc141a7354a28d 0e23ed4457fd8c34210ec5168eda4762bf0ecae0deb8fd59c51a36693104c212 1e11ab57249fb1018e1c70d6c4527fed7edfe00e0c8ab5c76747df4834ecb21f a02c6aa224f260402ce6899364729941c3831abaf88259d64d2e42fdcd2e3268 0764f5fbe3ab364af87be4805afe7eaf44b01f6b0a4dd83b29c2edd104fc5d23 cca776b624ce10ea76fe53066d90332aeebe5f8970e56ffd2005f854c6351c00 83117ad7d9392252c22bff7d05766a319fdd42228ac3d1e6ba4618b4664ed7e6 7c2b5d9eb3e8fa0cb2fbb1463838a84c9ad0426f8885026e54d966b96354a6ce 1446514c188edb271ea156dc6fde1928eaa1e5257896e31911d8cf8a971cda8c 677a236c0ec0cb96de03d7ec3afcdaa21fbae79f0fd34b6f424d16ac6e5715c0 2fe6fe587ad60a0358eab537a35b51e18d39fa82a9423f78964328cc95aa4661 b7ad8d37ef11ab404e4910ec70e7f28d0980e15db5f557ad98c041066a67a8d3 eb57c64a0fc85db6d450a167bf4938344f22e6626cb4113bae35388558ca6d65 451babe56ad6f8c8ccee2b70f1f0e6ee8e47959c9a7cb9534712532e4e3fcf72 8ae01320a8a181bda92807a8ef2db05718abdd0ecf77ec2dcf2a9813b636bc67 786081008d1ead15bd4bf41182f84abd83ce019d516686403c51dc044e433f15 efcb5a5b1333b2100221345a2c8f72336c20e7c31201f2603b6830d444a99f95 1103449a968a54cf1a6b70c9f695917bbde6c835245fda0d99c231b12d40692e 569a6b887ebeea21a71d9eb9ef432004f84f3ecb2d77230d48b98e0a96305a87 31359399edb05964ac829cf8b982211853c7a18953f80782f5ad006d2cdd7224 f31fd97805505e6c77621bb24a78ee51374393cfeb078720967e799faf56aea1 f358dd31c17cafb850341d98c1e0711382589d42d6a8bc1059a797177487916c 23a0fc0b1ec41288e0e6211da146de4ca2a215906ea79f6691b5fdcf2700c9a4 7f782f7f074b1b12b86cb97558bbffe2ef92ef030c368085762ae9f24a839cb8 4da6abf6e3454ae95634a86913c56031cce92eae3929e0e94cca1fb123913bf9 c0f81297b9229270ad9860b1d9adf0e34683922d7aa7bb4d23f4c94f148bdafa 0baecdddb5c754071a8431ba7ceae3db238fdafdaf5446f45bc5844780ef1010 2df98fb32ce9b0d84074e73eeaaa7dd1b3fbbb05c8c7b3a3cf72555f9c18394e 7102fff5e98c1de94ab1a308f16b27da289317c651cccb167f56d6f837af6e42 916a505ed9b444dd73692d6c82aa93dd289000b75ba8c8a31e2fb21c85d488cc 55b4b07d3a25ab0e1db32efce8372c28cfcfcfe3983bdcbbbef315c3f06fd3e8 45cf974d611d3591d6f9cb67b97aefe252506e99217f32ffb2b94827a56b92e5 e100435c4e6f455e54dc05c857368cfe3a1c06b3e891b7f1aa0b2a2cd949ff62 53d674159fece337ccb3f1f3b527fb35dbf5d4cf997aab914c955eed7647781b c5f205375d4f8db21f2bdf3b138874a28bef895fc966b261fbdc29d00727f425 6a47b3a99dc6e39d298bb897fc1aa621218f3e73522339c3136c1d0dc0ad430f 5894d134751fcdfc922a702a001d68986393ac562f35c27e4fe53e41a871a879 c46358abf3b31d2e68c840078c9728fa84965f3de30e2b43c70219aa63d72f58 d6b0f8dbc05c785ce499fde17091d94216007f8850b3effebf7d65e0343c09f4 5ce2752dcd62fa547abf5559468c17ef5071a07cf93d4ffb08fa3e67b2fb6e53 2ef89d825e48331e15bc550dabd553cfc334eb356a1b5ffae008faf09f39fe14 0b5dd8c7e8c02ec7a4d732cf077b978afd14ed3174ec16411010293e09c25779 d654981d9e5d20f35cf632fcfa99ea13e652e4afb728f1c8addd9379505ebbac 895730587f30e4e2861ac3d31a5de9a40ad39a64c822417e52d22882a46d3d73 8af493425c46bd05149bb13a8142afd5b38f309a90a11bcb96f443b5f923b276 8a6578ea187601fe734f3e292f591a68e77946458910ab5d100244819d498a89 a0b4b248a9b1e787fac77d6d9d6607605c006252b91ce916235a6c15adebbba3 a1b7e39ba87387e18b305067ff275a77d8307b25485dce34acc6fffe92a5a105 ab737aa10275ef6493c05a5a9c7d8b4ed1e7a0d40b6eb777d22b7463472f7352 dbccf9d2808ce1f3cc41e5e094668b0a4df13318dd1640e25ee271c444d09a6a 18c9dd63b8382a4108aa8504e90ecc7ac54c237ab472d2dabf3c5ee84b2c41c2 aa30297b55d1a9a52d9a9271570a5fc4aad32530624e1cf9d46f379f475489f0 c840f00729566a2913bcba1f093e1ad125fd4238b46b9d2ad130e58855042585 1454040880651595bd7d78e7b5652baa0a3793e1b96942a8c21c527a8274573e 945fb5c82ba74811c7da538f4a09dd31fd9b81e16b6714d48d20942ed6e674c5 a1f49ff6e519e36cfa7257c402a9a7b328ba3f151b8f124324cc2d50dd037e4a bb602f31ade77de0203f887bd87b58c186077efc0296c69388c5d37c3b721071 cb83cb83faf8ae7d47bf035a4ec279a1a904ad4205505947db8c5804129b999d 77850e626dcb9301ce34b1b2c613a0d8678c8cfa0ee0a73f4ef4ebf4d5721a95 9dd80dc81ddbb567c25ca0a89f3ab87bcd65cb452641a6a1719922e9f3bb8a28 29213af6b14e9250cf53011282bfaa6727af945d6a5049e2d10d5b7874c0ab02 1e642056ac2d6d909bea572e8399ed01f8184aac00c98bfd11ac3cee39ee5f03 65909ee87252ff041535392ce77c87603e252756ed43c62c1b03be6de10e7548 3327b74f0f5839b91322e74d3f54a66cd4a5fd42d66c976d5820f09f17c97866 9f9d8f46fe1134bd32e17d92237c5efd36fee9994a01eeea3b907b4bbed2fd41 d82d267d57893e7c8f3b9cfd8889ea09240ca5b2c45bf1b3e0c60b259112cac4 d0ac6ac80133abd569fec38237b21526a3ec9f3aa1ce921317268d5ea80c9a2d d4609a1ff010c1dcef014285a3d0c3a9249a343506bccfda880ed698b03d2651 5385b13b9169725778529c79a2e3b2ce7e4a5d9f8f7be45bc5809e3777970eb4 80a1db6d3ab01d0c1814daffeb3e375744d95bed1725fa88cbaf422d26a8e606 a71703aa641475fb6fe5a7e6c68cfc435134f84526871224874f3bea951de0b8 ee5c1d42ab090299add5468fb05ec46ea4ee7f8eaad1fd7a3a0ae5dcb80a1eb8 c1557e31455ab3ff7ce4a1d8aa0580d150cdbd17f712c8f3cead429892937fae 64c7bc8e27f61a2f3d641b741d45478f57d296d4d19fb31bd701735687da67fa d1920c892f5272783bbacd006aab76a46fbf3562ec4f83bb5c4779f4ebec5402 72c88cb664d359bfdfed17134847390e5359410d5d79f35c5c9f85f6d910f614 77c4fb445dbca05dada4f5cfa04eccc80bdf1ea835c8d499b644b725161c24a3 fd981914ab4a6fd03afdaceae8f846b528a9f5542e3fc196fcc5cb30a6dad8a9 c1c1f7d95b9c6300b9924835950b8921be2aab94fb243ae35107f37d7d81d646 7b64510e8c38a24a14750ef2b4442c783170087403f569d5a84254ae540db711 1017a7faf1047805470c912a84885c0a14fcf74673e376144bcc00385bf37311 ab38881f2042dba31c79f09c99744aa2e8ac7304f5c29129f8931e5305d465ec 1d43e47822c237d36f24bb6062487b71d1d1b8246fedc1ade32dd7797c92a90b 2887d81b5d208b5993f32e537f577e6112104643063370747387a4ba2d4129de 709b06a27a7c8a89f931930c2b286b32e4e725a10d20f76cb5113adac71cfdb3 772b28d70d7707362f389714bebfee8c3f39a69a05c3a48cd5ce61e1e0112339 b3de385e2df40771b0d142bf99633276bc741e2267a761f3406dbf2fa21cb8bb 492cf6c8ffecdccd8fc3df613fc1fffe222fe4ffa8bed480db2e003f71ad0591 29e18d01269dd84231c9b825560c602cc1a60e333df0c98c609e9f0df3b564a8 0f70d0f8b4ab4f6521c6eb1a7414a3593103c136ddd7176d90d303f88de71073 b8fd0cb8637d61d912136295caffedca28dd28affbb0f89adbb04407576fa957 02c8b75abbd676e412ae20c827413bdbeb7b832a4ee0decc61cbbc4095ed1a51 f4a6b9b796c9362af68e98256c20b401e95a65c91ea3dec0d7aaeaf2db5d0e6c f719084dcd0a60fa6cc866e04de6a7c70ef51b1fd2fc7843e2ba98d0740ce9e5 a43690fa6d96ba71486333e18847231f0108d89a3862cc937d869fdefc359afc cc861fc172a2d9586c8309b80143c13d30c0c26148cf8a9c4180beba34d2d3fe 344636a6a3af72e19f03f2a79c1c7916ac6062ffc37116e97249fba799a6cb35 103fc3e25f228dbcec1276242545dfa8e05d5b14a20498e5e9cfcacba360096e 1ab73e8eab3ec3dab03b55f24e059ead40a58ceba0f73f997f4b1f12ad503b13 708012df7a93067257c4686e3193a3abc7f5ac59c0fe3225264eb260e88ee6b6 d4fd5c7eb287d3db495cafabf0cb2746af7901f15826cec3f6ce17635a6515ee e47425d2ae4cb3a0f98c67f9518e2b80f1ad4873b03165b196621074c3765a41 edc77d7c8d1ea8a203fe4726d0fdcc145f33017a92c8129769e9a8e2fe250874 889c90412bd1cbaca94325f2271cb93ef4affa02ae9d6bf82d1fff70cfa677f5 67fa60949308c45323f7834d92b0a965f306c9baa16fd6de493b5c0b670f41d8 adc2d363993233910a8c183676ca5b0f3b51060df94ebcd3191722deacba9041 f23f05fba0229c4ea7c30a53d609b58e63f22941ad94f580a1db97c8cd81e637 aea89e64c44c2eb016dc69f02edb8c7bb69356a281b48551a097cc8709ec2bb7 80878abad0dbd90e027ef36f28967fe7bc8b22434b566ec9862eb98acd861139 992ad55707538435b98ccdb92cda40095a4328953b41ababefa336fddd24ccc3 3a6d235272e2ff6f7e77485a73f62255809f38917a940408f07d3b3b8d93b7ef 3bfc7c34db85ffa83cffdfd696e176919351854afa84abeb624b1f0d6da87fe0 f583c61d3c44907bf8435c80aa5ff0969c830ecf6ce436cbf2f921c10001c9c0 0b9842faa5f59f6670a6a3c8ef94736c1e3760a554df2877da0b08697a90d074 918129599bd42839d781a645d73c348c2bd12dc1d093133a50ca6ccf795e3881 af586f06d847e83c4e9cc6d41a9c8d1f9dceca60e594ce2aae85cc556bfe4a1e cf97d24e4a7addabc1b9158b7db4cb13a3d9ca076016eb2f8004abaa28ae4931 aea18501d77bca556c23fa46a36e93fcb6dabc774747e86822d0e6a3d16da4d9 5f2a66f9fc2c4ec13211886beba3dd240c7f25078f6208bdd67a9bf1a8d9ed55 250ba0734a4d01dcd7a4a261b193545553fc5f932d9abafd75f28968d0b198e0 b3a23509e4389616ad41128ce7d8de05d064496817909121c0898ac01c2db29a cce562bbc1b145c7b6a9ef85e47971e539807c6cc9669d8f6d6207f47c5123c4 bd54bee564a187d8563b7845ea1c188e0ed2281405a7a563409119d65d664a15 1d2b0cdd0042b2b9e1164f95131b49ac265295ce82dbaec30fa79e55b5a62ba0 b65d425d9fdb87d0a1d25ff010121f9148a861044f0c8e131c23e7cdb1dc9756 06c77e95506b5111b258903327af679104d3bc4e64a7592c01b2dd249ed49ea1 11a86331003551ce4691116f80c28d0bae6ce752181ad75124c400f758a847c2 c9351ca0863e2babd8add4ed1a8ba8ebd77e13a82a993b68c81267855a6c4603 7ac3bfcc134507225bd3eb11c3bc73e84e175018338cbf830d660f3a48790bc0 716ea206027e6798a21788318dc8e5c0cc4df748e3f3680184d181b27f0243c2 e8e0d466509c47d8ee675afe324a3f3315eddbfd0a6ce9f3aca177de4dc1bb6b 706e203fdb0913ccacfd5c517a7743db32ee2f052ca0a8bf433f67561b0f4f99 4e6be42f56fd131c4d86c188c50d73f958eae26c33505568ed86b190fa8bfc14 33258c7a469492bba53a7769fd386ee6ff431d03f9d641b90a21cea4a3717620 6933693adbb249bd3acf10d3f7840ae6b8f73e3dbd53d0b43564cbac66b3cfe9 2102452c710adb717289663d472f89940e03eef58b8d8a2dce841c31320a14c7 416075e10948a69ebb6923d8cba5aead287e2827b5911036f85f84508ad314c0 6e34a12c04139df79d4b96be93387ad38d5a7ff5674b7f34c3f3a7bdb4254b57 eeb472754035055ce18ee2bc007f3e23925f23dbec4ee2747ad66af3bffdffb1 b46caee91d4b10a9bcfc218ca0764190906ad6705c7de7e13895a45ec93fff0c bdf259944253f941d890fce226ce97fa2dfee3c4f8337c34d7640f3fdd432f06 a1026722e3ed85b9a3e5a1e78f38ca76f3173b0cf78be8f17ac166c5ba436fd9 fea9030a10f6187d039f4365c8f4f30bbe9366b32bf5b64af48f821329a41597 67b51449d73ef2ce615033f5f576cc024e7e37949406fa2c36809d199bb700d9 0da4ee401b1712c45c16c17c55ef126e0d 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMEX10 %!PS-AdobeFont-1.1: CMEX10 1.00 %%CreationDate: 1992 Jul 23 21:22:48 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMEX10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMEX10 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 18 /parenleftbigg put dup 19 /parenrightbigg put dup 122 /bracehtipdownleft put dup 123 /bracehtipdownright put dup 124 /bracehtipupleft put dup 125 /bracehtipupright put readonly def /FontBBox{-24 -2960 1454 772}readonly def /UniqueID 5000774 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311d7190fa2d133a583138f76695558e7a e9348d37cac6651806d08527c1bb4a062a4835ac37784cc39ad8841404e438b4 d52d3901e47a1de4f7924e0fb3daf442499175bab1226edf692a4956739f8828 e80592f450c5d5c22ac88bcfbe9748f61d18243a16f4a4467f084e8e2be46ef4 7fc51c3a8199e3cda62ff9c4fb73956dab8b6683d2156377808cb35026073e80 523f59a30d195fcf9b9fce4ffafc6d5649664203ab24acb938d58d246707ffe7 d62f04bec4b70c21ef75beb2b812622b3c74e969d72d3cd11bd7106294a99caf 0b1629bc7d4de6b96ca82930831d64575f23f4ad06a0e45e315b1d392411be8d 6d73c998789ff258a07a3c8c2057325784514c845500bfd1a971310cfc11d41c 1a167dbd5ff012c60add4e87325f6e5299032a839de65fb1473a166aae1876a4 414a434f22c1d241591fb36f857df6fa930608750ffc0c54f44994662b1f00f1 400bf752ea8d83ffc4cb77a290bc2d99981ae59a191748ba5c7ba1a9d2583fd2 1398452b6ff5d83a059f7eadcd2ef744e9dd22bdf9c79d049bf06835e878c32b 7765c69bdd8ef4deb4ea7cfff4cf9354a4ddffa689de961d16772491c7afbd7f ffde42400764c68e954ee5c455a5687959829bc3b319b2147deaab3628662c80 30c5e02fea09609abe4eaa12e217bc3af673f1bc36a7039eb13fcacb4218fe0f c5a3f9452d4edf46cc91db67b624d4f2d37502fb9f11af4da18ca40b61097f95 d44329375467ed13c5cb585ec53f62b83ef9502cc755af44bf32b87b8ae9f3f2 f8dbf72dab90acafbacd280db6aaffaefdff6d5eff26669bac56280a950560e3 d01714ba38659b0e4e28bf8cdc1f15ff7e3ea9d95a6afbbe3d8e6905aa6d531d 6b6dcab89e2036cc492c65f76ddcc3cfcff33fde3d9ffd10f7a90530fd5c7683 4329baa902e701ca42717476298c9ff511b1941244bb1dfd0e5cab92a43970cd 1bdb292eadd055c97972844fdcdb0aa06401e7b2632b9d134f96bce0064860f3 9859da7a9a82be0a840672a1331212752ae1b521b693b384a72dba8d37a86eaf a0341e7fc5f6ef7a8c566aacb91e8bf5005c18837894c4eacff41dba54e071ca 83fbb931da9ee6ade43de532d888f4d9aeca091a3d519db29d75b39638cef311 18b48922e370c79b2116c83f3ecb6246727017925aef0eab15a07d4edb4f5b2d 305c33c131e689249a309e8d36ac215efa2f8304cf8bccab0d996f85057ab377 ecd152a26df26887969eef8b255d02e96433461e098ac2d6914b4dabce4b5468 f5d983f7b8cde42c15febeaf2a35cca6b3abb0168b31e854738d575e1b48d556 f10897f6875bed99baaefa48e056afef774b4822e9c3d7e3a86de070c0b04b60 c6eaf195f487837339365cff950d9cdb765a0a85e62c384c931e81d3e26be712 421a0dc5f2ea3395697e7ea9887314a75b8a27b0a6427c2211be64862ff24241 58509c342beeca51c3be3b35208c45cf60a21b42fa67dfe3ace55b42f55eec02 78162046293e5700c2717ad61c9a9bba4272d5ff0ed5db9d68d77c00889e7bdc 663125dff688b01157beefc83f1bcdd88ae1e09f32e15f78d513e25590604553 65395690f351bba8d1db4f01375a8ba5c3ac647873891b17e7b965392185590f bfc7627d21e7f46927b7ced307fd1d9e1bb4ec2d6c6683b770f864d99b5e164a d98d501901bc5faf4f29ded0cf6af4220f00b24572103f958a8e1fe09bb5f541 70ef141670fa6cd52234c283b499f383189103aa9c3b41394e8457b1e620758f 5147cd642199115b540064ed3c339e6fe96efa6648833be49670431ef37becaf f913941ce387247e91bdf0613bc002957bbca206123272afd0d0729f7a67e84c f09f01fa37cea6ab4d03637c3873b404454cb2d6be12e553159e6e6784bd3b1b 3e523d8c66f5caec1313d7a1fa38e412d5b954ee56280a4a5d0889bd73405cf5 f17ea482445170469bdfb2ca6eac5502ed36faf5f99219d87b164051a537d3c1 2afcddee2601e0c296efd852722b78aab8dcc0e7d7b8dce460200b184ddab77b 814aa65491751061363de252fe3a113f7f0d201c9fcdd36718abbeef6ac29e5a 1f9620094bf7e81093c2851047e92eb9d9d919bc2b5e1bb11bcf6f89c6fbfdfa e944f0e509a464fb2eb6281165a9292ea6430a2844ac34beb10b1548f656a564 69c00c461dc25214425d8a1081a2581a175990732d16f467a4f816078a5b0995 779b10fe332f226c21b3002fd6e5a01a5e30affa2c25b38dfbde27272fbebf13 f7a9cbb8ded8919cb2bfd76a72b5077a2fc7d37531b575278b22651a602f22e2 782343186d53e6367f742a03c94a6e71488b2cef7d90dc4e5243ba3531fdc7 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI7 %!PS-AdobeFont-1.1: CMMI7 1.100 %%CreationDate: 1996 Jul 23 07:53:53 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI7) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI7 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 26 /rho put dup 120 /x put readonly def /FontBBox{0 -250 1171 750}readonly def /UniqueID 5087382 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98 74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730 48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f 15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427 bdd7da12534ba078ad3d780414930f01bdaae649990604a33aa9eaffbe5b5489 e5c7c9ff9d9be01b08220832c41caac64816b53bbc087ae4b621d2b44b21ae5e 3f7fe4ddb05c675abfe30510eee4a7c874bb57b2ffe521a6875eddfdfd18c781 25bfca5a097aad361dd94df46f14026c25ea988194899b95001209cb7009cead 4b4ea03473ea120e7a7e341d4e3926796347fdb3a124c29660ac09f4648b313c b58e824884382f24ce08d2edc686923acace1201c16a07a42803288cd0b946f7 546510e95b1fa1cc96f0bf72aa823d8e83d7c68c752c82a54c752eed2b1e699d e9db1830272ffbf2f4996ccc2d6fe2ae272798989525ef3b67b0d09bffcef749 a805e5f76578222b9c4a8a09b13189a16ab746ddef7875f1ecf83e568f493d82 ff729baa1e0834dbec30a35d3c49c9b10c5e1d90c6e3c8fb737df5ceb3299d96 0fb79632f91f257753b4d2e34e3f54a26c7b950981fb7fe4dee3315db63e75b0 24b4d318baec8aac9cde186f6d65767df1dba35124287c2e805bc660a3a22772 0ae4fa097f1d75107441c0a0fbb9eec17d5516fa03b98756b7df7ac7eff9c7a2 364b9f691ed5cb692dfff9dd80c761e9c4d5d6061782b327302c053ce1cd09ba 0605ebf761cf9b730524e1994e7dfaa956799d522ec53d5acba27a35c4d28279 617771938ece58c5ab664aa00c1bc4efba2d15504247a68e3af0f9bd59a387b3 80db88cca083b06f5af70d768d1699826fb12ce12efc2b4c70923e052dbb964f 5fa957c3ce225c0fda64d9b5321ee1ade207c1cc93105096cc73118f4082594c 8ecddeb0d7bfde6f70bc62f10407c26a476ed88be7999d64a15912493829a9de 62c71f5a34fbf5a843e311873cd98817dc9f8a4aeb7e0738b5de10043f5cfea7 147e63b9abf3eb818128e9889ca384f115247195c3a3b14ea4215ad0a53c6ba6 d0d28115498fe958c3363e13ac834db63e4d4aba3b89c8c2ec3d4b980e7a04cd b5b518999efb1cbd6410c08ef8f423eed85c313022e8b5c759c66752ae49458e b09c0c4e21e86ff5cbcf5181c8e0fff15d9c9820c32847426f9bab8d4618e697 621e04978cf1f487912a2fd1dab9103c9b8cc78221215ca2c218a9f1f4d9e150 55d81a86658e040b10675b4ad08d334de3aff8b915880d482a9f323cc28ee131 7e13fbcbd2c39cdb493da5f64a4a39cc18718dfcf423e945ab00a996943bc31f c6bf15ba865254270b4e6a14a8ad9a758e37f695ea5199d4684d08e8d177ac1c 61d9838dd7c17a972152a3b7c2f1611ca02a5787eebacce7d7830384c3bdba1b 0ab687eb084d75bf904761140d598932ac7d3cf0fff4111876dab094d222b9c0 8adeddbe3823e8a33a079cc0dca99605dab7602ce66cde82933c8fd14542960f 5c40de380dc77c553c119b0d02f876ed04af496f8be10e0eca3077aaeda57d12 fb814a240fd618657f888af1a1a97aece7d22ea173ff6c73f81788b091e0756f ecb921472eb7329b88c7611b05146ccb05aa5983090821fc95e999ec8041b0ff 20d671c5b2f2a3c3fafdd0af64f877225fc1124076c44f92e94b6df711396e21 ea47bae55e64fef00de312d5b4a54f83c3e52a34b3ebb3b92ea9c0e6835f5e90 19500a6a426d691d908f092cf1f3edf96e81d2386d6da0ac530607acfbb1 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI5 %!PS-AdobeFont-1.1: CMMI5 1.100 %%CreationDate: 1996 Aug 02 08:21:10 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI5) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI5 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 76 /L put dup 82 /R put dup 110 /n put readonly def /FontBBox{37 -250 1349 750}readonly def /UniqueID 5087380 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311e252234d51741e18db3a68e8ad10242 29e5817a10e796a78d2c7f7c1f50961b9a57aa604c9f821dbf5a9295197bc666 31678d7d2c7e1f8f2151ce0c29efce46270570f4301c5dad1b38884732e53dad 05dfc36b020e726ca575f71f04abf2b49e1f1d6d2a08a477658ca9a48f1c8cce 14382f0a42201de56e2821ee2b0e91a818b1b753d810ec2428dae5153b66af66 9442192024becf743a8f6264a58a0b3aa823510a4957d1bab3e1b83135362888 3e392f49926471a8021fdb48637baf0abcf31204b1b214f48c99f44af7782323 69d772ae4f49be53a1bf584747bf29b94f530d59a5be5370b8dd0691e32a21ba 9d0d592cf3bb50a99a3ecd18d6c4114cb4cfecc49705da90d7edb10e3a28f9eb a49347a09d31eec896f2a28e9607d99d42914aea16545c16e136bdd0b75fe486 61e24c7a9e9b233a76754c760822d0a88c575e08ae3e3f081d7bfb80ec4c03ac a08b65fb6474f71fc95c7c2462f2eb3754e647c29498288f2ced0bd3a2bca5c3 2f80a61fa667802d376cacd34de1f9572d1b3ab09d6f352750db4a768f869638 a87457889aa502850427b40e1294c5ba33e6b17532b2d13b5f50e71582f93daa 231e86597872a2a968127afb0f36257a76ce1eb24e6c4f29fce2aaf6532fb5cf df84da03f03a45b915209f67d398c7c4f7a3b0623750259087a478dca684b29e a8b7f52060bae9394369ed1cecc645d113cca3772a8dc36c6d916b5c5e65454c 0a188a33395fd3da67ad0a31ddab6a8434dd80f0bd0ea1a2a62eecc331d88b3e 369552daa1c575a98fe84383548626b65be7c24ae7eb61159f149872cfd87cf7 6c1a7c155c7186c7600e58cb61b8cb0c5dea98268a39e928bf6fc53985eaa763 2b28c1eb3d82e4d3fe225223f4266d2b6147e344aad2d4884a9308aadc7801af a606838925e3e50ee7aaf73f090baefcfd4e34b795cd92d83c944d91a4940f2f c955d727ea5bd76f0c8057b12621eceb0947b0a5dd10dbcbc52957dd978d7db0 c794660afdd4e946b3d7fc1ba60907fb3f756aab0406c0e7bce5a2238fb3e12e 07e2c0a7f465e90057642d704434ae0b57bd46c8ea91ab2a3acb19152e5f4315 727ce914a0482f158a14c9bd5bb071e06d59c6f4244401ad9bde7f391a009e37 fa148f0be23b9386aa2413e375bd8d16623f6541797ac8d4e9842a2030337a28 a16a1470fe9725c829603744facecc830bf9fc5b1bbb62b8ddf0fc50231acae9 53ac22110e3366baf2588c1949c720a8d3d3cab5207a71929b3c19c094373f1d 21688130735f6ff4b213f41e4f15a2cd2facce01cb8aa4796761b5d7eabe30e9 243332bc32035535f30fb2deff89ed45ce25a2b7a90f9b21151f0fd7047f923e 2836d719ff300db7bedb63b87621ab1be87dea7a051b0a85c454caf614be1915 1e309b669868b41573127d19373a92f0427de12a5a23ad79cf33b3e65edb8a6b 7fb0d43a392cbc352dc49a9acdc409bd0bd91ba5facc822e1943250eb95fa16e 6c2e4824d783867338aaa6c74fb9edf1a13000206ce68ef980ec9278398340d3 77ad8df3351a4ea65d9a90d3fee5f651f083003ae1b545b56288071b08cb0b51 ece95664e5b2de475a1578b1e58231b9c36bbdacd2b01359c25445e92ac6247c 9986be527467434102c22e55bd3d14aec4b98ca26c1d223da8431632ad04c362 32b63af44c1bd6b75ac40255b30d3430bccfd66a981bba4ae7afe5195000ac91 0e0d7ab092fbf78f83faed397b62a4d23f3ea27f00290fbe32794e7ad319db0b 7779af2760b92153a4bf74d03d20e168efc270a14dd6dc157fb6b1d2605c391a 4f6f388eef892101f9ea9970153fd713f4f39371ca4002205e1945227428ca0d c89f853e86cd537535c4ca4baaf36dab08bd8c9bd1bdee0dc46680f8e64e7883 26ddd90614c575fc2af699e37d2f268fc2a1555295e6a47663951682f2c8da28 81e2a2851cde353eb257d97b52120ed5fd6311d1a4e5ab30e9864bf9eb310711 e58d3efe34c827e940dc84d54ac48ccaacc558c698c581e69fa696da65e58d1a b59dd1756d2b75c038db74c6f39b1c9995ea099b6cb956df1a1cc560a4825993 54dca72d704d891ecbf26ed99d30520f5b2a8fb3b7a46bd8867f2e61e9b0a69f 775fb59b98fe1a3f35f618c72284e5400a719086af077cbee89f41aad5cad69c ab24fd5b0c69490b532fa31e86c68de2e3fda1c637fc1b7a3e60423cb965c680 254e984ec899734f803bd1d7aa5522897df10024c78b8400ca9e1edce6fdc3fc c42965d8d69ef3a6589aa560a5dc5751f8eee610aa872625224dd964980ed767 ab0e16c1bb41e1ba9a1f73379334e6195d49894ad8658c596f28a32907a9c591 7731ca7891f255b803bd59ac5aacfd7e261ab0c6316d8942a324b2efa68b6ac6 972cbc43d0341f7160accafb4761909abed3fe11842a957a8d3b4d0274c048df def5a186cd1ffbc937f5fbdbeefb86dbc2231be53a3103d97afb420e6bf8dbba 4409193a84dbb5db2f939df62630cb685ea682f4c4f952151cd1b010efa219e4 393dc3946f5b787873a8e248eee6b997a2e269256cb3fa2cd597478e726563 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTT8 %!PS-AdobeFont-1.1: CMTT8 1.0 %%CreationDate: 1991 Aug 20 16:46:05 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTT8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def end readonly def /FontName /CMTT8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 97 /a put dup 99 /c put dup 101 /e put dup 114 /r put dup 115 /s put readonly def /FontBBox{-5 -232 545 699}readonly def /UniqueID 5000830 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b4486be533de8dbe3ccd493ef4c9656d5d5b76d531 9e704539dd76b065f45e6d6f62ec499c9ab91923a364237ef75e1d62d52df3a9 43713cbc63b16c1880feedd1633766248fed9d060ff709951f2ec84ecdc06bbd 9cc4a865e1f275455525e5ac7e2e6289615e98cf7ce3763b6914d3a4c5b75b29 b8043dbd898ccd5be448064cf1af2f80f969a44b4f9b801c42f6d6a6d0c3ff42 e0b1cff748c1fc49b598eadde0c2802dd591c54b802ffd24cb7a7639295713d5 4e639514ac78460672c9c51742ae2014e4137ba4303051c06f686395aaef86c9 9d7f9a97009436c2ff55b770de3e80cef0d53f4df46aacecc21632c0c676e2f5 ca7bb101a239a0ff67ebd37a6b8c4c8246dc2c90b759dc03fb26bde8f134f552 23ef3d6496aa0c4a2d7b6398de6e6a0474ee1b0d78b2d865614609f1db92fc56 4ab5921078b4944e11a2162902f0e04f4b29448aaa22b4ea92fac48f8dc47535 d717dc7acd08b25d391c97c6c540ae0a98be5d6a8da564ab73e8b5d3b5e1989d 6e25c3a35ea44d596b5fd6b2373b30de7d59c1831245edb76d6a67816ab91a80 a27a6597c6dfd274db8b3e45cb01aedee59ba6efa1428e41ed557f051012a389 9b195ea44a4e4d0067398d9d40ea26195efbffd2cf785540bbeb8964f6391361 904fa5e187e4af3baeb4e8cbe7558fb7049c94a1769a2ff0b44f679bf6f14d8a 974bb8bdc735d5a9798c89d7d81176ba98dc22dddf6766acd52020e3ddcbc94b 71ad8a336dbe9262f302d8e8d5ced4481b19a586e1d73d0138ab0b732226185e 8cfb8408890ecb590f032a5633352c42df62a7dd1a3cb4fb12083709edc26146 f31161bae67a54aa5b41ca7af61b515c100b38a01b77f831245a013f804584b7 bb764dab019978bf8ed9f2f833fada900049e60f1e735c472bc6e56ca1cd936c 9442fb10a631765918936024b95c978c17f630aaaeadf9a4743b47e0a68902af 7c5ac36917b8062e5fafb0c373d2b6d1be969be4dffece78a0a74af57b4b420e 5010050f0cd2bf098de8e71a43f764c5dbf7d3459937606b081386e73aab0538 e2ee2fab5f4837a0f3d304d62f868e6b9c8964f14a9a5631f531ed339c8f948e d5e21121b94d073568b989ab6a43adf4550c580448d830bc6544e341ae474d91 1a5fbd9e2acea464f2d0128e7172f3e4515b0cb382fb41aa1a6f68d9567076fe 067f532f973d5d4a34a7715688f2ba62ed27303bfb6619d73dfdc7e1d41af585 06c925974f375332b7b36f7cecbd1ed6ebbdf839fafc80aaa9eab860e31bf087 fd64eecdfab5a93c7f3f9bb602611bff4ddef81e4a068886e681d58751c93579 943cdb836333b433fa28598f7c1e17310b144747343b359def73fcac9aa15609 fd9b822995f430a91604e64f88411010a2dc432a20e922e8dcbd97eac5b4ef53 6465039b6815c1fe2796dbd19a779916e836cc99d7820fb244fabeb2c11f6e3b ce710e9f6a2b599fe1088dcbba830050a5b7260d17e78fd23f5b989d399c304e 6dbccce0682aa79354678f550b35c80e41e94b6c25d27be8b6b8575179a71611 00fb6c9a363c10b28fc2ebc24192552194c35f0fa163abff04bce0d7675d84d8 915b8533fb5b15a4f4a56c0f029b0968d8d897cb95452ae12ea7797dc58029fc f2636445e8dc2ab0aa7527ef8a884691fec0bd8f6f05fbe5ef08962c92e3e0b1 ff255545bf2088df6411d6bee4545f6eca2a8075b3dd03c5c397724f820d90ac 9236db1bc0a5c3aa2675cba7de14fc8c620f9d5f27a27987e0454a0e871b51b7 38f08ad24e259d1f8e164d422ccea376d737b9c010c588e0d2d47872e84332d9 7929c4645de5dea5c5d9e7ef7e98487bc36905fbc367f9b4414ffcfeabd3aed2 67aa2bd51e3b7bc7e0c7f2ca398b1ff0d3efa99593e026d17c873d88dedab5b7 e7273cf2ed40982e7e80d4e458e0a099ccbd0ceb64104679fde1caa3f28367d5 add387b45a291a5a8df871084fa9a4002c5193399f4091f566d3b121bb2ff56b 28bbcc3428042a44a52defa3c6199b164df2fd693e16772c000b1584c69d98b4 df399cbacd3394160267829b3569b1ab4be4af7d25c2bd7d219891f7e7e4d20e 613f515336aa036e7d8fec3363c92267300f2ef744aa2ec579c22cee9486bb29 fc9dc032fbf2b17b18c3 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTI7 %!PS-AdobeFont-1.1: CMTI7 1.0 %%CreationDate: 1991 Aug 18 21:07:18 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTI7) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMTI7 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 46 /period put dup 97 /a put dup 101 /e put dup 108 /l put dup 116 /t put readonly def /FontBBox{-27 -250 1268 750}readonly def /UniqueID 5000825 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65 66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7 695aba81f0260cd5248b9e649cd80219794832af151fe9d5386d1ed91db54d1f 56dbec55d7c48ed295977e18f23fda49f00cbf6b37dbcbd34dd98770e780450f ab0bb54cb467b1038527da84f47b0cdff9561b343383c7cd96f818e10597fb39 4e91fc05dacdb7b418c8e6362ca4e803b563f227624bc4d8e0e1f76925affaeb 710c3b8220db48814ac08cc6a4d735d85316555bd4ab77a1098370dcb2bd272e fce72e2125b0a783a9b1fe202217eae8eb51e4ee2b9735b997af5b43174c58b4 07c1c7a4b7528d6ddbc7091f1fb8d4a731d78ec08e4c996301846cbeb5673597 69578272b49423899ffa88ed9e3fb5511c3e471150a3e257ba5656d21b8ed57c 4d1f6433eb9e04012c52e0fad62312eb2a88dbff69cde9d39d372dd7934fde7f 906a9c4828c1762dd4e1ae410026c58b56db7df324dad8fc3696323900480ff9 09c9f4b9acbf7d983b9429b25d317613beae8ea83b7626fa7b010aeda862d9d0 9b45c73d841e6d5e36bc8db0151d6dd635442552fa4d942210b738d3b6258846 28e541a7abb75c347ec149ecc27a148cea9cdf7f1e6842ec26e2b9fdac2bd6ae a7bb0a594e0298b7003b2b858a51d0da0ecdb9172942c16eec62c8b4352d64ac ee149e55cd6a72b0e80c67782b42c244b955a3885f87c6b7fa8d83a611e2e10d 5a6fce63f0a6cbeac3684f01f7cb60166a924849aa33626d97a1f7c7d323388b 666e15a2b4a21ee5542aef982c7c88902127b872f9405c9f3ddee6f09361efbb 93e28d89714b02c9263ff96cd423a693ae2834a8f26e926aaab01f70ad759640 dc6d18b0867d828a3c9a3a8758c2b3408100b416b920aee2155e70bcf5c76920 2d54ad46f5af53045e6040862d2cd51f0571f3d440aeb71635a5d3d55570cc88 a9b39e3f7cda0f65a814f30327fb62f6927ce98f83fa8ea669cdd89153cff7b9 58f1157332a5a126ddd403e594d85f6ddf204ed22fc45dede4934bfadf745551 e5ae54ecd49312997636a33a1187b707ceabd975e5056ad8de705cc595fca207 11ca37a914ddb02792f631cbd53ee0ba310747384a5fd50b7e900f36830895e5 1be85afafe87f1baec4cc6fed22344c0cf8b43379832d1d1b8c2bd0a37c6d0dd e79956e5834d729e7a9b30fa625fe002017d45adf024b5a9c5b3455a2ca8dee7 fc02b04a478d830d8cdb8aec867b1124007fa3c704b7ccf281b187ccb9932c59 6cff065875a2b1a3dd3688c1f36e8c6abc04a583853718b710b523103e36ae7e 730c201c91a68539ea52a2edc60dad792ae92a2c33b9ad82afa43531a50c3b5b d8cb1ec0510317513b927cd30f07b9f6bdb62625d55070778610257f9c31b931 d74b0be8297e36b64e2ccd8fe2f75484066df366583d3120b16ae41a824fab43 c5594a8bb2874a761d787cfb4dc9b423771b86d620c157d5bc06d37e52b6980e ba49bbc1be416afbf2baaff7008405fa3a1a927fc3970605b24e8dc632a0a269 a956f52027f415f67b264e62a044502abdc5abb45461b4904e4a29a5ea6ace96 c6b631e24edea755381ecfee9d8dbac2e5e1657d8d796b90cfbd8ae71214a020 c392c85b010d6720e682810285876e602800f9a9285239cc3754eae352b984b9 c0674725e07ed18704b464e799e377c8b7c2db9595c9b44ac407b8db018914a8 c6be0adaa50527a7d809f93b7a92e857ec38c81afe9c2a359bbd2ff4c7d8260d 5b56b6f0ea29cd536a7280165c946e3e2e4971fd1dafc83d4251ff5b4b40803a f7ab4c16f54e440d6f1cb0907f36044ace8968b5ab8e6b5c5a2d77d235e6eb44 9d2874ef81950ed098c815bb4fe77d7c5f6de149e57e049232f589f94c20239f c209caf94dd57f7c8019515697034ba55f233572e60a605217393c1f8677ec9e 044d90835c7bb6a83db0eed573489b5ee1a02cdb024200c6b9b53a0dd1602a4d bb136bf324c2c68c1af7ebc64dad4090668c73f6d26a5fab81503e3e60c53ac1 983f03eee56a7b3269587b6a989d6bb1178422552d37168140fb33a7e15b0eb6 f73d8d874aaa1ea4bd66dddcda6136ca79710af0dd467726ac35df2ffa4c631c 922d8324ecf5f914d2333061f6b71881e17a74f0216d949fb30dfaf99075a9 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMBX9 %!PS-AdobeFont-1.1: CMBX9 1.0 %%CreationDate: 1991 Aug 20 16:36:25 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMBX9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMBX9 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 40 /parenleft put dup 41 /parenright put dup 45 /hyphen put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 68 /D put dup 71 /G put dup 76 /L put dup 80 /P put dup 83 /S put dup 84 /T put dup 85 /U put dup 87 /W put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 121 /y put readonly def /FontBBox{-58 -250 1195 750}readonly def /UniqueID 5000767 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b4486be79011d1f5bfae5c1f476ee6f05eb1d2caeb 269958b194521197b312fcced4867f3c8fbd030bd715d8ffda1dcd454b174e7a 1a97b59fe770e67702519d9d9b23d61ac08424d55fd4dda249cff0b56b9f3aff e9d0de215c02a52a6bc77155ff6b8cba5cd6646ba331254ac58ace650a967d3b 272331b87b6df06d5ab9d80fabe9f9ceac10139b61244814dd9fc295ed42d1b5 cd11c2e4beab318b20f51ca2c2930657e5343ab7bcf0e8870a0d12de4ffacb6c b3fdbdda481c2fcb84408d3d902e9a32070b2af6cd9317a33a42a43857c114b3 f4c3005cef9401f1c2bad3e69150d7145b79f95c9cfaf7a335b277e6435ab374 f6a3e78e124ac1e4615511f743ad65c5d778403a840310ac4902985f107fd33c 0049623e4c496cd353d2ae2a4804110c6a420a38ece5d5b235c5e35886a0987d 284e6110527b653b1b2c68c636ef423536180acadb954843eff4d9a82568a713 b682c574e30f793f093aef755c650e0e7175c2e3138695212d9fea7bd4b5805c a90985b134c6bc15a19afae0bfb3066363ca3e2568c2ac4559a69fc32feb443b 61243b4508b7524d974636855c83c8149d489b68fe18bd497116a953431251df bd09fa1d2ef66c85b997ab2f6b7c6d9d096cb43931379ff9782fa00c5f3cbd06 04265d16891ffc4f66e4a0307765d384c32aa83a4e4f89ac79ef8e76eed08450 e3466fbaf54f85324f0a4f04bd00ccc22d32e4132c51749bea28f112c2051857 423ea203df902ae80224d75efeb59094bdc5f4b6784ebeb01c38c34b695e681e 57a93ae18b657d13770300bde28833c732010ded4c8e79078d17acc3d4b521b1 6f2cac338c4f72e2e07c667227ef142d0273e5b501f24b02e9cad75fe9d18741 b36bbb29c9cd3d46964e00d8ba318912e69a6aa7ccf823c12a94f29a509cec6b 6190e9f2dab93e50e4006e7cd6206a9de11d78ccf036b36d574cfe4b55abcef1 498d6103401fa892feed3c51e2edadc5de312337e114337cb43b204dfa9c4a9b 58208dbf12c6e167420b8283ee75fe971045bfad24abeb683a5d40a55fe55fb0 293a538b3ada6b444292c1c14a662e1c2c36d11635a7a58829d66d2f9fa2a013 3bc6a47b418afce7d7f2a453555b4df4ae2ffb7d3348075fbb0bd543bb3ae36e 5d1549a37fc829d8d5f61e263d3d716167eb2f3871c46c5634d45c4c61a39a4c 3ced995dd912f56ac1781cb661d126ca2249335002e5b6d258b82d1f398e8ffb 5d2dab4ff46abe989db2a58c2db7dfc6e46d5740ed4b66b4e1c9df61e5c6012e df762f02585d5cce05bfcbc177cf3da78681def4b64d0ee33419b0522a67caf2 b1eafb059c81d60e1f052d88fbd9867059f1959093ba845c451c172ffcb0f36c 543c479b54385187e29a29763c37b76f8292021342f96a46d95220fa4edc28c0 4dd934ced88522defc7bc2ec26f7dec8470485bf7e3ed867a9da6285437168a9 1d75eac2d55f6edc10ad289a8abc3307400eade3ed134a74572fd7f6c988a856 00028796931c05244d9c8824cf9683042f48b244c738cbab879904db4d2f5684 d5104ed2b535d2b4fe4964efcba559820559f903631805d41c6cc34470c844ea 163da5c376962f804568f7f20c07ec6efdbe4948feb38b432703e9b5894001fe e8ecd7c7f105b1a2ce3ceb448679ed10a34375df0afe45cb3e8394b1b4ef00dd 55c45abc3f9ca6284855183ae21fe5e6370d22ed319cf856e2f20374454f0faf 7613c198b3887cd512bc295386e40445bb455e586b66b1d25d2f01d305a927b7 d64f62dce1f19bfc96c2f7f96aab452e1c11ab92662064fce04a6abae34d9a48 97bf061b397aefa1028ce2278153192f3bb8d7d4d95e2fa1ff8f6f3cae4ef7be fb1c51124079b8f0ea7c67a576e57bbd203279d78011e347e9c3672cb8d77edc 0bf59aef2276203187c8ca8e2e4065bd8bcb0023cc4029556fc372bb640dc2f6 c480c621ba7f96a99310043ded22b343a60e182e7d91b812117fcae301e25145 699f46d94254749ad90456911338a14ce7f884dd8d86a5d2be7e6e0b133a3b04 0208e80883a5b4c212087c6778e17c8269a1bbc0ec843633455671df77e27d48 9886bb6a7746114c2c207f3915c7c0d5b68cc5dcd0b531bb20d772f2878b5cc7 c38c0d34a0bb40f23ef7798eeaf942fb48a64d16c77a06fcbddc5c68c432e059 1e3a44d5020583c9836b807932a5cf41ebc7410346558545ad4ceacef3f26192 6e6815a0dc228e50009123431d6cf426c2b93bf3e745cdf604ddee1016d31134 5eac05bd3c4d88dc7e093c4a9abef4b8f56927962deb2a4b0bb8822f986014a0 49aef0b75a71d2820f06aea7c4f680cb78b43c3818fe59acc83e3051da00ebd1 ac2e01ca8ec91a5780dfca849d0827cb26aac213d245f53b4ef0b45bd38402ab a0bcecf89a9644026109868deb2d4eda2f1b8d7a1607d5dbb2a59f267954aca1 7ed4b7c3d58a4f0127e6c9cd8dc563627abf0fb6d42ca26fc0068f0e35e46393 4d61fdceacab0518286f53c1c80c4cf08c8f8dd59d241d029f7f4112caca66eb 1fe85f56a62e7eee4e5156edfe510fc63a7046adf294c96f4cb05023a0808daf 586d937b6349028424345ec3d634812e20fff9113ee7dba8522921f39350896b b7664f84ac7d22527fa6699f157973607fb0c8e916c197656a9d9f84d2b47644 33a192c876a8501ae17c19a17aadde64b349457b149f668d814d3a7de0abbb14 41108c9e7415264c6d0a9367574ea7cb72a54e68732f31d0e1ec34a12ae475c0 1980b0c5719e384c551c4e24fea7ff9c0cf0f105643e5e1afa254f58181b93bf 234ed9a45fd71f9eddffddb5a4b1ee8ba313f11621eabdb4743216d9ec57f2f1 80ee8000bffae3814146b4da87e5d1302ab99e1a4138838545047a585274870e b8d8f749bc01990655974775973da387c7255b1dd98dbfce34de7d5ecc028187 6256841d6ae0bf4b28d4ad1c45671dc8b6de553beacce0c302cdd7c36a9030f5 5499f72a9a6397abd1336171bac4532a2d8d0e1cce15658e11dda711178f670d 63e3b304a32becc35049f150751d076d3636ba28e9a18e98c605259ec8bf8696 f3f076908412a910e0dd9272cc78506cd3acbbf153bc9b33ef1955436ab6484f 473737b8ff652868f9a619c890cec4ae306231e9132d3d4dd1b98418fa93a04b 4c2d5a83a93ebc82710366179f2795b0e943b6656bff5670b5bdef96269e5a58 34a7f14f4ce5bc057a3a34e01e5455131b5aaab1933254b27cc5a3cc2d2d5333 78733b618ab111d44d59f5dd47907f47197f8f7755237d7f523efa419b536e0e dfdb27c50561564e2c46fccaca256cfc2767a1f5258e82f1905fd5822259e8a2 d35455ebeb1a27e2553b786027976a060412bdea0f78276d57fac6c20359e1c4 1be58aca4ceca33c2e25cf0d4f00f64b47eeb599aff50341a2ac06cb1b238f8d cd398f4b456ed2d2efdde38eac41d3f6e27198f0865fbe67bacd2fb45f5aaa6f 2545f737b71a6a80a88de0fdf122e4512702d85a58bfa25c7da0220bcdc2b2cc dbedef7421acef845dc2450783d2f103ae59d594c18e498fd44e9611e9c1dda3 c3b39e04c47c4e53442790d3ab9c6563625a362d5f9426e2b1cebafe3841846e 1e9ecd80ae973c9bb2b8e9db312ab55a4111360031ba59cb12a9839b530fe81d 396cb5ea5e7af576afa30612b45be525b26446a11c8b3c49f044463232afa611 5a8a18424e2b1694b23ef4d4794ea83f574a4a6750b6506775dfc3fa20143a2d 196cc7f0e383380781c896d45355d3d7bc3f1497cef70f777624561c17f321da 861aa7eceb212e17e5b68e9e78df0b07fe5abce06c0a4a93b944b486339a6d54 eb73cc1c6304adf0f1334e08431c07c7ce036206f9038742717f4dcb2c4e2ad0 b53b47d8a7cc9e062db9a030e70ef194b8a0352db8195a6b86083c8d493f2afa 7ef32893a6723dea984e13ebe175b8f95965231a8822a7a6d32ab8bce752f692 9d37bb046a5b904b04707ad5705bd1dc14c81e121ad11b5f55a78077c13993d7 db0cde97399f7f51e74c1c3d86706a7f6c7497af6564b5b690e37c8251338563 d78814e87abbcba9b22d1b4e74516d1e37e20ccb06f7851698c23553d73af0a0 bd8c17888729d60631225190865198c725a3d5cbed5c1b23691a9fbda57976b5 5f5050671a8bf284798f62b96a4e10407f197031d6aab323a219afb369a24088 e5689d804ea41176468e72574828043539107846d3c77de0c92ecd9327d1047f 73b071151bd627af45e335581548bee06a5e0130a45ad3937447fd2c67247646 0231cb20e47d46ba870a9f5d092fda97ad9fbba1372df548dec29861200b9896 83f2261e5de49d607d460e460559089b40c00230eae56839867e3af491f06e10 a18a2548e0913320e93f2c36ea15101e5a3b54e5c5b0a662bdab7a314e937c72 e03128c88264fa053f16f94bb34fe5a43ac0ae29e869c08a91c5e790c58afc94 f1fefe383365d74f3a885325866ee00202084963af1cccdb77799e9952ba250a 7ca6b40272abd9f8660bb4ca27b2136a94cd9d32cf98bf0d41f48b0fd0248c39 628dd638bead612ca821da910ebdbc737791ebb715266c2f13f3e8e81a1bd504 c5f2b52fe23ef6f925f30447ee1f619c94f035694c3887fafbefcf010de265d6 ff01430eb8d75f727a9d063955ad529be951dfff1e08f7d9a036b4efebb9ec43 9b1f53c6d5e865a1e7e3ccfd87c8e75d739bf8f88b10d43fbb2f8fb5769e9a0f 5b20d5438d67a0fee314affc46293527464d8f6e2b34e1ca4e35bde031922df5 4723f23eacf61dddb9bb2fc7c4528d430ba6520d481453c40e0f9b4fdb16c20f 0f5f9c2d5f7727cc12e6bef261bffc93ec9820d92ca4d3bb639cc1418e829460 d8b3624f6ec2d16f8373de8e8c131314e7f0e93c36240edeb6f71272996be5c3 7810b51a187fd1998fa64dd04173b5206bb16422f946d8516cf11d87c56e00cd 6727bd57ffcf67f683cae724bc04dd2ee48c512cd1dd2aac8440298b2369cf22 4c66fc21fdba4dc70186d088f728c30df5f35e53f229c5da553f87f0296efc6d b51b01df42a28899335f70c880a4633ea383f53709c4699248444c172385f39a 97282e576b443c89dfc28d5e64c0e80f3a24c9330e3ff177a147a80bd99d0aac 730b8c1652a59a719d527e3e040acc044d55055fd03ba48797d3699ba1113299 ef799a4ed116b3fb8006818a9577ac6f7960b7e1f006c1a4aaab51601def0741 d07f6e80b9a6d10b4d57fb999c392ad0676daa4784280fed4ebd3a2abdab23f4 ecb2738a8fb68eda2cbb81d3de3cf4b789290d67d233c486819908985403c34b baa3c7dac0277a046ba8239fc30f086bc604a48d89202e0d690f09f104427ebc 2e1d619eac58b33e753d6a7f08ad22e83a3910bbf6a542281a7786230dad89e8 a0fadd49c9e277685dcb3b89c98763aecfdb247eb5fe8e5dea593751453d3167 17f2763c914ae4e000ac585816358c00879c8ebe936cd0876a83186fa35d86e5 0ac2e30526d358e24618779b0b3809d4bc01d3ea49d461ff60e38ee18ce62a95 89d052c5bea49ec4f61d7f770219918357b47a0a072a16f256287dcada3fca96 10f89102afaa9248454fa0fb2770ce2c538cb5e0b9f8bc9246fd5dd5d55ae19f 88d5483deedf2b385a76842e776be44b4d0ed3fba0217e81a5018ec54dfde90e 15726528fc981572723c6406d85eac75c839823ace789075fbf0a397abcdb3f2 1de194d3599d3be6a0b1fca3565a44b8a529363a0ac4a1bf261f5186dce6491a 662f638bfbaea3643ef7cb1eb028d82267bd7e0df47fb7269735b385bcc4e062 0e012fd1330688d10b780d28db0e78e04766399632e2e6eb1e1a74e3cbda952f c0e95302a77358a26a83735edd6ba96e3e8b2aedd77ee8707e2f71af6cb7596a b46e6327801521444e1fe96ad11cffeeeb6a104edb00276cb15bd43b1d5ef19c 7399f4e754bceda2a8ed2a7e1a8e361fb61e7639040c6e17c8471ac14af16e01 c1fc6fb3d31cc18811f5bbbae442f045564ade97292a383eea2042ff67e97f2c 766005315fd6e0b6eb02b7e54872fb6f5eeb2be68fce16676e528d28df9c228d e4aee8d5ca1676ef06978f107b6002d18136af76719cd849cf403b954e96c4f7 92b03f6d09489ac123b4d8204a47fc05911be3347749f21a993b8dbe432e156b 3ae3d8f1d2c0f72ef5659403678c38a162f4f0d052ea72b4bd546fd2d7ca29aa d908f2d79633ac3dbd86413f39b90370ad8cdad1cc13b59569e3bf869080652c 089859bd9a1372db6227cfa2b2f9afb3697b05d243ec02f6f0f4f10a21eda22d cc15bad81047e483eeae53a92e108af2239c1bb89d88c3455817ef4358fdaf1e 00a4f1b50c2fcc27cac88b905eb16982b2e91f4170da140dfa1ca36c125c9253 8417b2d8c5abe50c7ed683dcedc816cce3bebd8354a3a90f1ab77e9aa583041d 8712687baf31099c18205ccc201a33c45daa7173c94faae5db8135b01c08af6a 6d8cb2755b6893961ac354282a70518badacd3a17f4db9427e01e66aac9b10dc 63d8ecbdfa435328149148d7b5cdb9723b54108839ff3dad72e03ef34255d562 898ef096f7135e20035cd3762967d87c4fe4e25fe9f7f254c0ee42751a2635f9 5bc3e64b04bcdbd85e7ea56fd79f1a8bbca49071bfefcf9444eb5d5e9e70db42 c3d03db1411d267a0d39f536109072ae2d819c88fad97289e8557a2804c32cca 5dbde3f2b60e3df913dc4d0dc1bed066b201af2f0a58dafd01ee65da794f5cb6 67bfbfd42f4c48cdbc48d4d8405f2c66b7d8b63feeae333ca3de8b8e1e688bc3 6377776e94b54858a6257482c5c695d22cab59e025be2337e13f1808cb192106 17eca0753ed0d7f683e14d15815709fb0848e985756905530edc960e6458570b cc496a506648489f6c73a18bc1b797cd107cbc40d0d12d2ce66c0746e1ddea5d e9beb6cfc99b5032fffa135603b2911cdd83dd178132690f16daa65dfb8dbf8a 8055e6412530bf8c8dbf57cb29d86199deff5418dff96c80f0d24e61b262c4a6 643a9e853d95cc7610ab49a38044b79a2688fa1ffd432f222c6ce0f410a52038 4aea3e80e38dbe00ceafa4ef0172a60fdeaf4af582f1257251d1d515d08f47d5 ee83558576a9baaf6943d2d68c0e00db9382b8c4918d64a2abe784d2b299c9c3 01ded2330c71d7fd5aa4ec112b76da3b0a3691fedbef9a0952a4d77a0a4325f6 408691eedd685d5b45a69d53638ff7092f7d21e62b3fbe3d158baabc22760645 97508f5ed34c190b212a9a46ff215b94e952b03fae01e9c9bf81391ee16d763a ae3daf749e57929195e56e05c540cef757a01b7a0f3c2a91e95ea4a8e0e153d8 9308d057774ab1d69751448961d8ca5a16eeeb6fa09f1cd57d677494df3eb046 6e532fda201a703e9459cf5ce52f1c86deca3b88329a95ff4ec480f17157f9aa ff439ce7a9b4adc73f1df036487aa9f8c868c17add921577c4b64eac33de8193 f9cdfbe6cfc2cc3f6096b2b14e537fd669aaaf76ea4657320606ff368393c8f4 001dbeeab4a94c852f8f45a27ebcfe6c17f2aa5b3afd270a6edef3d15cfc81a2 57c40b78f4df46b8fde7c9a988f74ef6861b60226e2c0641cdcdd4a9d0c7057c a3e7e2aaf723b4df6581b41a35f566829e97b66ac16a549bdc52e85361013829 803bfc16557c98b9d5ce5e4fe0407e065b622321f34dbf707a1f6586db478520 04da2d70a55124ef7e47e0ada3181c0d1d39630c044ff9b62e50865cce79b214 44da22a28f955dd68e05245013cb64da60c5eee28a2834952e466d0eec2cdc8c 38abd22cf5ed7de54d8099962166fc2ad304d6cd08e58e902b8db94acf67ec8b 0c288b822176400957e06ce3e68a469618a49affa681e84611cd63e5f6a90284 b0d39418c5faaa7671c46cabbf4caae8f5ac8aa64e443c528d708f0652fdda61 768d8a633a4dc0cd77777991c0c8bc9da05edba443cb1dbea013997cbf61dfb7 764b142cc6abf840081d8d8df8da3c9afcb2a0769d80f0e3439dd81ef6563979 921bc6525873e27a393bff305c2f280cb294ee4d07cf80dbac12ff0ded49f055 a6db06808e7cb5758d493055bf5eef8f16e787184dd3d302248aedb0d0f7d7a1 e07ef2bc36ab1fb0d8a8e5ea0d47db58dcfffbb4222a07bcdfc3cec67cdcddb0 b2bee6b033972a5564bb4f417d76dfa689fb21cbf10b5278bb1e59f638d35d6b 070c5a8585211431e5c449f448a70ace743f27546306bfac9466901d4302a58a 910a519b769ce6a8cd838ff4eaf947c9c1681d0b4263ed3d454ad8adea3ad860 e883f6f781be7183ff2a9e0a68851d314079dd3c91a5a191be53d4bec8ceb706 dd6101884a0437fa0b70599d524f544eb73255ec88603b7cbd3c1787bef99709 3f64c41b056e43cca10880ea53ea66f14b52598b364d2c78a291782e6ffa72f1 8a81d860142dd7434b43e7aab1f76cac9f56f67977db2def3b7f289380ca81ae 9d4774c45ad442783083c84470d4fb989324617aad0a8d23141a730c7df6eb0a 5ce7dc3e26df4eb7c92808932e37fb1229e207960a056bc80c80f3da12573d26 5b238da1d7ae046bb0931b179fce82894f2cdf04ac594ab6a3e02f696f908dbf c08ad9521d5c4c7a7258e6bb5191673045bac763a0995489d5dd61ee4f8f47da 0157f978de5430e298c69d94be311ba733ebfdef9d25a12728364b86e355b442 f2896a4c48fe72d6c358e4e6ebc9b5202db0f5fa6546a6674b39b66665f86d48 71872ab7db236fde29d8b7f9f564ea616e9013badd1b368b1ba28569cabc2b88 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTT9 %!PS-AdobeFont-1.1: CMTT9 1.0 %%CreationDate: 1991 Aug 20 16:46:24 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTT9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def end readonly def /FontName /CMTT9 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 37 /percent put dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 58 /colon put dup 61 /equal put dup 62 /greater put dup 71 /G put dup 76 /L put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 87 /W put dup 91 /bracketleft put dup 93 /bracketright put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 124 /bar put readonly def /FontBBox{-6 -233 542 698}readonly def /UniqueID 5000831 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b4486be465959b1188f76df7824c135a7fb382c4e1 1b0ddfe856b6f34552ca48c24b57dd8448fac257c4d93fb122e1218fd36b99b2 d79dadb8a66613ef11039be77816a7a2d6781fe0d69cecc36232ae87a172afe0 95532a8c7ff40bdd4a5fcfb6ccfd8f73c572231734e0609c6743ee11010f6579 820b367c49069ac1d45760c0ce8dc1e67e2beb72be6d287910547e1b4bb52465 b75947d224998223275a2c340a1c14c04328cc2935c53ee2723f1de6357a291e 14863f6c1411477b3ea074052b30a4c1ef03ab324d678307e1cb02c7aaffa90b 73975378b9debcd3f6aab626a361be8068c60edd0b2be4a7bbf4efa21cc23607 bf7e2556c17b5923d7b0fc036d5fea743c55f2bbf72e8a61995bd63d7104a085 b8dd5a83d9077376a4ae8f0c048606bb9e84c640c52d0a95b35d48cfafd6ebe3 d6eb0ed88c1212818ca93e40614740a77c446b792d02945642014a5d55ba970e f97dcdd5b839f621a052d1085a1e668161d3ac0227c7867324ede883589b39e5 d152793009cb5a08eb6719a44dd01b6147e3436bdbb28215ce3d29a3b1dfc72b d942f8cb3376b4e12cff53a793d935346ceb2afc3428cd9313c671ec1911252c 19de341556999aaf7417aa5085daa35ee71353fdc2c7d83ec2dedaabb1b89b99 e4cb5282159cbfb45a286f8d6bf3abdedccbdcebaf6994b17f1be07d10f00cba 47f2fbf66c0cf524494c53786b0f88f5d96a18a086fbfd22b6cd3108ee918369 8b342fe978502afdebf98632d63bc149de9eab94230a55327fb96b72a85ef6b7 acde791164e8f856e95058b875b02a2262b85a2ff02fddaaffc3a476f7abdb58 f5b1df019a4ca14695cf1f238756b3ce61ffa44d543341b9c1a3b422ad6ad0be db2f2ef0ad1d60a8589decb250451260a0dfafca04c4435a350b80b75f198c1e ccddca12489fe22c127dbb5c933103e2f6ce22b9b6da600e59b68826b10f93cc 018becbc6af69c2db25f3746e18de23b34df5ecfbe2efe28eb9c5c163fa3762d f0d2f35cdf3b0f4fd9d6e0f41663aede5f15602d3681b681bd6e1f8f37cd8c7f 1a0e0eba3411bfcd7b5124bda22a4092492e831befb62c4c2db64d92d7495ac8 9b50d8d82a9c106125c564a5a4e0a373144cd69238e0c05b15ac7a8d2f7edb54 566c6919910c5cb29b9d06ea5e1b781ada466566ab7faf8f266af60b3568f90f 6ae5c25f091df78feb19adeebfc9d93c47e1ea6f1e28787f675d604f22d3a24a 5f005fa7ec62743a67f40e406eafbe10f0d5a3fcb9afd1d4b2d05e0278f20b2a 158043bed737fc48c2ee27af7a25b0bc17dbfc545b2295a2b54d85295d1bdf02 eaab8ae8d40530ed9c304ad4986bba683883d8054004e913f57264ef145b3211 cf0498d035503e2fc8a98b3f2b859480ea60617687a9c97edf533ed6eccfb8a2 9648ef519ba3b10c2af7ca8b50d7f858a332e98b6ae0efec11992080bc822393 f71911cb2c7cdf8fbb7beacf987aa8c9633aba31963fe57778e3fbfa03480b83 96856ab2fee446e1af2f1e009977c3162ecabd75a103aa47bc91af778b233440 04fa773fbbabbdada8d9cb628ee4fa694e0d1523a1ffb027492d342aebb5fe74 c726f7dbde42f7291e923ed29d7916d96a1fbc1311f1cbaadd81109cb6b05ebb cb209378ce63a4fd4e568953f5cd4751e6eaf76a730ed711cf6af07dd226b75a ef50694a9d157e231a7fd4a68fe77e45acd52b644b473d1b01b19e505f89f07f 262df7624a3bca5af44e89487668b9d77e551e97db0a3b86d11c150e22a88027 4cf8b3a6bf5dcfba5a36952ec010416edc83b057a499acd2feda79f44ea2e582 4d93067d93494140143287b104c5de06bc70a75639436e713840c1b289f286e1 22a66e2a2f2f6cd8d724056df3a0a24e0f5b4b0deffc7e1c6ca2f82c9f12576f d51018c7be08277dafb8d94ea3bf57a18de492cdc59cbceaa2dd5ab327c4f4cf ce067aba04dd3ea3240c377668d42d30457b6a4c542b2b48382de9c778acf5ac 9f520e55ce61411e0dd44b63730d46063f633c4365e880a4b50e6127a86430a5 918622fe35d3e58a18288a00d4ffe2e7fbc2f887b28a2a427520fb958ca19872 a88749ff90bbd1d6f6278ed31c2ecddf52d70d77f39bb79bcd4005eccf56c733 53a38560f0c862c7b873f4ce67783adfeccf937004a8503c62a43693c0efdd00 427cfe95e4bd7b23f9c17a97d002f997a2cf8d799fca598a1fb2c0c28d92de36 5001e1db634c19dfc051a85602c19c9021c1c92d46e2af45fb0b992182d6af77 9ec9dd515703094b15f60ea950017aee683518289888b3f87e33403062ab056c 54db5c94937d076ab09a3c583cb487e0994fb094238ab093c5947b9757ab6ca1 884a8c5fdca56a1a275c758ad1059b22308941627eeb6947fedbece0e591f917 2c295c3f2c9662f8633c75190b3c5755267cf112d0e99b57ab8c8206fb3a8be2 bc8ddebbd330cfba31a129b7abee1a27794aa403d13e9f00a2b4200cf8c1f6c3 002874da791749da1e72afb681753a77c3e71c1832c81a63e74bcfdf229b2401 d417e64f1b064acb16bfb2b9911f48c9994de263159e8f29a6d7bf101b965627 beda24ee1158ecd269d1219bec51607bd567ff1ba6849c4eb22594b605239e19 6dc356c5215fe69faf960eae96579cd030970f593e1f6f39bc10bf57b1d6c930 be0a84a06c6622f0058e70c8eb0b50174352327619da15a888d35a160fc3ac67 82b2554f7c2b0bc412e535595340c36b1d34da7d349e9077f763fddc77c7121d f19721371269fd0300b7c9a580faff89050c10af60cafa1f8a186f8c66c5fef9 de16b20bb593dcf97ed0265b8819e6c7d1379db61916898a5c0071a5e4da5a88 0d0a6233adaab77b6d1a4e2c05ba8dca8185f8a46e3ccd7e963476213ea536d8 764c0a9e3ee8b3b04b11daad13594c704478cce75b5cce037bc7c56f39b918cb 4a31474cd94afea3fac9d2c64b53a1a0a2f20bc42fd6d484eabd8776ae2e707d 45911de49ee4a14d66f9da6a8918baa19f6fad66aa81e1df099ade2de2369ad6 c95c99280606b976d6553fab06c9c9d8237fcc49839b518c0013c360359bada4 8a1cc30dd4a0353d0496cb2a9bd941dac5c86831dde75d7546c3b1226e2b39b5 3a85d9eca21289b6381208eb7524a1eb07511b706063854b1f8566000f57f91b 56c3462ee9022769adc9ff917a5345dc26c31fb262597304284c14131056ca37 f00d21a7d63484ee71eaab73190165dfde675d74a71ea943cb8bc4592e65e402 a1ab5d86267c1ea3e02d8c47c165b3d737aa5ab371b3512d2c72e35f0c45115e b04de4e2ef914a17a41a9ead3e6444f7b4a1a62e5a90c523d4d96c425b2c802b 408c91e25b26e89d2a810d1e06bcc6d36e5ecb5afca2c7af68afccd65a5af03b c5bb4cc28da19f23732b5f0920da3e102c0edb1f5d1156eaff6bee93d775de12 f6ba82ffffd1caa4f2632379661ef9aa8b75723a734b13ce487a69b5e77b3744 cc3b6f4ad8230a9f6dd9d37cdb1f5bf3524fb2ee1176197b5ae0f66d2ac6bc82 8b5f1a8965fd82bfec8bd63aa0b585fd6267804875656d7140a6403b66c05505 78f570fbb79116a18eeaa5394815718a2de724b363bce8d0f97f4cc60aca23ff 3848bb5722ed0929acaf4146d6ca7265a367af0c4f760c468a822e5e3525c3ca 0c1e1a55f5a2af432a28400dd0776b0372a3881c0f62b7efecb85b2cf884d8fd 1251a969fa60a3b99b8312bb713a8e37c24c82792c76179f5c1c446220e080ac 2b050b4512673789eba51ffa93fbd67aff80026518558b915aec4e322f226013 1d721d2d651d4cd3cea0bbf3433b43b749138ab9e837bd7a1d49c57e25765265 fcd0627283c7492d7cf02ac50ab349d5475ed7af7a0d4b00f63449ec728214b0 075fd76f3ee893ca264085d996040baecd13fd782c1d5305dbe29b7a85f989f3 c6d76db9025c8d1e8ad239f2c6d849d17214c13f62fafbd8cb992e1c84640e25 81d949957e221b1e8b76e95b0857a4c1081306971a3711e6bcbdda63a69c57da f260a67a22a715cf3c42e5703f57e964708f307d5589d88684a78b9da909a32e e17972aa3a62d6f7aee0045f97feced9350bdbdedf336841243f015227909c24 91072c4fdadff7cc121f159de3222ba162998de0c5aac89c740eda31d45902af d83c011bf27ab2e0a7e820c14147096e665c9c41c574f256b4e95db03e2d0768 a01e50bde0a83130f4f50b1c1895e8f3c40f37f7e0b05db13a7302491fedd043 e0e84e5cf34ad99f2a34649529aef2a2e66dfbc5634bf2a1250ecc9e1f23dfcf bb3112c2697c16cc184cc082cd217fce23cdfa50d283cb998dbf170dae4cd507 ef49aaae80f8ebcf209d7169e589b009a1e8f823f51056fd99d324fa31452dd2 8cf2d2cb1aaf788ba33f8db62d2a5099a4dbfe7b1e6141f0b6d49d7d0502fbd5 32a8d914cfd1f25aab60d019f7265b34f3272330934adb042368abf3919b5d01 f84fc57b88f0a94669ba49c39aaecf91f8bf98c6e33fb612d25925c4772f723a e65a9dc365db613102642f941d4c6009f31438917b3daf6c9ad52ab654a79db7 0f66ac5e8c248347a666320df2d657bb917f0518754a4e96b04dbbfd1bfddb1a af8b69ea6b2c993dd68c5ebf44cb0035b53d33a7a9aaaf8ab82aa43ff27c6201 2db6f5b41f04dad2b2922345e0e25bf9bad4f385a0f54e04b45653c054887efe 18f40bbca88e317da0d2611093266dd6319bab2e0b24ec7a6efd0435c3ecbcfc ed538a230bb3adf064b8452bc8f0d8ae482c84c11b281ede15633a6f3c5b8f02 acbdcd99d5295bd653f2a81f28b6facbae3ed9cf0e3d7f880b9d784a6c005cc2 5540561e0299f23590b6c2ec24eb3dca0ad4ac35fa5bd1c4f08a2c59006ed8d8 909172d1b3e5957fe5df1fb6b08ab0a27eb75b1d86481fb8324979676989cb86 f24eacc51430c23d4f9b4e21b27de784d8f30887f10fdb417e25be7aceb7f85e 738131abc0a96d3b6099eb15529fd1b7763477264854a81f08d85b77fad8268a 0c89d700b284f33f7bf2d6447c6f120f87d26cc95b4eb3e92ebf07b26243e97f b863f9578bd89c0139df52f7019b5a2d2a975b153d2c3828d46fd46be22ec137 a2b6fc87a2240b159e2b658c1f53a1fda2678b373aa42d13551f8c599baf631e c38b5cc314884066efbc6a0904ac22b8c1519114e4e5b7083afa2bffade75efa ff88bfc25d08e06b3ec930e0c86483aa373d75df782615e1ecaa553d1b0a6f6a 43c2b319c7f26e8d0f4b077a8ee70386d312677acd5e3adb4f9461c2c7b63656 1720492bbf02e284281549a9183b41d810692c77690d017f0a2a594db4d87cde b897b7fd696439675cf846d9f9044051f6d66bfce90d53aa2579436ea7975d4b 39623681f86102f15ea6175b272d57b3a096356db799568810145d01d0ac62ee 6162e8048c2c6dcbc8ac8d9cf7d40833dae86447785e3a30e605da4db306b156 36068aff1dd838eccea316a0c76d89c8c7b6245c4ecfb5356766216c708b0e23 daf4637d4f294c539bf978175dcccffcdbafca1d12d7bfbf2e7844fe9b7ad2eb 37b836da482bd5d7d4a2d6e59785c2cf98e7986af0e19fd51e9935f37e7d4f3f 7fbab1c0906c46556780fbcbf825f04f70fe2e7acb877a94badf0bc22bf217aa 51502d237112f404821f7ab2695eef208c7f7f5626999935d9fa2089dc321d9e 071ca0e416e9f20419b13a8b661e3d8ce57c09118d87180196878d9f1e193d11 98c15703793ec6eb4e3daa25804ba2f85133af72901f88f5dbece92aebf5164a 817e59324262bb2ad7db7c425a7f93aa009fe8c33996b318970a3b6bfa8056d5 9e0063c17189491f2e77181879d511b827f68c475dbb2ed901fe8065567aeb2f 76831f022dac241262789b9100c98bcb004e1a7f9baf8ca3092fcc1989a17e44 064237fb1dd76a514e0db623937b25128dd4ec78941c894a04f4467d6b8b85a9 489d68d1dc2384c65bcb64a2b62903a65f5d3710bddbbe0c1fd0f573122f0eb8 6d744a3f001f150fdf3d0a5653472651aa10f21365b3987d9407fbcefa911543 97453d5e3f9dcfecde45b5e30f9c979e7c80c6fb938d7e5dd17a4ea923b7ad98 4ecb48af0dd2ffb6966fe3c09a62aeb5a5b15f8cfd57084db429fc26a6f64b31 2911969d2685843dc37235be3097e47ed93eefc13ce988afd6cda495bb208df2 71ae306f14459b3437ae5b5c84f17ccaea7d69e345c1a1a794a6ed188e758d6d 34ca321dbad4be5562f6078a7d2a31a4663fa1357db7e00796961cc1a37ff013 182da76c63d98f85181ac074f9b0cb564494def4a2f6a73bfebd0622f4ce2f80 cf67ba6360d337c716c1a5fa790cdef84377aa0f4d668e9e769487fd86c85ff3 8ca77f43c56ca414a666c264e95670f5aa823aabd98bf3605d62c2575a8b049f 078aa3df45d51548fc2cf376e8a55ee0ef8441a97ab3801e4057ddedd778022e 50cc8dbd2ad032d68f8b77210e0945747f21eab800589c6e58c92ec73a6ab165 5e6b0f30602bce2b9666f27a96fce558ad118988635b7268f5621a795f065ee1 14feb4a8662d0e3f2564cb6749a54f83114af84b864a823bba5ef427061b75ee 8794f61f4194b367f9098639311a4c6fa40f916c531cb21a5a7e3eba2d74d875 a5a62a4624e0a97534c78b73d5dd014da1b7597dfff079ab00f1295174058abb 02feae074ea52b9251ede5d6f15e9be9e431b5baf96ff2590cbe4bd0188733d8 fa946d3b8a4b09e03907ede4ea33a924c7b6416f2f502974ea8d33685fe7a1fb c560077ae321d7e4dc3dc363f65574b1b934202d793c375f9d1b852ea5cc7de4 6cf1605edc749d262c5387f080eeee9de536f0ae59a6db8df87ddf3d4502c500 7b26ee5b6b53e3552658deb8932c6ddba89ced8e5ec3dd55198c62aa4f9bfec0 2320cceb9a2a0061e4ebfeca01d54306d6914f90ebfd4ec894b3ca75305f831c ffd95386f0126adda0d8ec1f69b7fbbe413886502cda152d2be2c9a6f94f7ade 4b31fed95e2f0c6556009776c3e75546de36e010d5f8b549311eddcee830c618 3c2112e5eb868b074712a742c67b8c8b57d54695af2403af55b6ccf9b6392c45 4eefbe0190b856ce6aa2280ca2f10ff397de202f040c9b29cb2a7df0bec50ff0 b3bc7dcd8caa20957eb068d5a4a1e18f27c973b87b22702c65a0d3f0a4e954cd 4b109ab06a129b9b96b2e55fdc60b6920cbf5202519860ac83035e82974848b1 7140bce6e1c1dc87ad149584299725c689e2f672848d59f92d8c3268c514cca6 1a788961680be346a32716b5fcb95d6f0be218a8ccc9e6b54bc7a1bdce50cc57 f405cefb24fffca2f83524fa029f8a4a2687f3c285ea07af3fed86c2893706f6 213d36b83362695d0f56a1889ea793732e78d5b2ffda0a19895c444f23cdbb66 453e909d7db2b6e9d34deb35335b891399567e02ec876b429b7804d5e1c30989 e10af1edd544c7f27776dec5c17e0c7fbc1aa44a74216084adfe1bc56a58ddea 235255f3dffa31a9a583d70572d04c5d0e8b46cf878eb1f7af5209af3bdcb094 dfb976cd57fbe6775973d8b5e5a26da3258c05b74554f022b9e4211227978145 6e9fd8e7c1f07a6a0b82732ad4840b5230f7be640f6700739dd4a374c5d532e9 6b603bae6a707f19a7cdb14378aa4fd70e3f04368406ef2125f6c93ed5485226 624e51371cd3b87f600f8a8783e727935aaddcfc706fbf847fd61d91970834c1 7dad0a7957b0087c337633369443acf170e1071a5e55b6711411c277d5f47fde 2eadf4f9ac58b12984d70f93d0a5f19c72413ab5592d05f28fd64b43ca1de64a 923d7a08355fd8aae534590345cd8443adad863f8ae468d96e951ca45f16a440 4a890431025ec27897054b3346c1e6becc58cfdeb164aee069a10dcd50ff3f8f 8bdc816dc7b2986a959742ae3f3f672353ea98b305c1bbd173087e87b1c94873 449d1edde5711fabd25b7a1446cb453162e1609b41759d9c6d23ad9bb8db872e 66e24a553090c6294b93acad0610d69a51460616bcb2dc4f6f4a347adae27249 4cdc89669255bc488693146aa401d760c4740e0fb330374c556e46d9ef79a160 1c2e17bcdc6f6dc10da13b2f5548383589a18231448e0b8ca46b409dd82137fe 83bfade4834c8cf5011d801be11d00f7939d12267c32fe194842c3a99739345e 6e1b6b08403828d05d8edfa024cb809a0c28021531dea2f693f10e665802f045 7a21b95aee3fdd3acbc25949a58ad4c0b04f0d4d9594a4428f80d9095659238f 5603f97c0691b9cc21fe5cfe445b59ae8de4336f54802032741c89b87cf7978a 7ec5956777e70bce149ec297be6f1d10881e508b34d35d6f815611ab7799b86c ed16b327b8414c1e366f6b7fe536f12a6c8add0904b4e2e8f3ec0863973ad249 f113482f9745fa3ff15001b37ef49e709e0891a4709c7a5a28ac59aca795c56c 8bd20fc089703228ad85e1da080da6bd27d3149717ad40fcd4151e6c24d0a6c0 8b8aa4dc314b6fa642e5cdba42263343f12e7255e661bde9bc522e3aa7aee581 b25a74001e768f1754a149ebb4f7209d28a9bd6e91330a0feabfe1e4b61cdc92 8f0158ba3d3cb61497f61f3c6dbb397fac6d5c9c8bb0cf8dcdbed87e4246bc3b 3fc57fd3e29997ef772758a35ca5a5d9e4c4aa6ca9d8681fac6bc11cf9348122 5b308229311f4ada50c7f5b6009d912c94081ab879b972e2f7c9a81539f63dea 8d7df87bbbfd527da3b112d8fec136179da4ebf072a9e2f12b0620bd0860e5fb 11fdb78b6970180e3f577991961dd91943e7bde88b5e927dfe167a727a53acca 4d6bbe4fa03d27f0914e1f77bf900c6ccb904c8059c6dfd3044fabfd8e28d040 f11eb6aa2b36cc8c7e4e98e184d9721018cd447532be03a64ae675b9753aacc7 55a704ef5a1848c5cd98486362f597d104fa627f29a6177059a6f94e5017f6bd 99d30112644927a6aad8d2f4d3ebaa525036b2a0a4e815babb55694bfa94db71 e988f4a3b5b7f4ffa26d1fad5568ede740c89d5ea1c9457becfdbb76139529e0 ed2f760f18bd3ddd9986b474b3b37610999dde14e392395d594f82eaf4ff7a6d 83e39267b5128f67a55b0ee51e888175b0f40a740d4ef798448e37e46ff3f206 948c35239418ece78fdc759d5ad57f3e66ee46a80835b74c9a4de1a9deb5db20 689a883c00d28b505bdd42a9617f5303aae712be4f7ab98764acf76d4b70c9a4 9927c969d71afe17f34e51aed24075599c486c244e6ede1208454356ffae5ef1 c53db71f3bb0e2cbfe51f604876f85db39de57cb4850a51f80cb115736a847d6 f75bf226ed286adc76e203b0409b362c3723ce08da89b8bcdb34b785f059578a 85a501c980fecc7e248468e318a79242d62db5ddc47cd29246d538b008d56e65 04e8e1950617413db9a7086e00b2316cbd7ee7c2e03ce49f4066caa3af507f83 94000d598a4a42650c5f0637c12803ed6c4c3595f674d68f40193980f8490cf9 f073a5210b14bfc2ac401b0587035904787575e7d4006180cd7aa76659d30793 afc34a310c09c34a491a45646b2a38047213aeecf3421858c2b29516f1537289 d7f3ed50763abbbb2bf6eee4853933778047879fb3fa7400a7c9df3422afd5df d3f6614023327473586abf4d6d38f7e2097a00dedbdf64e0a6b33db4c2b591fa 991a6e1309909fc5f14166f00a677501f1fa0e074a211f7e6dcc1ac8251242f2 b53c2685462b5b121cf0b3b077940fcdde9bd3e93c21c166d8177005e2bfcbd5 b9ab5647bb460e11aa76b901769f97769b999d33a89595fcfa88f12ae65bdac1 8d59e7af59208f8ed70d40d362ffd57a0e025a222182c2799f7407bbd9979bdc 209387653935bc990df7042f8ee598718d14341897f2c0b980cfa41e3910856b 32bfd530114da424cb4a42df86ac52a7abbf054d92d45435970f87754f36bdce 01f2b2ddaf3d83669ba5b9ac00c3c8ce346d0b06696780d48677893cd5777d03 0383307bba87afb9d31cfa8f852800b9be9d3b88962291db0169e34339e3568b 07c562b29f72a021b3bf94cf4e5af85b56e31215fe0e4fbb713c6f7b30828d80 a080f299e1f9b1b8db685e28a1de5805445527510a3330df11daf148da3dc008 6a90dcbffa39b5e0f062d7cfe704bc635fa4427585f99c11cc4b4ddacb100722 7d80f9bef371b155f2906ae96c19e844b9a6e6e88a11a6591991c7f2e818b30e 333c9450dddbe6feb8a1b0b4a01b865b7822ffa6656437a5ebcbc86cecdc5238 7c0c050693230f8cd093fa0f68be9cfdcb79a91d5c6a29489c559cee08b20bec b4b97ee23fe4cab3ff16bdb136fa13126de9446015da11ba 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY6 %!PS-AdobeFont-1.1: CMSY6 1.0 %%CreationDate: 1991 Aug 15 07:21:34 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY6) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY6 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 3 /asteriskmath put dup 33 /arrowright put dup 48 /prime put dup 55 /mapsto put dup 57 /existential put dup 83 /S put dup 91 /union put dup 102 /braceleft put dup 103 /braceright put dup 104 /angbracketleft put dup 105 /angbracketright put dup 106 /bar put readonly def /FontBBox{-4 -948 1329 786}readonly def /UniqueID 5000816 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352 05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23 b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145 d026957276530530a2fbefc6c8f059084178f5ab59e11b6a18979f258b8c6ed3 ccafbc21aca420c9c83eea371adc20e038b4d7b8ac303004b0aa205f04135140 76407216032fdd22e6219da8f16b28ca12524deb7bca073cc5eba65c102a5e85 fd48e6d062cd4283ee570a7774597e5bf0e3400b6be72db0115f3cb12db70ce0 83722870cddfadee715f10f1fcaf20e06f3c54afe5ca238539bfe2b596116e83 f5371ff18fa5003d8543226cfd4025f9940365b392a858d27f078d3abcffe4a1 54e78c7692d1a32bf935967c64f01b24788ff8325d61145e2d4a489fd986fb77 38e6b254522c77ca2797a504a9ce4676a77ebacb026eca94dde5922c936f8e90 c43e285195b1e87c21cc7609dfc41c3c5fd0853f8388e76e0cb774a5085e1f77 293f52d9322ee262d1d60b17eb07f50a5167b7b7c97efc76180b8f50a8281171 4df7cf9c12d47f8dede69d4aa142e4e47f478ce521614fe6e66b325b33f3c426 f514543b06c9e6960860b23a735e205e1af752398ccf0bc9a9fa94de00170c3c acc90627b2626ae90f3e099f5c3d9491f2e5a58ff710a7dfe46af39cb1caaf77 44a6e965a8a09c6b0c6a267f265303e264ae422f395691fb01e7fbd41d914687 70375d5eba3d17c8033305fc521b19fc670ae8eac591a8db1789e3a7cff5cfd9 d56e4c0dddd5b9c5db9aba6f3861d7acb48bca7df5dce7ece5fd56afa7e42280 2a234ae01f4bc6c5820d2d772e7a3bc2c0c4abec52cf00c8f70bf491243afe20 8c8184b3edc87fb42faa4071932db067375c9a6a5fc7344bb900fa7894549b0a ea2d5465cfa4e50f074fe66c51a3acafc0eb66056ba16179f567b39c28b189a5 132918926e407620af376dce03a12e63e86905d76afe33de11047be8c446f32c d972dca3f680a0760de9d8feade06b1cac0fa1c5d7edeb416278f11a98625784 2aabf2a5afdf25943069d6dd4e8a610b22ce3e9ba62f2aa85b1e1e5e2a26c218 edc12c7bb31d208d83f10e5f07e585e0a237420328ad2af763e5502f85582f61 dd8c9226893dc669657a032de38a67bc233b421ba43a2e2a30e9b0d9fc6a41d9 8ae81356e9528e33aa383be177227dcf4089d736dde66c89d698e5b9c6399b07 88648b594605d7f016315cc79065539d0f17fbedf2347df682c9b175002db840 bec52205eb1d3899939dcd67f97fe5c4ab2096d6c3ce6a49dc7162dbc6583764 6651a6043735e492b3a27dbf06f36d8ed666c446b3646b33576fedb6f2cb6840 14e45ef467a5f6f2e98a10f2c98e058ebd1262d78319c89df2284fa49d021f3f cf6624ac8a22c2837deb18c21504512ad2e9f8fdf5b46b22e4b858ea304fdb12 df602cc1f75d61eb8666879048bfe0e9a7295ac04d5b78bab1e629e072ba2d51 76e75e0f52f83227813ef43c077da4d19747f971f8e175890650d7043bd47b35 79a08d7d60674d397744d89f9c5d40835833c8557cf191b5b65cf86436c1ce4e 90e491ff4713d1db440ab31706002ec82a31b591abb610f7e19831e945b2fd40 cc8f4bed766fb6cb8ccac9b855edde64ed1763843f3facba7f494438a2bffbf4 a956824191ab42dd63f3979762ad150fdfccb4b99f61abfd4257cfc86410b285 9f965a2bdaeba71a20aec49cdf4a799bafc408a652e60f52134bac68c8eda238 684ef816f997a9b348bfa12d77ac922c1d922635d5735b1dd88eda949bf6ae7c 54d5cb204d03a66df7f11acdf3f0c98d43805dceae23284edd635030a9cc1f7e a383db5c2566e906461bfc062a853d45909870bad0ebc79d8af5a4006e32ab74 0f4f524ac5e97f17f0c78d5e3e8b3a5f6d07634200ef57ad179f59d07683afc7 f2781c7cd417e589f714313ebc54b98b5752b2689b48908839fca8c6e6134fc3 6859d1803b717bcc5b7737af68e700a09c98ca97c8c236e542dbfeab58af0eb7 0513955ed8e01eba08ed29265808e5c410e5de44db51776219e8cf47cd66a5fe b8a5b8ed0c3d221a4fe3c1b9aa235b5830416baf18864cf7cb03b04c06d470eb 5096a8772eac4c05acc81776d71298527154adc23501a3392f9570e6980ddca9 b59d29c9d595b4feea75bc20163d634f2fdf469db2b2be2949d8224347972f9a e2e3dcb71b8b933b47908043b0e299b9249d8ee2fc0604b64324106417e2776e f54e4b1db64ec892b1c9cef9f3a1e1ddc0b11c8cd620a6ad088308cca7a36395 fbf7800301bf4583da8b5a6e6ff679f796d940634fa5b167ab523d6568280167 2580c1bb00cf0cde6d69cba12c0a2966e49a237b72082057f48382577c365a60 fcbad665567ec4fff9c7eebac06ff77f9c272d42d2f1cec18cafa1d668826bd8 2d864bc402ee9c06f67772849561853737885ee7928fb9eeeb7ec3bcace2a3e9 0fb80733000eb7a639db52736b3b26b448baa09465728de634ff784db84d7f58 1a65ae2ce185201860b11f837e1700733e1ce23271d11db59b98bbf36b7d36e4 b230c918b70d6b0f322bafc444eeb0f0b690129486946771a32d912c5fbe759a 12583460e2027fbeb8015c74d7de8a06b7614a6fcb7c918dac25274aa39deadf a04226c3956709104a2daa78197023c75a3f4b08225dd2b9acd380a13d29a84a 873cdbef76c28b429e41a980bf3ae7004b3210794d8327282e6c4b0b05325767 ff734ab3388fa199bceed33dfbc55af6e7d9034398413884c0f72795dd373288 0fa986e9c6f67f02037ac014bde116a04a15e3745ddbca2ceea8c825d41c01d3 2d28a8ebb7b31b636c845e234aa04e601f3fd9d59f3997463bf4161df71f3b47 3e7052791ff93ee1ae9bee196f9b4cb4b3093da0a49c23f0c2cc94f16601bb86 ff43b343cb4804b453c1b529f5706be935a9d247238360d0548e35a893e63dbb 7a409072c5122279e303ea954d9e8b29245ee2c9fe931930edd5 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR5 %!PS-AdobeFont-1.1: CMR5 1.00B %%CreationDate: 1992 Feb 19 19:55:02 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR5) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR5 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 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put readonly def /FontBBox{-341 -250 1304 965}readonly def /UniqueID 5000788 def currentdict end currentfile eexec 8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8 97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc 8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011 b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415 50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e 784c6bf7389803d9450b0c21756a017306457c7e62c1d269f306bd3402e266de fc3b5e7d8a8d2f5bf0fe6ddd40d07391df4fad4a6018dce29a2b8f692b29f202 3a7c0e66de8ed85c14f1f8492167357f51a7e84cc5d92e0fee4a71813d2ffb26 445026f89b4787516ecd1afc78f8bd19e91e9ccc9402e8c36d2449c1ff850a8a f61165aac3fe931332dd28e261b91b05edd18f44ea7d58a8f35fe88493b64aad 6bfac3a0136215fc2f4ca8e91d70c5010e6f4013e6d63b44f6fb00afdbd7cdb4 5ec5b1d9736f45cefc8a0124b815987cebd81bbe0d44dedb2d5ef37923b3d551 abb6a1cefca7868fc7bf3814ef7d7b6b1ae6e869cb77aa29e3d90b12b0dc3ff6 ec945922b5899bbf2f12e92731486d2ef1230c528bf8d7e0ae09ad7632a38966 5963de49d1ef3d65bc483e4a577b927c940f5e121169ba52f6576c85793e5fd7 7f5863c488e55bdefd5d8b2514795533aabbc12e7f51816c7e1484f1c441aa9a 66a5dc77158e79cd6692d299b95e8058b35e771a6972d2b5eb1cd6d2bb8e835d 361a6eac0c90c906aea1cd75c4412a1339dc1439f93e59917311bf20af4f2bc8 bba5a4626f75f28a47d4595c37f4019df480d9385975159142618e22e964f019 d88125210e2ef21d65baf500adf802297b24eebbf4e93c617a613f856bd0d45f e17a9480980ef83950bdb8ebf208c895ebc4a7132f0765b7c19a332ebbf8a3c9 ab65063a42e19ca9d43dec3de7aba46b9a5d24fb93d615c0a1726ab7e31c378e ab77150858535b91362ab0e2b968dee1c539964126d937f9d4980ccefa92bc81 b054996a65a13995c9c9d819ff05511cfc89cbfe67447c940405001d61be633b b771eff383fc6977ec06af30f981504260de7b9ec97359974734f495ac073935 fb30e3700679092ef5d971b6b2da0e15960f2391fa6b63c33e7f56b4a9b86951 1d3686a5e8e613a69a0add8b8c73b127ddcd397a48d785079e786d24b755e4d7 27a8feff23826aabdb372dec537221d59719d2de16454437ba7ece6be8edb800 05b484c213e8a27d0d7debf6f37d5255605e6fcef12ec30ac374692662dab529 ebb32c80871062cf4ab009e103e34185c6854cb7f0a980347d5f3bbf3115e801 be946d19bffb5e1664be9b597a9d0e20a635d8f8a4669b74ea8f605e29176564 043f270d7b4eb483e7e9d972b07ce2eab58bf433b5625feaf36facd6f7a545ca 2851ef3fca5d9113bd9b6b325df7eeb224fd49377488924cd6db66126a7f916e 98e0b9793be341e06c9237a0fc69c4a4dace906c50a98d2971dfd64310c84e8a a24a20765bd3dbc00329d3e730455d18a57aea60a660ac5fd00ffd961434dc9c 943b0fdb34f8830e2fbb019499168513046170ef6ac48e15bede1d2eeee7be56 b92a9603fcc18eba83492abbbc5ef849a0642d9e4252663887064c881c40210f f0b8312bb0face1aa90226af9035eebe528202aa2495fd5d8aaf18f2f0514b31 041d2a598aa83b0a79dc47e7708a89b4e5fb30d841986ce9145b0212f1a97bbe 634c2644d661533220adf2225ee8e9f14c4ea0516231ae0641cde3c80ecea442 adff1ff70da939d02b61813ada323092349b1f37c077abc95555701f86437763 ab54c013f1e8e99c4e5cd280ef6c9ad3820b9c3941245bcae373abe6a2bf5ebb 794e748e6aafe0413f87dbbd01a99fb6cd5b7e091d55b81e1eb6a446d1714d47 f661211c7367719477c0959b195a84558d21be0af08a4679c3f76d4a8effa917 d2f498e8df257ecc2c8182c3856258a4b8bbdc6673af5f866ee5bc598b8f90ab 71e726628187d7949fec313bb76e3dee22ccaf210321b5544c149e94d4297a9f 54b3501bca4a5c0f12d6bfab811fd0c8215654dbcc7e8ecdb14f65f9514567c4 25b84886adec384b88599872301d139c2d03914eaf7c0f954c5cefd510a1874c 7965bf1d1013500077ca033a3275e30a9a533583ea77875772921c9d614ab878 0d8e74c5520e4673e5b5a6c8830fb97968b8a0eb7db4fcf74be62f5f10fca944 c1c2a730956e792bc0b31d24c52e41cec89f99a450a349d8d6991788ff49ed41 3711fc015b2a71b490646896efc434671d090daf4fabd19e6dbe20a81d947b8b a95189c77e2c33e1fe950cd3c1f418346f7b47a88b74c68eacdeb15eaa5eac59 605a0218c9607b9b3622836b1094d5acd58b8f17ca0c8774b03fc44de63a0c23 440ccea6308bf7ffa98c7b39be496c6218de60799734ab3ebf4e95d25c0625da 637d68060332691a12eeb015f38bf462fb7b55252e4eaa7f212c872992945347 e9df2376ed48c2102b36c598107708bf243b3e08e40ed0355600b1dd5045d96b 3a3530001bb10ccee46ea3ca8013aa74357219f5 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI6 %!PS-AdobeFont-1.1: CMMI6 1.100 %%CreationDate: 1996 Jul 23 07:53:52 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI6) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI6 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /alpha put dup 13 /gamma put dup 26 /rho put dup 28 /tau put dup 58 /period put dup 59 /comma put dup 61 /slash put dup 67 /C put dup 76 /L put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 99 /c put dup 101 /e put dup 102 /f put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 120 /x put dup 121 /y put readonly def /FontBBox{11 -250 1241 750}readonly def /UniqueID 5087381 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98 74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730 48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f 15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427 bdd7da12534ba078ad3d780414930e72218b3075925ce1192f11fc8530fcd5e3 038e3a6a6db2dcfbae3b4653e7e02730314e02b54a1e296d2bef8a79411d9225 dad7b4e6d6f9cf0688b69ba21193bf1495807e7a1e67ed7e41cc25acc04702f6 8ef703e3d45722c1a91fdef7100a48631a02a6f02a08c6b1f9b4df8310385b86 8632718fd87119a233f219d9411383b7fa9f3e4780d8c27e2e89e0cae883d664 c3eac57a3aef8988a2e9f0f8c7f53e0a80bdfc4620e21287d0390e1975398544 7f3ea66401024bea75e1b4c4437b7bb188f76f96b918ac7c6ad7e8ae7f21d8c2 790f08cccec904fe48ef39e597ed4d4237c1d1f596f5906b19ea308020f7a35c 168e327ec3246b1dfabe912f6b6daac09974876d3996e57d180261110db05f15 e3e8eebba3d90b5764c03df3033a1ed678ebc679569a2fb297378b25434c0f20 5313ecb8a952f07242d3ee731b0cdc086a4481178a3d65129c47c09b22e9c431 e11b3747b94c26a757c38d06001798c6a568303d541385244b967d3b1786edea f65bb53c4c2fe75e4b1b15c2c78d930b4296c80f08bad86012451edc8e9f0854 c3b390a16e27b11b3d45a9f72eff8baded2242dc928a61685d79e09681c97425 5b90a498614cf560fa5b1718981388268ba206a96989e6d0b5d485d9aca5594a e67dd7b34d8a369adb06647f8aff8814d6d9cdc04a4835918e557174c5beeca6 d04d7f46a92178834ccb8306efac4d4035cc601e61697e492ba6e5cbc7f60843 f9a2f5a5d4e544b79a8636e512c9cec06824d25123ff28cd58b87cd0844e5616 797257c5f4c4c4a733e9feb40c089105a9865584bfeeb4d4c3ea5573b0381bc6 4dbd4223de702d60dea3e8767434e9546b4b9bc7982fa35897090df90faa9ec1 188709a85504074b825124db9d95d5d26c7f155890d75e0d6f94482d2bb1c6bf 313161521c3be48cc4a8f06cc3c2b406995972a9bf6f57636e60164cfe24faab ce3a9d7ee20ca42c990ba6312d750a06018d5939d8bff33ce4a513b862c9326b f63bc6c1276c833a4bb0116e982a0e4f88c07cec045f9fc1f5649ef3745ac293 85ba3923e814fd474e3dad5e4c28f28dec0b6d8e5594f247c4bd54f6e7cd0f44 e369f63f6eedf6d12f28d801753b0744b14c1adabdc407f06dbcd1ccb62efe89 3bf97998d1b61a02ca4350fe77c0c1d4e1c42dc7e8dc905c9de383a792ca4882 c625940efddf90115e20f06f6df295d9585cd419bc88d75a7d6391c7dc11a63a f36e7eec0721dc51d06678682b1e43c4878de52c4fc570a02e3996dd7c0ffd19 60989f60afbaf673fca133f8be11358153eb8f37d6e8381592de1c0b431e28c3 c6f6166d9bf0bd54d55b7f03839607e7456173e6f075bd48c2849939442283f2 77a3c38da3ebc442470cfa788525426fd951b1150fd46516fadb0f0709af7840 9c6ebf535083860f5b814f3081eb4bafb2832503593c4d8ff983a6ac80dece91 50bc02cca54bc33d64c6b033b427e525cc09239f561fbd448ff890d7f6c65889 5e12aefcdb89adb2a33e820b2cb76446510e462a12a8418116d51e41fbeb00c7 bedd66be4f694f42fe7414fce2ebb2e4e4c5655072895e84618bfd29d5f4c204 7c2a434e3209444b307f69885a89c7d422a923182cf6f9a1ffae802d3b363e4b 37f82e9c0f2e27e5913b068404e450ee96a9635d680e75625794044291e60725 6c744cbc3f1da9388b161180912a50f18430b1f4007b54b4a96224191de931b4 d3418c5cd5f4539d833f45e034f9c29fe1e287e63789af033831a2476b02a109 14cbd87180935af0e490c9306e0ead6e113f68b71cf5eaec547c4e8075a02196 882faa0edcd87e253337976f9ed118baf567f6832bbcd63cf3c97c8fb584a750 3600237e076bd945c81b2fd9bd05ec57ef4b887b6359de90225123c41df51cd6 4bf42e80417e21cd999e9c2fb0b17ac1fecd7ea5f10f8de6c9f1963c4c553658 546699ad8848e75b29cf8862bd44a778227940da4b538866f5f5aa18efb16e97 7e049291c3bb61eb3a6a2b90302c5652d5f9852e3c53024a846e5a6cf8d0c32a b2ba90a68815bc45b4600ead13ac015f9d78475c2c510ba9e172b35bbac8641e 276528315c12c2db2146dc22ebbe93bde8e36c5302a0c536e4e256ccca6592e4 6d8f5c2e979ce744de38d852b874a7f199a72f9ec590f84b49bdbe8b9f310eef ffb94f024160705a33c34006d34d0184a4db0fec8ed991092e81f3118ed382d0 ea39497c373a62f2cd0a99dca6da78fbfe3ebaf9a073c65c19f6ab23c7a68c43 68b0e57223a4e44785d3d0e0c6e4558ab55ff28b8af3efe6e01a862c84eada3a bfd16477b1c299a5e7d65a7d7fe3e99adf4efa72288f74bb6983167236911ee5 5bf647d93e9f5a091d198e61b46a2416e164adc2de37c0fc36a0e576de7c1c83 c494c0c9a60cf7a20131191862de358d0f26cfa9251b5145e604f71546df7f41 9d20770228509a873b37ef35687e771158be0c775bb26743fce67ef41727ff6b e57e4a4b3717fbe4b08ea149b6adde2b5593340f1b17ea9a568a98062782df1e 37bf3f6f994363383d092b6344ddb475966ddf24ab18a99b2982bf5950ca5cc9 25bc8e1e6d19435f372d170585ab9fd1371d20e6773439ee1f494deef3cd2c56 8d393786e38013ae2cd85b37ef01e6883fcf902a1b32d2a2d0dbe65b9fc4bbca 3c764b72be6555a42745584b572287be7b1139bf262db459079d1d00726d522f 2532c65c3ab3ba55c45464457ea855c6b1e83469f780a78e705622cf0662cd60 7a17644ce0ba993ccca5ce7f4b332f6fe0ae7bbced3475b1dc08464c59535c45 885732f7a6116641d156adc1d0e4e5ef728116add01af6fba2dee8f95b5fa47d 2c85aa538da8f7579b2df37cca65e1ea922ce2107270026ff4dc958a5276e1d9 c77ab78ad2021414d50154196423694fb8b3fa858abedea8ddf4c3328caba551 3184cd67ac9e88dbd84af8648f36b4272ba5efdba7144ecfa0e9365cc490f7f8 9769df7f6a8b81c0a763e87fd1f2480cf49baffceab1a4776c12c52f2705e1dc 561fc9f231ad3c7fcc823eaecbb79d1f429b6ff75fb1dee2ce0cca711446eca9 8e54ce42053554c425fd8af41aa6149a3ee2ed4af9d9b30fb7f1a99d60561439 7bbccf76fc2d6b539283d05f05adebdeb23b0d7301292bdfddb0db7d747dac9a 8d3e3f050a35686ee69101c1ca1876d6796193a8bf50e81fe2eb729c6d2e4c92 54f2d207c7f90405bbc5ffa534440fc9dc841b3b42f9eda7ba47732787eef748 93f4790abbfee5119fb02053144071b43318df27e1435a6dd73d4f72c2670ad4 880ce5e41f9c441d8c0e7466b1c72f22b65e5796e560e5b60b9a9c368df52073 ddf4711e4c6f08f3d10a79ff51c7da4a4470fe1b07545be69ea37465e4b6a1d3 39eecb3c353288a3aa52c3d8e65b71950f88ec30d5d4318c6c4c6cfea65d2b33 df2f2a8cb24c46b63ea87f2853496ece5f4dabce62f3f8bc9505b422386d3a28 d74eb2bf7ecbeaf9c02bb743ab7568fd28e888db49c15ab580e82c6a331ff169 95682f4562e4e6a465591cac017b10a23825070841f44227551373cf242c9507 c4d03dc98ec32e829b90bb5a8bb611938ee2c2783eb29b60fe1aa1f99d8dded0 2f4226ade7f3b74ba98369e49bfe291c72e5f088ad7aff031a558b777d6b4ecc e33dca1339204c294a6d2087dfc40f7a1cc19bb6bf099b78d9d477be888e47a3 2e93acf7a6561f08abe8096a9f9a4cfc307900faecf461dc11f04a8cd4038e98 9372402ceb5739ce46e6cb5cc01fe1b99d137862e9048fc4df9dc2b862b5b09a a9f41cf18d8e0a9b0b02eb82c2234915f5fad15a6dec026870a06bb0068a4b50 f9dfffef87869358855f8cd881c4a2fb9ab7e167a5a95ff1a32bcf426c1b5337 8016b9e7dc384a21d83bf8c88788ed80c0546168443d986044fa04e76d44cdbb 3c53ad3e6e144b85578f362b50c40378ec4e6b5eb5282047337ff1e7f83d926d 395899fb0505027e3ef955865bae3e1688f585ef12576aa01678100eae0729dc df25ca7f1b5de4fc8837faa9263f4dd46a1c8b47a059361d015bc93cb0f229ea 1f5bfe84fb507938431c971d85d00947a8ef75d3a14d6e0c2e676ed2f2014a45 fe9b7d27180d9dc87bf150e6e8a20b50db467c86a2d7cda78f86854e538ec389 5aac25e16d45847e832c3c85a55cdfb3c269115cd9dce0553e0b8c930f6e198f b728ddb9322c4b812c6c2a5fe58c8b1138d440ccb99c13b84dd6cf93bb46a7ab f1f0b7d3e953ad7d00807d8dd09e9bdb6e33383b16019da702618f3e525003d7 6a5e43f39a2af4e2ee7c97457b3d031937ca027f9c6d61256d7430f94238e25a 8e2982a86c70974c1b379d193e3db47d1b6e120bcfbbea48866d22ba23163faa 6bd8f4760fa4b7236748c0ae53c9236557b614bf8f0e37a6a7995fc6a8180be0 8cdafe24fc35bcf1150ca79a2a5130c43f72f60d524af7c077ef368d6fa8b90e f806c98e0e61f302df34fa3cf192a835a433f12e369d92399b2f9490d2e03b70 ff502f385cd8043fe94a7d7c80a7b84b6034d168b5f25983c54c800bb8067718 5929445aa187b955e437e743edf04fcd451df3f6a69450d9e38a708e21d53646 c3091afecbfa17626fcc8ca0e30335362fd311f99420d9d342e904f1bbe964d0 1e8169508410c959b3dfbc0111546803aaafdacc1f6672f261bae507e18aef11 b3befa7e65f6fd61c45216cd147b5e6fac4b45bf528f6a9c184bb8ac578d44ee da4f6e77797213ce27c9d79e35c0ab1c162f1f97ce48fdec70880c0d879ee2a5 a345177a42307e620109683e0f6685376a35671609c5a1bb14bf4e0409845daf 0dc8199010b779bdeace7d682d7c10d9a5e5668e61132bb1a601bcd74462bc71 19f30a5a0d5d46759214bc0c64e26c67c3ce9a078dd94b5c17735d5e32a528dc 06c2b11d81398f578d7c7335f7db493ece67842f57e5c18ac2bc05d5add0eb00 775f03909455ba227420bdca1fad91aa553f54004dae7b325e97a8891cbf7213 849650791208a3fe2e3f081ca4cd2c2577d214e515392e2e8b0036a683420b4d e7a0c753d108e95dd4814daba3c15a9aeffa1a546bf30cf02ca75fbf22f609fa 76c435f011bd7e351b52765861fdd8c4ce98428c2323139fedbd2881a31428b1 9baba8e3730fd3d6624a17f8346cf453e9446faae35fd127384575c2a8383ed4 4384e820b32ce435e2a3691638d0902849cdab029e4a3aec20820ee58798e231 3b52749137aae3e90ed37ffdc95d1670f4d05f8fbe7d9a9937bca81de5ba2b19 c1ea8290b5df71682b17e68e73e197a853891fdbdafff57309aa713bdbfe6755 869fc5e1588a928faf66afa43b1073490c45c2ca6ce6939c64cfbc4d476cd154 ddd85aadfccd19191dd9d19a50b85447ea161979111e006fb03d38242bc3a9de 4e813a98bc07ee29a624a6819ec4f2a73f6159d7db6cf39a68fd2957ef41eecc bdd923aa8b9c20c2c3110ffa84e465212ff1d485459ace7e833428059d63ac68 c52cee638b698e9879be24a6ccc20274b3aa28cee0e7743a6657ceb6b0824687 e626dc62e5efbe875824c1e05d32c5546b08a47cfb1ec7b5dffe8bd206415cd1 53192f583c2f713fdce2cfc53046d912b64ce9c311c8c2f6006c632f13a41f8e 65a522cb9c3eedd721b8a39844e56d8cc15bc720d5f312832f6a0bfef43f7a8e 0090c7f0d8a8b72e02178a3da6f176a4978bf21b7de0a02ae6a45b8f4a40d7ec c8c45d5d595babf302306473ea8abdb0555992f3cc6e2469e202c571d517f333 1fdc44933ab87182afea5dc44c5e18ca37bca673dcf4abf99c6795f9014b36f0 fe3debe1ff05519605f620cf8b31812e14f5f320a64185e3e2efa0c824d95ce2 e9ff92571cc91d4eb9308156f13c797e4c80415911a0f31209c5dc5d200254d6 f7fd6ef7998b90dfdaeaebddc738f970199c83a6b1e98c8fd75e071e54741d1b 904086a246414c5b7c8a4d8bd257abcabf502b798f3263af52f2b6a669c88067 8760177193a89ee080cb7ca8b7213ccc2e9881e8163d9b672a64aaaa85546a8a 90821c979aed1ccd87c0d2fc2c78e0bb744b86920b88ce791d2060d17ad6ad55 90acc3c0112d3e278ad4306508ec49295644b988e74a3c079402a6552edbb831 b82a95d9471b5ae52c9b93c422e1a6dade501ac52f8a6b6063149368a52f0fd4 361346cc5c39389923e82e24332645f7f0674f34486c0385602790b756606931 1a4c48bf285c08769b9227d9ccde3419af479f8f7406ae99ae3688576bcfb7cc e1121f563b890c481ffd6d347e33df43df2db5a62f0eabfa91cdcabafc565292 0986f1fb5f3844434c2fe645d5209a8fe1159e2797b3921888ab1608396484dd 10803b9766f5c7e2ca89bb372ae54070e23163d5e53341e51e94201c7d02ca53 5bc78cebe116171a875279128fc86e056da08606310890773717a56b8e5d59dd 8efc3b73b2e5af6e39b2d2f2ce35e7b0dce5e6674ffb7cb53540da2b28d4eef2 e620575669892d9afe90bc4faa898558247300fe42d3d827530090d256ec89cb 422efde1e31f786ebfbae658d76a3a9a37600537e5ee1f728feb710d7f4f3f23 463feab7f663efa2ab7dbe9754e53601845ae2dd898a02b23244b1c700139a9f 9bc12f7467ff6af50e5ff905146f515d64682c0377305da79ace70cbdaa182b2 a6c42cd5e37da6fd67b4257b971485144a6ae91c3a7ef2f1a528205e4de58c34 0f755d98c045b65dd20fcbeb04f40561cb705720b7671d394e8ec4b60133bb8f 1bf915448987f03932d41876a270ff158023f3cbecfa63da4b169d78516dfbe9 513bb965da4dd056b83b57b47beec3588b185330dd3719c88655c751380fa681 bdc92b17b74ad4a586264b67a4baef7d01e0e2d4e262ac90bfc7e2f2a34ef0cd 72c7874c7e6395a832fcb69970a29affd0552e4b857db5200628ffeef12f64ca 0e90e33353e89b16df2fc6d688eb972a66b22237a1634f02696f6a5bca92e5b4 d05b96e16e42a1844fda98791a278abf78d4be21653a595138c12d5b991565cf dcb33e42cd49ca3b27063964e95287b8a9caf208d822fad63be271de9236c9c4 04b2ef94b9ab387f7bbb62c456f0a337b5cc022e4561554a2b4bccb339770e06 220c3339b3e9907a267956f838fce6ffef406d84544d86335d77c2eeca730ea9 a6e25f479f6330fae92d2e7cf36edaace122c7da55eacc44f025fac55fbe8d67 4dde0054cabb32ad73bdcff2d37aac2cb441b4af9922077a616df3bc16b2a435 8e4724f295abf657772c63f30325254db0dca4b669d9a509308daffb001c8fbc 50f09018454da41f5f006173f8274c0098956ea8a928a567e4f1e0ac37dbac90 e09371e64d597c817761447dc5eb84ad575f0ef1ad02eddd89bde64f547659da ec2fdcea6f5dd302a99545cec589a860fdb00b07d1923d34e52ac84a9d614eba 6c0f86fb24397d68e6903618ee07ef92a548c0582757ddc0802337bee75414fe 5b6a05508ab6777c6164dc208cc133a85518daf61fecf0e0629329ac8c25bd71 bfdc24b33c9f8688992997b1bb51ab97657adf461c382a1367262ebecb385503 148c84e0a2e9574c1cd0a73037e4e2603f3bfee8af8c19b3ff7f0d837371fa65 37609c8f5ffc3c1fa514fc6193e597d013c6601f0d6366f7564b843be6789e3b df561a4c39002a563f7d7b76d77e0653ccb98ff18dd8d7ca277a7bbb804840d9 bb3c24c71f8ef192ef00f9d509d9c3c573bb0e63b8f061a997813f864c1dd7d5 050b0648d1f223f23a17b6cdc085909f859677a6545f2a609da3eeb77840acce cef81f412b8ad2cc2e5000bad4f0453e24d86e253433864dc7b0fac592a8ae1f 8ec5d68fd776e5703e1f81e6a2607fcc22a94a382bf3edd20ff8b572ab5f66d1 2bc56c81277baf95e9da14b70e655d549206ecc48b9f88458586d771b549747f 951f32b1d81a0393775e35b55b4367ec73eeb5ecee4b10788dcfe52889879583 ec2f8b22f27910afa6ec289172b23bfc5af87366a7beda287e252845c48681f7 50ef0effb5e571ea4c084771c591e976420d3bb6b07101ea736c140f06e3dfe8 51060720dbfca56e3823250a807dac2974ced20613323f53d51bee4040506362 5283e4234511da9d6fd3f042a98fc3617bcfe9e72cbd6572f3d377b7c64facc9 19648aeb1a220816a9da51435d7312ad3393837cb3599bb77ebfcbc7842a1d6c e118b8fd695d844f56ae86b93a8ef8cc8b3f8c416ccb1e54fdd2aa2e8daa27df 0cbb929738c73577e281fc7eadb9796e2bb4b9fa84bbeec369b116723090f2f1 c42434d2b892a1eab53138feea5e9721cc9a4056afbab4ce5858f51a2aa77318 fbd597e514a18ebad22a77adfdfbb176e28461e6e9323dc6defe80927360b64d 3ec7f915f1414330b674d4ef421f4b8bf918cab5f9551b6b766593c565d414a5 a134fbbf8dd1ae404c648b26b56ce53aa3e92ca941f9831304e1524be48f2a1f 64e77853f4c9ecbf1e0d192d73b3be40bd775caf27c7ea54bdb086157ccb9b6d ce181f70d6b187072a906d8c05d3f5e981a0d39cb3e2e430730631d88ff24a78 e1132d6428ca0ee29a32d25942988db1762685c55ca3203fed46efb7a4194ea7 186c417d40aa072e5865fa76a185b51f4452c50bbf40dfadff09bb3375ce0ed5 6f89928202cb484e34f71d011cef0b4ed7b44c81a344966d8b2580662ec08802 078589f6f635915f1d2e1f8020452819a289bafe465e86c779fc93df2d2781ed 49c158339307ade75eaa9a94256eaf1efc44d24d949ede61115029620959aa19 eae43535719b72ce839295dd83f1878d713753d9e3418aba17d495e8858fd240 7f83f6ba2db57c97b403a92697b789b2ec16a38f698095b8fff3043fe42e4c85 f99b430621e69221e5b7b7e525ba77c1526652b81980a96df4b6e0b603ebd42d 0a6cf938123e60ba4be402b5ee320cadffefcd4d60996bd25134008dfa3f0b77 61f33138bc6d2a409d41ebcd4244353e52bb374b7dd0c459fd536fe8f3cd0531 cd03c9d8c507209c12fe691280ad1396165e7253a83d032c7062c3cde1d7cb5f 638fa8e13a04411850265964a133a61669f1fe325c5d18a91d999ee83a82dc17 a0474b75d361128fdf9c54ce413ce5eaa86251fa573dbe0c84835ee94c51d992 7da4335fb3a83c2997166737a630c624ae03b6d841a641e58630002124264607 991923604c3c056ed05b32e1792188c7a5b7d949ce1c4b5af5aa4bcc5d229f17 01c705cf6984c04a5a1f04e98637f12f2cab97ccbdaf0e62a2762f48c3f8af37 dceb87696eb7f8f4b6631c782eac12b5c16fe92b1950042d20a6215f8dd74542 3ce52aa3634549549616bed8789ca2557837ba56125bd530d14de65bb8bc5611 796c3cfb55622dc84dc5f0583acddbb1d1e1adbdaee62cbbca1dd19e03087c89 ed6428d22a9baff4ea4c73e2519ac18f92c1a423f179e9a1ee5ce1d292aba03c cb1a537a1dee91e884f756b504d2eb4b6cf9637257fcfcc0662d40274b40e363 13f76cf1631abee3b8b393e0728de553497d4ad110ee6eb4cc352e6989dc6687 fecbabdabde96a83b8ca3738becaf8dbce4688fc4b2f94fad274c547dad5aed2 a19764c2a227768e8b06d5e264f8177f4e9d7791bdac2a2957efe73948d147c1 3a290c8dd1f376635ce7ce3900be157f4b5a15b1e118c1d130d00c0d2c448002 5b2da817271b0bc1e8e94639 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY9 %!PS-AdobeFont-1.1: CMSY9 1.0 %%CreationDate: 1991 Aug 15 07:22:27 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY9 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /minus put dup 1 /periodcentered put dup 10 /circlemultiply put dup 14 /openbullet put dup 15 /bullet put dup 20 /lessequal put dup 33 /arrowright put dup 41 /arrowdblright put dup 50 /element put dup 54 /negationslash put dup 55 /mapsto put dup 56 /universal put dup 57 /existential put dup 59 /emptyset put dup 83 /S put dup 91 /union put dup 93 /unionmulti put dup 96 /turnstileleft put dup 102 /braceleft put dup 103 /braceright put dup 104 /angbracketleft put dup 105 /angbracketright put dup 106 /bar put readonly def /FontBBox{-30 -958 1146 777}readonly def /UniqueID 5000819 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352 05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23 b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145 d026957276530530a2fbefc6c8f67052788e6703bb5ee49533870bca1f113ad8 3750d597b842d8d96c423ba1273ddc63eb43f34fa90ea73a234af35fd9b24eb7 4f19626e9124df7acb92629cc87b2cf81c4a89b27447806db34393ddf0402958 e2daee0b4bf315f9aa0a2650d2e11ee289ffaec940d0af160fe7f29411c1c458 69d1ac3bcfe2ae4da72422549095f1fc9fec606289316f106e719a4ae2fd45ee 868fddf07a80e9a626bb43cdfdaa9dcd208b88fd99af20b27f9d6b5cda6a3fa8 8d5acfce8b5eebb38854378cecc3bfdac526514f1be9fb28ae628918ba942a3e 05b78c3aff808cf416a5ed01be280231b75a7aee0c66b0549713bef6b3cbc188 e625ba81b488c42d3245430f2db48967bf024e65206a3625c0f52c08937874a4 24c98fcc91647b596fed38ca336142d550b7d1ab09672108cf699b23697c2426 bd001da008396e8c3d49894a4686848cf305934905dff55d87324ac2afc33cbd 480cfc07c85a27467b3e032dcd42f9c4c019a2f76fcc5c7298280f2603d1889b eccc02834e4d133ae0cb6f3b59ab536f86570ef5f025385e7c598ae3d0c5590e 2f62ec53a1a9e516dc2d570708c5356ac930e085a035da89d20844cc26d3d327 a542b5d803d942924297b62b875c480d7c7c77994540272885d59f879ec27182 7288e7904f48b0127dad0f0cd0d3385956697668f3a710de2b856aba6f2fdb4f cdc2190beff01f85de7e58fa0150e702255929271b4e4c42191cc70978089456 3cf0237b1ffcd702cee53d102e8711de81fe73fbecce16765d11453b588cf173 abde724154220f55fe6489329562339879d278d77f873cee072630369c2f21da ac16d611f742811d785e13e236f7fbfc5bfd1b9510115200ae014e608cd7b135 c344dae6b0d7de07466a8184ed22d65e3aff09c117da9338ff787b96ae31ba14 f4d4cb7631da1a03b060baf8ef74b30022a0007568e2c0d4cb174445942d40ad 8ecdea2e0ecfb60204e02a0ff3ffec0d441e6b3a1dbf4da985dd0e254fff42e0 1346f077364f8d0e9da56483806dada77461610cd86c54a0005ef0dac3894617 008c207b0834fbaea01ed5ebd8358da3e3d80270ef5d3b6f70f27ef8d53c5558 6f2059eb3d2911789b0c09b1fca89cca3da03e3d51128978abc334027e3bb4be 0a1ccf8dba1d26fbba1116e0a796864de4dc2f7eb9a9b7422f66572ad96c875e 8d2820bf775ab61e6130eeaa3a5c388b2adea5f79bb3d58ee5c8e6baa66dd85e e385aba46efc16d164595f7402d2fca63bfa57de9f015b46707a2f3bff330816 da600a5711f025485331b9e804620f08b030f2830be031746be6d25ea1cb0f1c 5474cbeb8f9283d5dff930071457a29487caca75b3c1987c455f4c61037b3057 64e2317fcfc7ca253d614f311b8a57485ab68e3535cbfdc640029fdac6328af8 8cb2e7bdf229170e981ed880798f431812ac3f9aaf2b5206e21f60ef107758e1 89432b1aad413d0832cf5beca95b36d03c8c2c69f1514074208dff1d8739c282 90a6ea8d5b0de5b778bf7db66267036556c3c41449de215456adeac9d735a3f7 022edcea1a5675afe8ba95fa9b0e4ca06074cdd3f5f358b8ae242e293524fd9a 6a64e0afa6e56be65a499f27aaac7a8287744884a03df338f0317217f006f546 884f9e0450b6bf10a29444c2987669c4c36f582966abf65744c9da87bf849ec5 9bb225ed7c12ced07ee661a2efb83f1b1d04092db5b93a9b0edc4a307432dddc 3e27c1a40d677f15f3278a89bf61bef9cf51a1b57d481be798b6c08012717a3c f91dbc383353421b50dedf8642bae21d73f3db95aa8e7824db790b301ef88ccd cb3e54c111ff9b93a5c032a54e2e40ab60960f2467954aabfae7047dbe8451fe 9f99421b3f4fcd14d5818d9e044944e0736306c937fd4ed1c099fe9f8273d17e 4bb61942d3aefe3be66b5ae59afe32bd0a21af8e28c906e0ceecbb3f3d7bd263 5d1e88acb540c76ad1a12fb4dfb726395bcd0758fb85f5b9c3c73e6c5087a0fa 1d74a185107bbdcc39eadc6bec31ee0f68c74103366697b8e8132f017baf446c 9138829357cb8f127c4a40aa6ca61af3ee8f5fcf8645e404854d1fb245bfb05c 70b78433a9668418ba1aae4d6857f33a51dc16d757d3650af178bc075497dafa 06318acb31d4871124275f38ad4330225929e43e012ab24da1a93ee37ade9af6 f599d570bf95b662fe606aa83dba97ac4ab4ac0f2e54d45715da30a2fdfaa3ff 1c7d0b2f5b3039b945ed3a8d8c47e3225708cc71a5dd5651e874ac2edae9c4bf 1cc8feac1cfdc5f9a2c6035ebca682a3bccfd9a1e4ec63a76f9035f074d557e6 ceab255a9215c0ae92a2c3ec1f0c12ecbcc9dcd3d8f6974ebdf4ab01e44ec446 cc8095490949860555b29b896b3c00e6d34e5c3655a5f6752ce98a9447c133c3 257c1bbe0a1ee478c07efb4af2f9e286877bb01dae65fb15ff6ca6f536cfd3eb dda68a0c349c6047772ff2a38b96a362bda9730a1560a8acedcc8a5284ad24a5 b3825a07679ed2f517babf241de74844f65c48902c512bd038d6673afe74a2c2 43d132927696695fd6ea02a2c3441503272e3725b4dfc248836ade0e75af156c 9708f80ff6189a604ded3e0307686abe05aed83a48e5614f1a7c341105d8c209 f6d6dd255e4497f43f0f50a93a9c5d0d40473abc35980f397913b52c642659f3 c0c700013b6ec2467f0bc6da104813446e98eb15a3df558dff73d0e6b9b79d39 ea226df16e9a370e806d28227f18033d00d5f58a126c65861e70f5caea507439 9426d87461a6b445774b5a450be6ec4f19bb7651016ec4d43174650701c9a9bf ddb95754bfbfac2992dd978c3239ae156b48f4f6eb6bce21721bee2b3d1e9bbe b1a682e2f37d52f04f2fb87a78f9f2006079f99209e12e18148bdab090ca302f 4c66c18e73bfe6b05711d71c832751c140637b0f666a772f6ddb70fd80b1e152 660e9e72de186000b1b720bb0e6e64cead65443d9de306e9833d018b3b66b4db 03039905bdb2ff9a895166f7646a2f4bfa05dfe19acfd5484818e36e6381f326 279f2c4ffe0ebc0f8960dc4963457f7c5806b1aeffd338360eafd06669b6d06a d2157a1f7e79966fe77d6e19598e6b97991fadd8ce68b3e7f47a8dcbb9f5c398 49f4dd5180f0510e1f13cb1fd9df671c11187b752c10420a58b4bbc258fb1d0a 1d9707c003a73c8404afc9fa6af3df8bbb2ac72a4eb0a6fbfb231bc8c7d63e76 902d1b69c2017e4e88e3e867f881aa3246184c0cc6f4f876fb4dabb70692692b 9d816b706fba24cb0554b2806a3b8da318401d3baa6ffde25531b519ef2d2b66 3a8c36df3d0dd99d5855cf6544a41a05051921d5ca0bbd3feeb5b103fd2316fe af1e9f156319a32fff17ab5c94b0c9153479fcef112dff81bd8c449a938056c7 a88da55b199cb0a55c676a21efdb84b12ddc2f4dbd2e953688503172b0603358 151f732e75ac6429c2c6e85b25095f2cfbeec663ed6f585f98f83926087771e0 9b0452533a6ed954bfc74de58f541e03aea6762ca50d266a9f735e235de4129c db3cfb94bf961c9c4ef1728feed23a25150843bbc78a0be970c4d25b065cd4f3 78078f673dcaee6f888c2aa157056bf9fb62e39012a6b7901a5fd6a5df8da84a 5dd57011140cd0c885cdc5c6aeadc2749b0213c62f2cbbb3e2741af54068ce13 67bef2725a619d13bf9244b352bb536272d24f9bddd1e25a321793fe3ed260c2 83719313d3280223209e671a646ea695be03aedca6165ece7996d52013cca8bc cbe33e777ce467b68d55f24ac29ce22e623983090cd32e9a6ae92bfd7e504fe4 05289d101dfa241d468f9f2093b51a431536d00f45df3b33357115b671d34896 2b45a756b8fdc004ae8c3dfce02461c422b2b690a18e22484f5a9286ed2bf1c6 f0227acc78ea2ef710404c49f925a5985d8bcf65bfdc88e87b522077b9407bb8 0c91546f9187414f6124b8cea5f46bbbc63a9c839739887ffa786cc5c74ed749 966148750d3c6bc2e23e6046150ca82efb68515820eb3a6dd7003a30c058abd3 b110a8c59be8c3e54611b2e3159da1d4968ab263be51c3a88f42cc2db84463c6 1d99db6bf5342db8e14259f5824a95f0bd460c2c9a77d5bec0cbce9a566f493d 8aaa192bddac3b10bda6a26bf93c1c435634b3eb71b1e2ab3d40f2d2d5ee0209 b483e1be9e620d93a29eaeb87e298ae346d8a085175af74f7f0258ff7e54e4d4 51b6f61a82bb1b25d1dee9fa5910fddd0b09eea86144ebe3e3e9a76647566e75 f103c52827d0baa2ce8b8d5879ce8c52b0ea6657c7cc5ed85179cb09b2562c15 529215cceebdbd6f1178617c6f224caaa503f507b8829e05a8fcf8f5c5b99f7f 035808dd21e4666cb7220aeb405dfbe85b7be1c2e3e94174f435381f60bce205 6a77c3316f631930a4477bcbec0d059a09ae9a910420ee2f2b61a24c068b4e0e aad8284e0b7ad87b3554c77f28fc35ee60139ece3ae74f7441dc4f1cfc6a0ae3 f9d5788651af1ddce89da74687125b0a6f36e44b97d5d99b40d4214415eda56c 451f806db8a26a51c8b8893a7a1bbdce41ab77e4e8dd3c3714b4baf8edbab289 e2617b58c103b9050b3de5f739e01d428bd22497ebf94a942a99abc7de620e12 bcb04a1655644fc7fad8303f0835b067360f39e125d4b673c8a8f39811eb0f37 31398cf1085ae2eb4ee96a99f955a2bd10820367ec4340f5ed18c608bb653c94 b111d594d88d80347e56e60f27c267ffb66fd23009b3be3145538d23596a27b8 41c93b6b0b0f17c50bf472757c71571e547bcd5537a718d21db91f2301bfad2b b1b6deb4f15ddcf42df543fdb0034219dede60c3965f6ca675e6b263b25bf22c 94b9f36b2bbceb743333a409ec87cc9b26295410d15cfaadba3c74ca322eafb2 11a5fab148e9289333b98003d70597cb9d10e0e1041fad8b5f9c54ef88fd86be 166add341b4ec7aff43f3e424cdab5c47fb934e49d08b4d4f52636438c77f304 8a7e58b77e828cffd8dc6ebcc6f0955b94f3c5823a884c29d797688c34556868 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR6 %!PS-AdobeFont-1.1: CMR6 1.0 %%CreationDate: 1991 Aug 20 16:39:02 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR6) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR6 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 1 /Delta put dup 40 /parenleft put dup 41 /parenright put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 91 /bracketleft put dup 93 /bracketright put readonly def /FontBBox{-20 -250 1193 750}readonly def /UniqueID 5000789 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf 5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b edad3b72ad63c2918b6e5a2017457e0d4ebc204b031f3fc6c13d7da7277a94ba 018e9998b3dd888011a5d7c4204989f30f908b95533bda845746b673ab71ea57 65a0d14f4350707e47c8276305b28513cbe1bb0dbd269a53719bda46e536685d df78ca0146b6b93e760256b74d939d4e35b5e77238f04c92298dfdd188feea30 e053eefbcbb52f2011772b3aae39f5805597bbc1e8bb75a446ce014030f4f2f0 f49f9e962ee4a1024a746fa92a3628db5270732b54e43fe5ecfa524f127e5fcc 788e77e66098336ad67fe4cccaf0253272d5df79864bf4b734cb9a5859d557d8 bc11b8e00221ebc12e97de4b1f466ead83a4c894709363bca9040410a52d592e 34ee40cc7e5efa920546b981aa659513a24b1b85c221a1875b62d0b89e57a368 321b8043a5b094e0379760a443d632892b14ad6d19dacc8c78093243ad67e6a3 08e56e6b68412ee690b10dac6e17708754a00d51fc957b500eb80175716eef4b 2ca1ef867614659bee3f2b7319e97b6fdf1efc847bf3cee3156f72f21751da8e 5fb6898919e6799820d3de0642d756e09d6fae4ff08dd3deda3173bff4bb11f7 9109c97ddc05897af709ea199a90fcee8ce4c7a3c15b18170c41c04de2d3fba8 f34296a95b8e1e8de3739b17273f8f2c85e914615e8eac5e8bd2387ba3b1edf4 7968f06e2067d836d0f9f3e085cdfd2de06a62c81d786b304326f7002e83160a 36598589228b4dddddc43c85e1d126f8fe81b828028e26317af5894aaccf4f69 6301e1a9fc45935d8a414957f08febebbc3a72ada80f101e47447d019ade56e9 f4fab969bba2b44e47399fedf5caa1bcea216d7ba713d523dc2b1a89801ad4ff 2a26c7929cd309eeca94b69ef46a0ce64283d04972d2f2eb97e48d9e30657089 5243846e2e56953fe7ec7ff6088ec16d6e7789d80c4485a99d6d86e4214eac48 d34ae7c73f4cb3fc27c826f8665f82754e7963eca4f71da6ce2db171d5517243 08e884e008809a533c8b3c7ae3ea449159a2edc6fc76ed8efc0a7cae4ca32e01 88e1391b2a8882ba2fa92d4bd35a88f6808e69b39a492b88ffee08b0e4dc6009 a37e9da8e161d180ce26dbbeb18a9c6a299178cb26c9d00570b8636ddd4a6a85 3fa7dd83226dd0f1b672550aee94827e8b4af7e36bacbd6c585e5221a012f6c5 c3e5a103b84bead5e95a1adf7d26ac8f8b1cf8350d0e6af5b781da493a1f29aa bda9c059d40b76b2fadc6b1937eb8f524b1a341be0eaf6c4f240293afe399b7c ffb7b1c5e7a39fc57a8622b54b37c3b00d617ff12673d54d1447988cc55e8248 c6c762a646d20af2aa4278501ac4b4da5bf152bbf28fddd00f7418c1035877d3 29abf7c1c631aea4fb01c7e1666c4b729be4edd584b47bf588340505ffa0b932 8b9f9c24af7f28839c208a6e3f11da3e59f44dc22dbbabfa2c0c1696895fe705 96e1f53840aad72302e3b211d07bd727698d095b7fdd83cf8033d0194206d07e 0eb694bd5b1e72ebbf2c2625fb27670765597d08c9d756387d83921df7067b13 ef71cbd20b5c5124d9efb88a9a711ebb5a015783749ab3f1483832af0d787de0 0f6197c47cd1b30cf180aef793fc78815678cff0771539601d64592ad18a320d 6977efeaf4dc717fefba9e9c3d95b727e2831b7be99532381ad2d93f2dd2ce57 3de296eea594ad33e3a532f6cd67d5370554c1f928103612f92665806a877333 abd2211114ec60029dc21d974e75bb1ca889733d3038c66427014f91855efb63 2bda37a9a45758e6e366deb33e5c6371bbc4a69bac69fc234bf1e215dd149f86 417f61e97501c2b7a1ea114e962c8935f8e987aded3bf6ad13a85e97a58e614e 0357cde6a0f33c5f98febf2505b53f9d5c4e5a9d66b03a2a912282ed0fda2dd5 632bb15a4d4a1d9467a4e00560ee955e5bffcbfd1122b7d2c3da7ff594c02374 32471f0a61ab0495e7024982d7d2ca235198e6e67acae37ff1e9b152254bc670 3089ec1f4903be7632c03a8ef9dcdafcac69afbdc56a7a554091fe5a88df210a 3958c2ea1e280d0d52b6315b8476c920af36761d278894f47a344bd3a00d70c4 2c3860797c0448dca237e5e7a89706466b494396810b18babcd00901ba633f9c d9c58408e15b7c89c5c43f419d6be6e22cb5b1cff182f56d1723c9aadbc42d64 f4cf3453a36372a7407c893eb9c38a2a052359d5ee2b46c31f9f800ae0636ab3 2eb3c53e99dc137c069bb259940cea4825159cb7967d04bf617ef488b27ef7ef 0f830e20a085721f582264a3183c225125b41473739f59ce4b4122f4c59f1dd6 a6dc611122f5c9ac3f8bc668c27d0a07db26953acd397367fa1b65eec10abeda 0606d45f19a946b296148d4335e08b2d02e3d5158b2e892f851fde24fa544e63 8462321044c11e4f823543efc026ee9f71348f509765f11cbc83cdabef8fc239 2a7d13ec42beedf4d9d79b42b11603b1424ca355e889cc7942906822f95478d1 0edc903bfd7f4de2fe553bae4c3bf1fa0f7554c2d35812f984b89b2c34eab449 87c8a1f252867b670d90e7a461ea5a363d988b0d3458ad1c4af2a5d3bc493dea 1867664b6c1cc379184597dc194126740cdc64f35447c3b9f06b0cb199cbf568 76a4a22d4e1f3378697ba0e8517d977cdcc1245effad784ec95e1cc2bf99a0ad c99872c99a92d85d898dbc51be756935663c30911de8668a8ec2fde9c12e9f5a d7007e670b7e6b8be28df5f099fabfab84dd53cfc621b780a225d12738ee0789 8851a251baf0969fcc9aa2f43ee6190674254c69327e8645fb58df80cb39e4d1 2d89e940850a3295c329201ecbc0edadce90c22e6ca38a9af6be9c5959192424 40e0ef04816782fbf0f178a4bb85d9890d8f0705a4 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI9 %!PS-AdobeFont-1.1: CMMI9 1.100 %%CreationDate: 1996 Jul 23 07:53:55 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI9 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /alpha put dup 12 /beta put dup 13 /gamma put dup 15 /epsilon1 put dup 17 /eta put dup 18 /theta put dup 19 /iota put dup 20 /kappa put dup 22 /mu put dup 26 /rho put dup 27 /sigma put dup 28 /tau put dup 38 /sigma1 put dup 58 /period put dup 59 /comma put dup 61 /slash put dup 65 /A put dup 67 /C put dup 69 /E put dup 76 /L put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 88 /X put dup 96 /lscript put dup 97 /a put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def /FontBBox{-29 -250 1075 750}readonly def /UniqueID 5087384 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98 74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730 48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f 15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427 bdd7da12534ba078ad3d780414930da4f8d58abefd45db119b10eb409dd89792 3c6e705479464a4b33ae3d31bfe98efe259f07f7950237bbaee4f7b64ffea83a 757fa717d50c3298392891bfd60e34a056b0d6021da3fd9b8b01bf78b0b23dc4 ea3b0605150d20b27ff9ea5f2524661019d982a2e47cd7c21ee5ca9ed9227821 f8d07119397de26838c11d7b35bcedc43e011626e300f8249ed846d7b5ccbd89 02550cda17ddf113df658fb13f8162681013766863784efac128e01ef997e1a4 30312afac8f3d948edecd7d5090ab5c864b91d7f6e80256f0e1fc99f1102b74c 61cc456e2e1bedf0e627d5f70f738f963a13666405c51ebf23ca077e97570a2f 1118536b92e585cf1dbd5fbf36a0a5d197538c05304e93a15f3c931168d91d42 483ef428b1a3f1b7e548fd1d23b80f5523c8b8bf450b02804fb689f915c86693 f7dfb1c43f681627c7f027021aa3a8179148f1819cd94b8890a9ac63dc1e8a68 f254b64f6f173c3d02e3ebc037da05074017c8b113e94f4e2d26b467ef9da07e afd7ea7c86e025af52c5ceeb835951e67e02a38daf1e9e698bd21996c1071e84 ff7fbe77f6ddf9d06fa92b16ecebcbe0370b5cd9d450d0f2906a105cadf93ed0 0abc7fcf2c996e7c15e452006e35390d99b9cfc59925f1444c20d9c3e1fc2910 32cf9fa9d580eac1bc956334da391b870a757c3bee6aa3e005b20988d85ad41a 64402a9726e3051fe2207b7521a437931a774cd81bd14357bc48c26aae9dc596 e2ae932d2cdf44be37b4c1e1295b617f8ef63cabc67c8a938b2a220eeea74fed fb346776d18855ecb95cdc8b9db6abb77cff943a70aa730e2c658b257fabc2fe e2ee3e493ef0414cb723b3506c47754012f5f7237a02093880174a792ee5fa8b 752ce148c3c8cbc461a2a99cae1170dbfa4cd9a0705a56226841d063066645e0 20fb6881fe939f56d3fb1d699c40e84959124895b9f3b0325520bf6085607a73 2be41fe5365e6b380237b09edb00100d04083f55a80de3df412689a9fde439b8 cc4fbd99af5019cdcaee7a444db914e7b4caa66f4f95b1b3138ee9252e6fc6e6 f75fce98fbf20f732614102d4b6b039146eb624156e5b1f1e1dbbda0fc67fd6a 02e9b4346b7916dbb5fff6b0e9752937f867b744bc35be64749fbb9fbee9a990 b3262da42f2c9c04a05af410e2372260f48c2777d754624ea83332e5cad36880 df06ba242ac9cc14594e6dfed6573dac5ac88aec01a5cbe1638b2633f9b11eb6 7cc15e336d2cd2aa9b84e34726d4b9f4599d2b51f2007e03a9c48e181f7a1422 b289213dfaf15591b253319bc67d6b73b2fec1e23297799f009b847389165982 9b3d782b51a5530b05b00e93efe9447e3afa73b7d93a80fef95d5c543fcf3c29 4fa993f207bc3e66781e586911ecfd8bf6cd7ddbc8a701dbc3618703595686e1 7bcc0275a447fbe0cbe4cd150b03d28d3df765175ab5da47ef53951f62c5a69b 4c1b5e2e4fd69bb4a0c73c943e5cd38f80f6ced45f6c5a1478f3dfcc008c5984 7f386e671621fe85441742375a4f023471fd905a10b7bb678af93c1ab9524bc2 53a2b40534aa1619a46972c860237e855c9a72317a5b4fab993843e3fde72c8c 5a6a858b0bef944b600093ace639286c6fae91838e333c28240977a2ff9ee596 35f9afbfe035a789586e0c202f0f6130d7f1ca13e9e6d1bfed82bdc7e2f1710a 136559ab2da054d0d14509b2f9e7e71df274a3b214a0a69beabc9a7a52b3b6f5 9b84557626f456bd3266e6880b519c00ae711eefe8876803c106ffc495ffcee3 b4f8eb4478a22fd7e4294af107570e082d07e6572852c6047669d9a09e439053 cd4940a2d8a4e8f1d75049eec4c43aef7a770d00b4189a2f192f94e06ef35be6 edda88b2885b7338d888912f9014c2baa7d6dda3d7b3ba82bda433a47c65bd4c 05db4264f9b76caad64b59fa527d0fecb23f760a48aed2211413d3d811cff36a e77a74fe801fbc4bebd4b19b35741fc5770327f1b50d644bd5b77bee5104ea11 7f3b8b1c16e2488f187c78acb53d7535ba8f4397fb92e2faa9c8aeface1cb1fc c6730b681adde182518352672b01d89db6d324e259c75f7864c534cb766f858c 42c0c04c63f3c299ca58ae96d17fceea21df5cbae3f6fe55ef5419ff8f013ece 3d705dbf80deb5e1bd42cde47d1d1fc0e7e74d3587f44039ff5bc14a9bf03308 97cd1e7277c4c7dff06d64a0b7517a755a6eaedd0deb283351b6bdd31a7013cb af9410f2aae7df967000447badf8c81f9051ef3c4ea9453d11908f47d2d65c09 87bde43cb4108538ca7fbc361b6f90e38e40ba1caba891a3d628a4d7a0f0cd79 b494ea4ed8a710913edcca06bc0ea66d1f0c849e5ecae577ce96d3ca2818f75e 36c33e8f4a24f12d0922660e7fb3987de084971591fdd85f21a9ac93d8a4a106 94ee6647faaf105af1d2452fa2481cfbf0b012a575c39f9294a696cf957375ba 47bf65879c70f1898e701f69b944d4eb838483e1f80b26a5d2e2bfc8e47034ae b825574d604593668b210dca812c686ab5134e3c0a064c313b20fccc3893d3b1 0ed5e0e4ac9c72909002a7536672a0aa06e8e9cdc112805ec2ae0e38103a56c9 58e01eff48b55e563f7d44756d83f4eeea4c05f69c0c887ed92eb96de2bfe8c3 e07c6ca14919a73151007a3146e8027034b225c99f6e3e1f6f9a51c782742b5e 1ba0ebda71ea53e2eec5b162d570b814800583585b15f7a07a8d6b3d166bbac7 0ee8d705378761ce96f99770b692f27c514ef36035c3fb5f788a2ed452d9028d 398697c92034d6b2f38f21141d05c5ad9ab4da0e254f3a84a919acee791c791a 0a67a2ff633b7c10890d87f5cf5f6e09b092b514a81b6a0e41f890784991899e 0bead1cf462d948ac9efb2de980a77b0553b6d1dfdf861eacb7eda236d78aa1d a413e5cc338bd6f25a1cadabdff360ff51685dc0a489911e497bc8523a165df8 212654ebea4f5f2bad5a12a39901dbee1fb285a2bc470ec4dcd53ddd44060b4e b6bf42359d051b74d96970f088143f2b5d56611280aa11030a88ea4d4eab71e9 33f8ddad5a8356191bf240718b1c30bbbcf9565a6812e058ea87306fd835c238 8c7a00e2ee051522a5299e456bb21bf309dc4a13238071663de64c57d221b016 274e02806d6418ce51fef7b2ae9a3cc2668c377ec530832e2e768ed0c58e696c af585e9c99e85ac3a71efb8a89e4f3043b074f4d071a4dc1b3ce0ce77d821705 33b75f215c718b1fadc6df18de6f8397e3411435e757ea8c0471f53b36fb97be 2f11955945712a79b497d8bec98075bf4db7904ddaa4062b7045dd9aa64c514c 6d132299cc4c80c232f103e3f51b3eb4c4490fc2075333e821c2b4083737a4c5 9f86de9fcbfd83eed3efb154e9d7e18016688c1afef27e6d1fcf61fa221f692c 580a1bcc18b24443a18697e8d170457c8d0bfbf52860a2bb4541d5695acf67c6 9427c65f6f74ac2cb40d54bf641fe8d844f4a4f840e68b33c784a63d5e17003c f10d978cf175beafeecebaf310dbd07e2c0d92090f6968d6d0c07ccd1045e071 b5aeb19be70e523849dcf2394bf1d5fc844301f9055e6fc795219e9ebe902d74 248569d6b7e9b0146b6c0e9057666b74156eea673bcc34d591ea18520d430f4c aaa05e1dee55e8d6a99ad78b140ec52e47afea31ea4d318fa63d2d9500bd7ef7 9054caae9f5b3a4a9618ae05fd82c0ba3d2ad8cc48d24efa57a1f35715ed8250 9d0357f78f8528007b055c48fb1c984c1124cd93f222f67b53400bcd4fb9cf4c 3dc34418e0dad6ad6d1537299c4120a42211775ef6c1ad95ec41087276ca6034 d791cf464e504e2641a01192160214087ad3432e54bb13e1eaed0816f47e7bcf 717f93e7502a6a1a90ffd3479e16bf4f04aa5f701b0089b09a95591e52127d8a f11f11ece0d151174e9f652c222b4cb42d1ddf806836d78b824a2114dae34f88 6857b1474f4459c218cfc0178a66cd6f53144907895a3eb47bae657771aca374 c639632bf692ca9dd1c2baddad439ef773e146cc500ff0aca56aacea702a4989 2faeff549a21c8e4fdf48325e8503b0502e53f367fe7850f409361c5643aa5a1 a3bc38eea4cb5c0e85577a1f82059dd3f1c6dfb97c28a4aa2b5696b32d6c0708 7ab777353180b2863093f02325eedd695ee7b74c784b11ed9ba7b3315acb94fa 09cfbefb57e680c75c967c2bb7ec40e361ed9fd18a64c5931518599d809410e7 589a1e1e504f098a7acc77d176396fa85bff4f507901cf446d9afe10d6f8cbfb 15fbcb003392866b9e4ca0c27e58102880f46e8acdf4595e20dab328b6ec2f45 84ce500447b9eef390495e98b0e384f909c70611a5755654834fd9425bc4df02 3839baa0571ea54cbde5b86c9b7fcd65e36a68ab8b2568b8381281ff4a11d0be 53bf4fe29149678d9ca1be938909f253217b61ea4749a369410b2aa3a0624c70 e41c8c72ad30192ad1e56bf533051d76662c903a83efacb8cdd15b9902457f9a c20b7418205143626d176fab9e352611e46ed59f3ecafca87eb50c6e5687761c ab5ed5e9240a603f366fd3653470ff1fde4ac6e49a444f5c63fbd86cccddcb1f 9fc026e2698d69a0a3a263168321d9c70bf0c396846ec4a9f56c2b1ab33314d3 11aca5bebe0f446ea51eb3f25bd659a9624a462614290ab1b21d0ad7566c7e11 bbdc84bb913bcf703bf235d2d9ef386712c82bcf23283772fd2bb14a2ab6f2a0 7e69133c036e82c43cb98361bff6c4c9665bbea0a24ec5d64220a985b5036c64 2558c991d2595cc77d7b539c540293dc85d6c81c22f46292bfcc589284016db6 26c20ffe0e810ab712c4d02feafb1d292b20dd844d9fb7f19bb0ef547fc8c27c 30aada91d61fb39f8dd1137cb01df828cf649386e4920a3a5a23292a15da3ab9 207f5e8a62267279100517a73cb12216382cce3d6a9046679fb0159bd9927dec b77c0b501fd81f67f340cd7da0d4ed289cd5c161f5aa3475356a8c2e2c12faa5 44139afcefa3898c6930328976bb348a7ffcd9c70b3f83cfcf60665494371c74 610ad1f226d0c5b83f4a79a46b383eb3fb804e41772364208f2e77e25140199b a04326c50ae006d08b3c084189058d13b69d9fe4dcbde7d27c7bdb9ee7461329 b21fcc22252442547a7920c753561975bf73adb949fa5b63981dfbf753ea1764 551df195eee897c2834c657ece79cde33b540ad5e6053619d2f20b2b2c2370b5 6f9a601909f9867079e9da5e9b98224e22ae6c3109301cceb48e57ebb75b725d b7c40cb4daafd1b48785536ce88255ad814cabaec91ec29fd8640d60fd84a4ca 9c69ffb7bc5852f1d32beb4a1764feb66cb82bd6b262d4bf20788fbed7bdcd8d 2e5710e312de1393e2883918a09bdad181d80425a38e373dd8c6e2bf1ab9125d 828063a3304cc6f5b0c61d3c14382cd2b46f0855692498242f5ca5117f731d7d e52a65535d1deb385d54d6aa0a1f011fcabff33474bac35ad037e56c01824c9f d69c3772289dcfd60e7d49532fe43a774e72edd302ddbef9b067209b2589f216 a1d1865c6798fb62906d360eab90c27350d81ac34a744d3a74603ae6194ff9fd 2503f4f53174ba0bddec072c55e47d532f0bbd8e538b26e0174701f0603fa058 3615c4eca06884583420c9db1231b1e7334baef5ab1d2783865c5e9f76228f29 fb3068f9c57fae2e0d34475c2fa8d1e9112c9d4bd9b4c53a3bd8e030b37aed74 fcf7a11a3083ac9d25953a6e5f610ae95ecd64daf2bae52a3965a903d71cf297 3a849680e3dbe85f04924c08af19ba5f8319caeb21e6d92d9ad63baa04de5de2 f0a36b6ed1745aca4fa553109888f97c1e03e5a5372c391255beee0f39f85180 2af8ce46f5e5ed9f3e8bd4043f9580178ced262917d0ae7ae45fad8ea8977dca 1ea0afc955c44dc229ff2b454160819475e9e48320bfb9c2e93abfd4c027e8f3 29070418c4d0a076a5704476c628616e33795e32659394286ad007bb3ffe2022 b05fde3fefffa450b4547e5817a166f90dbc2cfa186a29bec645e0d90a265897 3e23e6d2a2b4d57919fe8857a8421a51891919df852546b47906c58d706db0c6 c0e07396c349c0839219b2bae115c0259ecb7d9726360490234bcc5395083b94 f5844fea2eb281d47eaf060abb7a84468806da654eed4074307e7788b2c713c3 797917302357eb40ec478e669820a1e583b9fc0c4aef066d812342e6e356a9de e75d663d75809a2c428edbcde9cfb72d3978d19297b570e692d47d7e540911af f2cbabb21029d2a435a3870da81a7f5374da51d3da1f4fbb8b65bb832b5dbca2 d6dfe95c69091a7f415b2000510db34ebbb34ed25f99f8525f2fa06a247c08d2 6a16a2c5c8bbbbec5ca0ec2a6f75df2abadbbd4963fb2ac80f9b2cb1abef22d8 962b9ade355e9025e056aab7b1abfeca09c27b9a3ca7089471f68c10d84521e9 d1f3f98df62ba331f7b67d8a775e7f88d5d405b3f61e792db4a4f8d9a9d2c479 f655ad31c2dcd397a3fcd19d6311dfb376af0eb08a59195a9e8f3785f266c85e d2b75cb64717867fb6bdc16bee6e8dc9314a25dd1d06b5511f7d7e87d1458b70 f7377083cfd9c1e0b8be646e9d333ec6f2646f8d1bd5ec8742e2de8c1aaa0feb fbab619f3aae0ac50b7b0574bd4808d3ab68cbd76c35ff1893c0cd950a89b04d 157e7f025b999153a7ffe5edff404a6d05e5ecc77bb107e8730e4cd1947ce5f4 dcf8053ed49ea35371e518d661b21f375ed2e100272ccbf8148788f30e172937 f0084bedd29fb4b7a8a0f29eb9c75d57a5de4ca1a34b24ad2016d77df283e64f 4b5505c5006ac75dd216f4a2b2939f10c369940bb589782d6270a5d474e72e18 46dea72aec9bd45c603ca29fd1e7f7c1c87ffe9a950eba7aa18097062c27c5e1 ab3459d06287ac4c1d95af6b6839b2c1931ae845135fc9d85694cfd06e5dcc58 6e9c5d11175537b48185909c370208f1c85b1e092bec738b14c0409440539a22 9b96a78f133155e9a07d3ce6577a3f7bc0d8d52373f4f6833cb2e92f94174ec1 fa02ca8efd9dd407c35eebdd7ce72d592ad076b13074ab1d2d2b07db6e7b4f69 2dcaeeaae0d38b41a26fca522771f88e5a9b1d463db9b706d82b5fb1a5abe1ff 6adb30cc5e4dc20006290f8baae9bf7c30459e55985f81644a6f25c5a0bcbad9 35373ce01d57d692063fbdb27617f0fb165d8a67221d5aa2be2dc78e833bfe46 208936c7b4fca3d8bf39b349426a7eeba4f40333c49e9b9e7628a3f2104ed65d 7192804d0eefd63e6a563d2250952a6e948471c1d6b6f029aebd2b1678f6df23 a935e271c22b7c7648b3316840c0442b42e9e7c7dcdd546d98556544e6e5a8df e7b7309bf988a9f3f5f981b9f85d0040120c46d3fc7ab7f4f7c24d46633aca8b dd36d6078e9c618479f460a612222cc821a46300ac9c3522fadd31e38fd7777e 57c6fdaa9fb30440666526cbdf5ab500ee43708cda8c1c30278bbd8a2d299da4 d506109169105cd2b3149290632ab3c4779aa8c1ee1919eeb05bad3965933b1f 1ae17129bb36e79921732a6ce5d4fcf93ddc8a33c912478f0eaff93c33f8732a d2a76f02436f3718c62f0035b3fc1849ad12a8605929eed1af10a584ccf4cd3b f981f3695e42457e06fa9c2de8f382b85ff15567425635c54e0e1f33aa2b7a68 e7de545acdd2036748b403876278086c1e597a456535aa9f3d31a6760470b5b5 a3b799ec15dea3c417b16a2150527381f70c8c0af7fd4e3800842dcb140bf973 3b16012692217e1228e0cedb1c06725b58e0e7cf3b0e81281e898080b093a049 76e0b04fea1646d385cc64c15833081003ee3ec161f85760928d92c08fe9eed1 93bdd5afae67bccc2543527f5a322e5f188f446712623eecd8b1c8a83ae91fd0 295f1944d78dc046f72cab090178076495f6f8cfa0701128c6758d046832032f f7b4a7a7cf1f50c73be2a1456179862fc60e6cf88c0e6207556b872ec736b175 0e5c921b6a63f4d2ce9849cd916d106d8c98f9bd943a2af61854a826d54de95a 0f660d9fc824ed7a83c6bc1741e5e970257804599a26e06fb659beb8e0914b64 af1130fb37762f0254f15925a8290c464a536505fd0bdeae1db576048944e570 51ec8587ec68426b73be2080d79dcfa60406c4365599b0d1268a757fb6f4b52e 851a3815b6844c648dc57d309a3a723022afb5205f755248f9ccd67aa4bd0a48 6513979c9cea843a982e777a424d5d7650616661fb52937011d6bee4544dea2c 02ac8f15e122aa6dcbb4cfaeb3990270f143bd9c4edadebc876cb9cd3f4b1938 3edaf32d657297ac4d45c3b8383bb2255fdbc2a2f7bf3b9c690c9ad95a627416 6ceae225df7df210b76507fbe845b7506afb8cb30e304c978760c8dfe969e67d fc07c9a26ff3256f37738508d013a95f91fe8341756556dcc3516715e72950f8 27e27e59d477c74c9d76d90fab366987d3ca99f7a61783284f9cc586b51d62c9 ba96b4bac6975e16e8e11f4150efa7b100ec01bb6f149bc8c9edcfeb5e7d7262 f13d369ec5d50ef8a48e03203ef1dee81d489cf623a60202d10bf37ed13814e3 b768afe5c98731c0e234712e4f6e22f4e99e38af274e84845a98fda12abe5ba3 ffd86261a675c239438a0be38f993006477ac664aba1116616b9ce47c45787ad 85e80a1c23526186cd6a86f2545039c7e1095a47cf9281e185898247358803cb 824dbe423d758e13bdfb03a4c2d47c4af2de6c42e076bc2a8d98ef3db6c79d36 a6dcb164569f2bc6d30557f3c85614dc80011b1a7834877e3ece8e936dffeab4 719d3c988e15ff4eb5431a3b0f722cf2b132313db0215d7ac47f540626cd3fed d697c774974b143c2a855211a1852606aa1e2fb51d46084f11055e7a6658c5db a7328b38a97955d08ce577a62524c859bb1d3a398ad48058ffe204bae8f2e355 ad4a089c2efa56d84595e52808e5f10c95c45d536494d06a306ad1a1ceefaf6a c189b80e30faa87cbee85cc2067ecfe3b16e3d432383858bb2f151cd1957b222 fcffd74ccc1ab4d9d66eb4cfc9e4628c1b61912bbd01bf927e95759aa01dae00 0407e08c9819622958a4f92347dd3c1fa742d81812546652c4ba842e14657f6d 2c1f6aa67e71300942243120f50ccc6c99be0d39106303b905e5a9260483c021 922e40eb4e39dd40160e09b861b4e90a09b6cfbce0c81c55ad2efe4c6bb5fb0f af06f73f5dfac4aef35c086cdaa56f4bc183789b1b54d51c46eb233431fdb948 9a489152c3e7215755f57c868ab421ee85e8ecd083bf122d9ded34c96ddb15f5 69049e29e986a230c76f65d6a3ab35213c61cd97af289109edc964a18acad989 d0c339e56ad9294780690e4dfd36891199507ed86e974e7be57419deb76ffe77 f7c873d36b4f19d137cc2adf21e5b4721a6df4cbf193142f9f4616b2cf7d4669 f71b419ff271a9f4997d5611ca8696462a0196decde27635376d8fdee7eb79b5 59f65d9caadb2a2c9351cbf41d1d7572d5121d7c1091dd47e489369ff92181a6 546db637f3081f28e65ca0a08f4774a046ba57f94eeb665c4b34f4618fe61fd4 e46eb4b44278ca3fe6fcb7c947d6a2bf35db25f10afd2559a33871ed2f016436 d4282c46675626ee2c00644699a5161278b23813c3600f0823c509341feddd0a 1e26875ab3c8f5c88cbfa8cf756b300d2f93dbb5b7d00bd17b7fd1e80f21ecdf f406bbeed69721e7bd33212082a9980b14a2867cc126b758d495337730e67555 0cc20a677bad2959eadde1d926f84c1a65f87c3d78d2a1f2fb7744db858b7a16 3867ce2c51ab39c293a3d1d8b32cc69ec286fa41c2da79e7b0290742f1e27eae 240d4434ffdae20967bb5eb5c61d38d1d8da8449a4b52c1b1706b7996cc00b48 b7dcc54cf9a5dceb32204c919957ab20e2c2975d5feaa77175617cd501820b5e 88509320f351652440bbcd3f2c7a26a2750f31fdb93fb42f0ce4fd5291c52dff 1a04ed0d3dc9154b89a2251549a8ab59bf277a6b259ced2fa1d810aebb1e30df 7c540b1707d031c50d6c0b2ef4099edf5eeb06cf55d9d51029fee12abba173ec 5b08e36b2699a9a28e7c6145e687b1f6fb16b372878453242b18d90617c2e522 6ae07732cd4e00e54e9e39020bad6058c90371ed7cc9e2311bd4623dfe721a52 b67ee1dc42a23d0290851cb12850bcc6e807ef093087a54ccdde5fc1f77e3d5c b45cb88238a54dc091972406d9abb160268ef559e2cffc2a308c462f39983d4b 08662d1b714f8379de66a5ebcf8a616bf0f29489d1618c78dc06aee5b75888a8 0977d3b75bba0371f4464850d0cff070515d68bad256b1164bb0297a4415ddeb 5dbdab8037069e053ead6f3c665110930d36cfbd868674fc127fac36d0acc822 069a2e68df4726091e29c888db9e9687706f313c4c3d16f556a8608a108628c1 981e8a911cb06548a36c13fba180e1ff35870c0901719f61a8a72f96b4481d79 ff57e4e8b8aa736e46ab5f054464a6074ab6ea69ef721f556f3c6a2377430d7c b1a6634e63fe87b8524e952bfc2377918d56433476d1d872560c104a79d39fe7 e736ecd7cdb686db2a349093532a62e48da718bb42a18c623496b6e25fbf0640 c6eb219777247c49bf12e9676b269776d5cbc73b25229d470ee753d7cc3c7c3c fb9df505b838e7d6e44d9a92a7c38169aa03654879920f5a69100827badc3e31 df0f6e0256525b0814890ab6e24089b2723a71fcbbb1a54adfe5185257637a53 8b7aabd7390d2e4bee97a1adfa7c98ff21c89e5fab99ac1b242bf10ed43ff58e bd97b4c75f55e97eff71768c6ce30ab027e46e3dbf66a0826de096f773adb790 e9ff3b8fd0c820b5d6ec6ab27afcfe5fe7fc7cff2ae5e0d36fa971c4d404ef6a 266177813be90df8a8f974e22d2a31b51dd5c5a961e96b470167b83d34a3bc4c b8ea4ac76c078d929310b2d971e09a89148ef2cb43db2eaa6b6bb45e722fc7e9 8bf960bf257e99a3f3b3253b53d71db41b1446a5915d331754eb59b1b03360be cddf8f1c836813c4d55f46904ad36efa5b3d6001cf6c3aa05106e309646b597b b81e8320b1d0dfa53962b2c6e11814f83a7a66ef1707384921995a517b3cb12a a38966fd6e6a45e86eba3a8d90fede3601049a42b53ee2c5a676af97e2c36411 40b6703c8ce15eb1891e0e61c8bcb73f80e24e1e779340874851784e1e905c67 a04465ad88ba941dd5878a21ba3ea902572440c1a559e34fb784aefa0bd9ca0e 7ade18b7dab3fd20e060144a6c613ed5b309a1117c312618da22e77045acba74 58f9dcb3a938f8f445a73f1c280c6c243ffb962e10f229119dac3e79306c4106 815ae3df74e332eb5d644d64feedc91a91b79658cb1f3b3bb063ad4349a167e7 690dd027094dd6f1b2f7526c2ea8e243312773a367a384a5a28c69dda4c404f2 6b70ceffd13648fdf43c0f7321358ac067b04de3313ec743a48c5e3fe6240a46 9a5192378bfb89eba59f369a21a39489d37ae1b105eb47ac21140ad729664287 5f24d65d565014535fc4915817dffc0756f021450a5d0b3a8207ccd021986eb5 6aaafdd13ec5070cecad52a54e598e62d35e3d9b06f9032a413b74a3f9c6dfc1 44fac09d80b83c29b963ceaa28ea6e5f01f4e56d738c7b7c5befba7957669be7 836dd55f794920a5ab07152d3608720f9b0711227657c78b7368a6f6f496c4bd ba9c7338e9c90ea60d80a63f0dde21703c2b27e2db1da6152b0eb6df53e846eb d3a995f0fbb8a0f6fe7f8ecbd6f8a7b184e221d33baa463ca390eb1dc95216cc 3dfa4f5b4ee5535dafde2921dc2c090ca423f21b688726875046c50e7ea8c0fb 1931914430b999e309908014dc0e8b7be9e1ddd6bceaf24a972d862330f5ffad 3611fd58a44b93ce30d46034c574a84b96b90e10b98b7319734f96559517c8b8 818348723dfbf6460052936703e54c9ce56e50040d0684aaa113f87952d4db56 b6e2b4a066d756f0a4a11546696792713c29063429b9564c856aa07bbb8d1c87 679be912c40814fdc0c11d709a695974c5b55b9e52b803f02e3348fb454b090b 853971d549cc032830b94d48e2576435c3d1529a079da7328d8e13570361422d 6792786619b5e6e0831baa9d1ae4e2ab872a725f8009e25294fb8d86a875b23f dff14bce34867fc92f0a6d640c5db5c560c545de325b04f78dc9db24263aaa56 27cc7a4c9cdc201fc391e88b11b51d1c409c1aef4d724ee0810803ef0610a92c 31c7ddc56f5c0ba1a5c1aa1e1eaf82335b89a4d194979553cd0cad151dbe069a 65741ab1701598c51d93bcbd4e7028d96566f1f10e3300fd25d22677f3708e7b b41c535023d7f0feaee96c77e18c8f741a82a83bbbd8b55790dfa51af55e0f02 a6a57089f8950060e98abe6e8c523d8d5c58dfbfec5c20a6173c7efc47035c66 9f63c8733145be5b1fc0ac38e541e91f1ad7235f22fdfdb348c9d84f94f19eeb 4a4fe612f0fb14b6924ee1e3a9bf58a703991218da047735112f09affe1c1012 988a60ab877fc6a0afdc7534fdd9992b8856eb800cce1473cd17f7c6703311da ac1b37d7da34002420d8d2f6944ccd40121033070d0c5de5479e50e75a950f46 424ee1422a5ce94b201f0ccba70e7034203b582ba938031fbf0f11e9b8294fa2 e0944c6e56a673f11bd71d230e15d08318a93e907eaeaf9956ca09ad0d846ae7 ca035d5b1e79784aca4b43c26fcc37f717cdd2fb637fc739ecd652ea5ec84210 5c9b58c149727444449938f20173933fac84f962400d949550f1343735cbc1bf 2a237471a918580b81901827c8180c2f26dc81be6099ec07bf1bae5486d1bbf9 24837b11dc086fc416b278068a8462b2af91af15adc6ead99c09c6d2f16c75e2 753959d22c5c11b71f8155e7083f1a9253425d50465b58d651badf4647b1c52b 9e6fd67e0fdbf352883c6eaf41034487f3ba0a1c4d118a0b43806322ff779f19 443a5e1657bcbf7b8efa058280be7c05b036867974c6b96c428ee0810e398d91 cdde0dfd0a68d430ad83571bb4dbada89aa90927da4bdedc4b5c43236ca97bd5 e9da6fbcf56b8d9182c2c3ab34f8ce5c76fc87673d0527eae2f40d200da0a0db 92cbf5c654da282e990c64a648ca84b0ce7b7396c6d3d7c4f362333bc70f9e02 efb9d0d56cca4db89dbd86e22f53b7a7597c52ad57a713a34f35fd668e1d058e 31441619ead7af4b849528e00c26562e2d5eba40cab21535d1e641d7125c55c7 344b69357917cf743b48e53f43f9ad6535e0ea8815f0c08ff4bb024f8cac3cae b46cd1355d57404ff642d3941ed2037b10e048140e73b0dc79b151ae26952e9f 154d48e20b8c3da176d32317b5db640bb9d8195bc059291b592d814cd3bd2000 9056ad18bda751c0f94faec4893d9848a188d312cf01eec33f1eb49a1ddac15b 78be1b66af8b2f4105efe5c148ee6ce852e2864ef4bee8c93361c4e691746348 d3712b95f8869ac203941d0191873d73fcc16b2a6fdb406c859db61694f0278e 78a61a90c0918f407d8c51ad26226779e6fafe4ae67554ad4cbc3d5043634d33 9514e427d9cddbd151e76761e4b851f594c70303fee14171106003bddd974478 bc4fc0d178f7bf817cb96c774a37195e402d9c2a7f581ec15ed1d82ec2878491 f101db31f48a48afd7287fea75fcdba7051e47c716b10409e0fa68f05a0d1efa ae4e2c0513e3051129955e95779cd65e20cf01e33326e77b3ce0bd739b125d9c ff85b8d6bb24f78eb5c63b0a23e3466234d2b2fa201da738e5a1e5ab709256ab df4cd0563a86a23981e252cc647a40aa5cdd4f59c32025b58a3d37ca3ebb8ddf 98464f0d528c695385faca047e16b54886fb384799c98c3531ccde40a9892807 3807523dd8929d9f657dc58b3f424531fc07135b1bdf6a7d5aa75d6505b31c26 f0e7e264cd967aa797ee4ca41d7422e34fe88f8b53fa70360fedd8e72383c019 4eee442b276dd56ac589e7e12aa43aca1e9a864334515df6a799c88be16f1dcd e4d549337db43d1b2fec7262489959587bcd79c1eb6c00d027d5ccca1a41e0ef 413a67e5c67c49fa8b4b899ae066fcabef0c7c2521f4937859d324d36382513b 77278635db9e35e0b885d2a01f710330d47f058309a9fc349561b7c8c4f636ca 3428c415807128af46d97b71efd052d8258663afd78ea1a7c8234a9fee4191fc 3b29458e7e9a3dcffcb362a249badd6bc2fe0b2ef70b4b58d28dce8761d90fed 1cb37ccb2ef0bd3c25a226a5c127d30a1b28c3064c4c6aed6a52c5bd7d5fc150 124f4d9a3f5ad1531a9bf67b99f6f300c527a00e273e8c7d6724f8513278cd60 683cf6f259e40d73e65f68f2318190b5adbd1eff5a30b113766422a47f63edda 554fcb8287faedeb13e5cd6a19971d5d1ade5891d9a0e7d81a0135340aa1259f beda53dd469913f6b26eff14e2bf00c84e 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTI9 %!PS-AdobeFont-1.1: CMTI9 1.0 %%CreationDate: 1991 Aug 18 21:08:07 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTI9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMTI9 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 12 /fi put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 45 /hyphen put dup 46 /period put dup 49 /one put dup 50 /two put dup 51 /three put dup 58 /colon put dup 68 /D put dup 71 /G put dup 73 /I put dup 83 /S put dup 84 /T put dup 85 /U put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put readonly def /FontBBox{-35 -250 1148 750}readonly def /UniqueID 5000827 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65 66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7 695aba81f0260cd5248b9e649cd800bcb325468c79ffacb9cd3036f2ed7bb65d cc883aff8d6350d6e8af1a9c1d2d7fcddc4c554c7e350f2420586f43e2124611 487cdb176d453854b51cb8f9100bf241899bbef87d57f1135e589813995c4d86 ce91db2b3757948f365186c2a4f32d845f659a8e95028f9c0168851997135c67 ce7654f2de4f22f51311aa78f440e5fc2c58f6df901fd071b2d53b2697bfcebc 43fe4508828b4756ebbe1f3e8512514162b3bb44493a65f11ab56deaf152fd01 bc8b642e6021af01998edc76b6a1929fbb9fa4fd1a430bfd4464b53f75075f66 c726fc037fc23cf09a178ffc60908f77d8ea9dea79c1e21fcb5a6a994e5a8e5c c6d6291891df7695db58a2dfcf3bc9a17888c29559ce8f37dd35c0ae35def3e8 daa6d8d574f457b0385efd1611c048b9ce76393fbfa006fd23d742cfe7016035 5fe95302b129a824c7794a9de47e463a7fdc42fd72b9da3fabc3e65d90258ac9 c1ecbd3654b103a488715f9e0e649b57146b786aa399c6ff39f362816306a1e0 ac83a4c83410030d740e15165683e843f69579ec1824c36935ed4705962f494c 401400303b590614e5daa8dc53fdda083fc854e535fcd575b38aa43d3d5c4a38 d56bafa926fb9e7fd69be1af2b502849500693dadd5f00b3185a8b18a0b64f28 9f33f5f1eceb14d6945a22d0def259076cb9b11d899318852053d98c379de350 8a8a7a3ae6c9a73e878f7cfaa856e64b993b13baa4ea8ad693b380171f4f04be 5464e1fde8190f963ad3dac489ca9154a9d35f479635781233c57eba78a4b34c 5b3f74db0cde46a05e26de79e8b958f6a99a3bbad79d0b461621fb80d7f5992b 3a4a42a45d55ac22fff1ca04d5e0b14713cddc23f7d69c6c672092d9c73ad09d 6b2abc5b6fbea358e522e516c59b1a2fb0115aa6e832f8dfe5d0f3c596c69600 77f9b56cdca5abd3c96466a6e23f0b827987237cd98443a817c69a5edbd61a48 b20db7f914f340c8a71c1103885583806081f4c92bf13c96dda9eb993fc59c72 7b9e8b1853874a23927225fad4773d8f43b24317625ba7dc801162348e047984 03fdec7632afaf0f8b2bfe19a3ea8574dc17893ef334af0ead158c40b862e374 36d491697b863d0736d6d7a0766bcce3cc580a9f2d773e582741f572c428cb43 a7ad66099b85c1c9ba5e1a2bbfc882ed26bc261243aae2ca9d941301e24dff8f 8aece0d3fab8f4d138c86b9e25dcef9106067d194ab01218e8450160b8e35e3d bd21e9b3d0e3263fc426ed9dab754582e84ee15956ba90bbb2cbf8618ae227e7 6eef61ec66b2c025ac59b258a92e005ca48af68d0871d45786d8563cec3d2444 73c6141f2ccce3047905197957e95f6abe66cafc8daa0f5e09d9014ec5ce38ea b8d8c99caf2abbbb85f601e44745851d519efe4847f8501b61af350168eced73 5311283daee643860a716e5a6b40d83ce33125039e2f144b66d15d7a69e3ad59 ce35fda3ee6569d9b7555776e6732c076a0e56f1a5de82b8fcc0203b95e58bb7 91b6eab7e98f8c3d60e871988d5e78d225b4f5f08c65c3c485223a9c0cab69c1 0dc6b50e4a514ce8455406ffefe5c56cbedb78f8b8a8c28e1918758382a370cc 47b7925de1072c623792779f5787bf707e48d3db53ca3996759a4d55cb6593e1 68142c28f84407f398026f5a52e5ec562a7963c11c1fd5e835c7bda674bb7488 2d4d0c2993e52dc47cc5553a0b960ebc085112c1e371e61c0eb30b1302063e73 b0719666364a361aefaf99036bf30e89a8c7b7f3c351e7f10cab111456266093 17ead89e31a00a916b6569b6cc37a5d30a389237ad0163e1bd5c81879659504e 9b1a6356a374241cef623da3a82efbc2f6ead1ba403108a966ecbe9962d4ff49 63f339c9d0c720dea4aaa2e9b31b7f6bd97458f258d29c0abc5e3751ee0f5686 d089a9a6a4e69621b681d28e00d687f9905b3ff3b7aaefe618acd683cbe3210d 50e8c40298fda04b67a4554e4a7107dbf93700a01c9ed9eea9aa413fffd7cded 1c6718cffcba4aeccebb3e3fc51138cefc7e62293936a396ac6bc1b6239252c7 1962ee8dc6b24f42664c5d69fadb544d4e98266e4d9421bd5148d055f66d2468 c273dad138a8f817140e630fcecd86e65ed0f2f801c3fc41c0222f9a9458271f 863683c0900d0cc892758f94da61e1dc799d7324b260befdb92f2d29a89207cd 2515defc2cbcd6fb37fc45abdbb4e19db2a5bd2d649cd318c91e3c26b1f07b7c a7462e54ae68fe66c4af6dbbe13828c74cca64aa3c53a91d3d9e9dac7527b69d e8831a3273e60e8eb64f6427070ffbe862bb0033435497797ab6eea3b4294892 1141eb649a6c155f7953d4725501aa1903387eda8a23746c0c2ce6c4f60447b9 253c907b8351c60d5a2461923db0d2b77c7d0867e369d2210ae6a5c2a5a1d773 64b35e67da4264eef40816bc2ffb00c15feba02325f239183a499e1be8abc0ed 822436be35a57bb790c55c9f9246939f3603606394685ebcc9308292831936a3 8c007af8c358f68f660475f2681b1a099b07258d44eea1a66894233366523da7 01b7cdad7cfd16823cddfb22b563b92b5a57ff9fab4bebf42a3b8545b8188e50 21cb2b870212894906b89ecce322b49819ed37a16a024f149d3d037b69cbc81f 1242eedb94a1105ee7786b24f79b1a0e925a54df99f4387b88986fead5de2ab0 91c530ebb57b77843b500ed720fffed578519bf7f07e810f5d590b037907f1b4 3aa33fddbbb4f6bc6792b450ed21339f52dfc5a23e666b1e4546293bc082defd 0b87ea53875390acfb24904b7c38c00544d8534e299eaa8238bf96170588b20f bc7d4030e3a0305ce2fd372bb724e8b4ae11a05a998ba8c5a5e82e4547adb719 778580a149face879ce3afed043c9796f8ce6eb9093c5aedcb2198a0690ddee1 b4e8100ce500ad318824ce6d0c9cc5963b8b782099b1059b5209b7ca4e395a08 f70a3e6f3127e89995d5d9bd12fd63932b6c0fbbb407d96804101e0d4979d219 401b493e2225d8b8ea0b44328e9b41e0351866371b804c422322b874a0dda279 8dac482b12e8bc4a3a64d4db839cd6e423761dd387917f04315c64b951984a4c 4fa1f8588bd180d805cf96e9e56c69a84416e382fcc631b2535de02e43814dd4 b8aad8c6fced279370544b8f5d6dc957879fa66cd90bf738d45ee75cdcfc7d02 05b9a84dd7bb1b279d3ac3cd739d227aa9d2bd24977da74d0d00654a90472d02 f40de922a66ee9de55ecc3b94e92bca29c68bebc534e9671a321bd90aabf45ca d2474abf3fd8cc5a3e1c3fc399076e99d16d7ec20c67edaed2032584fee0ab6a 99669eae7978e940447ef3124fed43b7b3d41e470ec205a1a713d0a90f6f67d1 2de5c6a3aec92882a1dbbb089f366bae081a593deacea4a7dabed78c9311676b 1373a9879605ab930d98046cb6553d84243b812d31ef0f7f32e66ad765a8f00a 801d7838c232d341c53cfba0898392820c21db025a0f8a9c342a2e4c19ff449e 63133880686a0c99f135d525bbc670a3a8109ef9b0aec033b0b3babd1fc84b9c ffcf15af8c839dc0870f160ba4f77439094180ed3a1a4c2990a9294efafe03bc 4fa7be75e7c836d3cda93be1e012120bf4abd061aa8baea95a50ea1117130fff 3845eda2c1fd1fcea3122683d2b0531d1df981fe6dc36a4a201a7dafd2d42f70 b3b1ed78558bf694e2798dac7ae1b919a160e8c7e19bd7b91783b06c19dfd24a 9162b91488867b59539266232f855de93fece6704997937e86167a8b4d40d2e5 3b54df748e0362a49c6b895b447c745e0fe06718c66a0bf2b7c2e70563d21734 023c289caa0c0e0c7f415916aa272b930316543a95cdf048450d221fc7158790 cac2076a42690cd730f2a14a29870ad838b6209549b82cb7a36d126e8afb32ee 745d108afcd737d47189b3d91cfdf999a34facc7b3b7377546d28c4a6a97f339 470bf12936e63a75bc1b86b163b7ac70a36243868d6ab071157d125be5829a23 b5dc9e3327d913b55a2fc38ed9f82f3584f99651b241e6424e33588513468824 7e076c4a0d752742ae1918aaaa1d26ae54e58d6f5f1ab5ef6eac70a48d9e4af1 5f104c72658a88dbb1615d0ad42bcb5544a65888cdd4b298c72b8859c07d4a3d 499f9cafd02c1bbb4d9bf4b1c72e720bdd784a81b10e13b989f6beee2d8d573b a47a28d3f5f1b6242d7d6e42683411e938503a0416d6d5b542d42b1a724bc407 0847f8ddc6516457bc7cfd7e31376a75b1831d1853cec4a6f3091d8ce5373d94 bbff3b51ba2458e49cc35dedb8ccb491caa0b4e44739d513709e646084b51d0f 0f9dd03afe8fe7690b908caa9d261c6633e1c89a0df5d5ac7894507300544381 fc2916433a996e0665c45a89cb270ebffe55c30dd5a41bf6a2b510e956421bc4 853de67663efb697f1faa8d8b27b52fe10490036a9715458bcfbc02176dedb3f f81afe8c00ea0e0469c862c7dd5a2706d78d36f9893665ad2caa3b119d939ab3 8270b51769d69487baa8fb83f25b6f1f2d6031e3f20113830df52e5545e97134 50651d1e6c13d977b7b2c76a1382c066a3572c967229750876cc66d22513d6ff 8cfc365ac1989f7c610536295017588557dbb007039bd5ae8f11794d521c63ac 18d90b5410c5cb195e7ab02ddb71d8847fbc0196072c8ea037b816bcf67ccbc9 19496ff5ab1219346fe2584073785c0da5db644c82be9120582846f5bc85587b 1a337758a955ec8eaa737ac4c57ba3a7ef9fc81017e25f63995959532898e990 ef33d3d1dfe23c9e80034c7d967d36ff2b6c6ded1f188fb46efb8337bb56d40d bf68c50373286472712ac32cdec01350f59ea28cd8a22665f03436fb4657f634 010a158f5a8e1d71ffce5a8a40a20cb2a6a36f9aa03024c0281c1ddd82ae54f3 e01c5767fa8f2790ec823f0f79e520f4f3564c9546b60383df08047e3bb0b83e 3e977bccc77f2d1ad649b29b4664967687b965e360f122bc05e4127337e11fac 8b00b9ebe81f1c80278a452939cd1b1ea9070309303b35e0fb9cade8ad6afb64 4ff484bebbfee4b1faa65d3b38a581c640ad392a70e9337bfe560ccf78e74c1d e33515f0e3095f2e015b9b4fed1e696e8a5885fa154c78d968eb2ff4b6e2f915 7eb9320ba87637b888d7477e72aad6db8a4a74b145e8daacaf24d12022beb766 d4ce0c80578e3e2fa348249b14464296ee00c59f81e65100b3c3b7b99b54dec5 e342975e00a134bc77681d373e3755fa546638798fd2b43120b593f961d21da1 18bf8a23893dd5620fdb056ed784bda392e68ed0125af20b562fa511cf591c91 050af15aeb8195dd2e95c066f53813a2ad866772321e4c25878a0166188114a5 29ded80517599508d5ba80c95b1987ba58d0329b479ac564af082aa1ccb3a2ef a5363e8ef2a8c060bdc503ffeebd7c852ca4c7e7156a33a82a84d13cf10c37e8 f0d77bb091db33ec1dc261e0b12e82fbf9e9cd868b2dcd4c3f169ad7a4a3e4e6 9ae8ce1974b2124c0b2bd434fc24157f0dff49ba01fa5745f01ff0e5b5b90743 ae8aae3a8c9cb0bdfd4775a32bb1fcf4be5b1555aafe245e36c3aceacb09e659 535172c67363a8f9f7e08c4702f8ed195c49d52ef5628c1b5ba04341be0e56a0 cc70f24588b1ba30ec2f412c041f839942b5fc3db45886128350e66d29ca9224 cd87f632978fd64b4b31e9f9046390d5ec470622eef80242a339db68f74de96f fb3d0d62a0afba321bd5e47bed64bb209b52e4e28c9d59e1a8d6db836dae310e 99b8b68e7a6c68ceb95548e95e7acf71e1747c4e023a0a8bfe19e4e7c6e0d201 a1cdb6f643623284011a19eaf7d887c876312aacb7a928f91bba138fd7021216 c163701c3c242b243b972feca3083133e0fd7cb4171baae17192106bf581699a e65832acd42c2016485e9d32a1a8b0930679e47ba945438be805c6e840b5afda 30f8b533620d99ea3d816540c749373a5db6d54756961403e6f11173e9ad4c59 5fea1e223cab069dcde5feb5436a97957260816f94e448ea0c36808ccd906639 2ff754bda05e19da1b3e9fce6f0d8e40643523b8e6094ea30cf9e640382370cd 50fb923272684e6d1b618797a3d4dd98be6953703fad51f3e1742ef906f4d13b 1571027ce43dbe6a274fbe62526d3d08f5af8ea9595afacbaf7b3ad047a2f2e5 12c59a193656b587cf14a780ca6730b06687e8ab5e5b32d2cb5f6059f9eb3051 e17342a3cf2ec3c45554ec29c1429ed8959cdb7b55e1939446cac2e221d18744 65f2af80ac71f1a92a40c22784aba7beb12691b0f2cc39b0e01019bf8ed7c0af 34da5ee526177a41f602461e9255e61e2b8588cc2db106013c7084caf882613c 859bc44e283399eb192d8c8272233dbe58f6b84e47ec4168ce50f9a77eab4de6 bc58efcddaab15ebf70ca3d26d32d3106521426815dc0c6800001c8bf4255ce3 a2fd74efc185183d4b6e6a9b9e0d36903e675e05df558b5212a02e067f87f7e9 d2e9cf8cb5502ce9b23355ad293f281d1ba2b7d2a2c66ed6df807e1cab04fbe8 3e220d481d7099691212ad55063dd9c902083e3116d40cf49bf9e84a95ed61ac cafb47247cc07c8f691eaddc3a330243b2aad24fac064adf803f7acb9e60968d c52ad3fb46af7fd24470a742945216bb44018e47ccf95b78638231cbed5e82db 7e98118f587e28dec11b67285ea3fe799b976a9215c48b2ff5bc1d03c4b5c823 27cbf4e1bd25933152e4ab8cf413817117743e0f6491fd7bc5bfdbac61643378 d761466cb9363ca49d70670cec2239454a21c992d23b52b52b0b91a306d3b3f0 8cb265bf9560352f5d69e3b7aa78252ac65732bf5e5a47dee35429aecbc98bb7 ce38ac7b7f6188ba7e89b0022ab46e236b17249bf083e97c0afb26678bc35a4d 8eeb0d09fe2622c244757bb49716b8c951ccb3b45fa97ce56980de6d3668744f 5c109c28e9bf4683aaa8b0479ad128ddbe966236285f36f953bf78b2ddba1709 eee2ae9240e677d61488eb0d3763abe793648abd90598e5ec528d6b7fd147a59 409a8e1e9047ae768551736b945e1810c665a4dd7d4b64a492ac56c7b0996a64 34dbc22de4af909c37c4743cd260ad1d5d01746bbba377f7b6adecac91a976d1 d7cbc65297ac32a5c6d83bd8cadbf002840e68ac930b5d8992b62e17a71e2325 e868bd14c0341d2ed1c78e105e4216993fcac5090122591210ef25ae50af30d9 a4d673f3fb3c6d66d5e3c389430f8e9669e642a308f29539a8080911a5a1a8a8 5acdfaaacf10eb736bb60a5fde0eec3e6b737b7d681bf8a09c7301366301979d 01f4ffe738c23651a79f9c3ab753fdf004ee46c6cb02e17add0eda519da010e2 84c7d9998a657666855c88ce41ec0d096a65c8959cb5cf0ee4d8f182190c5010 c526a38eeb118319db3af56523767db5155f36729aca7298bb5671c135382eea 7b8bbf7ce531bbf24a017545c65d154f2b5edbb770b9df64fdcc09fb2a727f90 29214013f606f6ebf7cb9a8074e1f0bd93a40907d146657b1fd39868c0d26518 d5a3b4cab15d2287315e0b9ddd8584befcc1e4c5f9e4566c285159da53474197 17d156a490f85d763a72d44ae6c63c41c05dfd2db116330e5c369981360f4867 b91d39ff8ec999ed2fa2acc07505dad8a677f7fdea8464a871cbd7371107221a d4fbb4cf92b7354488fad039011e472895f3d270fabf519168dad3c417faf687 16b2eef78fb4f8adf3be3e12139d21386958bff4119677777c5d513c6d6e7b68 a1be880b8e6a23fd432178af1ecfd5e0102e7c2997e9298c6a0eb46e613d4310 34fb1acdb23de7e9f6a1ca5f5a4dcab6ca2bb602d4119bfdadbcbbeef12e7f78 c07ea9279dd84e712754f5ad2d5a7c41864d870b4ce7695ec28bdda48f5d8d35 dc8bb8dae35c68a894b0cf7e97152ee77c714b18711fcaf0d5a329a25bdd4f49 a0b3e014ab2103e56ca91c84e56b63d856b4c327d26492f1d5a9f03b8435e078 0c6dd8b1f0d6af2fafcf3aee101efa077f61eb7dbc6147601ac6760bbdcab1ba ae2f2dff696e4100496a718cfcb1da32bc739f79525273d71bd57f9f6495ef01 f9d98306139234efa0c7c2343f1b2af5c17649bebe07b0032d05a5fe4d67ce5a 1895f8deb213da45203db37f337186bd2137fb9674abbc00c805b4e832ad9b1e ac2516904f3a7395356e2de5ca07a5103d7a9e832a251f8a03d80494864457c1 3a44c2edd3842d01698642846c12b9972a3e96362d7bf458a29509bf0ee85d8d abbe378eed13f1a3bf67fcf5ff81c7582b92939035a7ac3e6382a3da9b3f54d7 11b8b8c98485df13b189b5a4e8a1f2fdfaaaee0dcbae277bf57e328ba96c7ef3 1672350d399600c283da9435bde4c7efc0fe51204048dce3b78ee7691e288ad6 8cca208c5d748212b29bb73c1dc9d2f86768d8f4015052dbedee2e9913209654 8644721cb35e9424ec3923c724c0834e6b013aadcd74bab3f1c0029e2d4f251e ded1b8ef08383164adf5c7ef17c1d9ef61c2e483cfab4e0936d458dfdd63c1f5 da9c58fd96dc7210ed0b844eb97a5433581e846c17281b22745f96d848dcff37 988e8e137a1de0b89e889d3fdafebcbd89ce26aa80a8c7585b69b9fd855c035e d268220524e114dcf6afaacbd3b4e8d83a16e81d1ec72b4bc4769ada56269c28 8724ee96300f8014a84a8801780192a3e70dc692406856ddd04b107601a292cc 847af05ad05a98e17b3a7ef9a0fa4d5c1a573870ab868ef1f6b58862c5415522 d7cdad8d6e9247ba12c95bde658d57209fbd9bdf502642488be6c799ac6b0a84 491916292fdbddcd6325852f40e18a65102260e664dda3bf87983d33feed8c67 30551d7061c945b6e61cd9e1fc0b5dac30beb4578618fe7b945bd929f3264513 9204f9f7d27d97fe69a21e30614bafe5214ee5d7cad6399d19bf8496951dcd6d e51299cab11b1ee5ad4ba64f4837649d629650dae98e8a28a8e0e7b126534b6e 199fe21e1a8d964d9516d3f0ddd99988301f347875933582f14ccbd829d071a3 30be623ce3004544927aa509822ec3782c75816ccf2ec18546ce2b77bfbcb090 919fda4c1ab086f659d59681ee6de081aaecada37a1dc94d371bc23244de4513 c2b1401226cdb89dbcf964e6fc5412b9587d8b9efebad617efb61c44447aee11 b6af4b0ce74eceb29f8f3bd392bc906ddaae1ac2f4ee8a5136ddbb312c9f0977 00800968666299464b1cb01b546b6b62b64b8cfa6e71d2b7e1086c1f8de7abc9 2c5da224470772e137ecb684889ea2d496318a739974b6645d3bc8c9416f2fcb 5aca10c36958760852d4964dd05d5c8464f17caf0fbe190fa8996289fcb017d9 9c76340db6e067f4dc9fdc2ab774aebe9b8cc6b655f75108f4e56fa84b0242d4 e163350f3efbc53b4aa584a7e64e93702ee6f5e0b1f43418197efd67e26f1472 99ec565459b2db038d562f9c3eb601a644c0d1869d5837f3432998825f349736 36eda65974082842db97b1e161e3d70efdfa913d88dc80f948658e0c8cf9f75d ddd9c1b64bca680f77a146b6d4adb83d65c4690c2440e283c63fd779f038d572 47cf7ad0fc7b72b69fb861534a2cd25588eeb707f84bcb7c379ebab52ddfbdbc cd097b297146b5927bf2702d78543ac356ef7f7bc894722a8df930adfe88da7b 99e358c7cb3326d7b9ac91636b9f61bdac28b77d44ca6bd994e046ed6d18d001 ee06fc8e3449522f6181c1b4054c6aefef28db9ce89cd9641518d98e2e5b277f b689a13b5d53101b9ecdf692acca81b31eed28607d432b6a6c7fe070eb399851 01dc6f0abeaedf627eeec8613816e58be845f79012af5ae4cda0a5c1da224823 e47980bf645cebc538b5fd8d20dd8c91a1485248351820f36ba6501eab7239c4 908825b7fcd56cb26f403b00774d10018990b74ab15b575090ca1d545fe4942c 9e5696a8abcb845f26878700750da63fbb97c3de9ce254cd861aa6d2fb1829db c1941eeec9b65859f7f6b856ef9ef107cff3a9777184e602946572d465133a26 764c28ef9ea683b2f4f179f269c9490d922322e8f8149088c93a252a402a84fd 7e78a54ca33026b7b9feef6491e50b9c2e0c2df8d93be71cb5ca4e6c554d31a4 f18db93a7e8130c2afa64ee0b82a4039a6a8de369f2b4aa6836def0a96598e15 1b8e7cf483658a98c5072dc9f74b3c14fbd7f7e11d42ff99dd30deebbbb7f056 c418cb40ff986ad30e5af074cd4ab9d6e3c4f6e0dc4338eec34c872fc69b3216 44c5dc953e9bf189f643b5a26f233d132cbd61311cfc4e5930ac94ee0b1ea6c7 9693f411030271b8ed7f39cb860a8cab31a4a3dca6982c95ebaf066d84d71f86 4598abd751081c9be938a4c7abcf936564b7a4fc605a6251bb19bb7189d3304e 95cd8203c983233b84f8a2f8000599629bb619e697205ac12548d7f212cf3bfa 3f8d97cf6099f181573ffd7e2498a02dcbb034cc6dcb8a7a9c27cf6b240eee47 1f7e560a102964665e793e2ac75c1e778f24acbb57b05956feac487ed412b7e9 2c9e61967a76dd53f3f805cd9f988acb68cfb53f3fbcf062fcd59468b583f88b 60bccc682dd5ce6f6b5a6d87fc58278a59b1a17fc5413d80831f5a67c9ee3011 e534cac7e0922a3c16ebf7e16774aa44e20aeb7efe0c89b91afb35abb6964a2d a44fb28eeffdbffeab48781f18f9bdafffb2f16a6d7083a4dc480b9f50cd188a e5fbc19d82333db22978287942cc41fd186587fcbb5d3445dc74c42cfd934d71 dc188dc4fd45c5665e27f6c26907833eb6c1d6245b6a0fd1d2bc6eae84406c0f e866af9d61f2a1415053323c0d98a519655bca39949ed5fc79da2001b744d8eb 7d9ce42fd0db5aaeb8e2d35b0aac8b89c7fb9a72033769d11a8cb63e56c7a388 a29aaa818ffc5ed204dc61fbbfe18ccb10043c9977e2260fce882054adeb2327 373a08e0f25d99ac86d805334cc25acb6532dbaa94c6189bb3bcfd890f7d06c5 ba64e2a3c4a31bb9f7ddcc2a206a44e61df8edfdd0637b40228411de364f9884 d042f88eadb6cb4f735d9e4e0f812138431e45a249543c0183ecd106072cafed 95266c098f02f21dd79f4a5f4046b089cc3d930b7c3706801f7f7a6fb433b2c1 3bd9aac85a266d6e13a5c2c30e46b981a4b35acdf7f934d190c71552b36d4608 2faee8e0c4d27fbe4bf023d03398802d5093c4c66d9e32e2d4a53de0ae68ad82 84cf760be4c2d0ab691845e2cf21bad0865c3eb1c91caac9bd80d145e5cfcc1e 3d440f81a59c79ca73b2e04f1888bbcbae39dbeea92ef2faf7edbdb112770eaf f37f7f2902ba56ef3ec5f150c1b64b4ebd96c79016fd023eeb1e4ca4138f4245 cb8b9b4bbf899ff497e625b5b6e572f9855bbf3236154b45823348939795d0e1 c99d87002647c36df0df6e53699a4e810b16a4a2fe65ff70ee4fc63e78d13b79 3a08f320fced642717327522e104b3fdd933f7fd743901b4190556b6111adecc 6d908942213f9db5a22a2f72eceb26de9d301aa8283db921f1fc7595591afadb d1f850a17d4531253b8f0bf1c560ee0eb18c529c7c8241433b81d50c5a3ecf00 7c2dbc805e6b5fd571f5bfb247a924eea09d6b720af16cf62ca8d2071fda2e45 ab11722060e228dfe93b90cc04037cbe610c1b06871d39c37588bf68c67ba3e3 8a40f3e7466ad0ce8c23f4bf3c760049ceafc7fa29394b879e9c914d62e961e6 801ef32b5d69d18f9d7ef881f7168e637f1865cfe7263e757ff72711b9bb949c 12d1b1ddf19a5489c0cbf9d4ad3a9cfba4d8f6ee892547334ad7196c47742f5c f9974c4113fcb4f643388479a39842852ad37a77836a646b677cb877bd68e84d 1fadc38aca290cd502a43bd6bc8e1e865975186ca0e3b7209f488db6e4af2e5e 78b429d342cfc0b2bd47cf804632e336cfc623b6ac7aa174032810219219dcd6 05164aba3597eb32f570bf5c30753f8e745f450685b81c265b45856332affaeb efe19b395eddd33d40b8d8aabee113d929c18d34580acad362930e67cd9e5f82 49e9398308e7c778357bed185c48140fe8d85b2c9a6375cf950ed12c4a2798e6 6e36139819d27f4f0b7b6a49a489a36b6a409057c5028e99aace10c54216e545 e13bd30537d5258e347a1c50d0dc24279a1b6244205ff542ec375738ab32719f b703c02a74df49948bd1c7af869f2931397fd39fbb5a278df45e7076fde48a06 ac747c1ee3e9a58c4e01e2c277e6c2f3457b4d49bad4096c3527bcae0e67f4ad aecf0596a866c750e434a1226608679305662250a61e510253ee8a5495ee40e0 0b35a11fcca9510ab592c041b99a8282b17341a9d9171ad9be716038abcbbcb3 68ef82f2506d21cba334c67b0b177b262b829ab6ace332a78a47f30785bb2bd9 377a8ecaeb675767ce9d84ed8192dfac4c0ddb06ba38a2e1ad54630b8b42bb07 f1e37dd49e2012dd6e89712f9e9a79cb9ee961c55ce1292f1deaa55e0f10aedc 3dd86819e53942c414d8c31b9c310a4997de239b03c6886ac933f907638b4aed cd6b056c70c6c21dd016559bdbf8d64b8869809fc417886e11d42cf506b66c2f 3b9a907f7475d6794ece1aeee8db4b1b0abdb8801c1e135c10ca4e1844f57102 f35a3f83789939a86242a6633527220f70276a8291865f60959c6e31edb1fc0a 6855fcef 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR7 %!PS-AdobeFont-1.1: CMR7 1.0 %%CreationDate: 1991 Aug 20 16:39:21 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR7) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR7 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 13 /fl put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 54 /six put dup 55 /seven put dup 57 /nine put dup 65 /A put dup 69 /E put dup 70 /F put dup 71 /G put dup 73 /I put dup 77 /M put dup 78 /N put dup 79 /O put dup 82 /R put dup 83 /S put dup 84 /T put dup 87 /W put dup 91 /bracketleft put dup 93 /bracketright put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put readonly def /FontBBox{-27 -250 1122 750}readonly def /UniqueID 5000790 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b448685940729e6e22f4be0e08c6505cba868f7950 93f556b64b808dd710eb936d3ac83e5783b5f7e56d363a59a026a5619a357d21 c4e77bea121eb24b09027d1aad93158edf912940e91cd2f17922b35885894644 7773730bb19af9e70453e1b78d5edc123b273a979891d6d5e624f4a388f3897e 13b045e34b4ee2f5e4fc5e996d3549640010c671de14d18b0b3cd300e57dac03 22e59bfbf7b29422230870f5897fcfaad4b50c7c1c58edcd119218163d6f6e56 25ccb882db7b6d09a1586508e8cb642a11c29a46915e4a96e282079cb21922c1 c2e360b487a45302fd22ec8c5fab63e54b5e844d4b17ca2fff37c69c366dd72a d02922c14c0932f65ed03e4219c117962edbad2dcdeaa9c10ce8af38a4ae52e2 b377245b0be19a77d6c936e7530cc4d0b78d0cc4a92698fa2870fa54f2d8503e 2d17b3d52fb2febb09f2b2af0c2a1892039ebe19a690098799a858e3d39631bd 6925a154d161df3918074ada6bd52baddd0adc3f07e2d9f15e27cbf7fe8b98c4 07205c811121fa91e059f2f99322fed63f359ac9da97aec383f067f23e5de331 51e80f0a88ab50fe8fdae4a5de93c1ae2fdca06150b37246140c0e87cb2325a6 0d2349162ae3ac93144eee1e665a1289105318fdfe86b6e76251cb25adc967d3 d0b97fe5e279e1161736ab22b4ca510b964342383a840defd38f96a7280e6ac1 34e48d740607ff2e7804164a16d47735864db8463a486ce4314ce68a4abbfd0c 1d8090a1146e51c1147146f1189098b0ac1b31819e481ca297840873961ddd87 af46c4d818cc252607802320dde80926c63221841035992073004f7dc1ec8b82 581e2e62ed4d0cc3ef0599b2dee151270a188a7649e96e60b4578236e03bb332 6e18e077fa8af24e434ae05a3139f24b6da32f4ae82a86570b3f933c7c8ab503 7809a99ab190d89e32c8f9a62383c0b3ef7ec5822b4938ad704a2a57caf2b8c4 eb220a4dba4ad8b81d2190ad2c033c5964cc90b9727d400364468405dac30cf2 b5bd746e482aff54e0640d1615c42ae59f0f0bf7d9ede9507d9bc6698bf863c3 aab94b67e3a3ac6ddc0ea3bf13dc370f98d1a756449a4080f1b600b0750822c4 0baa79c3de4d1e6913b6ddd066b95a79f29cd37382d89a9871f9ddb0bb288bdd c210ce11ee55a50514e4f1f20afb44981b07bf2d6ce1038c5e437695382af5aa 12778741b3f8e167febe1dcb4382e4eeac9afdb1d2af0a278e44b001f4899228 2496f79c44c7066ace16563b20c03054205cb7b3c822a880dbb17aacf7af16f3 528cb36377b0ab0374fa5c87a925a1b87a637c064a38bf13e3156968d97527b3 8f78db31a70fff256120db26d6cbad901f09c151dd51b4aebbec130667eb5f3e cb2cee0e9ea72288436812cb7ef4be1f268bfc61c21a863764c496d9db3dfd95 6d53d52b901b8c90af0964f094ea5b4aa6631101292700a186bb867fbff265fa 743bce77eb764b00bf7cb48e238167be1e4709c21c68b2a8ead13b365db9720c 44354f61939e15b3bad2c5b6e90210b851ce2e9f8092043a1b8eb1d3bd6ea09f b4801c0b3104bf3fb9d3a9025b83ce49b23c76feb94fb1db7d9172ce0090bbf6 17adc878d5c996fa476c99563bcc3b7be74a121ef30d26baf2820b1fb695bc08 441c4d9cd35abf7f30d18e2fe3f888cda6fd4303e19e198d00fb8e7eddfe8a86 8c3d7b61bd0bb63bf3e745a85894ac677f5f4a79d11b2d210e3df5be741cb32a 98a688eb3686c0e360c7d2908ec9fca50431f79d97f6ac13a2694233d4777020 af21ee1374a203fd2079df9b716b7cc3c0633f079d8275075741d8bb5a76f2f9 bb3823f5e91656dcce5eaeb11e7b5a43563f1b5f4d61fd79e8352a00369fe8ed 6a115a8b86f8d3f707acc90ba9301346048eb0fb82095d074ca7c3c7ab8eb437 9aaa66aab411be25c0e7894fcb81776190a754de1ac5f02f4a1e19baeb9c9d79 335c3bfd33f25ca495bdd889da9a5e9ef852e4384b9ad40543b48534b45cc644 d6a0eb5dfb6027224be861036ab18e2c7faee4bccfc31c0ec5b9e6b3dfc05138 1ef1b6f4430e43defa3aa6c9f4283453424a02309f9917a14947c012b0f457df 826b944d23d46014994a60ddb9f8f70fb7b7350dcb3b5c6df0855cf5b38749ee b3a4edbabdec030508ac84251f1de2c2e3adc3767af64bdb9ddeac477a7a50d6 9dff34c19aeff468e00071f5c2cc57df9972e76587878fd134d1e898611e882f cb7d3c3a6471049ea2431c64a87bcd3b25e92c80407de2818a95262997e3f84a a876c2cc12ba1733e3743ab0a46800f0aeecabf99d83b11a12f3b9159b7d26d7 943f02cf62866d3fe8df202a0b7b92b6e8af4afa7d8529dd6ff4b5f34a8024c5 fd94f5f16ee4cdd0c62a636e90c2dbe501e42cb3c8659830b36865ed89c15228 853c131db8d0b02bc0c75fa8ae178689b071dc5c1d973b618700cf53110214e5 1c6ad477a3805120add44aa72f7e432d0d4c7bda48ed885f55a91b1cd0d8818f 9a6eaf04f37a7dba2bd863b9ecf0d34ee31b15e0b185ee7846d77e6d516d4af6 f7d1763ee62c6d822c3f204ad0acdd675fdcb0cc2b2416428e07d4f5931a02c7 1134d274237d1f4ccc371147643ee2e659ed57eea8876895201b3d8f6941dd42 a3bc6ed064d6fd2881c465b266ebd60b4f3db72861a5ccc00c46b7bec3dfd673 2b62522d520691359e84acbaf9adf5833af4c305466c94a1e29e758a0fb07388 25ed6372c47a2cbf1f31d496d961fb93dca960e4258ff312bfb1808355db8c7f b3c09f952bdf69c8e1538429d7148ee08b6ea289d097171e0ee38fbd2d8ce493 d719b53e86bc4635c9cce56afae79c2af4e4baf8d67c9fa25aad8b2b97d40612 bf549ab600ca9ae41e1994a4f45e20e9023527cb368d556f1ad6a37f7235ce60 861923b29047dab9f0bc7a119a0008af66d26bc83d33c55deac2a5ef3819ead5 f9330c281feef9b52f3bcc06f3ecda0a13f1b04d97b7099043fe2b19dfb78c24 da293220d79bd2f2aee65ea3fec654f2d1e95fd29f4b36021ef7c2d396b85fdc 5436577f8f8270ee8603de784f2a390d8524b4a23eaf1a66932a60b0bb434ef9 05141534213fcf85a97ffbf8d0e17be00e52cd4a31282e284b11815a7a845d72 1c4daad71cae8b511a97c4afb0bfbd7893c15b4412e6ac29ddcf4eceff1614ea e12a5d3e73df467cd60918c0ceac988035b969015c2bf2a7959d4432b662b2d6 02fa8da8566b96877ada33fba1ce9fc3a585152e122c53252d103e91d06da6d8 e8eaee17a6f2822e8214e37a4fdee508c663c01b4e5ba92b53dcd875692999a5 73fa8bbaebd02bcb717ebc0c2cfbd8dab402a107ae2b1a33f68b1877e5f8213c 0a49ae12562b07d784f24df9493938e1976e893a1a0c2e1b5d62480181c166f0 c6add99f91cf32642d004790f348fa84b5a060ef2de893a4b3a0fc67e1e114d6 55edbf021c29b1bea34342b9e1b7370f2add67563aa3424481e0e4ee8ccf6d29 3d7f9b7336efd0abe2aea41086d07ff1c8082c6f8da080bf2f074edeacddeec4 f1998c5430f4dbeefe63c1f1c3c45d525902e3d7f880139dc32844c0157e9d7a d1cd79f9c97149a07db03fe910137e2327194a973feee1d494da44e442e9ae51 ee1fe3ed09db42956950ac674fda64b9b2265a72e07d38452b551c158a906896 8d3dc8bcb963046c5de2b42c19a561397f7edcaf3cc479a8983a5d9a3004de74 97d0768476d1e7c9c3d48b26dff40b13d369a3eddb1ec9980480f56cce4c7adf d3485cef686f37f23beee4bacfabe929c45fe6e708017f88137310b52bb42c89 4608bc584624b8c06fab3effcce48a9efec1a15e76fe9c9281e38090861384d2 2d69b842c1f264645c6b1944b4597ab8c9772f8502d7dfb75279f5e72258a878 edaba9aa81f33613d7d3f2b2a0ce951073afb172616c205e7dbcb916243047d6 dd259049369f8ce76d8911b9f58c655dc1c1a6ec78731efb6c3162e47a0faa3f e3cbb1034993e42620031cb92b1c2b23a0066bb7cec77180c74151eb024e39e5 4662057f770a28122ccd803b29197189e64ecb1dc6816d27feae01b3ec1c7f2c 776bb46d581f9d66510a68a15ffe13ad233b86019dd8bc9cf614867106e7ddec e5c124dd60439c509078a0d7d4d36fe8aefb817c408c01f8d77cb33bd45ce9cf 996aeb81e6b45124ce13e5ff4966e124297821fd9430d3c91021c0c6896dcd78 2de07d7e4c67c02a9f57f08553e2edc3319e1545c260717e3a28e28a09f95966 cbc11ec0308754a34266af289055f53f47de328b585041a9f986bfaffd9a6392 485ea781337ad0d14d9e94d6cc9bbe7e07a07006d52255283b07d10cee7e1958 fb093e42813e213a0ff5f842b39710d7394b49fc8f63f7254feb719ab1c6fea7 3463c409771c31d3d076753ecc0e7f7a5249fc7a2cc8b9ea868c7059f60e7df3 ccd91b3db93899ee366ee712fc7406fe084b9a2788c821cd72e4b8e12b6c81e9 5aa77eb5fbc08cace69ae6896110ab2d78f0e3f29a78f554e076edc43954a312 98fc478a520d615695ed86d833ea0957cdd809a72a4eed029e4ce99da5251a96 a399cbd7b2eb382d5b160c8a037863d97d8be6aebb59594ce6849d998469f88f c5d7719a33e57ea028adb70895ebec4dc75b4d51fee7e4ec7469ec5c81cf73cf e94d41585b5f7f60ba9aa4d48983dfd5bc8693a079adee789e74bd9800110d99 54613941a57b553a844720420e775f67d068b75940bd08fbd96c1ac5600d1b44 16ca78f42520a4d2ceeb89121d3b185677019ea704de00407211cfe999aa0ce3 52c5f0bfefcc5ad254763eb81a459da5c6b212e71f3aa3280b179f64e4350109 975dee0061b5d05898b5c97d478101065569352650e44bf8a45fd6adbe83fa8a dbe0f1ebaf56bd02f657afbf9b374317c5e0a1d6666e423ab71aa347bf7bd28d 2bcd83cb293b2030b60e47137eae34d632c55e8d4fe253f8473c96b9054494aa 213ddf0a3ece01d53b4393ff279f07152faed555fa5f7ebdf77281c204ead652 433621e91eaf295c06314d552a37d00c06de8cb8fb9e732b450670f04da238f6 3a9f91e67b9fa878444031c9c502f1c0baf72a76262bf187b3fbd7908d6579e0 dd3822ddaa1db55425d8a4bcffdd8eea544d9d53811c57efc693a507b744a05e 9a90b899a3ada92c8ae3951e5e38139c749461b1b48a3080682c61e9d0e4cc36 e0c9c1fb583f936410fcd6bf4430f0e7471fb9d7b1b78f4c85f981646b38c6db d23b1b83e704ef005dc8302876eeba2c6dd49cb57766927ea46d094a046d4b1f 46bb418471b42ca04bef363334c44a4fff353f536893b1acd3df1755b0fe0cd6 c7916317b22fb5a746e2a4c34959975a562794073ec812b950d28bc886797d06 de92e2c704a0dac444c2a3684b818a46c9e12b82a2107c0a56418b6ec03f4526 bfa4c44099d51e1798098f075bea111bf718c65ad959cf9276d37745aea45439 87f1512dc96e502ccb0cd19aeaf2066daa8990bcb8402f7fcb6965fe213a7560 db1ae833652a91a344042c8669bb5704c8f022527b1d578457b055dec0b95daf 67f3c7cfd516e3d78fc99427e085d5117443fefa65ee7be06c6efaf3d7849ba6 a86d166be8e49a9804d482b1813e37cfcb1f99b470497a224c11ce7024082e22 1d4c8ca226b77be8751de75f739bea713fa5405fa9dead66c717bd90bdcfe3ab 0107293cc5091ee39a639763edf80ebe8b5e43f4a163d94c726b42428b8aebc5 72edb08887a87e1f124a8086ab8219f70233ddd1f35d7ac3cec2486351ae92db d955fcae6d7bbc6b6201f39e4fd5396c8f77d3d133306cccb6681829137f16a3 61a1020289e6a24ab8390c44a6456eed5bfce98c97b2f0c51bbabf7cb78f47a8 e476ddcb23a9055553140ee4ab813a7f0f9abffc284620edfe12e582e9dd1fc3 5f66e40ff8307feb322b3216d73a6d69cfd7cba2443b1c3da1dd7e3889e41f12 61bba1665882d6820a04e816ee1c6dfab121206757b90761c201dadc96434f78 970c434bc977b6935d05b90248a5cc5c9f6fb8d963227cf2732ab7affc90a83c c2f48c5b6f340cd04c0f0a371da1110474f9c925672745c1e6c61b93a2b7b7af 9ba54c7f4a5b5585cb3396a8abd7b8c5c76cb55fa978ee611246a3c530dcebfb c858369176a06d6b63505093f18843bbd1b0fe8d86566c362d3d533b793d7471 aa8c8eee649e29105d2deaf7c961fe9b507d7659490e4ae2e19f7a2797681c74 1bb29a5a2aa3dd543f0b142f11d094079280277c92d24aa5779b0f7514a87abc 9003cd53cf0d9253d100873ee1c41b981563d1f4b8b7814570503eb095df430b 32b8f4a2d39b9d4c327942c52f8103f5eb7424eeb037517b814ce0c4cb4d6d23 8ffb48cfe07c1dd4d3f3d14e3bebf9544e2299e9daed574eeb8913897147bbab 741d16a48cef41e2458e970166b1cf2aaff983e1ca5fb54260523704d04edaac ad4ff4bad7dc17c2c2d584c4c152f248bf4efb77787eb57c9d946eca8d6cad0a a4385504ba18d87719c31c86238f5aeba815261631b1c5e83ea52a84bb3fd013 3ec8945c3418be74cd7e14a6705061297b3792cf82cf29f7b55069e2dbf532c1 29f5bdec5a724e422a0acbc0082e9cc78c761b292f862e9268a9053225807cb0 1ffed498330c181d1daecb6a219048dab38235e7bc13e9e7fdbfa073ccb723c3 569947d5cf2524d8a5769f71700e2e41c801c3f39aff2869e60de358fbd95151 4980a29e8c06d9adcf995cdd23a1aa4446db5cebc91665e3ffa2ac1c8734fcbd ad74a20e38c559e943a50649d03dcc426e2d5a8cfea1936c9124dc7c42e8c3f5 902bb5951386b5ae6e6f43122e6b73ea43e553878d2b4963e90c9c1d9b1b2696 4938361182f8e84b6c3ec1e8fa6a71350a12a22551ef5cec178e68599337c08c 867d7b1d225612cfaa4994620b133116a888d77d6e9e77437dabf7018947d190 7b6823500560aa5fdaecc3724fd135d28e1302b2c658de0128bb23ce4feb2209 24c4c2c386f836d8b1aee0652a5a329d368ec29ebf559786894e43f3ebfc5892 251dae611ced9221664b72e80ba2fccb683aaf52121d658405a748bdad1d825b c04fc2cefd56e7201f04441e19f19a73cf08f6eb033ebe997d833a85331dec69 53da8827316cd4072f28a5959d986fcaa33e3fb938e46f3adf179a5a1c072801 3c9f20057dd46c3832a305ca9f99908f4b16b96b33b8e82409e836264bd2aeb0 4c1dcecd013df98a065a26bcf35ee8ee32749a56422e2c8c5d1f2fb5ef5763d6 37dff28a93d4115271295ba630519e7839676697cc53bf7b51117d3e800cf506 2617ceef5aa0bb23ac19aea4e959dfcb9ab098aafe3368132bf8e294ec7597ca be6bbe9f771873925c0c391b3c18ba4558a0fafcd6137c98c65ca57cfbd8374f 4af70d57c889e0da468a7e7ea3222245ce4f6974e1faf8852c438c1c15e0dcf8 f56ec8294f2e944c38556a9b9350bc9e984ea2bbb91a6ca3978fdc62171fcf46 22c53fbaa5b2c245029d5a78662e6a67f5bc67b27dd1e865e2143852a352ba8c e7480da4b576d488e3becfe3e4f3853680af739983986137883c1a916683ca2d e9c2aad95c8136eee5e1f3c83cc5d215182873cda7209ee16d65e4d84ba807c9 673ba94875646e5a71372652c87c57195b61a16b867a1e5da8036595cd9db155 d36c9f1ef0178bcfa1599688d1620df0be6f74029a36a50aaeaef5165030126b eff4f267dcb5c731418d7c8aa3c88673e66c376851e5c8bb41e70efc1a8c4ab2 c0bf0dc1c1e3c49ae94787ec481e2eabdf56dd2113c464660d5c5980ae812db8 283c3fb081218048f69afb2148dccef73116da08f00f1d23b80fea781c5de95a e755f167fbe37a5c0e5b5c0ba8883d9ca7f30118d8364dc3204a4c2af5cfa51d b9803f0288f58eb44ffc4d7fddbb56e2e0c3ffedb5230b17da70ab15a367a5a2 b7ae7e781d59602a88d60d308e5ba1adaf7126779c7fa06b19a12b47e71ec31f dcc968b82edfde61ece0adfa81525487a075382a9bcf4903f884efe68ec0dffe cda7c7addf90e9101a272fd75665523b15562b93c514379e907e6c3caf6b7ef0 9c955d4dcf650e0ea306da837076a99634c0925049efcf0668c4f663d04affb1 ca47fd7b5b85aa520d86dad8cb5b4ee2f58e16d98a63fa4628c9c9987ca1759b aa827665436489cfb576f906366504bf0751ad60fa34cc2973081fcff571d68c 0b3de6c65981fa89bf766f1e562c8b51f0ab8466dbe67e5b549f24c5cb46f30f 3da5d248772e7384bbddac30b3b64762c7f55311bfd3b1222a48f4d64feb3f7f 37b9f3d22ffadd1ae4f80d2dbd81b02ab893c883a4a594340dc8b87a25e74eff 46faae874cb913df7ae72a918726a1f4bd2cc63d6e789f126e9d19c93b7d302e 83a7189dc0a77be9b608390eac5e17a02d0cdab0b439a6c980438d8b4caf1e44 c07a3f369263b9354ae5d16ddeb359770007ba6c69cbaceae20f8d4d38be96a8 3f38d17d5ae7e15c98b94899947640a5f2919dab17249cadae8fe57ed377df8c 0690ccc329de7d39c187c6e8de104028497a3d5c155f9b956771bbd3fd132c98 3696a3606fce20c67733218fdc017ed93b0af8ad9c545663811cf8bc0ee446e0 66f9bb61782d9276b89c76e82d008d3a2cb715d4a71aa0810bf9538d502b497a e2a5f77944f374683aabc4da41ca2d22cbc5cb9fdfb1ef28fe4b8849c08720af 0edc4519f416352606101218de22fcf2962c03600e60a939daa7340122be54c3 df910360a26f64300863f74c35c1571c4f9887b592344580385bed636844c8a0 d449f6b40a348b11a321a69a7b87e278b37b48863c187e65810847c731b13335 483ddc7c582d6ff00e2b3a07d84e76c36d896a615d4ef410c443cbff748a030c 844d86fa468b078f649f6b88a69d3ab58030cc628b4b85bf15769eaf811fd498 7a2dc3a17621f432c17389f860406a759d12e89e2eb07507ca23127cd06d7b5d e58a0afb25905e0a01e698993a5f07453bbcc47947eabff094e3245fc9e22560 97a6a5d643d3170d6b6d87c72532ffc0054dd83868dc5b8b343d2f5484431e43 bc50d976b8bd339173293abf8ff46e87bd9814b4fcc9766fc62c859694abbfe9 f8e083e4464efbab2431dbd1a6649d9f596828f19bbaf8b73f0d5cbb11bd3598 0fe442fbb04092e8d78cd54a6dd26f868a7cacff911043738541b1ee22b194e7 7c41eca72c2d81d4fda8841c789afa1d5c66576225f5525da4f0e994ad0384cf 6633ea54ca2b36d537d8936b4be7eebb87d51417b92a6ebee916c6fda148c577 898a7d6ebf55b50106d4a808ef462f7bccd4a7ea87139a353321f574e2af3a85 5d2e33e6937d156012a521cdfa0b328db46b09383c65bcf4a24fc6e30e9d457b f2732d212b5c9f741ce94c7bac788e748d9ce042e9ccaa5b83d7659eaf604823 813fb6367ccb90c3a6c38036e7e117ad6f53e6856398b5e0af25d5fe2d5ce7cb 42d502d5265d40a914ede5c542d427defda1cf3287301c581fb0de78382f4cdb 07a0cfa413b8ab6fddd03e7f298f188a9995ea1d3f4279376febba68ee855d34 39db72d2539b4ebc1799d3b1fa7806fae0c66cacadbadb5cf50d92506115b76b 5b790ccc56be705126b7d021b3a818d953071ed9544016e232f663ad6229ee55 e7f9b0bab3a45fb55e68c2ab642f037e9767b4abfb8943acc4e0525b7be4d90d c9ff651fe9497d1e28698c59ac9a078c02cb59a2674715a94a5b8be16f771081 97080737c9ccb377fafbf62852ca9a8e82f551e25925d824c10310e1d9052786 60d9d0a9c97156edfbefbd2db5d011d70aefe9ed02bb7b02e3d50afc1d145446 e400c6b57cd7ba6acefa4a240e9f779d2a990ec419c9055436009f99fb318a33 87f392ffe7c25a11c8af4b51c1499543223bd03bfd5e49d43dc9b8dd28d6b2e6 b192339286a23b0ea0caf3a809bb5a33f6104b2f0b6a26e961f4b7462a84208e fe747693c8e7af2d27b928de91135a9ab0e17461139dcf7a1e52f77e420dfdef ba62ea4e6b8f2a46c931825a688d5029255f93356ed7f5d79fa62e5d8419ef37 71c08cf1a0a53b813618de73653174d188a61a8710e4ae1ca0e017397d96229e 2ce24e817849d3bb07d041f9566c46725297fa59b9869d52d270e8b15ce77bf5 534a0e2087f460df444cdd63292999accd6d3b4c696debddc44b71a94ae1642e 41c773f8bf6d5ae311a6d48d66d88682c7e9cb4235b92550d3a40b1d2b52d96a 63f82e841547cc7ff6ed31410e03afc40aaa7c0b00226afae1666b694086fd0a 85949f9dafb575b032956200e03ea84c1d1c146e371e752809067fd2fa5ae652 a8feeab1dbad5e445bdd244e011887694e953e66df48135efa473c1b3aa90db2 f5e41f0540fa301531a6db8bb67b4e355c8f81ffe61243dead53cf674a4a1b65 eb9779c25fc5ac4fc91c70dc1a2cf57dff9dac7f4ee76725e13df646ae2dc46a 1c123e28efafc266abdb7aabd0658925f8bc7421f04fb602f814ea927450cb57 43b60c51eb19f6c1a86a9836a9ce96847ef4a68984119af06b2a2f926f53516f 5c182005760c617e8c177f09807acafd6a5d04621083ceb906dd08d3b9c6bf9d ec1e293bf2a1cf551d8437e3ed6020a6af1a1c6419d71c1b9bcc3141ec44607d 2f73acf911f3ef3850263c3074dc2d51934683849f438783c3c4994878d02145 ae045b027845cc4e30306bb0434ffd44d91434ebd011866745e3c533f99c253c f929a8ca0bef3a8ba0cdb5847dcbc2284eefffb60bc5a1b940cde79c3e06b5fd 614e30adc36223bb71a84be2c635887ac50cfc1934479264f16ab3916e953b15 d11ba88aabaab75305ca0aa5c55e358a7f34ce01807466b57d126051e10c3e2d 413679cbfb59b764b056e1e3bb1482eeb49c82591a0f856651ff6ad7a684180b 9ab3cb129e53cc48274adcb9531f8e4c1b805b6f380e20da5b396c1d5de8d95f e598c58ff84a25f61180c6c8f9f5bc869f8c89633a1106f72a6a4769e5635137 7db26c98fadff5142480ddf427fe98cbc59be49c9a2a737180bd52725737d6ae 6ac9a013ed529580e0e6179b5e582879e65ee40a39a8953566b394d40596c164 2d2f28b9613739331e6a5f319f5ae725fb192b941ca1023c4b884e6763b5067b 42c8000d98c339828362971d69de0d53214a669717e37b1745d34b0440dd2012 de058969adc7d9b7fd0b53106105cdcebd5c8f518e30f3b0f685754bf34c7e45 4959bbcf2402efdd64793af415809ce3c49dba4dc34972d49819e1881fe072ff 74f7552168236b3e1b99921960e171ae2d25d05c549af24ca92894f797625bcd 11a149fd5874de4f6f3636aaa65244a1314da1ebdd31c2edcbad5f655469f331 481e5a5061f70fd18e06732e844139e3d64dae6622ec24768bb7e8423677db61 fd5fe4a2a110c1ebe80dff197999907d3c70efff1f6b1390e181889665c1a66c 2769b57699ded3feab9645d9aaffba6ffbd4b3900c6487650e3e02fc15d6b162 b680ab0c82f073726980f9354bec3b4c9b85e37dac9123cdf477a4b6cf51122a 1aa789cd6accec7912ba2be74468399a2806cc6e57bac0e2702680e40b4ccf9e 5bb2663a243a5ead114e19bc36e743e50f55ac72c562ed3abb7bd6b1735dc48a 58daa1c10c1312ebef58acb5fab62aa0c064e22883e72d35e61a625c9b39d7a6 53cbcbe96257809e495f8ef8bdff99dde0ad303fab59631d8dbc3dc420ca4317 5c0bf2ea2929ff170a78594d5d755fc1ec73196e2bb20c50b22b4c3dcb245501 12c91c2e28aa10dc96161160c3c7793aeefaa9f3fd8b8d7bda85dfc5da1ab58f 65e5a1683ecad3a3ac1c13fb23bf86f6ba5e1bd96a142ccb238472ba9d09a6ed 7fb43d80c5bfaff88828803061a55fe52223bf122a010f67b969ff2f8c8a5da5 425ad22f0d1fdd79c67103efe6000f6d3eeeafda5c1fdacae0c837bb266f816d 3c754a296c87950d3bb99992d85aabf46109748263e5438632b1e03f088ef8c6 5b8fb58275128e4e1d273b6cb2d618b6192410925a56f212f82d6955d10d7c75 5d631fd889d6ca99961b89b6fef4b0b67572260b62af61415ef10c2e28b16168 766471ab87d255cc0dabd5fcc0c94c9f6efded85c3e3196210e4f009c4ac1a65 3345730f85d430bba77a5c86317c631d4c81bd4ebb5f1af750868b401bcc8aa1 8a5a4fa5a4fd5ab62f4aaa8ba020e0122165a1256225854a4d8f37f5db615e5a 5033565c75b14fe563248fa2a834fa3005a64b119961caa575841d7267833840 7ebe97a6747dbacef13d5b69d12c6eed7758dce8f04e4a24717a696d28eb7e99 af05630116d499f489388f5694a67c5e8a9a4d110937ede0a248cfb9e587df63 734ee5ea9da04fc967273e3b79ab630b4f7b5af38a26cfd10f2afd3831430610 40a23733b0dec12224d5bb5a4d7ee448752ffd125a0edb838b2efbe9c21bca51 c6fbb13ff2b12f9c37bd127726dec53118aa172f3f66e8ae20d16d0e75c376e0 19e26c4c5a5320fd526c1fcf8495c7c93f59110d2e8858341dff0e1534a36288 2979b2a4ea8f9cca9039ee301d0c21cefb69350395f9429e5248dea02f974493 858f0e412e4fe1e847db9245c54a482c4c 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY5 %!PS-AdobeFont-1.1: CMSY5 1.0 %%CreationDate: 1991 Aug 15 07:21:16 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY5) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY5 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 3 /asteriskmath put dup 48 /prime put readonly def /FontBBox{21 -944 1448 791}readonly def /UniqueID 5000815 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352 05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23 b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145 d026957276530530a2fbefc6c8f059084178f5ab59e11b6784decd2fb36dec8f 7478da853762e00bc9c52ba86ef50d222ff142abc18e4fb95b86b3e57d9390ca 86e8de6347bf7f48f93322a372c5d7830521b14e8fa0771961b027c81365426d d95d16b950e216a90f28ce806244ff28dd969cb512a23e05045e7b2bcaf7d6f0 ca8b51494f2ec0681bdfde60420628d9bce98a0ca1ecca9140f452a88db19a30 ed46ae881b098c843a51d06f9a153489357fd24de6a0c36cb5a9eb9b3b64dd75 18f83018ae7cefa1c12fd205df6880a705e28457af7b869a6dd28f6b37d82cc3 e51cba348dcdb34efb119b8ce5a996f15492b0f5d34538850a2c1b6a509fe5fa 015eceaf28b6f9385526e98445876548d0f2a09cfea14b84be3bf189393fb347 77553260c467f4551257846b76506892f02bb88388fa8a98147afca10b68e370 500de6653e6216fdcff6a34e9e184766fa509dd43928c99d850c9cd9d3a6df07 15c2cb2bcd0d07e652476ccfbdaabbf4aa6b39791a6424ab9670023c4246fdbb fd9f4f16d1eefbcad15896770612e477b326e403dde27a216d4c91025043e481 c1e6c32798d9637656e7d71d3ed536551c22f3d7d4c969833f0c993d5093f163 d47d67ce84e3c84ae79cd6f4ef620d25bbf1c7e5c5d702623c4a4ffd44df7d30 5cda37c621459d8bb41b595f577777b04c1915f3fe40a6dcc8002cb31768f96c b0bd4a36ea40d67de495a8724671ebce1d9c4a77db0ad8cf10f309c5f49cd30f 6ea6aa7145cb3c9743226dbe812c3ecff338e2be46715d728a3158e34809992c 2826a7e061832516f825b1f75f55669658689624563eb91a656822c9a7a50883 5e07a37dd5baf1bdb61ad9eace4ab14e6d25ee20234d031414205e4888ccc273 6ad4d9dafb20f001ee361364e5eda30262a0634f24a232db1255cb2ac255652f 023c71a0da84bc2d245ac407fc0b649db0eb3ec0757b6b17dab1aae67d29b3f1 afb6a709ef25884aacf7dfbf22a776aac6ea8536cd98bd3f 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR9 %!PS-AdobeFont-1.1: CMR9 1.0 %%CreationDate: 1991 Aug 20 16:39:59 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR9 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /Gamma put dup 1 /Delta put dup 11 /ff put dup 12 /fi put dup 13 /fl put dup 14 /ffi put dup 33 /exclam put dup 34 /quotedblright put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 61 /equal put dup 64 /at put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 91 /bracketleft put dup 92 /quotedblleft put dup 93 /bracketright put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 124 /emdash put readonly def /FontBBox{-39 -250 1036 750}readonly def /UniqueID 5000792 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b448685bdd20eb05d5e7c2126132e33a59a7170609 dcf4871a5d023c9ef57d3362d9f2d7a440bb69bf653364105f16f4d0f03582f9 aced3d05cc76489b16e3fa8a446094d30038b06ecceda269f2eab9d19a99c7f9 39f9548f206c5a457a19270b2b82c43b091dfc5573468eaa3e7a4a32f8042891 d85e4b180fcbcb3091d2800e54c87d84ce9cad6869b5aabbbe47f40c68799893 d22b765295e1e69e33aa048b7ed98ba480ceca91f3ebf8ef85fe9a3976909626 b95ac5940d53f9b02215d84a44837ba25ed15cce0d504f1d335065594f3bc824 5405407591cccb11cfd4645da60d960c0b93f187b0cf7b105543c0b70f89af5d 264b6c026e3ae646acf145950202ec73282111e3e601cf2bcde22ce3edf6db23 516481420f26552ff4472d749811f27768150450d0d0ebe3c79f999e99b5c0f2 2eaebb12d97782b1bd91b2a1f62a76412548ad53c0dd411d4a08c0f071c2c218 63d9adb75a4621803ecb84c2bb235b620b658984b2d8e0c4637e2811bc8f0d04 6c8935afc70141e1b2d9c23bdb251d304b3378faf8928bd09686aa0340fb0cb1 dc48c996ef91530ff078666fad227a3589f50b605267212d3a65ebc1019a8eec 9a0739a00279471a01e1505c17658c10030fae32f274fdc8c8774b0d5406c384 a1d17068dcb0c2575c562fdc5a2176609bad9a2c255e426a4325a4fc3053c7b3 2f35f7bbc9aa50135f30223360fa2fbf019294b2e1d1405e078341097090ddba 1561f22f8738fe105c0e3b84532bed145d51428c9cb1807e655408807dc69161 1109a98af82680d6dccc987cb312835dec4ea0645f47a15b6707d654ae54846b 3d3301d61150fdea8ae2da33e79976812c7764050a3e86a2a819ffd3c64c38ec 16b2d0bec3922847fde375ffdd82f8f8bcdfa39c53068da393b35277ba7af682 9e48b1607f22eeefd7d0eea93ba1e2fb9b5ecc6c6fe1075db980999f0be7add6 e026230f4416b47adb6a6c0865e63407f8c50bb5dbdaad2cd4adde12824857ef 30832170ddee68ce11eb8c3cd3b79c79644fd7376f1003ed8c522c51080520dc 6af842834b11056ad97e447fb1548dc321c8f1def6e589f4f264f40e2b1ebe58 b65c9094617a3939cb4c6056c14b6d1e590cf03cccdbbba456b5128c41748ad6 d1b445c0e97bef5d3498775ff0aaf648b05e3efafc187705ae0d582ecbd4045f 84a74aa357b3d4f60d57860076ef8f34dec0a553e7d023daf980c3439fcfff70 c829cd8f10e8e0486b55a4937c6ac28956e82c0a8822f7bcf58d4949d9d3aacc 19aa63d61402f7b20b8ab26a383b0f4c6b9f4f7a022ecaf70f4eca29041b1bbd 31103bd6c08ef46448be7e9d32c82f4e4934470a08d29d3c879a9c2a981212d1 8b68c6c677140b0c97cf841fbe093f02977a622046d46d5f4b146c1c49226353 397132c009e81c0bda3bf7ecffe169c7cc7d3f1464094d0041917d6a262492ab 2b9c017501290eed514b7bcd2106f22c81923e7215a5f688cd43c55580b5be6b 1be0d76143c3f3558c7471ea794b703d4b83530a16f14bc73ee7cbd178b7b488 7d7aedfc1605f9a7dba8c8fb59127cc46025134e93a7da8bab42574413882ddd 62f78295ccf3b4d0f44eab33dca25a02fde616d8b51c79f8852350d6fcf3b197 92cae6a1d64ae4fbd39ed15146adec76d9f6fd314ab0da1cbb530d8a8d551870 43ab274a53d0661b089249e4948cafce4963e36020b4b97daaeb5b68d361ba2a 34aabfa7014f877b175b0fa5b22d6b45d8a02426d32d5c5336f008248b107a70 b4cab59b06e53bd06d325c4d3627f6d8593482aa1b6d6531df023f1433cc268a aecbae1bfa808f4ffea095e61b90f2130adb8f89c8c7abe967540ee53b714e12 237f298588d024b2a89464dfc6e640d20534c882c51c2feaa5ff033eb59a7468 a0005fabc23bebee23741e97df6b39c4084c6bca5c08bc5e40210461a139827d 75fbd3f556a5a47806401458fa98523117cf44b563fe7b3de25495f249bd5203 3ed500de41df88936f9718e93b0a12e2ce8744d528a16b4c431bb95801937002 7967f40c395499de511365f1eb2804b859a4bc759d277202a9e09cfff583c60e d66581e7f6e82b4753b46f5d635b925e074588334c436476f91ec75ca8def274 ab07f2d32a6d9d264b695003936fec28768bdb5c03e32262f2d41ae760350feb f01312ece06f5c1a43af5101118ea0a7bb1ddda7826a53d5b44b5e16e5c0f43d 535e96674e7349603fccb3a021128d2ff2118b8b72e33fc176cc24ddd3dc4bef 98f700870299c955b65e9966d5197521de4201bc03380bdeda1fed4468619e6e 380a9c4cd38e2d811e41f52dccf3e8d801f87b366751c4ffba64c938fb3c729a 129fc44d610360a747180e83fa89c7218ed9c6affddc759ff8cb8c2118db4918 2470a38476d3aa8014a336444a810ec015fe8943744b0c66258a84bfe2d7eafd 261ae94908acd35c7b8d58c61ebd5bb9219f550d82f2aa7346e10d281260661e b7e7daed74b14a3fa33ce0fcd5a99e7f421bf0b9fb4aa64ff2842778edba3a2d 3f7d4e9aad4165af075ee7a3e3bc110f255ade9e7ae3fe6bd440dc32f3b854ec 0235868d1ecbaded6895dfde8a4a1c1b6a9c9c75e6f42ada08f8cb6353ef81ec 0c28628cd50d48da8aa02e43dab26bcfa932e2369716d589708f37ddff57c48a e29bbc6235cee834e0a48cd8606d9b5658aabc344650b677c6a544bbf6af4aec 2412834a108e19f09b4524931a9eb36f15c895512bbc4132091ab1007ac3a965 dc10a73c27a40592f7c8455f3298405ba3b85cce0f107fe881cfab40fb55a635 cd5ed60ec6c63f63e6c05e8616874b694e46465d2b5b3ded70e9575f7c7706ae 7a9da013a598335bbec31c479a50a92253abb94b8db832f7eb0a47f857e6baaa f2eb3fbe3eda64d46b999a7a8b135e6ace333508cec6a6422de16bf2a90a2c71 4872f7a3b738cba8621f867c56d58e1f1a6050491e6c488fe43714f3f1a0f67f 818a7d7cd00ab338f680723771b60621b22892df1931673812d2affe63b2fa0c 4cfa35d8e60df6f3ceb3996ee2084e8f8e48847079d16613c3c82c7848079ea0 2eb547f8440ddadefbc7e8e69c166e2f16b062e791081d93628ab2429faf1e2b b436419a5ba0f25144dfc5f6a23e59fda6c2260692297e87e3c870aa4f95b948 22eb126b6b0a218fb46c94f354d31df8546e49387512158a6eb130ba68ec3b9d 2c861df71c386053f9bf0b2158b0adbb3eae65c61e4b78d74811e1d0795665b1 461f0a5e2ee40573b3a79c50b894e2c04be20538b2c2465c5f4acc7e349bd754 7a74600a96fa13820750876643d5e9127683d77284e926e3ab3c6373cc57be1e 0f30ef62c7991139a7673fd610cd53ee542dd3a0bc27b3e2398ed081aa8f5f3e dd871d1bf83be859571861bf49ff9048b91b65f8229a09c1a0d928801fcab808 f2c277b5a4e818fa897d5019f002c224c4c300678b47eb43bb2490242c436ebe e090e067b7eeea06859e59440d424b07d3df8e55368aa10e50e84e81a582cdb5 c25acbef97a6bc2802dc9d0e9c32c78d17b6826a0078e2f656604c590703faa7 efa0445678ebeeeac79c129bb5ee031cdde04779c6aa420420d80d3fcbc73be2 c6a5a817e406ff980e1f4ab41e246862de7253e21fac5a8a7ce5b358a4b22c30 8a8d93898588122a81df516cd6818595ec631b1f9c93f5f0d09c05ada0f10e54 4a8c81b935841db0881e096ab30fd7938f077451b08c4fc2d4e9a0ea2735bbfb 49edeefb53bb90e13eac941da5055827b1ea5ad09f20017b375f00e840f3ba1c 5628417f61c8f3543731553d45d12d1f8c46e761ce47750fb54ffc07725f749d 5710a8bc2a9c1467b1913d1b8c1f2e2a1fd0bd14b4c59a75e0c361fde57f4e9c cadb8d027183d1916c4fc56deffa9b833857fa9d02f64c584bd4fde80e169e2a 50506617f84a922ed0d520d8a45d6b76e459d0f483e046741612b4c753116e17 0e30b3dfae9a98ee15347b4ef09c234fe8b72d4d042190c7912976845a1a271d 580e123202beffba5b67d86252b6ef0d9c3ecc16d7ce13e923c299aa50e242d2 59d845f5b7800c427fe195abab1ef01a71cf7a8b0a670e455e0a5f7379fc5899 2b261e2e6882ad0bcc946201d567dd705bb84d9409f9a40695e3c2f448152ba3 827b048a2095e8cb37e31fcdf5ad639fff0a37c8eb331e129935869310d29d15 d84a6a58fefff496e52f18cf4776906ff2632ddee7956631d5157e663a15e88e 0ed216099b26efd256a2c946dd48698f2a662cce9922947fbd056ee53a44bd24 bed8f3c58efe462ff6829a1b0f48e1c16cf0bffc46b849ff287c3a714d7271ca 901a46f1d05ffb290baf6953b17c981b71afa6c2a69a4f5e30e2fe9c347a801e ed701b95995ad0304f026f994f3d99b2c165f81b1ef42021cf013c60d41a4bf8 2e6a912c7bd433eb88ec2d89b7545140aef58c28b15ef142c56f01df97ce85df 885fb5891aa63abf28749af6ac8d340777700afd1786cd4732506341b63267c2 3b05702ac5836521ab5fc5c06094f10076d428cd525747174901b4705d7f23cd 962b160fe222f73c540b7fd364e70693de0c030b1bcf78fcb2c57b398ff7a523 2ded67af348b1f59d50842b0ffe884472e53130eb8630ee7059b58a5751680fb 45a6eac0c7c3df0556aa330ac6f07f5a8ad39e61668c0a9d2256d7af7a969ced 40095fee27b07a682ee5202ae2286c6d1fac3741f4b673cba1d578c22fa0d82a d0dceb5e405df3ca0188e318ce3c78f3fa5e267b0048dbd28c90efd652845b93 29df5f8bc943ee5ce8c60c17febc46c4197273b41871b88757c2d4cbfad23d0d 5e78e921717f7c856176a744a429831acb95c178190ea9ad8fdad7fecba5c55c dc036e926f8d4a67d5a34d7b9fe65b8f60c318b6f4a63e312e091e6db9b1611c 07855fd214dde996629828eb3404fbe45fb9a7aae833b7d56ec66502f220a0ae 942d3ba8e2894637b37b4ab8df1299e918b97875cf53ee7d81a40b573864583e a34231c7b618b7d8a328c6916ce2e2967aaab9c6084bf5ea1b68d31c37f6c4a5 1ba8ee0a97b57a1288497622808b7fa6f1167e002e1b220121217ec1cc16b6b9 e434f530204f650664c7c1764cb8148e78fd2737445f241934c054b6a88d8a84 fc02b785dd12b2364777f8878d2c094f9d6d888ad73c1f0a2147364bba625995 1fa4951b1c614f7e2548f683fbaf1b7cc84160aab0243223a986f1f46ef4981f 8508c86430f61268f33d1f54ba1c6c586a06f679ce6a2dd2df0a6f1ce95605e8 78118ccf589ada52c914ec6cda08205a6396a825e340b83842fe0b19f523f6f2 a913e71eb93e6bce457503d88a7c1e0c81f6c4fa20706261689c4901d75ae6b4 a897e54353c9c6b1943e855c3c53d43217fda65ffaf5144319358a31167a9d2b d05d399c727625a16c16f7057ef2fb4c0b11a15a34d2450fcca1514a6e0144c0 d4889d37e4d8534a9a91821680b44bf437b66368b73171da07a574256bb7afc9 61c75beec9129fcc1da9e3853953665aa613a0813c608f4089571b9d91ccacd6 ea10965fb85f9fa5259010ad61999ca5143a544264f6173bb72366c2bcaf3362 6c3923ddd56a8f3b8e9703c49cbaab91fe0d4b2d708153611cdcfbc2d58a8fd2 7bc56be8da18d612bdc9fe03750256a7e1aae9100d87e2efb23a8c077a20f1ca ae400debb3eb899884f390b1434559309744dbdad4b6463e403c072b47e69140 03e424143b2cc7ba8da66a02c8bdb4f47595cc2aa81a98633b708cce08cde16a ad61faa8fbba703c034ffd604ee899e4081fa96ba0a4d87fc5e6ef420dc17b25 93a8320549df3b97af00477c5b307ceb4f02e8b398b2a9213108334cde7f3752 a04c9206c2d0aed2d130b5a1c1a968bf73d14448b34d0d0df3ee7ef9707059a0 14c14fb6db1502b0f242cfa686da0e16f31ddb148a6f319caa229c08db2c32c9 a6fe2bf8c591b0f6b86bafd3a4f75303c6fe4c397637b74fd5b7acf3d6775f15 fb6d0d28c2c7ecec84fc132ffb203554fd3e4e5ecb55edeeb638165f355a5569 aee2ebca05cba90b0fc7c477557d6cf21705f67fb741779f75c5efe0cdac04ca 6ac79fa115d523f8f353745a57d03cdc986f5851e4e7cb2f4040e3963b97645f 319166fe88aa53b78b9bf96edd2a0bea34387b619caa799b3e6ad7cabd541047 55d8b8484dbe698ce661e15d95657c77ba42abf2c9ce968eb24edbb90ac80e0b c6784994ae279497f6db0e1cba7c7e772659fe9aded569e2af73977319e5211d fd84190de66ea1fc94f17cbe247f78c40d9fc339436c9f0b47873b73375d1443 b617c5c2e392d8e65fdedfc7bf1d4c8cdc4e66f9d0737858a1c223da75698e7b df051a3189883e993c5d49535f98f10921bf2e9360df2f2a0508df5082cf07b2 a6f58bb79bfd8635c9a1c93470235ab305429fb5b676b117270f55dd7b990e3f 6ec8c128f617d7e296503db5768cb725e66ec17928cefafc8e46b568f1536f9f 85908bb6fbb6d531844411a7424d975aba5ff03cae17b44cdde99f03b6d8c297 630a6b023ac8407c087284002976932ef2b28a0c0c5ca1ab5ff9ed3a3fa715cb f2a1623c07851a1c006d48f83aee9b44457b7d91d34efcacd1a0090435edaaf3 0d231263399f332dac522ac38eab3df3ad816285f164dcd2148e0aaa44a2fbd2 1d0a626984426c6ebcd6534a80e0341b8289fed9638a3db5e1eb24194c4aa330 4dc41971192344cc5ecdffc7f7ad4887c408e9b510d908fcc61159e10e1949ae 2d6b9cabaca3ae48b2b81351be7c2daa4635b5dcf3fcd372fd4177d6ae2b009f ce77bc4c51090ba88a97fcddb5a6eae517a29b421b99a3e789d0043512fa12aa 462ff951ba7dc80dd29667c86603e15fa2d09125a66e5c46454aa915db1e35a6 8da5006909f1ac092f1d61a4af9c16f1840ee9a42870753286b725504ccb043b ecb622e0e41b4aa8a5880867a43544efa7ec207c1dd6576bb7bd176dbcf98b5a 46187e43c731c7d8b445088826e49826dda39ac92d7556a55edff363d9fd0f80 6f457c8dc403ff343e2a47aab84ce245e28827d2e2f0ce105a615b1d834f1ccf d6b5c05fe157f52e70a5a9d17bfd45c06c8c940e8ee8fee118fe39249a33b2b3 d40a9def5d31c6d03654c36597fe9709f0c483b8b921f6257dcf33867f3444ad 602305ba37ab1564f6d26fad40c8c72c4e191d49263cfd1fd0e871acab7ff4b4 6bdbb8f6689f470f4060b0aea44c513491f36a7c5768ddcfa748c93404c182ef 89cc85b00465677ca9126c1cf1fc88b57478511f54478a59fe996d8736dd8be3 380e5a4aaa09135576384ea6ac5cc3ce74f3ac6cc06279642d1e35cc4ca2756f 47d229cc9999972671cd6b40e8891f39efff329acc1ee6c1c8f4e83e7e632a71 bb92b387b04f1e03a16366c25ca8a00fdc7f141b39a782b3113072760449ffb7 4db54b410982cdbb9be560ba039257cc280843d61607e089e7e544902548e7be 474edc7741ee7e6b4de7a7f85de09ebb9f2ec86a1722743266d72c4a5caaad76 556fe2d3bde76be30c555025ed7282c55890882899989d42c2caa333d6412364 fa93b11673c7f55f421495f1ea6cea90240c8c6248e212198fd7ae6950cf0c74 4e0f46647a097b361156f334dfa5f234e8deb6201f517ab5017b99c733e66c6e 28b6b1484bc7067e031063e1e3d486d2002782c3f2a514ade35c34a898cc3531 13bec20e5e5e877d4b75cfdf05cff5c6610047165ab245c928fb572c23f0828c 0c5f2519f24c5931d82b1ebe260737bdd4e0dff1d95fa5a0aeb988653955d88b 2b30cb5b34b793c4478cc59469246adebc351cafce12370a2350a28a4ca262ef fed3caa8a89d3686b2120efecccaa6c7ff3683b76b4521f5eb45519331038b23 dd6f4a122a91543344c6ce41e5de9617a60618649a6aa2ddc2b0b5117e61542e fbd086f4c7ee450f876add387ad361528f47420764d6a1c42ca2e84791e51c6e 74970737c6c01fd2af6fe0de123bb1d3c31fd0875e866e2eab024e3ceaf26a12 cba724503936dffc2aa0a974885a874519dc0e454236439a974d97aa5417e94b d323be4925376e64b2e60c1a6648436904e0294c29b3d5a69569c4e79f3a39b5 32d3eace66f2e07387d78f9da443acecc29036e75c3418ea0bf7b23ab3559ac5 bc6e9d6a3f2f51e0431f0f2bd750504b0e29f51807ff2785e6637e52c0ce59e9 803e5911d74acb9429c7a85404bdf2e46b45c8fd4e12e00d9a2ad4e80442d1e1 288c4a5b4c48232425094d18ab7239395c867bc0efc194548640cad1f9b6ca65 42c00fff43a3c6a7d096a25505c8754e6f99b168c834f1c01a9a629e3091bd42 755b35cc87d3a73a9f98c7ad0181ebf97409720ebfff8184f123bf509dcaafdf a86f04fb9acba35f7c9d558498fffded18b8168a831ae2c67bfaa465c77c2e85 3adc67084e2c666f3d11c8e42923672800872f9f4c4a40bf64a1abc253aa6a8c 6a238e27faf90a8ec69ece6debc9c825309fe3e731145c570641b0da5f041f4a 53b691a3816e5a2d9c1fc20f5fad6e54c8c82134b32596cf88f95dc57002d08d 01e261420c3df3654ad3eab1e1e55a7471be38dcf1141d6d55cc2e0b8cd1cfd0 95e7aa01978ec998e0021afbd48a760af98bc771324ad39c15b35536244e4c59 80dc38c5ef46b3f3ef2d302d74ae376a985ce1ef62bbb8b4038779ae449bc9d7 a58a49aa2873971db064266d60b5ed0f2fb9266b6c96d9bfde51b4ffe1900ae6 37e9b40d067c7e777031baae80224b48e6802f2c55a42a1d51627a6abe39b016 6172725eb1ed8c696405dc8a36698a2fcd173f8a30766d24827c1d73a6fc8ca5 09ac17e80e66c1b3655b1b78077b3edb37a4dfc1e97ac0635b89b1a8cb72aa53 d2477b3f5c745f9a8d5ff852b22ae7487aaaa73b978e2938132d78eee7cbbfad 37eebe18b2a2c0a100967f3a806b0034041c7be34e3f6206f9996c5a0aa49358 0f048c92d52831b748c5bcb58f5967e25bc046b7c62d257741773a1d2846bfe3 88712f84797758ee49c92eb0ed688234ae4a0d3c0212e0b3cf7a14bd540521ce 7c4ef8edfe48e1b3909b4d941dc2a12b39450e00da05519f350dd321c855c56d e8885add430a8ed7f323882dd172718a8f4e779db43bc793dc00370d1130bda6 4264f5b2634dcce32031dc9345d891f4c847a3334ed6655017356e41a0896b6e ecf54b6c0a19868ed80db27b121a16f4b6f09601411a08652bdd6c9e85710354 82690d7e886c3d7806e2e11066d5e2eac6d27ddc06f807041febd66b1594a946 d05c7328238f741b80315e30108a0cb15d47f145975b43c6aab72626aea2f32a f9a6ae92c6dea6ebc943f7ad50c1eedd96bbe358669a9ffbdfa651f3409bf721 556edfcc669d5b44548fa0dce4358a18e8560fa194ae75202c20730b24446bee 1dd91000564ec25cc22cb46b55d4c3aa5b3a3e16f9f70cb804f886bcbbb46b6b def5cb2076c905cd5ca31372b84e8e156c8420be657ae4cacce915ac0e75e3c5 d8716a1d962bbf717819a8c311083b4fcb3cbadfad46295f06702acd2b18579f 27deaea08c3aa3244bc6c08b23b98e93b0d7611a4dc5bdd4a89967fb61ecbac8 2c72812378199a3cb28e62d2a1cc3d227a1b9217cba81e923eeef94504f4606a 4af849883e461db0ed574196ccf00aee075f861b4dc4e1d1a1b8486d4e0fd35f 72a2b04901e7bf35f494b96805dc8155caf5602dc8a4b0ac8d60fac019e5cf4f 07e690830ba6e0f2800b71e4e64a0b5fe77155f4cc36f380b27ed82c28106eb1 ba1bce668978e5b99a3897010a42af22796e857ce952d7df6ca2c1ffebcb0881 8102201b139202efcb3422e1db39bc085036d7ab5a2f35c5187d8852479fe3e1 25dc436e628fd33e6556b87191348819c3aa76350bd900bf49cc1f370cfd1052 8f87ba513b3e4ec8c1e30f03973f9bce36bd649d3e3c5244f2d8f5754d8a96c1 89e5b943cb3cf9cfd6e88e4aef20e79f2652225a29abdebaff58766f6138d9bf 5d5499428778cc689a6ecea0e3a7978100c49a25b4f388f9a62c235a639c4e5a 2834c907ccedcc3f3a80af7d4ac7f539850a1a2bd9c3ad0f52b96a8805c9acfe 2711ed40f13435804e2b65fc91db209f077d61892f9828ecf1f8f51538e85adc 05a8938ce08e41cca77e577a0c0263cd3e967a976d6caa6fd9cdc0251455bfee a2490afb40e1359032c0ab5d8052633ae6155fbf1bef1d4fa63242091b833420 a4965a08b6a2f85ecfef80a5e94f84b18dc4b15e018a68e5b85775501e95f6bd 081e0dea756512b152e1b38c6a4740d715b5cde93c645b8ab1c9abbee970a04c 52e3ae08164c4d24f8769cd6b8ff21e5721b8e38e6dbe58b9d750fe2fa6441d3 1ba74f66d483ae311f0b945013a42bb719b3fa9fd57cb44524e6ad99e4ba3e8e 7613617da77616515709006daa1ec07f207b7a31b2af01fd160551106cb6edde 97d4cbad1089e9fc49f66ef55cf8aa7485fa12ba3e1a7beaa2c0fc661bde96ca 07f547172c3aa81844b4732d3211cd0f1e106602697204ff4bb2be509e0801b4 9ff87a09268e388b244c8bb4111720d3f15427cfd885e2d871bf5170d10ece2a 43a9cd1487bc6a1d4e4efb131b0cda4569463ee6fc5b1cce9cba64dad0de295a 7ff13e7b2345bb83b03a73fb5b5f3290c059d36663eaa284a88bc96e65ac344d 6ddb17f052a6b3f54761b5052d5bea29e9b16028ebc694bd45fb5f6130df34ce 8ce71347bdcb526cc79755df916f888e87d425471bd353815fea1bed1a39c387 30a22a0c7ee306a526ccb9f11ba7fb1019e372a846793f041aae30acb4abe2e1 df7ace9b4b721b4e6d99369bb591c203b008ffb6cb9beb820d6ac092a0c1c437 5b095705155e43bdab1b17fb8363f2767805f2e716d9b9cf17c6412c78b83ab7 495343395f4a6c50d1d18063aa80de9d509f6763b309195fcadf5870eb4e636f f6a83ef1aebee8593eaa6d0e58b62aff4aa1074e77e9b8da7230f0c31601b9fe f061ad85df5bfdaf664bca9f156f84ae43bb7f5ac297687a0743a9da979a8c36 0a59fb9cb6942a5f4596707b93b8db67cbba31124981db228751f51bc7a04280 c604e7d63740ac7e07393fd363246427e8517c796240350179f80a93cd7b4298 fdd7f643859b4c0083d46e05009cded0b1da33922d8e8ff9e9a0c55ccf78c7ad 9c72fb521440eafa6934195f5d0998ed8cf06ed79b137f35ba0411c567e00ec3 fe7305c6f84eb7d0aacc77aa62cd186b78e58d8bd25137624178f5021e2d8ddb 86d9701d10ab9f59c15be0ed4eb1ad1d98753dbf1a2e105ecf475b4631b60090 7a90fd438055080bcaa301c02b26efb1bbc55d7028fa832a9dfcb141cb970cbf 046d4c88bb25c45d571ecc74fcd333299efc083bc284748d25133576b870cc62 6b7065b7eb10f7f875fb8a1c186ba56bec438254e019dfb3dd04886ed5f26349 fe7dc850eab5144870e42df21fd89fbaff87c5276006e63b407c3a2ed58f0d1b c1de92b1cc90fc1fee46a5fd82e6c720260f785a0e77cc4fc124add077155a61 b286b78da7c92fe32660f566ce40e17aba66d183ab1acf5ed7e8768fb76bcecf 0179fe35d027be1e611166e0fa40b87735e81f43dbd2a19fc7980ad7a8a25393 6a0a13bb35a1b95d9ba112c5a53a79543a86836623847f2b12eb488fc77468dd 07a949398dd4f431a4b0f6ee3b6359af6260e8fcb79bda4fe9e3e5ccac4d1a6a 0326c3b7832fc80bd70d53e46968d23909f4d9cb2bd995f34fe6f06da1d6f155 7f990d2e8b7b8c7108d8a4a491267ac2867690537cb1c37e0a3ba2468da8a6ae c3775708a745ab31e37eba054e0e1e77ca3b829ea9e2f464d5f35390b6346cb1 3ac474e0c12d99c1fba48cf4f4e807175542717ee655ebf8cef9406c640641ae 752b79486d91627f724af5235353e40e216f46c8ad4faddfb0a9905d22eb86c8 ad259ad85984be62245b06334636fbad0e3f2ae1e44adc007d8cd8c483a522a9 b739120295b2349af0cacea0dffebbd1ad0200106875f850243dc1ada98e5b48 5a400a53e9379177f52c26c697fe44a848fabff64d7bb25a530ccbf9f303d7ba 0571a8cfbcb134abb82d69a034ff2f489f7a28f1be7675497b0f8752110dca7b 17eb1d8efa08b938a1931b8c0d4574177f1868d6141a506afc7ed0b1fefbb5bb f46a79b21a6a6370867179c11e0c845b0ec351c261ac529d11e6853cd0441a6c d6a8c88c4854a0dfe8368c017b912ed72728103d10cd5f9ef03844bd6f223ec0 32b9ac1d9ef764aec74346ff1f80e23616867bbf558617d590fa4f81a62bc009 2aff46be0890d15f7c1f98322c5b8094077d0aba143a41239fdb3bd6cc164711 c67748b59f553357ccc73529bc7fed1f01d1d00b15f8dc387e0a2140596e980f 404e8b06a275052a0d478c4e0373df0e96dcb2f0320a451c0f2e96d2db518d01 1c62f89addf5ebfc79736289084f934b4e72a70b849c1f353e659ad8652c107c d7295eafbe0180ebb545b6be1d010f3cbe485c45bd450502b2b4b3a2dd4e6b6a e0de81853c8306dfd581e9dd0aff558e8e02c3e433e2561dd0107a6f4578fdb0 b77bdf0a23d44805357d1c3ff9ec4d9e4197fa5bfbc7cd938e2daface7511511 2275d91c93f5207ddf329bea327321de9a34d717956ff31d51059c8e30a269a9 8604a266ff3c7ba6e1b3cb5deed43fe07e50008aff00b0ee9f672b20a663b0b6 dec03cbeabaeeafe3b4834239323d04a59647161f28195d867d176575e615af6 89c74476103d278a583ddf6fe716fa7a7e46aa2452b5ff05b7245fe0d8124199 c6a8448523acbf68175e585f8446da0ee29e8ec7e6ad94d48f0ff0b06dd5796e de3277b2fb4931c784574ce8d019e1c8e3f45c90cfb9c0863f812dc8d283730a 042fbbb86758f5aced4340eb31d0496793ab63d65944023f40c2a5660f1f99b0 09d5388d302659e24c33656a2b897586c032cc57f392b5164498136189e6e9f3 542c583e7adf9c83d318d1d20f20c13f390a911fee8e9d811f824a05db1c41bd b04006a33a476b0ff672f705be18391f64d4ee667130f52c7a5ab6b225420b69 655cc3af1ca13a23b83a3011ff557416097ccd00093ebba95d3886aab9b3d2d5 587c838c5b5e1a3a70bdaf8e30f5c3e27eae240d4e05de6068fed8eb3cb3211c c48d25619232a350d6e0238973c77d5de3026940401779f676132452f0f7f3db 4af9ca6da0d6e61b9851db7934a62cd60a4587285242f61307f77fbd49ea02ce 2cc0899904fb0622c95c4f45c297f94b32e1e3ed891736744972bb61c8454aca f56053ca262f41a09b65d43be20ef7fdd37542cc981aa4a34ef38f5d670f0a03 dce3b0beca38e5338b8698907d601e33220c495709b7cddea742c34d835d94bc 829228a57f26e74a6de7165241c4bbb668cd14e8797ef1b66e81dd49f014bcb6 6d61632d7d0bdc66da4c53e0452df145b21b20c58e739dd5c53458449a71e8f5 edbc70a1b5a96ce671b427d374a52f6d7ae05da3cf76c2024d2dbd5829621115 554f67a55ff2cf24e5ba7be4645b6baa8d680858a5599ddf12a9601d2e959b60 861e4eaf83013c0c176cf6137a7040252b1dc3a7c52d44cc9a53257b289d181c b6ccd68b7f9ce84bf5e1af11d30ab428d2aec9eab1588c19fbf39b3393701d24 1d67167205a46cb71609202def9307967c7851647f62dc4a0fe64d335f10ab68 6b90c57942acc333b15229bddeb43e284631148cefb813e46ed023c60d9924fe c107ead0febc1786f4d41284d5445504badb257773214e9f054a684d3459545d ee34795da42857bba8ce8fa7dc7b924602eb8c03b925ab1ce35ab23a5b088e95 21591e3bb1bc482270b12ccbae8c3972d470424a39dcd411355b51003f211d4f b15039a6d5c3a41079a1a3b5048aaff469aef70f051fa99ffd2d5b2fc192ccc2 ff4151ddf848a339de4d0bfea3596b70a63d38b78835f7b1863bf51ec14d309b 7365a99eace8f6ecf797bd0d66c84b92ed85561ebcd7fa0f73c1ff66b22a3877 70f2be72457322dc3da509f2eda689d9a0411dc66f8f069d6fa81e2edebf3e5c 2eb83ca6d4da2fb5998844ddff7b1ad25c90b54fcf2c7a0f81bc75bbfb50ae96 4f0db64b3fcf79549419e1c94416e40478316abd75ff2be467137742d8c27f91 6021967c3587cab5149941d0a2dbb8dafa7fd65f456c7fed5fb1c34b4c1429e3 1a8b34502d0301c628b1bdfc9f54938834effb51715ae1e98f066659e9459921 19e76a5caa906d4ec8d2a677f7ef52b64434ac91a9576797e3ab8b20598d444f a7fe8647cd608d76fbbe57036bf3e5eba7ee20e3e613c2621cadd13ebc441d40 f80879727ab4a9616ce9984700f0a56d84af1786c45e52b704f7e2b2d328db78 6e31fef021915270c4e64a346e953a624d10dff52a6345889048937f660dd8ed 08193c2930150e27a8aebab5865ae9c648b3a2f45d0b001a1e0e1831550470f0 ecf352b2e3e958f40e865ac807c7cd916d0990377ff3a1984b55eeddcc7dde3d 39fb4275a5fddbf819f18ad8e18709fb065cb1422c18e0dbaf3354884d1bd111 e923c4ba4729387a2b47c1649b689271b5758990cc9456f49f4e535b28344e48 9d42534a301f9f8dd589f149589b9cf72dbafdca04a04d12199bc741574fed8b f093b25edf8d0a56f6e9bf24cd1cdfa673b8b363193b5e05fe69e7c26641d1e7 7dee7dc7125ace7811c0419877837830978e35b464c1c69ef96bb3f0f8acd178 6400b00e97faf23acb7b8998e9ebe62f6f1da9911a74e0494b1726ea60446926 8bd5725e32ab7916d4747bde24190487c30cc1baf7e6fd4833f660f56d603642 a3f6ea626ad9974d3aea685d084aa9cd956782bcdc5a6d8cfa156666a5a12f07 2becfac1f88f5043a215454c0301b520596b17feae13665245a2714984b10c5f 231f75dedc7e4d047b60af3e9bf78c87a8cb342688ec0504e5d364a3b32b6d1f 16d73612d4fdaedef0d6f57de2c7976bab9826e26626f894aa90fa55f7484e7c 6fecbb478e3f62ebfd1e298ec038ddeed1af3e36fa88588a49b164e27c313d95 80dc149ab46869b3f7daf6f053c5f5a6a329a26785908b646b15ade9ca2696b6 0b1373afd4107ec8408cbf4f97e820d9e1d8c9542f5fe5f96f1ee36a1e42e813 7114643129f9d0a0a69628b463f9a63fbadb16cdf855ba97863b88cb11593c04 08883a7c9fd6dc6650454ed70d26feaffafdc6f13c0a66fce5187e415dedeeae f147e953641a21d006159129c5d13e6532f646dee78d42124dfc7d9ce72b0800 c6c8757632bcc2bb99458991ddebbed02a2480fdc6b83f8ffa4261f04b622ab1 81677a13af45a9a8394382a8787d28cbf241c7ebf5573d3dfdfa4ad31d996e41 6f1e819b633f22e6b006c9bf5c176d7dda5d96b22e8399890d72b249f9bd2905 7384895fafc33f6aa6f814a2910e4de9d7aa3310c15dceb826de14ae5dbfbe77 80cb8a7e03003a1eb6f34de9dda2db4896e0da6cd87aaeadade7074a0a4f3466 baa19033e80512dade1b782808b63deb3faee236a2a47b2c52c391cc416353d2 1bc1e1261039ba3f6bf6630496e5071d1fe26f4fda17d948054d0f1cd3ecb460 829c370d81f2449c3b72eae2c727c0b302511f873f9969224cb166341ddb05c8 c748668d7155148309e84472a97903651840add7d3999dcff9dc23f326552d11 48b57e37d7765ecfb74c02055dac6fdd4780b49e08c466b26ced0cf0fca46399 3e8bb73f848f7376c6c37fd5e03805d69f5443d4891329b87208c5405cfb856d e4563b190be579a1502bea527d1264a36b9c8b9a2de69816f864c2c6509ba646 27ca76f09639cc53cb9b3246b25ce676af28f3d5a5e1db0f7c0eadfc71c5d660 546d69ec335b9046eb54fe8eb8d83d639bcb9e373e0f93083ddef68e60cf1586 840ee3c7a4c1642578ecc59c655aeb2ca9522c5465d048dde634c8dedadfb5b5 3dbb5cfc2dad68cc1616400cc64796f660de3c1ce129ac2f41df9992e52dcf20 4658d5e683a53f2818a370d4a44f2ae8610e75b0ce384cfae79f8801f57dc9c4 490164682f9ea3f4d48d30450317983b71556833dbdae185ddd89d9226de954c 38cc341328538fed1a5295c4ae521f6172193e217f984b6afe32a5cfa9dabced 9e78d0a110f25b6d358b71ed965c350eaa30f99a969106aa31d49509c9812daf 8afdd1cba2b6572ffc5a4449a0832b81c2bcd08a9f19b0ffad9ee3b62ae066a2 3b1a1cd6ce1b6be5d4010074314f729d11740087e5005abed0916a2ce1284fb4 05749d3066e6a6a5f44b94e32b29d6f85bbab4c3e7f92279a5bb5f4e523c65f4 67b0de073bb0ad0ed13b2999a6820a757ef7fa4a9a4cdac6902b947079a45428 bde91e26ad19fb07bf22acbc6cfe65a707e699bf72ce83d57b7f16b124775f68 f52f58b66d0cdaecb11b419a99bf2e22114b46ae5c0b6b769625724efd0156c9 47c13f495b70c1d038758615f9b16cae316ad48c48bed69a3bd04bcc2a0cb106 d722b024f626371c6768235043ba1522496bbe31155ad065d807f802f2190bf6 27dac6b5fa571b1256aabb432894910047ea84e15b94cd06520ed144bf9e1807 c30b9c4f067627529490cb99c7b0b58bbb0168c3aec74ab2a34f79c7d1eeff4f 10caaff55cce0b5f410ca15d535e067674435ad251cf5df5f2a19ccc702f4a80 6256e5e15afe0ff0dca781fff765552b660a69fb893874b73966888d2858ff4d 05615d8df77eae73cb4e08136ca2b3814481e19538cbd82b39679bf71dce25e5 26fa9c98c6b3eb35daaeafdb90a381856d07f39ba8558d9df31933a87be8a8a5 09538a4e238521d3b7357e5193da876671748fac9a72e78ca72a214721fed418 e39a0208b486632e2bcdbf422e6cf52f12e2e376eccbbe8efac1251fcf3a3aa4 e097a7191632a3d8c9b7fde07380eb51fb470c36ae31ca0275df99030ea8aab3 cd62d81b0618c18c4c50f517b2730fe93bc2d4ebd4dbeda069087ea6296db685 2061b32c192620cb3a628efad731a85f958e5f65e06e1cd5f1cbaeca8a390ab7 8d993b12c481ab6a9ea407cc56d37388375d9d128d0525ad5374823e11365577 aeb60fcf39ca4755866dc283a92948ca52cdd3353681e125daba4dc174391339 b740027ae8f3b702f8e4e671321916d0d7a11cb685288c2fbdc7028f312bb099 2059ffcc3a241e108c47e6e8523ccb4d1d223b872c6e7d581fcf6eed070f64ec dc3a61af9f5678bf0d9a68fa378d98fb7884d25056b826585b7453954f2d4ee6 aa0ed65e06257190ccafe682af866a66abc4ec122d097f7d35f433f3f5d4411a 6728a873613cd5d20a6c7aba4fce3bba910a91c560df103be62e65fce23bb00f 1398c0cc2cc0211c667912bbf81fcc4763fefab4fb99438191267c0793ace38e 2f7a582b1ac00bdbae6532836ce4736fc506c8f241a90175407217c50f045d62 d611f9593b72ddbab5427a9ae5e866e9d30eb1118faa597414fd018eb00c429f 883f5b94a81b2d46076f469021c82a0dc229d3e2836f80e55affac41d8ba10ee dd13c11b51c1b1d3ccf784c93977db28893893778d541dd206bb18e0e8919a05 bc5ca5eb24f06e6c4f7a19f2339238773679d0234eb73a148f4b1e3a8b95b212 f9cf15effded7048698f43468beca393878ea2a0a54bcb247c50eaa39f7f1f05 32541e763f8f899cdeaa71906e21ab58cf9a4fad565c10ee4d83991683fc5193 d2f53e7fb1329529e722f58cbd7132b04646bb5a7c862b93e620f80c81ec69e2 8dec62af765775b1e9e170f8feb356f39df59aa7ad5f165aa6b9d12f8072dec4 6d368e5ddfebe5539a336ca89e47c0d0d23f4ca235c97300382d258c165a3d74 f775f731b9f1a394da68f95a7eecb5bceb96ae1273641e77231012fe03789e53 d3aa547397992845aec016e89ffde784f0943a658fba020bb50979c3d5878041 999ab448c10bc9c1a2a6ea90887ea1645038a1a89d15b502d7d96faf718b87e3 f27404c28ada895bd5cca5fb36bb22a36152993e8d80242f569403226df1f066 0f30fabff916866e0bcf2ec6a83ca563c528981a6e3bdc512234a4ad16ef7378 6a5a482a8cf86f6cb4eefb7de5a2e36837a5f33018c71870fe23dd40ce5b6463 9b02d31a605a39190675740b83be10640f191c8fd9916d465394dcfc7f23d4e1 77973970623de391f466d115725c2496c32e1f2843852e2e8a4f14a3ecabdc95 ce9286d61845cd5d8f7dbb258c7900cd343b00a050c8d414ee97c29037c6b93a 360314781eaa2f156f3ca3318101568a112cb2f6385009413c6af037218a89ba 3344ffe5da788cf8767de70a714c62d8d2f7e37a17fed6d67ff8c3fb5dd6bc85 dceabc36a663c18a002519cb2f0be795f71c00843caf8ea08d845a96d2ce749e e655d6f22fd8fda296ffa01e1de8f2837ad513beeb8256d8e3b50791bab2028a fd51d1b5938db27c15d0d4a7434baf2470a432cc612a516a6f70466c724a01fc 1bd3072b2b6d4fe00e7190f873ecabfea01c0d63161cf4f14bf866b8cecdd92b f31430b7429e52f428270614e0639714c93b126f9f06e08bde737565c8c070f7 a7d4a27a706850871face80acba04394ac4aa78f09a6c8d551edd1cd4de8cb6b 3c1c06050bb50259dae34a59cc50aa8e2245322200369c5194ad45e039c1b0ea 66420b9c5b612582ae678758b59112bfb47909f006600c9594539932ea2f19ea 3c2e3f41be83c920704b4822b7ce37fbbd500fd69be73ee9ee431cf0f04e9839 666199562c70692e99f55b8a4721ea591dab4e408bc20faeaef68379f02d95c3 384097bb52acfe64d4a0aeda19b585ace65b525b0d7240e766e0f39685fb1010 2bac0ef4127cd14f06c09ae8c6da32fae05b7b059ec5ad91bf938821493b80ab 32d2a2f8823ced49f5d77daf6dd78235d304c1c31e1354fca1ea5739391bd730 fef6b8c8c2efcfce9a47c4738e8844a0fba9ca9f816af2d47e8fbb44bef03092 835f92c703fd2376d480aba9dac652f4a67eaa1f54cbe69563d4b047c84c4d91 237b761703c05f3984a87c4034bf36ec2b6cd643da6260b93d5f2cd15e334bd5 83b0c73efe 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSSBX10 %!PS-AdobeFont-1.1: CMSSBX10 1.0 %%CreationDate: 1991 Aug 20 16:43:06 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSSBX10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMSSBX10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 45 /hyphen put dup 46 /period put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 65 /A put dup 66 /B put dup 68 /D put dup 69 /E put dup 70 /F put dup 73 /I put dup 76 /L put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 121 /y put dup 122 /z put readonly def /FontBBox{-71 -250 1099 780}readonly def /UniqueID 5000806 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacee583a5c939393e012707b47e0c1f a47d284a1edc9d01a497d772bca8c543388e6dc0d1e2c4944740470e0914f65e fb0737b0851b2ba713a9a00b36d07da6bcb52920b9b59efe587734027a3c5e65 66aad332fe6fbcced1417802822a3b81d6187875263d6bbda04bbcf6e4870fee ad60f104bb3c5a766610dd11aea64a6b107b0b04439fa2888b8cc39232bb83f7 695aba81f0260cd5248b9e649cd800bcb325468d2c43f9469c605847b026bcd2 1cbf124128e8ee31aa6d4286fa6d465315407a865001dbf5f9a84d3c7974880b 04bb3fdcc784bea5fdd113f8fbd8a454347aa30bf2f5369abf0829dcd5378296 a42091f24af75e9e8310e61e74704d7d88f586944710ad7adb098ad4ef8fb0f6 34873391837c2456f1126b8b6f2a19c5f43e5c47b746fbfbe14db596bd4a5000 adaba65a30556845ae06c6e20efc20647fd0cc730d587ddcea79c40388105b0c 20782fee3f0f2257b942de0853a1ee99805fe77e1796c3d2420f5658fdf30766 0c5525634b2b530a17b104e9a21ecc2f6a30e22520eefdb6a62600acc6b6e690 358036a18b2f414ae204fd429694fd212be6ede4bf941e3257f88a03a75aaba1 59aac9d0ba10cbbb4d4458c8bb0b3894d367d6256d5577e71a7c409a6f955909 e0f05b89175e89e50d833178e230f23553979497371147f764d7d5f8c7060278 d4ff7b299631604cf2b13e03038c1d2f8a726cff45122f37597dbb6eb8dab326 f200eccbb85c7e45d16c0aef3213e6b9c6190f6cbd1d0c9b24892fe97e57f2f3 a35a9ef6f0564ae852620bbd8d333c1fe8f6423157ad465809c536e9bf60700a 6d86aa05bc4257a31cff4282186a1540d0c9f91526c436def5a58caf23890bd1 e4f862076a77ff2339272d758ade8ce76d712d09a66a486038c7526ba4ec8188 dfcb3554fc97d7896893656c3b0dd357ab78098b97b42d507072e35112e7bade 4f03b0a7802093c546be61c5c9a61562f13364ce4b089a976f9f5cb84f83a077 44631b9532e1532309e42c60407656ee331dc020c2c04dfcaeef8de0145ed640 cc6e4f5111c718d64ffd3b1c32278711bd32e1ae3ef02a322ae3e0ec6c8f1b97 9508ffcfbf3a497c53aa7f1e106341f0a5bfe5b07a2cd616d9ca01d68e8c1d94 1f9bae94d35dd500ca75a547ed97f4e60d0d2386018e899f618096b0bc687f64 f9c8270585f733e4f1c6caa2744d400548dc7ff8500b9210cc2f3f6f5cbd9a22 c4201db8a48792f4940f2001170b5607c01a30d11c8287cfb9c9cdfd447cdf84 cc627b699f42becc38fdbda27a349c194da01da4f740dd8e51b58c2cfbd9400e c9f14996b829463ba8af1665cc3ba1ef6971fd66d9dcae9f76ffc0b89319de2f e2fa5f0d1ee91ad19dde597399c959e0cec2d962793416b33f47aafbb0b9ce86 32322127bcd6322d5ef40ccc832a8a631cbe8a2f283e7532c24ecc9e9708382c d9c4db91ba297589247f37a3a2251e4b9fd3dba05befebee6ba6f3071c7532a2 602f5903e4d155b43d9914fb81cdfd33fd917fb6fd3823321a661a83fa8a00b7 31a10feba5bf180e25afa746bdd27f1e527c1a462b9f941430cd5711882f499c b97416bb24d6957c81e1ca963606810bf3989eeee9e9a1e284238ee45f17a84b 813133bde79edf5890f6b73c8d0b0137fb95f0f8028f58cb11653137222aacec 4a8e19cb7419900583765dab9430d82509b6465ac8bf242988eb4fc5f6acd96d c13d48f47ff46367735ffb3b248ef49948c798f3e2a8afdd60fbb691e59d55f3 1ebc8dde74de79875adeafa66ffc51ff4cfa179b2c6da88ef58cfa20607430bb 5473c58ba8b691b23662db8b5f00155ff1458d2d856fbe2c027893fe888ee0e7 1146a9bede123434954016e5e9313432cc09104f108cd37efff8e453d25f46d8 79b600dc7cdb6ba9ee1564a2f1c58c6b4cb417eef1830e12bd87faaa3a3d8d54 b61f67c6378e0ab4f2f57ab7043fa93fe12883927a866d7c32e560f980315392 dee32febb79a58ba09bd129e2d41a437b9cebab7e1c510dfc72bba1cfe56cbe6 428dc7a211ade384e444fb5ea9cc474028aa8251b4ec23d8484a9608125e22f9 921bab16749e90e2cd676b3eb7ff69b5e3cd021a270b8d1ea6af3174f93318e5 a9af4993d6d0322b6b6a8c5b87511346470de1299057a9cb972bc41296c146a4 7df0b4ccf31365b59ba74a7ae2176b5f0c3aa97cb3d1f6b4191d88522cb585a0 c9de2e065556eae5ad7181bc0e7993b3a3974f269184e67b8cf341fba98426e0 6b9f3992768aba33db959f17ed73061c5687f83f20cceab752ecfde5ed7ad6a8 d79c654f82a1a7b09b97fb8fd82abe7e76467f560608ae20f4301d8b7f6d6b4f 3ebb82c8bd0600c8e759ce931fe4b32f3b0d3fa51e00e7aad04f906f1845434e 325d42d1c4b0f15cc9d0db1868537a3f53736f56f5201671dfade075acff8ccf c6309117115bcf7e9f65c706a3ffd3249da46b507e8fad8667ca73204d3d14fa 79976da17917c778cc50cbe8ea37e6b7a4b40e49175315242113577c18db937d f356c5ea43cdc8ab53ead5e832c56f03c8d36ea1d6fd5324163d4b061a95a27f dcdb3fa1339d543066d696e608e41f89b849c1ab484f3a0d8bc156773b95201b afa8932cf58c53ca65a0ccdc7a18f1a0243cfaab724ade1b0846a29c6cfb4db6 df910e6ca5c62653be8739d8fbea01b334eb9c9530ff709cdb0be7a1571e48c2 fe47824caf54e6ba66115731655b7a4b26af3ee4177125fcf5b49e27f02d78b5 d46f9312c4cfed2c4b0a04d72f2b94632cf0b5a52994c0cb93b1dbc52b08b1c6 f2a5bd71256df1ef13dc595eed0a6bd7298fa572436749dcda4f845266138b7c 323f254d097786d3032c533950df1da853757dcfe33cc6d65f2f6c798fde8bec c2793230a4b114dae96e0a5b76552b743add7fe9e4aa25b2030d27568e3fa8b3 a031f7977453932736c9f6f6769e31787c7c87d83fe3223cd96ba248d7bbf0ca 8c78468f66cd45edb64c02a71ad81275d9ffd7f0671edc53afe773fb48a2cdf6 b8a11ad143dc7a0c6d763e7fbd987d80878d4aa1fbc30abc4b52678dd0a14a4c 2278ec98b3201ca57b6cefe6b4ce362b09c03501b47edc6b077470cc2faa93a7 b9c2af194012a8c4fbb8be454ba35f89875f1e02ec9e2b8e32e98d8ae34389b5 685c7ca7a14005dafd06aee19277a00ca7154596294193e30f7f07e9c9f6f992 d97416c7ebaa283a44c76edadb84d63160665b6eaf01b338ae2348eeb2cadc04 b71493300e79708d4ef5bf152e836eef8ecbdf2f210847c0f650380c3a28769a 9be141a183e49d6b7d1c58974ca9f46bbe1d95eeb0de2c7e127ec546545a1e86 9fc7eb5b79c32ac6e772f5e85a03895c896b43313a14e36d75aa6908ba402890 12b505144db36b0289ab5206f44e9fb2edb57723b26d071da72e3629d9c967cd 519363344fdc3a76a28516e6fb7b594e892de7581017aa819c0f6544039a1b7a 77e95727e872683865409d9bf9a975515c02c3169ed9dd7166965616b12e5b66 918ce676bf4b3b4aee885c255cfd5d11d89b44b2823dc18c5f4bf378705eb7f3 2692166aff4cd7036c106b50f0ca22e2722423358608318d074c2202756b88ef dda865a41fe5bda1a90f2c08a27b9062c5c7ab65ad4a69adde95916431a38a71 f64cf73ce4a1575447ecf4ba2d5b7fb77ad06cd4b1c611c3dc0f90b24e9ace36 7dee96d7e7fab0dbb8b4f5b6b065964fb6d7eb61426f4989bc60576f857894cf 0b182518e42a0892f846e99c89f18556a1d1ce7c19792bc85036261678494b39 f7e6ef5913293943cbc010ca2dec7f84e6b2c16970fe79524cb49c0e8c1474cd 52ad913fad89bb5866bcd80d404242ea7057fd1276d991941845d54e8cf5f0a6 28adf79471f59aa64dcbb92d473c0b9ac0fd9957e92ab325bcac017dc48bfd84 2413146d5fbe6c75b46b704cf836b39a9fde66048a7e85d1668d6968f7311726 5a0670a055edaccf35db6a95c5155968b0d0eb12cf6cd4de072b82e56df16b08 d9bc49c0cb61cd3c36f99856e39b9b8e023bde3fe3a687cc1c6af56cf3fe08c2 3a6c4916f12e8693e865e0c6f7601083c97c84cd2652e0fe882d8979000334d1 30b65c961ec5103b11cfe254de1a0c9f9c4d2cb03c763f0a29bb8c958cff109d bb89f8a8f43de678881c8bcc59f6c9a64c87e5cfb4c672098e7da5d4d001acf6 441f8e22a9d09fc71380cee032611f0fd44b0264c80cc197fc2a078bdebf5058 4e3881683d5d511f56a484796948fee81697eb7c505adc313038ae868c8f656f 932e0e271fefde56f12cc88da803e23d020a67abcc018138d1238a9e9072d6a7 733d8cc636f4d47f798bf4cf105d54a54c91efd41b1c3d69b7c97e5508ee0b7a d27d519c13764e26090e5eacd55b6c9547c936ec88a20a25d469fa324ea9167a c8af56431d336886b5985aef25090b5d99b782c7935f9a07886ecfa827a676bd 771ba81769e5842efacd088d17dddf2fbde560f6a6e9b624593ac68fd79fa75b e048467eb99d9764479fd247084b5e3b3ab8358d58f81d05801e2388f7a3163e 6c9fe5288b3143b2830b7fba01e33ec9b1015b38a7a445413901d74398536d3e e1da3a01c80c0e72f31206bdd946d7836d55ad4523223f4c79e98eb211059e98 cb1ac1016661f949a55c938975cdf017da1c7b0739a5a54d490076e8f045f071 955d7802cdcd9af96052bc92ae8845f6b740aeba4abb976d954958e13c6ab256 345b658b84dc8d7bf94446a834fe8f6a7b42f8e398606a730346c044efb7163a f4b61ee77270a977035a7f9b35613e775c1eed0fa0314411bd54c5705851961f 2e799bc1043a2c09fb22aff57c90ae415e265a8b48fc4c3653f6587157a453ae 51fb6bd0fd2aa1778e7f7e4b42a3d19549f8b688a0b914b4c59a75eaaae026a5 76cbeb137701b3899715f0baf016cfde4eee1f680445ba9572f850684401f533 9b42f027eefc7e69de7862930c2bcbcfbdca96a5e3e7ca283f2e6eae188b8364 46baa2700e888067f5f34d5c6831517fe6fcb459b05e14e604c51ac89a9f17b1 34e9ba3cd836483f3be11b40fe3a47b7b1c3a884fdc131442b389e7ecb85b9ba 87052b23b389f2ee5c6ecdb3642070361c088f6ac0355c7028058e4aa9d708a1 a1f9cc7fd4c099d630c5ecd05515964fdb814fc4aed1f9673256418f138c98c9 44585e2541892a1798425abbbe73fbca7f6b414e80172345ca409b39f6cb2687 9cf2e51db5a138dce225335d291cb9b24b8df756ae28b1fee3b54e89506d5767 a7960e66c458f85541fc446d46d99dec2871fe6d954624caf8d3a974660ea3ef 53222c4488f2e43c82515805d13228d3b7d31e8d8c37584210fa60b4dd3a0198 8a8b3e0163e272192e680d64ea68c5ab758a7e35d4f9516ee56d2e2828570c3b dc062f3886439032bf82562ee2ddc6316b1a7893536504f2dd997a5bc7905c6f 32d075deded11077d01a39e1b3125f5f11de6cdf2129afa2b4e4640c033a6f95 d53845fcaa4d213c884848067fcf558e9e9c92e267d204e6b71fa3e6553089e1 fdfec16fe88670e22265766be61c455f092e884c7607562a2f0ad7f61b43cef5 9548683bbfe7d08d7e616be193644d4e4d9aa2f851783fb0b4439e9e1de1d4e9 52d1303be4ec136ee4d932c27cac16e65da5fe08b92dd40cc3d5491885602c1e bd18a9e15213cedc3b3ee60e59cda4658964e88c76dc9282a9e81e0d289ac1f4 9a0dc9519db251e847d133daff2234316546e8495fc9e42d232847d04d150061 90728598a7cac8ea8305bc9535f824f4e204ab5e0c8146d58b0823ca607bb681 3585663b0306956812cf09b8d12200db317d3b3df6fac86666e1efbcfde04407 18229e2a1101708d9df0606e8f7976a374ad7a4fef7837cd7a227b24f0a52a9b 1ad3c7c15b602a380e9eb260f6a6f3002acc947d1c7774986a34aeedfcfe1563 6f94d9f4735c024da5d3daa1564029b397d3d3bb85e1287b2e4899458961b14a a302851b8ee194f62f9ac291cd5dd94674c02c5db5a3b30921b3195d59e8e268 7a41d995b90f45292af1ce429db1c717e74322f2b85f35baa09953f663ad93ca cb87170e166fccf422e03fb1c561c451c5c45b0b8c99bd4c2e30762e13634eaf ce3be8a6e7857dfda5f043cfc9e9f018c984ed240dddc75e5fc76f41dc223650 e3fbfe97f8a4814f62ecb35072994f3e43c6e2a75aa0059f92b4adbf3617ad77 c8dbe27f172b281a0aa38963efcc09d51bafb158ac901df8b8aa084e4ee90b72 847d8d57a5bfb87503ee018f7e05dca78edfc1304eb7884a82277a6bc9c646b0 eafdcac5180abe192f896459eb7309d964f26e446ca48860aad8509018512fc4 f366d22dbfa477db14703e9ec4de6db68e0c4637dbd124a2ae5fe987fef89dc7 b2c9dd4bed68fce1d96723d7576e04111209051bd5eadf71a900919007401f00 ca4bcbd15ab17ced502f274d387e1322cd563101639e70ac7498981c9756c196 f28824c67277c61f96ec0c0e110c125c498f359839129f6d6cb01085c2bb5a0d 871c2b3440acf7e18f383c3d984e9031335cff52cf647841e8af755a03666cd6 2e6acdf12b09dc5c2748709f078a7e30b2fcbdb46ddbc4d06850967403be4cee 001d6a632f2a546326793a66711fa90f0f63280b063bb07aadddfabbb58a28b5 76a91c77522f784404cf0042c8e7e1798b35a663ce253f7ebc96fd770f93d39b df59b2eb5b0cfbaee221fbf37c48ca0bd4898024a36e22cd2b0f3a48ea3c276f 2244b631fd120c6a43a879838dfcd637b8676b34a6a53584a5646abae946cd27 1d4a12a32440171b6690fa8cb35a9ca6f894f7e5e9e7763cdd373bb71ab9b8fc 1c769b8aeb7db6f55335477065583837ea29d93792265fb8f558d7ec5d7d551f 3bf9b82c3bec1780bc2eed43f9acb5c579e8431ca7a7f65ad62e733da331a56d bdfc218d7ba9d82b91ce07ecd72b0e33a27e1a854be0c064d6dbf6549f1eef59 a12f6b63554f6879687542161a5c4a602787c806f2682c097305ee5bcb4ad8cf 274b6c41c2c9035a4009dabffad065f3b02e73fa14b19fbcfb89abf2fe996363 27d6fa91ed737c4dfb9c3dde561fb49089549941061ce5d562f7c813c27bbf61 a4d6a6e0890699de32c7f1ce75f4af91cfa28088560fe38139fa5887bf266aaf 6584f059a17ee00dbf7adaaa5c132a453b6c70e2285bf63fe00f562b0525d955 24abe2a5053b1e04b892af1e971e579c1b9f2ec7cee46ea48caa3dbafc76ad7d fffd52e89f22d58678f0baeff8269618e9e9141d4993d28ce7c9ed038c658814 38b99744001faa96f189661e30bdb64298e89c8026a52d3380bdebe4e9261f9f 53193358197ea49e9ccb25462665b6385dc4120da7fb696154f56f0aaa6ccb39 c827bc27f68f5f472913ff70495783a4b39d1a452e73372a7d7002a038cc1a24 5caf2fdd03780d279c5e19ef5a7b7e34f528e2cf935f00f81df1543b18048aa4 14ba19cc4ea33782e8b9189b423b0d3ae8290457742e16bd56c103bc4ddb9b8c a660773ceb5486d703f75ff71c2d8006b1e92e64c81a578eac332d474c67228b 057579e1e0ac43cb7d94f3ae9d465fa3d8aecb532e82d04e5fcacb50ae1f009c 95d62de5b7bdbcd429bf8348f1d8a7b545a94a71ff46f2489cb70f0fb57905cc fa8f5a45cf7d61c0be83fbbf41715ecccacd5a4a511c12a18b5ef04026962113 00d75b5680b7b3e1194d24306cdd8f212525afbc4abe38a88ec26b0812e4708f 7387a5143952fb1e8249089b56ec7f267933bcf8fc9b37a683736508b75d6676 2c3ebf3cac386f5d19f9739cfeb277250345c925053e001660a9962217864ff3 58202be882ffa45213621cb54fb2c8ad59b3900d4f7b229a8006564ae105cb21 3a5533d2ebee55d367ccea69c900cb63208f7d1b41fc8edb79d484545ccf0214 22021fb5f89afeed2cd42bf1ad124d4210b9fa043382f2584414e24667deb6fa 88f0fb733494b524cf03609df8cde6f15e243d39e994b9afb806474887433eb6 f2fda4795c69c75795337da42db09b3ca90e12f47a7342314af0705965525b64 7af3af45a4098a8afd08b1c1f1f872817c2491fcd74aea7978d79f2dd765d2ed 79247748740070475dc774ca53e732940c6028cf4ae1df66ff4ce3b0c5c65c8b cc9946d643eaa1a6d0703a45dfa0932b0bf9fb83d4b301bd892e0fcc3d7185bc 02d9e5de0ced9fdc6f01d06c9a530cbea38e13cda3ab3aa5f47edbffe97043f9 4d0367086ba3d5cfbe664d1f41f719e0b5a14e74cd016480ccacc28868592b40 7a0dbfff71322568f2a66b8adcc464b6c7eb4867ccad86eb8db60b6c5e0a080a a146049caf2019f57bc3edeebdbc371262ebfe3ab11fed5e4bbaabadb1e9e9bf be9362949845696183225f7b8a51e3de91c35dc7c7d5d0e9d04bc065193117f0 5bb1de7697e358febf84111728b36afe7dc98385b4cc8ffd404eedd10a553f58 f6c250432a07f2c43fc5186cf4e2035ed8457a48b727b4805f5d3d74aa521b5c 94d3a3ad6dfb0360e509c8f9df6c5533741bf3e2e4b7fadecbde9cbb7d38d5e7 d92f971673485bae64c6d11ba0b0520b08d1b3c489dee37aa3fc5353f632c9c3 9fdd59bf0ceaa9a09928b45e8127f0cc841946990fb9d94ad000243e507b0076 01127213d04a7b79c3be8c746be2fdb23c04dd959ce53ef4d8212107395b6f81 230ba2239f755250641a47cf02fbaf6591fa29bce34bb78d7f1eb5629dd77a07 b36ab6b2d5da131a371aec31ca164f6b5884e083dd6e2e71bc5a53ceb64e5c0e 43918c31c8501213f4a02e27a09151186f64357eea75f46a7d447e65ec5f180f 599b6d8ba11461658ba4fd25768d1f167ec3e261a19cffba7b1b2f99f8e89ad4 2cdb7035f1e3b42ad35aa360c8a2fc2f680d2422216d803678f131a135c92be2 a901a029c044d0eee1e8757e72ebea49635e609b972d9b66d2d57028e4b435ec 850a4a83ee7c5db1d6937a5b5b505854b752bf7720e8a6c7a6f35ba67dd8d5f0 d32bd9b26d071e434caf6451b6cf34e94c5a950b3193edc08b0609c8d51ea04c 91ee91ce3377c45b8a2fece1a31d81afa7a30fd33c88233d4aea4030f2865c9b 89ccc1c8522b310177e1793b6ad05501d92c9362aed98630250c11f886bbe68d 5028b20531cf3be0c7274f63083348a3df6e1fecbbf4352e85170ba49bd69e33 8182de8436c433922452afec5aa0817de88b76862f35baa5b407553802fc6f12 6984c1649ffa2339d855f52dee5adcbc352e7221afff67ec749429df09640d37 22eb86ad76fec52ecf2037edcaf574db56d6e1662121c2621da2ecdbb1463118 aaeb39ed0457ad92e56bf8ca936a52d5e253820473f4c0c15723467d10c4a62a 007df95e9e5fe04ab93a735047afc59ab417d9623def84e06b415f9237f6f9a9 cd2c883fcd05f23e528c26de237f79a1a0e166eee53c9fcc7b2de904a9dc5ff0 dd505cecc581bae3ac1abdae8bac99a8dff86e22f41877772d08790356f12ba1 6db073b8f64b720a5a2d2895ada2a02f970ee257325b83943b069e5474508fb8 a411426b38fdfb54e26193cffef0db2f068a7ed5d271e9e6194e1b66057a1e52 32bf06e30a0df7c6d1c4501ac7cb480f8d36b114414fcb24b16ebf5a80cdd6c0 23da5c8fb109cfe679aabe0fd0955ad8aa79bdbc8d47d11a6c0d3cda0afd8392 d92797ad083c04b8327acb5bbe1854c81f5f1276a1c7f23daf5e0a1926234e79 21f5aa7adfadd561a513ee2b09cbb43d432f101ccfd864de74af03787f2654ef 72851146e600a1252d7bfbd3106881c303d621db698730f542cbd2a3efb7f441 bcad2d59d564d99679782e7a71b471d719c1542e88e8fedd05eacec227ef9693 2f3c6a2532b210d81faae48e5adf2eb5617d57818047f53f5cf12f5f9c98009a 15b71863ed2a36bcbdfe70d29357f643c9d6aacf80e86ef4dcfdb03402b1ddaf 60dbdecabb4c568af0b93bd6c1d0e7330eadf83d6f4de13306e635bcc2f7b98f 60b23734a637438d1982fe8b91e7eedd1d0482959d5b83991bc03224433c7bc2 4471dc0fb3cb0e56bc4239347ac430aba5129e6170a87e04f3a82f3ff072e1fb d6ba2d8144d5172782e183fcf1904dd146f77df15a03cb97f16946531c123656 15586aec88c17f36 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR10 %!PS-AdobeFont-1.1: CMR10 1.00B %%CreationDate: 1992 Feb 19 19:54:52 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 67 /C put dup 68 /D put dup 71 /G put dup 77 /M put dup 85 /U put dup 87 /W put dup 97 /a put dup 100 /d put dup 101 /e put dup 103 /g put dup 105 /i put dup 107 /k put dup 108 /l put dup 110 /n put dup 111 /o put dup 114 /r put dup 115 /s put dup 116 /t put dup 118 /v put dup 121 /y put readonly def /FontBBox{-251 -250 1009 969}readonly def /UniqueID 5000793 def currentdict end currentfile eexec 8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8 97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc 8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011 b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415 50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e 784c6bf7389803d9450b0c21756a017306457c7e62c1d269f306bd3402e266de fc3b5e7d8a8d2f5bf0fe6ddd40d07391df4fad4a6018dce29a2b8f692b29f202 3a7c0e66de8ed85c14f1f8492167357f51a7e84cc5d92e0fee4d81cf7fbc8de5 2d2e7bb57142033993f9c08c315abade8dbc4a732e84e142d3bee51557910e12 cd8aa37c459a5e6b7f5269f59078aba3be4641a11ac48d0b625c8325b38ec08e 4c9e5e7fed976a5650d99d82114f449b9ca14c4ec957702295a39a93ef93f618 99b8ea06b092c3c1e503e6e436e0a9fa22576c8930ab3dc8c20f5d82b69cddf8 ff4dacfa9c54bed5a3aa3ea5b129fe96be632843b9b6bc91b615581a985db56b 1e01ca60ee69ca92cf5c0882ece62edad3e106d835348822400f0b66af658f2a e56ed08f8b0010571807009b73ab12a8cf14ca6c71f03c2a48c500f9d62266af 154a6375ff600d9bac3f05ce34142d6867a79581c533176bb2f3117336671e2e 44638a97167e2ea9644e31ea16c2ad2990ea33c54001e0c8156e6de8ab6a4d40 a7137ba275f39589fea2e2db8256adc103d6f9cc038037a47e8fd469c5f98a5e 3c15bd4ace40d340018b1cff7d1ed8abb0ac57b5b5a2c20a51957b96c453edb7 dae5affd91a46d938fe0a13363001d844ded4323f1ee6d30012aea19b024a552 315505535c85dc26bad31e09c50e6512802976d298c4e90d0044c362e6bf3ab3 62a454ee93de25ce54411090c29e9d75c80ce26a84404bd9de3aee0e3f921ac5 87f907572b8354a5c3165eea7e8b2ba4e332f2f36960670119d90725b633a217 0563ef5833e8e342bed71874ada5f163cd855d16f0e7051954fc99cbf5ac6b19 c3f2d60f8125a5be282702fa621095768066fafac56dcbe07723b6da0ea367a4 5ef7f513218833e3aa5b8afc39994b3932ba09476c504ec958089e6ebb941b1f f1b7856738054a03d392512634bdebdace868919fd603aea2a0c7d706e22228a 26b036b1cbc07f792ee1e4794ff62db6a306586873565ef25e7d8657c4a4b02e 675247a8b3b904e705015940764abdc17cfbc28ff5c8468eae7560799205b7a7 502778fab16a91ddd975d872ee3bdfe3420c739c75b5bdcf768a37f873533c80 0fb4ea0f90e53f81b93ff10b483da922a11babcfd2a8e6ad2fd916770c4cd524 ef7fe3f38415d3780d5c40a6fd2d978d59c91c2819a28966417254be7d87c5fb c815e0048c62c8e1744f637a6edeaa348233944734d473462c08c8efccfb2047 379ea0d521e58d10bfa4d469d4c8c94fbbe802e9889ca3d5d6a7c25ad4d32497 320401ec81fb75a181829067a9444478dfa108ea42a1bbfa0d8eb2c074356d4d 7f546b97fe67c6aed7c48efeb4f5861af38038868f40661a914e409a9fee265d bb58afb29785965993339c585a2f9697190cccd2f7d85ad4e34e0cd246df7bed 18b04aca24548aac32f1a307dbed87763dc9ce0929bb06889703aea8eb4315d2 fce14a0e2837567c22a1e3aee7b915a59d00e266ceed5d82b961923ffab70e3d 3a0959712900573361fb2461de8bdae5c12479eca6bfb0c99862839338909a3c ac3e19fbe80383c3d0923575dadb8d0524fcef31ce51221e11318f1a47fb6c04 0dc11529b8df3be7faefe6eb07f3bcae20dfccddb905c858005d328696a5249f d6c8fd5bf062bd0e923980a0eede623e27a7a55ab9c88932da84a005a8126ba3 31f5f657221a6924d3f2f3549c0091cde46ff6419923deba19855621eac63acf 96810b9ef56886c28ac1c959ebb3d84456908b66fab71cf7a1a1d67ae0dfa434 d4dea1c59da7d50d8e7cc4db406484c30760ac297f86f1a44bb12eca4321a947 a6f9273844e976d03e520259b76338670d81aabf18c01ef4ead1a112a6b93dd4 2727a3e1247ab9084263a5e36bed095be7b7d8db1fe60c9dd2908526eccc814d 682c5dc14f9810b438f0d180a5aab1a2a34b1792a237cf138b9f6748e30f91a7 a37b1ae6339b8d9e56300b132a88214813191a02714175c90ba2e43cb993363c b30cb89f2baa61cbd9789b3472bce35ac1bf603aacb7f322d3bbf69da0981025 f853ba73f52ff97bbcd19e8d4e3013d41c039975dcbc934a1039798a8275f3f2 2e7f3bf52293e38dc8c58a9e47da26e251f99d939ed7306f65bb476f7eb8d4de d4543dd88c5b1ed7f03ecdd3884403e9c8f1f68506ce5fa57e178787d34db730 b7af5fb134ba2341630e4c18e416e7cf3645ed7ac42fa786b438af457e781b7e 85cd16f64c1fb01fc957412bf3c7bdd368a5c523b97bb96f85b962682cab7c68 9f2a30df046cb5de02f2ee8a1f56edfd2946f9d8640de33d1d1e75f00b3a8793 e36e5f37c0b4bad93a9bedb5ec489c32d175ca1ec5ba7893f4a73cb5343b5c8b fec47a346db76c5458104194fb6809e53997aa341bbc96d71e5a6dc439c55554 1463d1a65c6777755461635198f12a0eecbdaffd5dee37689f8c34fe000e49fe 4ccb61ccb9cd0006bb0ab37832d70ea5de4746dde42c897238e4de4c2dcf151f 8d557b37ab4670b112f505309217a21bdbb41f0676b0458758d95d539d506959 f58185fd3bbd8958f922cd2900122b06cea6fe28d08daceb8a2acbffa4b46ab0 b1bfdf9be4e56a89915d5918c2f69a0092e04b5c38fda24a3f82320c5a2b898e cbab6b764ff34b9997005b22e236f7fca83c77723e0e137e6dc6b8bf86ee7f8d 6d8352eae15a9034c7fa1131dc46e7270905402203684225d5634941f22e1f24 f4aed176bad8884defd728869a241b89f6945a67eb67dbb8eb846f6a3262ad75 dcdd0d153a7ff1637c14ee85d45e7c4fbb06c2c6195bad14b4ec3f1c3ab80362 d3404769518664f56eed49603578238d312989cf71313de9d51d986182671cd7 5034612f80bba4c0e379845ca43e8b806c541d1af313b50da1edaf576779e84b ecf5e8fe3f29d3c357cac13fbeafcd84f393c9f1f19503edee486329a70671c7 75bb9dd2d10fec8c65abb5ec2db7d31bfd70938b429006b30702199aaf5f8adc 33d43da781f932a9b79791459c98fb740adc84d82f55154879f1a9d9af535772 48c69acafed20a3949963894bd59bf4a0ac3fded5f6dafae79ce398855e896e8 5498150ddf1cb0d1cca74b359fba29844abfe592d401945a7d73bba8eb982e7f f3af64a462ed010f1537dd5f530135b7d513074b31f5e2b082e769bcf98e578c 5d1c664d7151247c8d3941c0330d489d7ec041df17116451208d316dcab7f4df 418a074aadab757489f54bdea0c97a191e2820e530b38d7b2ffb41e43b307a65 e5b92caab06f6233afbf83355bbb41a14b9e8c75874e04667c52ca15fc94445d accdc68b826c19b05cbf3afbdee0e0697ad57999a0a3f4154cef12fc505bb167 e76a9c2195ff9799ff715b844b49765073a0ce03b4cee8f98441f903e2655055 eebd8194fa007b2e45e676612ea4d4c274c4059d44271f6b3cd87e9fcda410ef 65c1e7448108a1025c26295edb87f4a6f77851ebe9e3a4864118c530f5a363c6 306199cac16770472dd96fd55a4c560b03b2e76e3736a26c75e5c995cc63b7e5 373b5066ab97170c8723a2ed1e0faffc636da1bbe5f727b92cc2274cf03d5579 6e7d050c60cf865831381dca672b619dacda5a9a38dc95bbc8dcac8e220d7d71 27a9b0a6d2b4db2d30ff5cade2df52f41db08cf7e45a5f7e2adcba3260393a20 1bce116fbd004cfc4516ae1b873bf630677bfc60089cfd8c4acfd571903b8cf1 4c9b0f99e60df3210fe38177d6aa00e90b08632d5d4ed3a862484b8483b3e7c6 1a869e7f02676cb091158ab9e35c2d7a42c41afcdfbf690d12b8c43c3bc4ec57 c03a40305b3bacb8387f8d9399b4bcbc7c05e5dafd950696ef40916166416a19 3f6f226b011d070e8360b2af9132033f82d409d831b8fdd843d373d7974e6c24 bf4ec3da0ae2861d3e6e439093431e8ce656dd8db63c28d332ae66c9b9544ef7 69f212c54d41c39220039158ecf47e96e9da82ee5f35b30c32a9b37a2e1d315b 26b981d742978e5ff32f479f705600425456ccafea49209dcaf4874c7d0fdcf5 bb16ff210c471c6d53db3faeec75124d4a2dc961032aa597f5ec7543665f3ef3 118f774245b4a781adce20983cd67235043a046dc940ac6a92c72bdd141b05a6 dfc8bc6398de98f639b001408a22e16a91dd950565395bb9d341e793cccf212a 7cf24db6858e399d224945d51d0501df279c69dbd6e8fd0ea20f1c2b8778857d de60bf837c9959c5d5dab7ac9a37578f130524f5ac5ea279becbaed44d41e414 d0d8a65eeda6c25f9e9874a7d37ddc4925cd6745043ab29303662ede668aa4bb 5060c1ecead2996c66c1c2d2eeb05a2d66dfa81883eab3a94903359794571062 4bb67ee3d38192ef31ff79d63c91f9470b3eb71c777dda11048f27d46a9446af 4f5a7b3482a6878c9d6798d1a56006281a474bbf199606d3a1c9a2a4f2731bae a9931271cc9da77d24d9689d14ef2896096bc44e64b00128858b2483f82f64c9 5437ce05dd7129c2fe18540caa47569db51c6f52d8e9db21753d0a3963ad7e06 ebb78aed28f828611a916e31ba4ca1a80c51b648f441926ac7c65033a50b0b20 ac1a70719a16f6eb91fe08234faaee29bc470a19c5b56bb8e239ffba28def79d 0f803c78fe6629d27637e3afff0d0dcfd67f4cec82c1523571b8060dcf55c0a4 d14b32daee9f89f0f8ccdc025f9f3295a7b3977516aa11d222c60246aa4688e3 ded7fc55a1048e25716e739d9d52a68f18bb5023f05961464900292b7f5ed93c 554bd6b3762dd10e2b1b6953fba28c48c34998e6aa0bf5c12d382517b9ec3782 67258402cc7ac190c3213df19d1c31426edef1c62a6efd51f09ffcbecef0e025 3000846ff72e6d4d04f9a349e7683717db7528091956bf579ce5e914014534b5 a2c6911b5ed0d1060af6fa1182efaffdf9a7cf0f459d05d4b0e7e58b1c26eff9 a3082072cf0296bd3669d66116208078c50f32d5d11311e6b63b1f2b39b02134 0dbbed92bdae65a896fa9f6934b32ae22cb3614c9ba8b642025c4a3d45c7a1f1 c6f4d068084c09b224e62be1658c8c06c9d2a8ca53ab1b4ec57f9ba8ecabed6e cdac54d46763a6f73aac33d261ecfb6dfe6551bbf5a57c3dfa254a53ee8f8632 afb61ca38cee8a6bc9712c0bc6be29ad2f08a6c8f54af4de3d0d6460e5abb5b0 acd72c555f67ea07f4da9a69fcfc8ae31a095048c10bb2b272fbf1b19838a6ae b4eb1da7609b02ab78c22da6f513664d2131d98ed3320cd4cae5aef42f2ba5e8 6796a823472e292546f2368528add6d7aea40b8e324e3707f0ee12348c442ae0 3095d0f2a3a853c3d75cfb1eccdd4431dfa89261cffe97851186688042581489 773c9b84cf1a9c8fef03de93540ac4c1e4c349acabac9e44e1e5f6736d51ab3d a61744508c801142d4f7e8d0ba18852873ab5272468997b4357505b6c76ec336 4b42faff0cf4a1fd2568a3eb7e602f714898351f851d1e65b5365f636e067b5a b60843f2c418831e7745113cacccd93f3b7501427e1834c295dcee9efadeb283 458fb94d78cff5a396bc445e81ecfa24c4fa1bfafbc98429f6372579c6dbaa95 482f25d3812fd0a1a8abb08a855e1597dd3e25f69bf1d61f64eb65ab25645488 fca188f74fdda57f5621bb8feb97127b62d8c3f2a53c1085fac2906b66d60443 068bb6323a7b48062c1af0fa69243a30aa8f82797bd8a6895b39fff37524cbf6 dfc115e700b908f785e7594bc3771440881bcbc8e46cc8ea4188a429ff7ee14c 3df7770be77079ce8753cd1cfe1e9e2dc188f0d6ce5b08aa2134c4697080d4e9 8bfaf5a614765bb3a32d401f23fba9f7831a89c123ebd135369b8204d5c9be65 fb44298b4c772b9ef8cd266c419e26113c587d13c4b55a1d4e9947761bef5dd5 e91f7434e7a2fc02056e109e22bb9753b34788176e816aa8c664df71c78e0740 9d8377cb5c980850366d7b55dbd63432b48869cab199ee42b221a18bbd1f7ec4 25b3f3e8386b01063d95ac7b919ea248dd29edc5e8d873caf9f7544a4e873a05 a18847c2a05fd2f2d10a8b1f26c05047bf5c748ecb8a24faaff2e918d8f4aba7 e40ebb3b950f147900911e4a5261708eeeb13b8f62a72cfb17472593202379fb 1ac8e5e84f3582c0c5bd963d5584944d06ab06e2dd9e3b7fae74c6f9de704eb3 2ccdaaeca049180aa360858b01dab20239cf6282ca6775d89fd869c58a0ddfe3 baf833a4523cbd4faeb1cc3b0672e47e51b7f6f4a94cb04f9e8323b8f8258236 090a858b78623eae30d97155e901c1c1d0af077c2abbb4d05288de31176c2da1 80489a68bda09135923ec1450f23e41457a7b9a4425dccf2fb0f9af855ad62d6 a2d404eaac0732c7556594bc04290c4e92089c14c260a075b4d1ed905ba9c886 67eeb1100b2ec9cdad1b6c9ef66b3bae10 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY10 %!PS-AdobeFont-1.1: CMSY10 1.0 %%CreationDate: 1991 Aug 15 07:20:57 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 3 /asteriskmath put readonly def /FontBBox{-29 -960 1116 775}readonly def /UniqueID 5000820 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352 05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23 b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145 d026957276530530a2fbefc6c8f67052788e6703bb5ee49533870bca1f113ad8 3750d597b842d8d96c423ba1273ddd32f3a54a912a443fcd44f7c3a6fe3956b0 aa1e784aaec6fce08dae0c76da9d0a3eba57b98a6233d9e9f0c3f00fcc6b2c6a 9ba23af389e6dfff4efec3de05d6276c6be417703ce508377f25960ef4ed83b4 9b01b873f3a639ce00f356229b6477a081933fef3bb80e2b9dffa7f75567b1fa 4d739b772f8d674e567534c6c5bbf1cf615372be20b18472f7aa58be8c216dbd df81cc0a86b6d8318ca68fe22c8af13b54d7576fe4ca5a7af9005ea5cc4edb79 c0ab668e4fec4b7f5a9eb5f0e4c088cd818ecc4feb4b40ec8bd2981bf2336074 b64c4301c39221774c4482ad2518015bc80e2e96dabb4bdccc93d26e72a97f5e 79d51c174c832a897c1ad9d74919a70b0b25bfe1665da5878e184b28e3c86633 c87189aaceb979787acbf9ea34e408b32fa17c2f121c66d8f059b3754bf80535 3e6554a6572aa2961eafd7c38a6642feba43eab11df631b92142dee526b2bdec d4d2a3725955d0c027abc5ac4bd9eb7833eda69cc148e76495f505263e02971f 8758e3e46e8412ea05c6abb470f14d8b71b7fe7d4f1a894ebf46f24e6da21b20 1c27b9ca87f29f3004f63bbc489d24f54892e762949c971a5a0e503fc40bda6c 04cb8a579633e8a0c0ccad4854da7d3a8132525ba70ed796a7b980fc54ab8c9b c9ecb67987403acc2973e7827c94966c0a624fcf91b5fc81c8cd7ed556b871db 6e47e38ae0c977b938a7c398a954e6731dc6d17328435645d130d5e3c351677a 010c14656c794f423c8c5e93e380effa8748e0f2091017de11ed63a49c7b506d 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR12 %!PS-AdobeFont-1.1: CMR12 1.0 %%CreationDate: 1991 Aug 20 16:38:05 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 65 /A put dup 68 /D put dup 82 /R put dup 83 /S put dup 84 /T put dup 97 /a put dup 99 /c put dup 101 /e put dup 102 /f put dup 105 /i put dup 108 /l put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 121 /y put readonly def /FontBBox{-34 -251 988 750}readonly def /UniqueID 5000794 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf 5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b edad3b72ad63c2918b6e5a2017457e0d4ebc204a520640fd7c4d05e35ea5486f a43d0e970787203855daccb1ed0b16325828b13b7c767a1a58c87902f0546ea5 404440fa6526975783c2d7a9572b8e5d5176bac598b8960609f49016aebf3763 89c1adfe6a1ffc0c53b3acd9d168ec3a278fd4f1d9b085dc2df701346c9d0887 3d230a161692b42a45bb5da343b4edd839dd60685a59aaa49fc65cd8e2ad2a9c 5cab953495172a1a9f40d5f38e922443a519dd96f667201a408bd1d89e35f4ab 98e2f68c3366efc14b5afe1018d9c845d808d4f8e07ea8168518a171ab4d6e21 70eeac099eb7ef46eb9781384da1fac3b3133bb718bc80082eaea88759745188 f266b31d0c7e791d633f16ed94e05517a32163e74cbd96dc5db066f2a5313d6d 7f09465608cb404613e0f058073af000e5bdfafbbf9da0c0d5c02a3447f2cdc1 f56481901e34265c26d331ac3f85bdcbc7c51ef9eddf2b9c189c5253f8e74282 d6f053d7d183ae17ea175e5ebc401e67d21a9fea139cbbf3bb1358c713a75843 b39a69aa2b1a7b975f53ff22d1dc3bdf7acd17afa1da21568310c68241b31d3d 03bf404bd30baf9cc19c75b958bce7155f03cb0cfe2cae0327aad4b603284a51 7c26de75b8c6f6aaa9debe4aec08ca4b646d787bab1e702054272909211e814c 1d2c33152bda973de70ec02436551ff9be604d16ffa29b93380b5a04a493f00a c1d3c429bd6c92508652f7ab7347e9dab047409e478b59e22a73993a96ad13f7 3a58f110ca20a1d65e0577f470498b6faed25a690fcb92f9f19bac5ac431c893 607dfdc528e7d7ccd1a953ffda264220271f146682ae3af7b7d80807576dcb76 0e5c25929b3a4ac45cc6fa965b8ba72eb5f411d089e080b28c17e3345b0fdcf9 0d650ccd293bc07c337be445315ec8952cb1a3384131f6dc35098d896eafdb84 83bd28ca33133e4efe0f2677e53269cab992cfb7ff1c159174cd6d095abbdf15 6b8a07b68f533be653a20da73dbcf3f0b38e5dc1ef632848f4918615997f6737 c08ee3eee4362b58591a9dfb8300de1bc70aea26c0df97f97f6f7a30e0594562 1b701d3e4f18751854f88eb2720508b446420da196ec101c6c5d033ed3b5d0a9 57b63cb17a83a998bba05444ce9e09ebe026d226c113070058a909b890a2315e a8af37de7740b26f52f748d4e7c8335ab010db7f40d9d72c330a21fe2b1e28d3 0923bb4474090c93a2437ee9f7624c08b1a6b910d21051834ca3b1a3af983334 8d6bb24a063bcd26fbbb9a7eeab1f0368a73ceda7fc2815ed98c8ec2be1ffd0d 48c7d0b7aadc748da11e3ad51f14cdcbbfa2538f3cbb9db95460819e2865b772 6dca5278a441f257e3733a1950435199ef3d4b23a1f187161fdffda27f60b366 58c4c4d3a7a050c8673b5658aff3a73f6c548038a9433dd6f88857e83e7d6797 23fb95dfc66583226ce6fa234251679275b77209f6fa180d3ecbec6ed3fc31f3 9767150a978c6657e726458d9160f5f52da6e3931ba9d4270bd99f6944eda9f5 75fe66cb26024ecdd9048caeb79f8a69c4ea452ed3fbe0fe8b75eb94608f1d46 7da418c2a1fc1042c06a5357c3b5d0c59cd7b458189bc3ea232dfdd03c7a823f f366aac8da22fdf820563b364cd671d13b414487c83b2564406a136ad6b24aae 822afda1f066ceca83d25c73c6085448ce4d628e242e609f21e9364c27e6ff20 9cedc01534258a05f33df838a93af1d8bcf9fec8740b9a1b3541b6647f45a93c 2f5f18e5882685bc3ff565b2b922d6ebf056a8ba67a222c76d8d5e5d68c498a8 047ea828e64c7d620e0fbca33e54e71d029e6e906c389a637d3c3ee1821d8244 785636c7d3b13b503201a4e2c676c834e3dadd4e0249eb1ae023444ff42dd38d f645afeed05425681aea0a00cff8bd3c5bb864a7e4802976fad624dece3a1bd7 cfb5f1c10fe8e47cd6740f720045012d3c712a94401e0fabf7e22622cd0af3f1 5620e06d94689f51b9b9292bb6850c0938eb2fde432f6fea6ddb2b3fbffa7b8b 46c84872c1a4b82d75db521de33dd64629e7c254b3c5a3b8d529ecc5ddec1117 cb5db56dae114f05bb35099d6fc5fefa6a442232f5e5488bbbb1ce1e168b76b8 37be6ed8af7e7284edbe091ae7290cb1f613c5d09d8c99124991ee1a9b39e5fe 078fa234e857d540498f365b731b9e605ddb223251d37a1576d8aed5bcefecc2 50722ab9532090df2a25f6f7024c75c150dfbd54eab118d0648f1c39f73eb469 205777887448cfcb030674139c0b52ef97c65a7b60e615edbd9ebd3eb22f5048 7f4becbb8dac2bdb75a75e5073a3ba2efa5ca97f9abab4ba235ca67ab7c806bb 8f398ad399cc275d9501737cf07ea08e88937f67f7fbce88df2ae4fa9183c2bb 846fd83c8e21f507a3e6555979c464dceaf294d20022e0b4a7e666e2b36e751d 18b60dca515ca43400408628f57c98d833068cc819614e016f6bd3d34db50195 4beaa31a921c2aca488d77df9dd68c209d8ae3fc3ac9010b2869d4ae7b9fcd0f c1d5ee02697ef5d9a3e726d40839f0425f37062bc9af43b1a91931c4735b5d66 26de9522bcbe24e30fb4a97df77a7927e27e0aa924b306ce0b8324161526e4d9 166c3df1cd0d931bbaa86cd2a8458ad47caa4662deb43d828c708d8b3f65806f cde599d505a649301a13ecd04a078d2579d18cd3608ea02fe2d65c243cc35785 4e0ef248c082346e0658065c107ccc447ce35388b3a0001a99b604ed4bfa72d3 56ddfb55499884856c6e73d470b738a88aa3d7bcd250ae39c3881419eecac753 d7fa389b331a011c912bb6a162d4e95e91a23ef7d796d29bbcce1bc347c5890c b026abf18b34011cb9421dc14b592bb42074c23ae7b2e467ba172452c16c12a4 ae20c46744579903d2f75de69ffe4388a91d61bbe95c58498ce9a877913b6b00 c039c2a02e296427966dc8a2af20bdcb4c09383af2ac7dc5a11bb11b692562c9 7c9bf7387a9c4419661dcbc13406de63ffe711c90f0f883a98ed98c10e55258c fb8532a8b5373db92c2271127bf57ce7229052db9f0e67330420ead82b625a23 8b6ea57a63d3c291dc9de7b9ed59112bfd8c5f020abbe77803e16b6f6a1271c5 6ae7368e615653d58715fbcab8853e91471b7de03ad138502cb2d0d0002f5ea1 eb1c4f067f1da9b81863d14b277daf43a87f4768741e1a28a111730f07acb6e6 553ce12bdcd5a92b9215f7a234fdf8c80a5ab6434a1494c3584874673d0464f6 93a25d16b9cbc72d1d6ebb8ce49d956d3c59e3202a3b7803c4f92d72079cf2f9 2428c094f902a84a90597013f3056e625b6fdea881dd28a374251abf854dd1f3 afe35b9a8d445f190ec5c0ad8bf672117cf3d9f119d47c24ff53a1cbcff5f8ce e28dd22e17128d7e66ec9c2632a6e0c03d16e9f68faa5e910cacbb11c26d7de5 ca3956d71eee4c747e0ae9d626e11398caf461b2874f487796a551308ccdff37 5e438f183205a3587c9b2f6bf76dc71d95579d05b23f1535938f1efd1703476c e357cc77184d2a6ebbae79a737ed0e068b6ebe0eed3212f64b98d4ebe393cb1f 373e9a86902a7e10bb083a60ffcd037302478e344f0cab6db0ed1d296827fe93 000e0571a8362617c133ce2b18100162fd25bd501076d9514fbe87784a9d1599 15e1418c329548054fa12cc41ad61176bebf9c5d68b8d110623fb6d2a316f55d 036987741a7c585897ab264125ff2eabd161e3041e5b96e21861da2a512cd8cd bcec0a27cf160ed711edca79510b8a0ff21bda59740db783d9394eb3968304cf 9eb3dd07b9213e13d93ae219f77c1f37dcec06364a5c6a76b1ee86de48513b83 51f9f718882ab72cd7727b70256d7da159584a44ea80a92dcb39b534599cc9ff 99bd04be3873c64ec002718b49ef3ca8502cd55321f6bbdca91ac25099436cf0 c0b474bbbf7230fc579adfa8c3cb46dddb9500298487096b638bf20e4f4c02bd 6badf28e6f085c1f5e03c83a65edd9a221cae736d14fb9c1b7b45fb842e6f754 90ed66cc3053189ad5880c07ac74855eaff9972a1bb056ee51998235888b9807 f16af7e13a34848aec1e18c5a6bb3ca343647be152fd4e642b144c86426d009c c58b7ec16bb1e55478d009d832dcec41738832e99cd43c32c8789a1f32e6b78b f13fa96be4239dd93ff052d1d03ed42c3f00aebe4f6e20d2b1b86a1024516be8 f479088f78a7e68d7a79e99b14549a39a9b0ebc71cc08267bdc3455e1acd658a f95256b5396d32dc287215cf2695ea049ad78b34621825d145e93b77e18e6c53 f0a9c6995825e72931ffd01583f27f2e78b6b9fc624f04d1ed888127de8c7829 498934a63c862b6b5afc5250ecdfd737ff3616fc48a01e737f62551dbaae1191 905286ef05ef14fdf38ea934634c64bc1032bcdbc50dbafc35287bcdf0280df4 21ec9c514bf9b6a77462720f732d3420ce3205b7174aafebf4d182fba1bb018f 383891581f4cf0ba5f4f4a4a959e41a206f0ddead009c5c917ae6eccc7518146 7b87ec797d84b8ae4e0ce40b0dd174029901ab5724f95d1283bfec9f0d15bd11 f2fa13f513e777b99e71a00d926239cbc89881c5c45dc37538cb91069d27b73c d6cced85f68a547333a96aafd200174bc41fada11956734ef02b68e710bb47c4 d27563f6d2b706f568d2731c3ef4c61de3463bd83ac1aff8881c88c2c061893c 6714b078b2ab59fe52f211d4bb0ad6dbcd65a3f828b0d08b9d928f7274d74592 57bb9c4ba8b1d80fba88eaff8f7712d8773a15c206900c0d225dd8483fc6fe93 025c2af4166972f6a327bad56e1d9053cd6cec68f7005f2242c11b32dc0f93d4 d08268e18e2eae3d3b1ef0b1b25f65fd2486f1ef578a9212c4999354b26ee931 cfae0542691b29fee7de93c9abf7b4e371b1dfc686c50e63b862dc65b400f054 88185c3055bc05d6b2e5f1f2f3b0d9ec06835b03f9cde1cbda1033eec0b4d8aa ba17bbd28693b6f1f703c33d500c816a3cfac2518808d5684788a5ea440c3a29 26163470a18abc67f1d976bd3e5258905d03b0dc84787805f399a3df575ab862 17d9a72ca462fcd1ef9f1071ed8ef683033f68423a00452dab7fd13e265308b8 59c39794b94c34e440dbd1600afdbb52f8ea34bab2598020b665dc44e9db6cb5 12c27876881381c4263edf874f3202d75263e185117a4faf60ae6c1561f3d16c 2c2008d5979172444cdeb12ee87bb7cdec3972e0ccdfbc7c840df0e2df2881f9 82f5bb36b16d9ae5b55d62baef1b318db78e3d 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont TeXDict begin 40258431 52099146 1000 300 300 (icfp.dvi) @start /Fa 234[21 21[{}1 33.2088 /CMMI8 rf /Fb 133[15 17 16 24 1[19 12 15 15 1[18 18 20 29 9 16 1[11 18 16 11 16 18 16 16 18 9[36 2[26 20 26 1[24 1[26 32 22 1[19 14 2[23 24 27 26 25 26 19[13 45[{}40 33.2088 /CMTI8 rf /Fc 128[18 3[18 16 19 19 25 19 20 14 14 14 19 20 18 20 29 10 19 11 10 20 18 11 16 20 16 20 18 3[10 1[10 1[26 26 36 26 26 25 20 26 27 24 27 26 32 22 27 18 13 26 28 23 24 27 25 25 26 1[17 4[10 18 18 18 18 18 18 18 18 18 18 18 10 12 10 2[14 14 10 5[10 18[29 20 20 12[{}78 33.2088 /CMR8 rf /Fd 130[19 19 19 19 102[31 31 18[{}6 41.511 /CMEX10 rf /Fe 135[19 93[17 26[{}2 29.0577 /CMMI7 rf /Ff 145[18 27[21 5[20 76[{}3 20.7555 /CMMI5 rf /Fg 140[13 13 12[13 1[13 1[13 97[{}5 24.9066 /CMTT8 rf /Fh 139[12 7[9 6[16 3[18 50[11 46[{}5 29.0577 /CMTI7 rf /Fi 134[23 3[25 17 17 18 23 25 22 25 37 12 2[12 25 22 14 20 25 20 25 21 9[46 1[34 31 25 2[30 3[27 4[35 2[34 15[22 22 22 22 22 2[15 3[17 17 27[25 12[{}37 37.3599 /CMBX9 rf /Fj 131[20 2[20 20 20 20 20 20 20 20 1[20 20 20 20 20 20 1[20 20 20 20 20 20 20 20 20 3[20 1[20 3[20 1[20 20 20 20 5[20 4[20 8[20 20 2[20 4[20 20 20 20 20 2[20 20 20 2[20 20 2[20 37[{}47 37.3599 /CMTT9 rf /Fk 149[9 13 13 16 16 10[21 7[19 25[18 1[0 6[9 14[30 29[16 3[{}12 24.9066 /CMSY6 rf /Fl 202[14 14 14 14 14 49[{}5 20.7555 /CMR5 rf /Fm 134[16 17 2[18 12 15 14 1[16 15 19 27 10 16 13 11 18 1[15 15 1[14 14[18 19 23 1[19 3[21 8[22 5[16 1[9 9 29[14 1[16 12[16 1[20 11[{}31 24.9066 /CMMI6 rf %DVIPSBitmapFont: Fn linew10 10 3 /Fn 3 59 df<0000000000780000000007FC000000007FFC00000007FFF80000007FFFC0 00000FFFFC000000FFFFC000000FFFFC000000FFFFC000000FFFF80000007FFF80000000 FFF800000000FF80000000007800000000002E0E828B2A>24 D<800000E00000F80000FF 0000FFC000FFF800FFFF00FFFFE0FFFFFEFFFFFEFFFFE0FFFF00FFF800FFC000FF0000F8 0000E0000080000017126F882A>45 D<80000000FC000000FFF80000FFFFFF807FFFFE00 7FFFF8007FFFF0007FFFC0003FFF00003FFE00003FF800003FF000001FE000001F800000 1F0000001E0000000C000000080000001912708C2A>58 D E %EndDVIPSBitmapFont /Fo 149[11 15 15 19 19 5[23 2[26 1[26 7[23 23[19 1[21 21 0 0 3[26 8[38 7[38 12[30 4[19 19 3[30 8[11 30{}23 37.3599 /CMSY9 rf /Fp 162[9 1[9 37[15 15 15 15 15 7[12 12 38[25 1[{}10 24.9066 /CMR6 rf /Fq 134[19 22 28 19 22 14 18 17 1[19 19 23 1[11 20 1[13 22 18 19 18 20 17 1[20 16 7[32 3[22 23 29 1[25 3[26 6[28 1[27 1[29 3[19 1[11 11 19[14 9[17 22 20 3[23 1[22 14 18 19 1[16 1[20 22 25 11[{}47 37.3599 /CMMI9 rf /Fr 133[16 19 18 25 18 21 13 16 16 18 20 20 22 31 10 18 1[12 20 18 12 18 20 18 18 20 11[29 27 22 9[15 1[30 2[29 9[12 6[20 20 20 2[12 14 3[16 16 12 26[22 24 11[{}42 37.3599 /CMTI9 rf /Fs 133[15 17 17 24 17 18 13 13 13 17 18 17 18 27 9 17 1[9 18 17 10 15 18 15 18 17 3[9 1[9 3[33 2[24 18 24 2[25 25 30 3[12 1[26 21 22 3[25 7[17 1[17 17 1[17 17 17 17 17 1[9 11 9 30[19 19 12[{}52 29.0577 /CMR7 rf /Ft 207[9 44[15 3[{}2 20.7555 /CMSY5 rf /Fu 131[38 1[17 20 20 28 20 21 15 15 15 20 21 19 21 32 11 20 12 11 21 19 12 17 21 17 21 19 3[11 19 11 3[39 29 29 28 21 28 1[26 30 29 35 24 30 20 14 29 30 25 26 29 28 27 29 30 2[30 1[11 11 19 19 19 19 19 19 19 19 19 19 19 11 13 11 30 1[15 15 11 4[19 11 18[32 21 21 22 9[32 24{}82 37.3599 /CMR9 rf /Fv 133[18 19 1[28 19 21 15 16 14 1[21 21 21 32 10 20 1[10 21 21 13 19 21 18 21 20 9[39 27 29 27 23 26 1[26 30 2[22 2[12 2[23 24 30 1[27 27 10[21 21 21 21 21 21 2[11 14 45[{}46 37.3599 /CMSSBX10 rf /Fw 134[24 2[24 1[18 18 18 2[23 25 1[13 24 1[13 1[23 1[20 25 2[23 9[47 1[34 7[42 5[36 2[35 33 67[{}20 45.4545 /CMR10 rf /Fx 252[21 3[{}1 41.511 /CMSY10 rf /Fy 134[31 2[31 33 23 23 23 1[33 29 2[16 2[16 2[18 26 1[26 1[29 12[42 33 43 13[45 2[44 65[{}19 59.7758 /CMR12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin letter %%EndSetup %%Page: 1 1 1 0 bop 408 42 a Fy(Alias)20 b(T)n(yp)r(es)f(for)h(Recursiv)n(e)f(Data) h(Structures)1513 21 y Fx(\003)634 157 y Fw(Da)o(vid)14 b(W)l(alk)o(er)g(and)h(Greg)g(Morrisett)789 248 y(Cornell)f(Univ)o (ersit)o(y)-76 397 y Fv(Abstract)-76 475 y Fu(Linear)j(t)o(yp)q(e)h (systems)f(p)q(ermit)g(programmers)h(to)f(deallo)q(cate)g(or)-76 517 y(explicitly)11 b(recycle)g(memory)m(,)h(but)g(they)f(are)h(sev)o (erly)f(restricted)h(b)o(y)-76 558 y(the)j(fact)g(that)g(they)g(admit)g (no)g(aliasing.)22 b(This)15 b(pap)q(er)g(describ)q(es)-76 600 y(a)i(pseudo-linear)h(t)o(yp)q(e)f(system)g(that)h(allo)o(ws)e(a)h (degree)g(of)g(alias-)-76 641 y(ing)d(and)h(memory)g(reuse)g(as)f(w)o (ell)f(as)i(the)f(abilit)o(y)g(to)g(de\014ne)h(com-)-76 683 y(plex)e(recursiv)o(e)f(data)h(structures.)k(Our)12 b(t)o(yp)q(e)h(system)g(can)f(enco)q(de)-76 724 y(con)o(v)o(en)o (tional)k(linear)f(data)h(structures)g(suc)o(h)g(as)g(linear)f(lists)g (and)-76 766 y(trees)c(as)g(w)o(ell)f(as)i(more)f(sophisticated)h(data) f(structures)h(including)-76 807 y(cyclic)h(and)h(doubly-link)o(ed)g (lists)e(and)i(trees.)k(In)13 b(the)g(latter)g(cases,)-76 849 y(our)k(t)o(yp)q(e)g(system)h(is)e(expressiv)o(e)i(enough)g(to)e (represen)o(t)i(p)q(oin)o(ter)-76 890 y(aliasing)11 b(and)g(y)o(et)g (safely)g(p)q(ermit)g(destructiv)o(e)g(op)q(erations)h(suc)o(h)f(as)-76 932 y(ob)r(ject)17 b(deallo)q(cation.)27 b(W)m(e)16 b(demonstrate)i (the)e(\015exibilit)o(y)g(of)g(our)-76 974 y(t)o(yp)q(e)i(system)f(b)o (y)g(enco)q(ding)i(t)o(w)o(o)d(common)i(compiler)f(optimiza-)-76 1015 y(tions:)26 b(destination-passing)19 b(st)o(yle)e(and)i(Deutsc)o (h-Sc)o(horr-W)m(aite)-76 1057 y(or)13 b(\\link-rev)o(ersal")h(tra)o(v) o(ersal)f(algorithms.)-76 1154 y Fv(1)41 b(Intro)q(duction)-76 1233 y Fu(T)o(yp)q(e-safe)19 b(programming)g(languages,)h(suc)o(h)f(as) g(Hask)o(ell,)g(Ja)o(v)n(a,)-76 1274 y(and)i(ML,)f(do)h(not)f(giv)o(e)h (programmers)g(con)o(trol)f(o)o(v)o(er)h(memory)-76 1316 y(managemen)o(t.)45 b(In)22 b(particular,)i(these)e(languages)h(do)g (not)f(al-)-76 1357 y(lo)o(w)11 b(programmers)i(to)e(separate)h(allo)q (cation)g(and)g(initialization)e(of)-76 1399 y(memory)g(ob)r(jects,)h (nor)f(do)g(they)h(allo)o(w)e(explicit)g(re-use)h(of)g(memory)-76 1440 y(ob)r(jects.)21 b(Rather,)14 b(allo)q(cation)g(and)h (initialization)e(of)h(ob)r(jects)g(are)-76 1482 y(presen)o(ted)j(to)f (the)g(programmer)g(as)g(an)g(atomic)g(op)q(eration,)h(and)-76 1523 y(re-use)h(of)g(memory)g(is)g(ac)o(hiev)o(ed)g(\\under)h(the)g(co) o(v)o(ers")f(through)-76 1565 y(garbage)h(collection.)30 b(In)18 b(other)g(w)o(ords,)g(memory)g(managemen)o(t)-76 1606 y(is)d(ac)o(hiev)o(ed)h(b)o(y)g(meta-linguistic)f(mec)o(hanisms)h (that)g(are)f(largely)-76 1648 y(outside)f(the)f(con)o(trol)g(of)g(the) g(programmer.)-20 1689 y(In)j(t)o(yp)q(e-unsafe)i(languages)f(suc)o(h)g (as)f(C)g(or)g(C++,)g(program-)-76 1731 y(mers)i(ha)o(v)o(e)h(con)o (trol)f(o)o(v)o(er)g(memory)g(managemen)o(t)h(so)f(they)h(can)-76 1772 y(tailor)10 b(routines)h(for)f(application-sp)q(eci\014c)h (constrain)o(ts,)h(where)e(the)-76 1814 y(time)20 b(and/or)i(space)f(o) o(v)o(erheads)h(of)f(general-purp)q(ose)h(memory)-76 1856 y(managemen)o(t)13 b(mec)o(hanisms)f(do)g(not)f(su\016ce.)17 b(Ho)o(w)o(ev)o(er,)11 b(suc)o(h)h(lan-)-76 1897 y(guages)19 b(ha)o(v)o(e)g(a)f(far)f(more)h(complicated)h(and)f(error-prone)h(pro-) -76 1939 y(gramming)13 b(mo)q(del.)k(In)c(particular,)g(neither)g(the)g (static)g(t)o(yp)q(e)g(sys-)-76 1980 y(tems,)g(the)h(compilers,)f(nor)h (the)g(run-time)f(systems)h(of)g(these)f(lan-)-76 2022 y(guages)18 b(prev)o(en)o(t)g(the)f(acciden)o(tal)h(use)f(of)g (uninitialized)g(ob)r(jects,)-76 2063 y(or)12 b(the)f(acciden)o(tal)h (re-use)g(of)f(memory)h(at)g(an)f(incompatible)h(t)o(yp)q(e.)-76 2105 y(Suc)o(h)i(errors)f(are)g(extremely)h(costly)f(to)g(diagnose)g (and)h(correct.)-20 2146 y(Our)d(ultimate)g(goal)g(is)g(to)g(pro)o (vide)h(supp)q(ort)h(for)e(programmer-)-76 2188 y(con)o(trolled)18 b(memory)g(managemen)o(t,)i(without)e(sacri\014cing)g(t)o(yp)q(e-)-76 2229 y(safet)o(y)m(,)g(and)f(without)g(incurring)h(signi\014can)o(t)f (o)o(v)o(erhead.)30 b(In)17 b(ad-)-76 2271 y(dition,)d(w)o(e)f(hop)q(e) h(to)g(disco)o(v)o(er)g(general)g(t)o(yping)g(mec)o(hanisms)h(and)-76 2312 y(principles)f(that)h(allo)o(w)e(greater)i(lattitude)f(in)g(the)g (design)h(of)f(lo)o(w-)-76 2354 y(lev)o(el)g(languages)i(in)o(tended)g (for)f(systems)g(applications)g(or)g(as)g(the)-76 2395 y(target)k(of)f(certifying)h(compilers)f([22,)g(23)q(].)33 b(In)19 b(this)f(pap)q(er,)j(w)o(e)p -76 2427 399 2 v -34 2449 a Ft(\003)-16 2461 y Fs(This)11 b(material)f(is)i(based)e(on)h (w)o(ork)f(supp)q(orted)h(in)h(part)e(b)o(y)i(the)e(AF)o(OSR)-76 2495 y(gran)o(t)j(F49620-97-1-00)o(13)c(and)k(the)g(National)g(Science) g(F)m(oundation)h(under)-76 2528 y(Gran)o(t)g(No.)24 b(EIA)15 b(97-03470.)22 b(An)o(y)15 b(opinions,)h(\014ndings,)h(and)e (conclusions)-76 2561 y(or)g(recommendations)h(expressed)g(in)g(this)h (publication)g(are)e(those)g(of)g(the)-76 2594 y(authors)c(and)h(do)f (not)g(re\015ect)f(the)h(views)h(of)f(these)g(agencies.)1020 397 y Fu(tak)o(e)h(a)f(step)h(further)f(to)o(w)o(ards)h(these)g(goals)f (b)o(y)h(dev)o(eloping)g(a)g(t)o(yp)q(e)1020 438 y(system)f(that)f(giv) o(es)h(\014ne-grained)h(con)o(trol)e(o)o(v)o(er)h(memory)g(manage-)1020 480 y(men)o(t,)k(for)g(a)f(ric)o(h)h(class)g(of)f(recursiv)o(ely)h (de\014ned)h(datat)o(yp)q(es.)24 b(W)m(e)1020 521 y(demonstrate)15 b(the)f(p)q(o)o(w)o(er)g(of)f(the)h(t)o(yp)q(e)h(system)f(b)o(y)g(sho)o (wing)g(ho)o(w)1020 563 y(w)o(e)e(can)g(safely)h(enco)q(de)g(t)o(w)o(o) e(imp)q(ortan)o(t)i(classes)g(of)e(optimization,)1020 604 y(destination-passing)i(st)o(yle)e(and)h(link-rev)o(ersal)g(tra)o (v)o(ersals)f(of)h(data)1020 646 y(structures.)1020 740 y Fv(1.1)41 b(Background)1020 805 y Fu(One)17 b(w)o(ell-kno)o(wn)f (principle)h(for)g(pro)o(ving)g(t)o(yp)q(e)h(safet)o(y)f(is)f(based) 1020 847 y(up)q(on)d Fr(typ)n(e-invarian)o(c)n(e)c(of)k(memory)f(lo)n (c)n(ations)p Fu(.)i(Simply)e(put,)g(this)1020 888 y(prop)q(ert)o(y)g (sa)o(ys)f(that,)h(when)f(allo)q(cated,)g(a)g(memory)g(ob)r(ject)g (should)1020 930 y(\(conceptually\))j(b)q(e)f(stamp)q(ed)h(with)f(its)f (t)o(yp)q(e,)i(and)f(that)g(the)h(t)o(yp)q(e)1020 971 y(of)i(the)g(ob)r(ject)h(should)g(not)g(c)o(hange)g(during)g(ev)n (aluation.)27 b(When)1020 1013 y(this)17 b(prop)q(ert)o(y)g(is)g(main)o (tained,)g(it)g(is)f(straigh)o(tforw)o(ard)h(to)g(pro)o(v)o(e)1020 1054 y(a)h(sub)r(ject-reduction)h(or)f(t)o(yp)q(e-preserv)n(ation)h (prop)q(ert)o(y)g(\(see)f(for)1020 1096 y(example)g([37,)f(11]\),)g (whic)o(h)h(is)e(in)i(turn)f(crucial)g(to)h(establishing)1020 1137 y(t)o(yp)q(e-soundness.)31 b(There)17 b(are)g(man)o(y)h(examples)f (from)g(language)1020 1179 y(design)f(where)g(this)g(principle)g(has)g (b)q(een)g(violated)g(and)h(resulted)1020 1220 y(in)h(an)h (unsoundness.)36 b(F)m(or)18 b(instance,)i(the)f(naiv)o(e)g(treatmen)o (t)f(of)1020 1262 y(p)q(olymorphic)f(references)f(in)g(an)g(ML-lik)o(e) g(language,)h(or)f(the)g(co-)1020 1303 y(v)n(arian)o(t)j(treatmen)o(t)f (of)h(arra)o(ys)g(in)f(a)g(Ja)o(v)n(a-lik)o(e)g(language,)i(b)q(oth) 1020 1345 y(violate)13 b(this)g(basic)g(principle.)1076 1387 y(F)m(rom)e(the)g(t)o(yp)q(e-in)o(v)n(ariance)h(principle,)e(it)h (b)q(ecomes)g(clear)g(wh)o(y)1020 1428 y(most)16 b(t)o(yp)q(e-safe)h (languages)g(do)f(not)g(supp)q(ort)i(user-lev)o(el)d(initial-)1020 1470 y(ization)e(or)g(memory)h(recycling:)j(the)c(t)o(yp)q(e)g Fq(\034)18 b Fu(of)12 b(the)i(memory)f(ob-)1020 1511 y(ject)g(cannot)h(c)o(hange,)g(so)g(\(1\))f(it)g(m)o(ust)g(initially)f (ha)o(v)o(e)i(t)o(yp)q(e)g Fq(\034)j Fu(and)1020 1553 y(\(2\))e(m)o(ust)g(con)o(tin)o(ue)h(to)f(ha)o(v)o(e)h(t)o(yp)q(e)g Fq(\034)j Fu(after)c(an)g(ev)n(aluation)h(step.)1020 1594 y(A)o(tomic)c(allo)q(cation)h(and)h(initialization)e(ensures)i (the)f(\014rst)h(in)o(v)n(ari-)1020 1636 y(an)o(t,)i(and)g(the)g(lac)o (k)f(of)g(explicit)g(re-cycling)h(ensures)g(the)f(second.)1020 1677 y(Th)o(us,)21 b(it)d(app)q(ears)j(that)e(some)g(meta-linguistic)g (mec)o(hanism)h(is)1020 1719 y(necessary)d(to)f(ac)o(hiev)o(e)g(memory) g(managemen)o(t)h(when)f(the)g(t)o(yp)q(e-)1020 1760 y(in)o(v)n(ariance)d(principle)g(is)g(emplo)o(y)o(ed.)1076 1802 y(Linear)g(t)o(yp)q(e)g(systems)g([35,)f(33])g(emplo)o(y)h(a)f (di\013eren)o(t)h(principle)1020 1843 y(to)k(ac)o(hiev)o(e)g(sub)r (ject-reduction.)31 b(In)16 b(a)h(linear)g(setting,)h(the)f(cru-)1020 1885 y(cial)11 b(in)o(v)n(arian)o(t)h(is)g(that)g(memory)g(ob)r(jects)g (m)o(ust)g(ha)o(v)o(e)h(exactly)f(one)1020 1926 y(reference)e(|)g(that) h(is,)f(no)g(ob)r(ject)g(can)g(b)q(e)h(aliased.)16 b(Unlik)o(e)9 b(the)h(tra-)1020 1968 y(ditional)j(approac)o(h,)h(the)g(t)o(yp)q(e)f (of)g(a)h(memory)f(ob)r(ject)h(can)f(c)o(hange)1020 2009 y(o)o(v)o(er)f(time)f(and)i(th)o(us,)f(explicit)g(initialization)e(and) j(re-cycling)f(can)1020 2051 y(b)q(e)18 b(p)q(erformed)h(in)f(the)g (language.)32 b(Unfortunately)m(,)20 b(the)e(inabil-)1020 2092 y(it)o(y)c(to)f(share)i(ob)r(jects)f(through)h(aliasing)f(can)h (ha)o(v)o(e)f(a)g(steep)g(cost:)1020 2134 y(Man)o(y)d(common)g(and)g (e\016cien)o(t)g(data)g(structures)g(that)g(use)f(sharing)1020 2175 y(or)j(in)o(v)o(olv)o(e)g(cycles)g(cannot)h(b)q(e)f(implemen)o (ted.)1076 2217 y(In)i(recen)o(t)f(previous)i(w)o(ork,)e(w)o(e)h (considered)g(a)g(generalization)1020 2258 y(of)c(linear)g(t)o(yp)q(es) h(that)f(supp)q(orted)i(a)f(v)o(ery)f(limited)g(degree)h(of)f(alias-) 1020 2300 y(ing)h([29].)k(Lik)o(e)11 b(linear)h(t)o(yp)q(e)g(systems,)g (our)g(alias)f(t)o(yp)q(es)i(supp)q(orted)1020 2341 y(separation)18 b(of)e(allo)q(cation)h(and)g(initialization,)f(and)h(explicit)f(re-) 1020 2383 y(use)f(of)g(memory)m(,)g(but)h(unlik)o(e)f(linear)g(approac) o(hes,)h(some)g(ob)r(jects)1020 2424 y(could)e(ha)o(v)o(e)g(more)f (than)h(one)g(reference.)19 b(T)m(o)13 b(ac)o(hiev)o(e)g(sub)r(ject)h (re-)1020 2466 y(duction,)k(w)o(e)f(trac)o(k)o(ed)g(aliasing)g(in)g (the)g(t)o(yp)q(e)g(system)h(b)o(y)f(giving)1020 2507 y(memory)f(ob)r(jects)f(unique)h(names,)g(and)g(main)o(tained)g(the)g (in)o(v)n(ari-)1020 2549 y(an)o(t)d(that)g(the)h(names)f(w)o(ere)g (unique.)18 b(W)m(e)13 b(found)h(that)f(alias)g(t)o(yp)q(es)1020 2590 y(uni\014ed)g(a)f(n)o(um)o(b)q(er)h(of)f(ad-ho)q(c)h(features)g (in)f(our)g(T)o(yp)q(ed)h(Assem)o(bly)p eop %%Page: 2 2 2 1 bop -76 -34 a Fu(Language,)13 b(including)f(the)f(treatmen)o(t)h (of)f(initialization)f(and)i(con-)-76 7 y(trol)k(stac)o(ks.)26 b(F)m(urthermore,)17 b(the)f(alias)g(t)o(yp)q(e)g(constructors)i(w)o (ere)-76 49 y(easy)c(to)f(add)g(to)g(our)h(t)o(yp)q(e)f(c)o(hec)o(k)o (er)g(for)g(T)m(ALx86)g([31].)-20 90 y(Unfortunately)m(,)i(the)g(named) h(ob)r(jects)f(in)f(our)h(alias-t)o(yp)q(e)g(sys-)-76 132 y(tem)25 b(w)o(ere)f(restricted)g(to)h(a)g(\\second-class")h (status;)k(though)-76 173 y(named)16 b(ob)r(jects)g(could)g(b)q(e)g (passed)g(to)g(and)g(from)f(functions,)h(the)-76 215 y(t)o(yp)q(e)11 b(system)g(prev)o(en)o(ted)h(a)f(programmer)h(from)e (placing)h(these)g(ob-)-76 256 y(jects)f(in)h(a)f(recursiv)o(e)h(datat) o(yp)q(e)h(suc)o(h)f(as)g(a)f(list)g(or)g(tree.)16 b(The)11 b(prob-)-76 298 y(lem)h(is)h(that)f(our)h(t)o(yp)q(e)g(system)g(did)g (not)g(trac)o(k)g(aliasing)f(b)q(ey)o(ond)i(a)-76 339 y(certain)c(compile-time)e(\\fron)o(tier",)i(and)h(in)e(this)g(resp)q (ect,)i(w)o(as)e(sim-)-76 381 y(ilar)k(to)h(the)g(k-limiting)e(approac) o(hes)k(used)e(in)g(alias)f(analysis)h([12].)-76 422 y(As)h(a)h(result,)f(w)o(e)g(could)h(not)g(em)o(b)q(ed)g(linear)f (datat)o(yp)q(es)i(in)o(to)e(our)-76 464 y(language,)d(and)g(the)f(opp) q(ortunities)i(for)e(user-lev)o(el)g(memory)g(man-)-76 505 y(agemen)o(t)j(w)o(ere)e(greatly)i(reduced.)-20 547 y(In)j(this)g(pap)q(er,)h(w)o(e)e(extend)h(alias)g(t)o(yp)q(es)g(to)g (co)o(v)o(er)g(recursiv)o(e)-76 588 y(datat)o(yp)q(es)i(in)e(full)g (generalit)o(y)m(.)30 b(Our)18 b(t)o(yp)q(e)f(system)h(is)f(p)q(o)o(w)o (erful)-76 630 y(enough)g(to)e(enco)q(de)i(linear)e(v)n(arian)o(ts)h (of)f(lists)g(and)h(trees,)g(as)f(w)o(ell)-76 671 y(as)g(ric)o(her)f (data)h(structures)h(with)e(complex)h(shap)q(es)g(and)g(aliasing)-76 713 y(relationships,)d(suc)o(h)h(as)f(cyclic)f(or)h(doubly-link)o(ed)h (lists)e(and)i(trees.)-76 754 y(The)g(critical)f(addition)h(to)f(the)h (t)o(yp)q(e)g(system)g(is)g(a)f(mec)o(hanism)h(for)-76 796 y(com)o(bining)f(recursiv)o(e)g(t)o(yp)q(e)h(op)q(erators)f(with)f (\014rst-class)h(store)g(ab-)-76 837 y(stractions)17 b(that)g(represen)o(t)g(rep)q(eated)g(patterns)g(of)f(aliasing.)27 b(In)-76 879 y(this)14 b(resp)q(ect,)h(our)g(w)o(ork)f(is)g(inspired)h (b)o(y)f(the)h(more)f(complex)h(ap-)-76 920 y(proac)o(hes)g(to)f(alias) f(and)i(shap)q(e)g(analysis)f(that)g(ha)o(v)o(e)g(recen)o(tly)g(ap-)-76 962 y(p)q(eared)g(in)f(the)g(literature)g([7,)f(9,)h(26].)-20 1003 y(The)e(generalization)g(to)f(recursiv)o(e)h(datat)o(yp)q(es)h(op) q(ens)f(the)g(do)q(or)-76 1045 y(for)18 b(users)h(or)f(certifying)f (compilers)i(to)e(ha)o(v)o(e)i(far)f(more)g(con)o(trol)-76 1086 y(o)o(v)o(er)e(the)f(memory)g(managemen)o(t)i(of)e(complex)g(data) h(structures.)-76 1128 y(T)m(o)d(demonstrate)g(this)g(fact,)f(w)o(e)h (sho)o(w)g(ho)o(w)g(t)o(w)o(o)f(classes)h(of)g(space)-76 1169 y(optimization)h(can)g(b)q(e)g(enco)q(ded)h(in)e(a)h(language)h (based)f(on)g(recur-)-76 1211 y(siv)o(e)h(alias)g(t)o(yp)q(es.)23 b(The)15 b(\014rst)g(optimization,)g(called)f Fr(destination-)-76 1253 y(p)n(assing)c(style)f Fu([34,)h(16)q(,)g(5)q(])g(transforms)i (algorithms)f(that)g(are)g(\\tail-)-76 1294 y(recursiv)o(e)j(mo)q(dulo) f(allo)q(cation")g(in)o(to)g(prop)q(erly)h(tail-recursiv)o(e)f(al-)-76 1336 y(gorithms,)g(thereb)o(y)g(a)o(v)o(oiding)g(the)g(space)g(o)o(v)o (erheads)h(of)e(a)h(con)o(trol)-76 1377 y(stac)o(k.)k(The)10 b(second)i(optimization)f(sho)o(ws)g(ho)o(w)f(w)o(e)h(can)g(safely)f (en-)-76 1419 y(co)q(de)15 b(Deutsc)o(h-Sc)o(horr-W)m(aite)h (algorithms)f([28])f(for)g(tra)o(v)o(ersing)h(a)-76 1460 y(tree)e(using)h(minimal)e(additional)h(space,)g(based)h(on)g(link-rev) o(ersal.)-20 1502 y(In)g(the)g(follo)o(wing)e(section,)i(w)o(e)f(motiv) n(ate)h(the)g(t)o(yp)q(e)g(structure)-76 1543 y(of)e(the)g(language)h (b)o(y)f(in)o(tro)q(ducing)h(a)e(series)h(of)g(t)o(yp)q(e-theoretic)g (ab-)-76 1585 y(straction)17 b(mec)o(hanisms)h(that)f(enable)g (suitable)g(appro)o(ximations)-76 1626 y(of)d(the)g(store.)19 b(W)m(e)14 b(then)g(sho)o(w)g(ho)o(w)g(these)g(constructors)h(ma)o(y)f (b)q(e)-76 1668 y(used)g(to)f(enco)q(de)h(a)f(n)o(um)o(b)q(er)h(of)e (common)i(data)f(structures,)h(with-)-76 1709 y(out)9 b(losing)g(the)g(abilit)o(y)f(to)h(explicitly)g(manage)g(memory)m(.)16 b(Section)9 b(3)-76 1751 y(formalizes)16 b(these)h(ideas)g(b)o(y)f (presen)o(ting)i(the)e(syn)o(tax)h(and)g(static)-76 1792 y(seman)o(tics)12 b(of)f(a)h(programming)h(language)f(that)g(includes)g (instruc-)-76 1834 y(tions)k(for)g(allo)q(cating,)h(deallo)q(cating,)f (and)h(o)o(v)o(erwriting)f(memory)-76 1875 y(ob)r(jects.)23 b(Section)15 b(4)g(sho)o(ws)g(ho)o(w)g(the)g(destination-passing)h(st)o (yle)-76 1917 y(and)d(link-rev)o(ersal)e(optimizations)h(can)g(b)q(e)g (safely)g(enco)q(ded)h(in)e(the)-76 1958 y(language.)28 b(Section)17 b(5)g(presen)o(ts)g(an)g(op)q(erational)g(seman)o(tics)f (for)-76 2000 y(the)11 b(language)g(and)g(states)g(a)f(t)o(yp)q(e)h (soundness)h(theorem.)17 b(W)m(e)10 b(close)-76 2041 y(in)j(Section)g(6)g(b)o(y)h(further)f(discussing)h(related)f(w)o(ork.) -76 2139 y Fv(2)41 b(T)m(yp)q(es)13 b(fo)o(r)g(describing)f(sto)o(re)h (shap)q(es)-76 2218 y Fu(The)d(linear)g(t)o(yp)q(e)h Fq(\034)205 2222 y Fp(1)225 2218 y Fo(\012)s Fq(\034)275 2222 y Fp(2)303 2218 y Fu(captures)g(an)f(extremely)h(v)n(aluable)g (mem-)-76 2259 y(ory)h(managemen)o(t)g(in)o(v)n(arian)o(t:)17 b(There)11 b(is)g(only)h(one)f(access)h(path)g(to)-76 2301 y(an)o(y)g(v)n(alue)f(with)g(this)g(t)o(yp)q(e.)16 b(Consequen)o(tly)m(,)c(if)f Fq(x)f Fu(has)i(t)o(yp)q(e)g Fq(\034)830 2305 y Fp(1)852 2301 y Fo(\012)5 b Fq(\034)904 2305 y Fp(2)-76 2342 y Fu(then)18 b(once)g(b)q(oth)g(its)f(comp)q(onen) o(ts)i(ha)o(v)o(e)f(b)q(een)h(extracted,)g(it)e(is)-76 2384 y(safe)12 b(to)g(reuse)h Fq(x)e Fu(to)h(store)h(new)f(v)n(alues)g (with)g(incompatible)g(t)o(yp)q(es.)-76 2425 y(Since)18 b(the)g(only)g(w)o(a)o(y)f(to)g(access)i Fq(x)p Fu('s)d(data)j(is)e (through)h Fq(x)g Fu(itself,)-76 2467 y(there)12 b(is)f(no)h(c)o(hance) g(that)f(this)h(reuse)g(can)f(in)o(tro)q(duce)i(inconsisten)o(t)-76 2508 y(views)g(of)g(the)g(store)g(and)h(unsoundness)h(in)o(to)e(the)g (system.)-20 2550 y(Unfortunately)m(,)23 b(the)e(restriction)g(to)g(a)g (single)g(access)h(path)-76 2591 y(mak)o(es)10 b(it)f(imp)q(ossible)g (to)h(construct)g(a)f(n)o(um)o(b)q(er)i(of)e(imp)q(ortan)o(t)h(data) 1020 -34 y(structures.)18 b(Our)13 b(goal)g(is)f(to)h(lift)f(this)h (restriction)g(and)g(y)o(et)g(retain)1020 7 y(the)g(capacit)o(y)h(to)f (reuse)h(or)f(deallo)q(cate)g(memory)h(when)f(there)g(is)g(a)1020 49 y(p)q(oin)o(ter)g(to)f(it.)17 b(Our)12 b(approac)o(h)i(is)e(based)i (on)e(the)h(in)o(tuition)f(that)h(a)1020 90 y(linear)h(data)g (structure)h(ma)o(y)f(b)q(e)g(decomp)q(osed)i(in)o(to)d(t)o(w)o(o)h (parts,)g(a)1020 132 y(piece)e(of)g(state)h(and)g(a)f(p)q(oin)o(ter)h (to)f(that)g(state.)17 b(Destructiv)o(e)c(op)q(er-)1020 173 y(ations)f(suc)o(h)g(as)f(memory)h(reuse)f(alter)g(only)h(the)f (state)h(comp)q(onen)o(t)1020 215 y(and)i(lea)o(v)o(e)g(the)f(p)q(oin)o (ter)h(part)g(unc)o(hanged.)20 b(Consequen)o(tly)m(,)14 b(if)f(the)1020 256 y(goal)d(is)g(to)h(ensure)g(no)f(inconsistencies)h (arise,)g(only)f(the)h(state)f(com-)1020 298 y(p)q(onen)o(t)15 b(need)f(b)q(e)g(treated)f(linearly)m(.)19 b(The)13 b(p)q(oin)o(ter)h (ma)o(y)g(b)q(e)f(freely)1020 339 y(copied,)g(making)g(it)f(p)q (ossible)h(to)g(construct)h(complex)f(data)g(struc-)1020 381 y(tures)h(with)e(shared)i(parts.)k(Of)13 b(course,)g(in)g(order)h (to)f(actually)g Fr(use)1020 422 y Fu(a)h(p)q(oin)o(ter,)h(there)f(m)o (ust)h(b)q(e)f(some)h(w)o(a)o(y)f(to)g(relate)g(it)f(to)i(the)f(state) 1020 464 y(it)f(p)q(oin)o(ts)i(to.)k(W)m(e)14 b(mak)o(e)g(this)g (relationship)g(explicit)f(in)h(the)g(t)o(yp)q(e)1020 505 y(system)j(b)o(y)h(in)o(tro)q(ducing)f(lo)q(cations,)h Fq(`)p Fu(,)f(that)h(con)o(tain)f(the)g(state)1020 547 y(comp)q(onen)o(t,)e(and)f(b)o(y)g(sp)q(ecializing)f(the)h(t)o(yp)q(e)g (of)f(a)g(p)q(oin)o(ter)h(to)g(in-)1020 588 y(dicate)i(the)g(lo)q (cation)g(it)g(p)q(oin)o(ts)g(to.)26 b(Consider)16 b(again)g(the)g (linear)1020 630 y(pair)d Fq(\034)1116 634 y Fp(1)1142 630 y Fo(\012)8 b Fq(\034)1197 634 y Fp(2)1214 630 y Fu(.)17 b(W)m(e)c(factor)g(it)g(in)o(to)f(t)o(w)o(o)h(parts:)1063 699 y Fo(\017)21 b Fu(A)c(t)o(yp)q(e)h(for)f(the)g(state,)i(called)e (an)h Fr(aliasing)d(c)n(onstr)n(aint)f Fu(or)1103 740 y Fr(stor)n(e)i(description)p Fu(,)e(that)i(tak)o(es)h(the)g(form)f Fo(f)p Fq(`)h Fo(7!)g(h)p Fq(\034)1903 744 y Fp(1)1920 740 y Fq(;)6 b(\034)1954 744 y Fp(2)1972 740 y Fo(ig)p Fu(.)1103 782 y(This)12 b(t)o(yp)q(e)h(states)g(that)g(at)f(lo)q (cation)h Fq(`)f Fu(there)g(exists)h(a)f(mem-)1103 823 y(ory)h(blo)q(c)o(k)h(con)o(taining)f(ob)r(jects)h(with)e(t)o(yp)q(es)i Fq(\034)1796 827 y Fp(1)1826 823 y Fu(and)f Fq(\034)1917 827 y Fp(2)1935 823 y Fu(.)1063 890 y Fo(\017)21 b Fu(A)9 b(t)o(yp)q(e)h(for)f(a)g(p)q(oin)o(ter)g(to)h(the)f(lo)q(cation:)15 b Fq(ptr)q Fu(\()p Fq(`)p Fu(\).)h(This)9 b(t)o(yp)q(e)h(is)1103 932 y(a)j Fr(singleton)e(typ)n(e)p Fu(|an)o(y)h(p)q(oin)o(ter)h (describ)q(ed)h(b)o(y)f(this)g(t)o(yp)q(e)h(is)1103 973 y(a)c(p)q(oin)o(ter)h(to)g(the)f(one)h(lo)q(cation)f Fq(`)g Fu(and)i(to)e(no)h(other)f(lo)q(cation.)1076 1042 y(This)17 b(simple)g(tric)o(k)g(pro)o(vides)h(a)f(tremendous)h (\015exibilit)o(y)f(ad-)1020 1084 y(v)n(an)o(tage)d(o)o(v)o(er)f(con)o (v)o(en)o(tional)g(linear)g(t)o(yp)q(e)g(systems)h(b)q(ecause)g(ev)o (en)1020 1125 y(though)k(constrain)o(ts)f(ma)o(y)f(not)h(alias)f(one)h (another,)h(there)f(is)f(no)1020 1167 y(explicit)c(restriction)g(on)g (the)h(w)o(a)o(y)f(p)q(oin)o(ter)g(t)o(yp)q(es)h(ma)o(y)g(b)q(e)f (manip-)1020 1208 y(ulated.)1076 1250 y(W)m(e)h(build)g(complicated)f (data)i(structures)f(b)o(y)g(joining)f(a)h(n)o(um-)1020 1291 y(b)q(er)f(of)f(aliasing)h(constrain)o(ts)g(together)g(using)g (the)g Fo(\012)f Fu(constructor.)1020 1333 y(F)m(or)17 b(example,)i(the)f(follo)o(wing)f(D)o(A)o(G)g(ma)o(y)h(b)q(e)g(sp)q (eci\014ed)g(b)o(y)g(the)1020 1374 y(constrain)o(ts)c(b)q(elo)o(w.)p 1370 1468 49 4 v 1370 1509 4 42 v 1414 1509 V 1370 1512 49 4 v 1370 1426 V 1370 1468 4 42 v 1414 1468 V 1370 1471 49 4 v 1494 1468 V 1494 1509 4 42 v 1539 1509 V 1494 1512 49 4 v 1619 1426 V 1619 1468 4 42 v 1633 1459 a(3)p 1663 1468 V 1619 1471 49 4 v 1394 1490 104 4 v 1456 1488 a Fn(-)p 1394 1449 229 4 v 1580 1447 a(-)1518 1489 y(\030)1560 1478 y(\030)1580 1473 y(\030)-42 b(:)1365 1406 y Fq(`)1381 1410 y Fp(1)1398 1406 y Fu(:)80 b Fq(`)1505 1410 y Fp(2)1522 1406 y Fu(:)h Fq(`)1630 1410 y Fp(3)1647 1406 y Fu(:)1296 1598 y Fo(f)p Fq(`)1331 1602 y Fp(1)1359 1598 y Fo(7!)11 b(h)p Fq(ptr)q Fu(\()p Fq(`)1505 1602 y Fp(2)1523 1598 y Fu(\))p Fq(;)6 b(ptr)q Fu(\()p Fq(`)1637 1602 y Fp(3)1655 1598 y Fu(\))p Fo(ig)g(\012)1296 1639 y(f)p Fq(`)1331 1643 y Fp(2)1359 1639 y Fo(7!)11 b(h)p Fq(ptr)q Fu(\()p Fq(`)1505 1643 y Fp(3)1523 1639 y Fu(\))p Fo(ig)6 b(\012)1296 1681 y(f)p Fq(`)1331 1685 y Fp(3)1359 1681 y Fo(7!)11 b(h)p Fq(int)q Fo(ig)1020 1751 y Fu(In)j(this)g(t)o(yp) q(e,)g(the)g(lo)q(cations)g Fq(`)1488 1755 y Fp(1)1505 1751 y Fu(,)g Fq(`)1546 1755 y Fp(2)1577 1751 y Fu(and)g Fq(`)1668 1755 y Fp(3)1699 1751 y Fu(are)g(necessarily)g(dis-)1020 1792 y(tinct)e(from)f(one)i(another)f(b)q(ecause)h(they)g(all)e(app)q (ear)i(on)f(left-hand)1020 1834 y(sides)e(in)f(this)g(collection)g(of)h (constrain)o(ts.)16 b(The)10 b(t)o(yp)q(e)f(system)h(main-)1020 1875 y(tains)i(the)f(in)o(v)n(arian)o(t)h(that)g(if)f(a)g(store)h(is)f (describ)q(ed)i(b)o(y)e(constrain)o(ts)1020 1917 y Fo(f)p Fq(`)1055 1921 y Fp(1)1087 1917 y Fo(7!)j Fq(\034)1156 1921 y Fp(1)1173 1917 y Fo(g)c(\012)g(\001)c(\001)g(\001)k(\012)g(f)p Fq(`)1372 1921 y Fm(n)1407 1917 y Fo(7!)15 b Fq(\034)1477 1921 y Fm(n)1498 1917 y Fo(g)g Fu(then)g(eac)o(h)h(of)f(the)g(lo)q (cations)g Fq(`)2003 1921 y Fm(i)1020 1958 y Fu(m)o(ust)9 b(b)q(e)h(di\013eren)o(t)g(from)f(one)g(another.)17 b(This)9 b(in)o(v)n(arian)o(t)g(resem)o(bles)1020 2000 y(in)o(v)n(arian)o(ts)16 b(for)f(the)h(t)o(yping)g(con)o(text)g(of)f(a)h(standard)g(linear)g(t)o (yp)q(e)1020 2041 y(system.)h(F)m(or)10 b(example,)h(the)g(linear)f (con)o(text)h Fq(x)1711 2045 y Fp(1)1728 2041 y Fu(:)p Fq(\034)1756 2045 y Fp(1)1773 2041 y Fq(;)6 b(:)g(:)h(:)f(;)g(x)1881 2045 y Fm(n)1902 2041 y Fu(:)p Fq(\034)1930 2045 y Fm(n)1961 2041 y Fu(im-)1020 2083 y(plies)19 b(that)f(the)h Fq(x)1296 2087 y Fm(i)1328 2083 y Fu(are)g(distinct)f(v)n(alues)h(with)g(linear)f (t)o(yp)q(es)i Fq(\034)1993 2087 y Fm(i)2006 2083 y Fu(.)1020 2124 y(Ho)o(w)o(ev)o(er,)11 b(the)h(analogy)g(is)f(not)h(exact)f(b)q (ecause)i(a)e(linear)g(t)o(yp)q(e)h(sys-)1020 2166 y(tem)g(prev)o(en)o (ts)i(an)o(y)f(of)f(the)g Fq(x)1451 2170 y Fm(i)1477 2166 y Fu(from)g(b)q(eing)h(used)g(more)g(than)g(once)1020 2207 y(whereas)j(our)g(calculus)g(allo)o(ws)g(p)q(oin)o(ters)g(to)g (the)g(lo)q(cations)g Fq(`)1954 2211 y Fm(i)1982 2207 y Fu(to)1020 2249 y(b)q(e)11 b(used)g(o)o(v)o(er)g(and)g(o)o(v)o(er)g (again)f(and)i(this)e(\015exibilit)o(y)g(mak)o(es)h(it)f(p)q(os-)1020 2290 y(sible)j(to)g(represen)o(t)g(aliasing:)k(In)c(the)g(t)o(yp)q(e)h (ab)q(o)o(v)o(e,)f(there)g(are)h(t)o(w)o(o)1020 2332 y(paths)k(from)g(lo)q(cation)g Fq(`)1392 2336 y Fp(1)1426 2332 y Fu(to)g(lo)q(cation)f Fq(`)1644 2336 y Fp(3)1662 2332 y Fu(,)h(one)g(direct)f(and)i(one)1020 2373 y(indirect)13 b(through)h(lo)q(cation)f Fq(`)1468 2377 y Fp(2)1485 2373 y Fu(.)1076 2415 y(One)18 b(other)g(imp)q(ortan)o(t)g(in)o(v)n (arian)o(t)g(is)g(that)g(although)h(the)e Fo(\012)1020 2456 y Fu(constructor)12 b(is)e(reminiscen)o(t)h(of)g(linear)f(pairs,)h (the)g(ordering)g(of)g(the)1020 2498 y(constrain)o(ts)g(joined)g(b)o(y) g Fo(\012)f Fu(is)g(not)h(imp)q(ortan)o(t:)16 b Fo(f)p Fq(`)1748 2502 y Fp(1)1776 2498 y Fo(7!)11 b Fq(\034)1842 2502 y Fp(1)1859 2498 y Fo(g)s(\012)t(f)p Fq(`)1950 2502 y Fp(2)1978 2498 y Fo(7!)1020 2539 y Fq(\034)1037 2543 y Fp(2)1054 2539 y Fo(g)16 b Fu(is)g(equiv)n(alen)o(t)g(to)g Fo(f)p Fq(`)1401 2543 y Fp(2)1434 2539 y Fo(7!)g Fq(\034)1505 2543 y Fp(2)1522 2539 y Fo(g)11 b(\012)g(f)p Fq(`)1628 2543 y Fp(1)1661 2539 y Fo(7!)16 b Fq(\034)1732 2543 y Fp(1)1749 2539 y Fo(g)p Fu(.)26 b(F)m(or)16 b(the)g(sak)o(e)1020 2581 y(of)d(brevit)o(y)m(,)f(w)o(e)h(often)f(abbreviate)i Fo(f)p Fq(`)1579 2585 y Fp(1)1607 2581 y Fo(7!)d Fq(\034)1673 2585 y Fp(1)1690 2581 y Fo(g)e(\012)f(f)p Fq(`)1791 2585 y Fm(n)1823 2581 y Fo(7!)j Fq(\034)1889 2585 y Fm(n)1910 2581 y Fo(g)i Fu(with)1020 2622 y Fo(f)p Fq(`)1055 2626 y Fp(1)1083 2622 y Fo(7!)e Fq(\034)1149 2626 y Fp(1)1166 2622 y Fq(;)6 b(:)g(:)h(:)f(;)g(`)1268 2626 y Fm(n)1299 2622 y Fo(7!)11 b Fq(\034)1365 2626 y Fm(n)1387 2622 y Fo(g)p Fu(.)961 2747 y(2)p eop %%Page: 3 3 3 2 bop -76 -34 a Fv(2.1)41 b(Abstraction)13 b(mechanisms)-76 31 y Fu(An)o(y)g(particular)g(store)g(can)g(b)q(e)g(represen)o(ted)h (exactly)f(using)g(these)-76 73 y(tec)o(hniques)98 57 y Fp(1)117 73 y Fu(,)k(ev)o(en)h(stores)f(con)o(taining)h(cyclic)f (data)h(structures.)-76 114 y(F)m(or)e(example,)g(a)g(no)q(de)g(con)o (taining)h(a)f(p)q(oin)o(ter)g(to)f(itself)g(ma)o(y)h(b)q(e)-76 156 y(represen)o(ted)k(with)e(the)h(t)o(yp)q(e)g Fo(f)p Fq(`)h Fo(7!)g(h)p Fq(ptr)q Fu(\()p Fq(`)p Fu(\))p Fo(ig)p Fu(.)34 b(Ho)o(w)o(ev)o(er,)19 b(the)-76 197 y(principle)12 b(di\016cult)o(y)h(in)f(describing)g(aliasing)g(relationships)h(is)f (not)-76 239 y(sp)q(ecifying)17 b(one)f(particular)g(store)h(but)f(b)q (eing)h(able)f(to)g(sp)q(ecify)g(a)-76 280 y(class)h(of)g(stores)g (using)h(a)f(single)g(compact)h(represen)o(tation.)30 b(W)m(e)-76 322 y(use)15 b(the)f(follo)o(wing)g(t)o(yp)q(e-theoretic)g (abstraction)h(mec)o(hanisms)g(to)-76 363 y(describ)q(e)f(a)f(wide)f (class)h(of)g(p)q(oin)o(ter-ric)o(h)g(data)h(structures.)-76 457 y Fv(Lo)q(cation)c(P)o(olymo)o(rphism)37 b Fu(In)11 b(general,)g(the)g(particular)g(lo)q(cation)-76 499 y Fq(`)g Fu(that)g(con)o(tains)g(an)h(ob)r(ject)f(is)f(inconsequen)o (tial)i(to)f(the)g(algorithm)-76 540 y(b)q(eing)j(executed.)19 b(The)13 b(relev)n(an)o(t)g(information)h(is)f(the)g(connection)-76 582 y(b)q(et)o(w)o(een)f(the)g(lo)q(cation)g Fq(`)p Fu(,)g(the)g(con)o (ten)o(ts)g(of)g(the)g(memory)g(residing)-76 623 y(there,)19 b(and)g(the)f(p)q(oin)o(ters)g Fq(ptr)q Fu(\()p Fq(`)p Fu(\))g(to)g(that)g(lo)q(cation.)31 b(Routines)-76 665 y(that)15 b(only)h(op)q(erate)f(on)h(sp)q(eci\014c)f(concrete)h(lo)q (cations)f(are)g(almost)-76 706 y(useless.)i(If,)12 b(for)h(example,)g (the)f(dereference)i(function)f(could)g(only)-76 748 y(op)q(erate)e(on)g(a)f(single)g(concrete)h(lo)q(cation)f Fq(`)p Fu(,)g(w)o(e)g(w)o(ould)g(ha)o(v)o(e)h(to)f(im-)-76 789 y(plemen)o(t)f(a)g(di\013eren)o(t)g(dereference)h(function)f(for)g (ev)o(ery)g(lo)q(cation)g(w)o(e)-76 831 y(allo)q(cate)i(in)f(the)h (store!)16 b(By)11 b(in)o(tro)q(ducing)h Fr(lo)n(c)n(ation)d(p)n (olymorphism)p Fu(,)-76 872 y(it)14 b(is)g(p)q(ossible)g(to)g(abstract) h(a)o(w)o(a)o(y)f(from)g(the)h(concrete)f(lo)q(cation)h Fq(`)-76 914 y Fu(using)f(a)f(v)n(ariable)g(lo)q(cation)g Fq(\032)p Fu(,)f(but)i(retain)f(the)g(necessary)h(dep)q(en-)-76 955 y(dencies.)30 b(W)m(e)17 b(use)h(the)f(meta-v)n(ariable)g Fq(\021)i Fu(to)e(refer)g(to)g(lo)q(cations)-76 997 y(generically)c (\(either)g(concrete)h(or)f(v)n(ariable\).)-76 1091 y Fv(Sto)o(re)22 b(P)o(olymo)o(rphism)37 b Fu(An)o(y)21 b(sp)q(eci\014c)h(routine)g(only)f(op)q(erates)-76 1132 y(o)o(v)o(er)d(a)g(p)q(ortion)g(of)g(the)g(store.)32 b(In)18 b(order)g(to)g(use)g(that)g(routine)-76 1174 y(in)d(m)o(ultiple)f(con)o(texts,)h(w)o(e)f(abstract)i(irrelev)n(an)o (t)e(p)q(ortions)i(of)e(the)-76 1215 y(store)j(using)g Fr(stor)n(e)f(p)n(olymorphism)p Fu(.)26 b(A)16 b(store)h(describ)q(ed)h (b)o(y)f(the)-76 1257 y(constrain)o(ts)12 b Fq(\017)t Fo(\012)t(f)p Fq(\021)g Fo(7!)f Fq(\034)t Fo(g)g Fu(con)o(tains)h(some) f(store)g(of)f(unkno)o(wn)i(size)-76 1298 y(and)j(shap)q(e)f Fq(\017)g Fu(as)g(w)o(ell)e(as)i(a)g(lo)q(cation)g Fq(\021)h Fu(con)o(taining)g(ob)r(jects)f(with)-76 1340 y(t)o(yp)q(e)h Fq(\034)t Fu(.)22 b(W)m(e)15 b(use)g(the)f(meta-v)n(ariable)h Fq(C)j Fu(to)c(range)h(o)o(v)o(er)g(aliasing)-76 1381 y(constrain)o(ts)f(in)f(general.)-76 1475 y Fv(Unions)37 b Fu(Unlik)o(e)21 b(p)q(olymorphic)h(t)o(yp)q(es,)i(unions)f(pro)o (vide)f(users)-76 1516 y(with)17 b(the)g(abstraction)i(of)e(one)g(of)g (a)h(\014nite)f(n)o(um)o(b)q(er)h(of)f(c)o(hoices.)-76 1558 y(A)f(memory)h(blo)q(c)o(k)f(that)h(holds)g(either)f(an)h(in)o (teger)f(or)h(a)f(p)q(oin)o(ter)-76 1600 y(ma)o(y)g(b)q(e)f(enco)q(ded) i(using)f(the)f(t)o(yp)q(e)h Fo(h)p Fq(int)p Fo(i)10 b([)g(h)p Fq(ptr)q Fu(\()p Fq(\021)q Fu(\))p Fo(i)p Fu(.)25 b(Ho)o(w)o(ev)o(er,)-76 1641 y(in)14 b(order)h(to)f(use)h(the)f(con)o (ten)o(ts)h(of)f(the)g(blo)q(c)o(k)h(safely)m(,)f(there)g(m)o(ust)-76 1683 y(b)q(e)h(some)g(w)o(a)o(y)f(to)h(detect)g(whic)o(h)f(elemen)o(t)h (of)f(the)h(union)g(the)g(un-)-76 1724 y(derlying)h(v)n(alue)f (actually)g(b)q(elongs)h(to.)23 b(There)16 b(are)f(sev)o(eral)g(w)o(a)o (ys)-76 1766 y(to)c(p)q(erform)g(this)g(test:)16 b(through)c(a)f(p)q (oin)o(ter)g(equalit)o(y)h(test)e(with)h(an)-76 1807 y(ob)r(ject)k(of)f(kno)o(wn)h(t)o(yp)q(e,)g(b)o(y)g(descriminating)g(b) q(et)o(w)o(een)g(small)f(in-)-76 1849 y(tegers)h(\(including)f(n)o (ull/0\))g(and)h(p)q(oin)o(ters,)g(or)f(b)o(y)g(distinguishing)-76 1890 y(b)q(et)o(w)o(een)c(comp)q(onen)o(ts)i(using)e(explicit)g(tags.) 16 b(All)9 b(of)g(these)i(options)-76 1932 y(will)e(b)q(e)h(useful)h (in)e(an)i(implemen)o(tation,)g(but)f(here)h(w)o(e)e(concen)o(trate)-76 1973 y(on)16 b(the)f(third)h(option.)25 b(Hence,)16 b(the)f(alternativ) o(es)h(ab)q(o)o(v)o(e)g(will)e(b)q(e)-76 2015 y(enco)q(ded)d(using)f (the)f(t)o(yp)q(e)h Fo(hS)s Fu(\(1\))p Fq(;)c(int)p Fo(i)q([)q(hS)s Fu(\(2\))p Fq(;)g(ptr)q Fu(\()p Fq(\021)q Fu(\))p Fo(i)k Fu(where)f Fo(S)s Fu(\()p Fq(i)p Fu(\))-76 2056 y(is)h(another)h(form)f (of)g(singleton)g(t)o(yp)q(e)h(|)f(the)h(t)o(yp)q(e)f(con)o(taining)h (only)-76 2098 y(the)i(in)o(teger)g Fq(i)p Fu(.)-76 2191 y Fv(Recursion)38 b Fu(As)15 b(y)o(et,)i(w)o(e)e(ha)o(v)o(e)h (de\014ned)h(no)f(mec)o(hanism)h(for)e(de-)-76 2233 y(scribing)20 b(regular)f(rep)q(eated)h(structure)g(in)f(the)g(store.)36 b(W)m(e)19 b(use)-76 2274 y(standard)f(recursiv)o(e)f(t)o(yp)q(es)g(of) g(the)g(form)f Fq(\026\013:\034)k Fu(to)d(capture)g(this)-76 2316 y(notion.)30 b(Ho)o(w)o(ev)o(er,)17 b(recursion)h(b)o(y)g(itself)e (is)g(not)i(enough.)30 b(Con-)-76 2357 y(sider)18 b(an)h(attempt)f(to)g (represen)o(t)h(a)f(store)g(con)o(taining)h(a)f(link)o(ed)-76 2399 y(list)j(in)g(the)h(ob)o(vious)g(w)o(a)o(y:)34 b Fo(f)p Fq(\021)26 b Fo(7!)f Fq(\026\013:)p Fo(hS)s Fu(\(1\))p Fo(i)14 b([)g(hS)s Fu(\(2\))p Fq(;)6 b(\013)p Fo(ig)p Fu(.)904 2383 y Fp(2)-76 2441 y Fu(An)19 b(unfolding)h(of)f(this)g (de\014nition)h(results)f(in)g(the)h(t)o(yp)q(e)f Fo(f)p Fq(\021)k Fo(7!)p -76 2473 399 2 v -32 2497 a Fl(1)-16 2509 y Fs(W)m(e)11 b(cannot)f(represen)o(t)g(a)g(store)g(con)o(taining) h(a)f(p)q(oin)o(ter)h(in)o(to)f(the)h(middle)-76 2543 y(of)g(a)g(memory)g(blo)q(c)o(k.)-32 2566 y Fl(2)-16 2578 y Fs(Throughout)f(w)o(e)g(use)h(the)g(con)o(v)o(en)o(tion)h(that)e (union)i(binds)g(tigh)o(ter)f(than)-76 2612 y(the)g(recursion)h(op)q (erator.)1020 -34 y Fo(hS)s Fu(\(1\))p Fo(i)c([)g(hS)s Fu(\(2\))p Fq(;)e Fo(hS)s Fu(\(1\))p Fo(i)j([)e(hS)s Fu(\(2\))p Fq(;)f(List)p Fo(iig)p Fu(,)13 b(rather)g(than)h(the)f(t)o (yp)q(e)1020 7 y Fo(f)p Fq(\021)19 b Fo(7!)e(hS)s Fu(\(1\))p Fo(i)11 b([)g(hS)s Fu(\(2\))p Fq(;)6 b(ptr)q Fu(\()p Fq(\021)1478 -9 y Fk(0)1490 7 y Fu(\))p Fo(i)p Fq(;)g(\021)1557 -9 y Fk(0)1585 7 y Fo(7!)18 b(hS)s Fu(\(1\))p Fo(i)11 b([)f(hS)s Fu(\(2\))p Fq(;)c(List)p Fo(ig)p Fu(.)1020 49 y(The)13 b(former)f(t)o(yp)q(e)h(describ)q(es)g(a)g(n)o(um)o(b)q(er) g(of)f(memory)h(blo)q(c)o(ks)g(\015at-)1020 90 y(tened)19 b(in)o(to)g(the)g(same)g(lo)q(cation)g(whereas)g(the)g(latter)f(t)o(yp) q(e)h(de-)1020 132 y(scrib)q(es)13 b(a)g(link)o(ed)g(collection)g(of)g (disjoin)o(t)g(no)q(des.)1020 226 y Fv(Encapsulation)36 b Fu(In)12 b(order)g(to)f(represen)o(t)h(link)o(ed)g(recursiv)o(e)g (struc-)1020 267 y(tures)e(prop)q(erly)m(,)h(eac)o(h)g(unfolding)g(m)o (ust)f(encapsulate)h(its)f(o)o(wn)g(p)q(or-)1020 309 y(tion)g(of)f(the)h(store.)16 b(W)m(e)10 b(use)g(an)g(existen)o(tial)g (t)o(yp)q(e)g(for)f(this)h(purp)q(ose.)1020 350 y(Hence,)j(a)g (sensible)g(represen)o(tation)h(for)f(link)o(ed)g(lists)f(is)1145 436 y Fq(\026\013:)p Fo(hS)s Fu(\(1\))p Fo(i)c([)g(9)p Fu([)p Fq(\032)p Fu(:)p Fj(Loc)h Fo(j)h(f)p Fq(\032)h Fo(7!)g Fq(\013)p Fo(g)p Fu(])p Fq(:)p Fo(hS)s Fu(\(2\))p Fq(;)5 b(ptr)q Fu(\()p Fq(\032)p Fu(\))p Fo(i)1020 515 y Fu(The)16 b(existen)o(tial)f Fo(9)p Fu([)p Fq(\032)p Fu(:)p Fj(Loc)f Fo(j)g(f)p Fq(\032)i Fo(7!)f Fq(\034)1575 519 y Fp(1)1592 515 y Fo(g)p Fu(])p Fq(:\034)1650 519 y Fp(2)1683 515 y Fu(ma)o(y)h(b)q(e)g(read)g(\\there)1020 557 y(exists)e(some)h(lo)q(cation)g Fq(\032)p Fu(,)f(di\013eren)o(t)h (from)f(all)f(others)i(in)f(the)h(pro-)1020 598 y(gram,)j(suc)o(h)g (that)g Fq(\032)e Fu(con)o(tains)i(an)g(ob)r(ject)f(of)g(t)o(yp)q(e)h Fq(\034)1838 602 y Fp(1)1855 598 y Fu(,)g(and)g(the)1020 640 y(v)n(alue)g(con)o(tained)g(in)f(this)g(data)h(structure)g(has)g(t) o(yp)q(e)g Fq(\034)1872 644 y Fp(2)1889 640 y Fu(.)30 b(More)1020 681 y(generally)m(,)19 b(an)g(existen)o(tial)f(has)h(the)f (form)g Fo(9)p Fu([\001)i Fo(j)f Fq(C)s Fu(])p Fq(:\034)t Fu(.)32 b(It)18 b(ab-)1020 723 y(stracts)11 b(a)h(sequence)g(of)f(t)o (yp)q(e)h(v)n(ariables)f(with)g(their)g(kinds,)g(\001,)g(and)1020 764 y(encapsulates)18 b(a)f(store)g(describ)q(ed)h(b)o(y)g(some)f (constrain)o(ts)g Fq(C)s Fu(.)29 b(In)1020 806 y(our)15 b(examples,)g(w)o(e)g(will)e(omit)h(the)h(kinds)g(from)g(the)f (sequence)i(\001)1020 847 y(as)h(they)h(are)f(clear)g(from)g(con)o (text.)29 b(A)17 b(similar)f(de\014nition)i(giv)o(es)1020 889 y(rise)13 b(to)g(trees:)1177 959 y Fq(\026\013:)p Fo(hS)s Fu(\(1\))p Fo(i)7 b([)i(9)p Fu([)p Fq(\032)1435 963 y Fp(1)1452 959 y Fq(;)d(\032)1489 963 y Fp(2)1517 959 y Fo(j)k(f)p Fq(\032)1577 963 y Fp(1)1605 959 y Fo(7!)h Fq(\013;)6 b(\032)1716 963 y Fp(2)1743 959 y Fo(7!)11 b Fq(\013)p Fo(g)p Fu(])p Fq(:)1484 1001 y Fo(hS)s Fu(\(2\))p Fq(;)6 b(ptr)q Fu(\()p Fq(\032)1677 1005 y Fp(1)1694 1001 y Fu(\))p Fq(;)g(ptr)q Fu(\()p Fq(\032)1812 1005 y Fp(2)1830 1001 y Fu(\))p Fo(i)1020 1081 y Fu(Notice)13 b(that)g(the)g(existen)o(tial)g(abstracts)g(a)g(pair)g(of)g(lo)q (cations)g(and)1020 1122 y(that)h(b)q(oth)h(lo)q(cations)f(are)g(b)q (ound)h(in)f(the)g(store.)19 b(F)m(rom)14 b(this)g(de\014-)1020 1164 y(nition,)g(w)o(e)g(can)h(infer)f(that)g(the)g(t)o(w)o(o)g (subtrees)h(are)g(disjoin)o(t.)20 b(F)m(or)1020 1205 y(the)13 b(sak)o(e)g(of)g(con)o(trast,)g(a)f(D)o(A)o(G)h(in)g(whic)o(h) f(ev)o(ery)i(no)q(de)f(has)g(a)g(pair)1020 1247 y(of)i(p)q(oin)o(ters)h (to)f(a)h(single)f(successor)i(is)e(co)q(ded)h(as)f(follo)o(ws.)24 b(Here,)1020 1288 y(reuse)14 b(of)e(the)h(same)h(lo)q(cation)f(v)n (ariable)g Fq(\032)f Fu(indicates)i(aliasing.)1121 1367 y Fq(\026\013:)p Fo(hS)s Fu(\(1\))p Fo(i)8 b([)g(9)p Fu([)p Fq(\032)i Fo(j)g(f)p Fq(\032)h Fo(7!)g Fq(\013)p Fo(g)p Fu(])p Fq(:)p Fo(hS)s Fu(\(2\))p Fq(;)5 b(ptr)q Fu(\()p Fq(\032)p Fu(\))p Fq(;)i(ptr)q Fu(\()p Fq(\032)p Fu(\))p Fo(i)1020 1446 y Fu(Cyclic)16 b(lists)g(and)i(trees)e(with)h (lea)o(v)o(es)f(that)h(p)q(oin)o(t)g(bac)o(k)h(to)e(their)1020 1487 y(ro)q(ots)c(also)g(cause)h(little)d(problem|simply)j(replace)f (the)g(terminal)1020 1529 y(no)q(de)k(with)f(a)g(memory)h(blo)q(c)o(k)f (con)o(taining)h(a)f(p)q(oin)o(ter)h(t)o(yp)q(e)g(bac)o(k)1020 1570 y(to)d(the)g(ro)q(ots.)1132 1641 y Fq(C)s(ir)q(cul)q(ar)q(List)f Fu(=)1170 1683 y Fo(f)p Fq(\032)1209 1687 y Fp(1)1237 1683 y Fo(7!)f Fq(\026\013:)p Fo(hS)s Fu(\(1\))p Fq(;)6 b(ptr)q Fu(\()p Fq(\032)1538 1687 y Fp(1)1555 1683 y Fu(\))p Fo(i[)1362 1724 y(9)p Fu([)p Fq(\032)1414 1728 y Fp(2)1442 1724 y Fo(j)k(f)p Fq(\032)1502 1728 y Fp(2)1530 1724 y Fo(7!)h Fq(\013)p Fo(g)p Fu(])p Fq(:)p Fo(hS)s Fu(\(2\))p Fq(;)6 b(ptr)q Fu(\()p Fq(\032)1838 1728 y Fp(2)1855 1724 y Fu(\))p Fo(ig)1132 1807 y Fq(C)s(ir)q(cul)q(ar)q(T)f (r)q(ee)13 b Fu(=)1170 1849 y Fo(f)p Fq(\032)1209 1853 y Fp(1)1237 1849 y Fo(7!)e Fq(\026\013:)p Fo(hS)s Fu(\(1\))p Fq(;)6 b(ptr)q Fu(\()p Fq(\032)1538 1853 y Fp(1)1555 1849 y Fu(\))p Fo(i[)1362 1890 y(9)p Fu([)p Fq(\032)1414 1894 y Fp(2)1431 1890 y Fq(;)h(\032)1469 1894 y Fp(3)1496 1890 y Fo(j)k(f)p Fq(\032)1557 1894 y Fp(2)1585 1890 y Fo(7!)g Fq(\013;)5 b(\032)1695 1894 y Fp(3)1723 1890 y Fo(7!)11 b Fq(\013)p Fo(g)p Fu(])p Fq(:)1439 1932 y Fo(hS)s Fu(\(2\))p Fq(;)6 b(ptr)q Fu(\()p Fq(\032)1632 1936 y Fp(2)1650 1932 y Fu(\))p Fq(;)g(ptr)q Fu(\()p Fq(\032)1768 1936 y Fp(3)1785 1932 y Fu(\))p Fo(ig)1020 2026 y Fv(P)o(a)o(rameterized)14 b(Recursive)h(T)m(yp)q(es)38 b Fu(One)14 b(common)h(data)g(struc-)1020 2068 y(ture)c(w)o(e)g(are)g (unable)h(to)f(enco)q(de)h(with)e(the)i(t)o(yp)q(es)f(describ)q(ed)h (so)f(far)1020 2109 y(is)k(the)h(doubly-link)o(ed)g(list.)23 b(Recursiv)o(e)16 b(t)o(yp)q(es)g(only)g(\\unfold")g(in)1020 2151 y(one)g(direction,)h(making)f(it)f(easy)i(to)e(represen)o(t)i(p)q (oin)o(ters)f(from)g(a)1020 2192 y(paren)o(t)d(\\do)o(wn")g(to)e(its)h (c)o(hildren,)g(or)g(all)g(the)g(w)o(a)o(y)g(bac)o(k)g(up)h(to)f(the) 1020 2234 y(top-lev)o(el)e(store,)h(but)f(m)o(uc)o(h)h(more)f (di\016cult)g(to)h(represen)o(t)g(p)q(oin)o(ters)1020 2275 y(that)j(p)q(oin)o(t)g(bac)o(k)h(up)f(from)g(c)o(hildren)g(to)g (their)g(paren)o(ts,)h(whic)o(h)f(is)1020 2317 y(the)h(case)h(for)f (doubly-link)o(ed)h(lists)f(or)g(trees)g(with)g(p)q(oin)o(ters)h(bac)o (k)1020 2359 y(to)h(their)f(paren)o(t)i(no)q(des.)29 b(Our)17 b(solution)g(to)g(this)g(problem)g(is)f(to)1020 2400 y(use)e(parameterized)g(recursiv)o(e)f(t)o(yp)q(es)h(to)f(pass)h (a)f(paren)o(t)h(lo)q(cation)1020 2442 y(do)o(wn)h(to)f(its)g(c)o (hildren.)21 b(In)14 b(general,)g(a)h(parameterized)g(recursiv)o(e)1020 2483 y(t)o(yp)q(e)i(has)g(the)g(form)g Fj(rec)5 b Fq(\013)h Fu(\()p Fq(\014)1480 2487 y Fp(1)1497 2483 y Fu(:)p Fq(\024)1530 2487 y Fp(1)1547 2483 y Fq(;)g(:)g(:)g(:)g(;)g(\014)1654 2487 y Fm(n)1675 2483 y Fu(:)p Fq(\024)1708 2487 y Fm(n)1729 2483 y Fu(\))p Fq(:\034)20 b Fu(and)e(has)f(kind)1020 2525 y(\()p Fq(\024)1057 2529 y Fp(1)1074 2525 y Fq(;)6 b(:)h(:)f(:)g(;)g(\024)1182 2529 y Fm(n)1203 2525 y Fu(\))j Fo(!)g Fj(Type)o Fu(.)18 b(W)m(e)c(will)e(con)o(tin)o(ue)i(to)f(use)h (unparameter-)1020 2566 y(ized)f(recursiv)o(e)g(t)o(yp)q(es)g Fq(\026\013:\034)j Fu(in)c(examples)h(and)g(consider)g(them)g(to)1020 2608 y(b)q(e)g(an)g(abbreviation)g(for)g Fj(rec)5 b Fq(\013)h Fu(\(\))p Fq(:\034)t Fu([)p Fq(\013)f Fu(\(\))p Fq(=\013)p Fu(].)16 b(Once)d(again,)g(kinds)961 2747 y(3)p eop %%Page: 4 4 4 3 bop -76 -34 a Fu(will)10 b(b)q(e)j(omitted)e(when)h(they)h(are)e (clear)h(from)g(the)g(con)o(text.)17 b(T)m(rees)-76 7 y(in)e(whic)o(h)f(eac)o(h)i(no)q(de)f(has)h(a)e(p)q(oin)o(ter)i(to)e (its)h(paren)o(t)g(ma)o(y)g(b)q(e)g(en-)-76 49 y(co)q(ded)f(as)f(follo) o(ws.)120 119 y Fo(f)p Fq(\032)159 123 y Fm(r)q(oot)230 119 y Fo(7!)e(hS)s Fu(\(2\))p Fq(;)6 b(ptr)q Fu(\()p Fq(\032)472 123 y Fm(L)495 119 y Fu(\))p Fq(;)g(ptr)q Fu(\()p Fq(\032)613 123 y Fm(R)639 119 y Fu(\))p Fo(ig)g(\012)120 161 y(f)p Fq(\032)159 165 y Fm(L)193 161 y Fo(7!)11 b Fq(RE)r(C)g Fu(\()p Fq(\032)374 165 y Fm(r)q(oot)433 161 y Fq(;)6 b(\032)470 165 y Fm(L)493 161 y Fu(\))p Fo(g)g(\012)120 202 y(f)p Fq(\032)159 206 y Fm(R)195 202 y Fo(7!)11 b Fq(RE)r(C)f Fu(\()p Fq(\032)375 206 y Fm(r)q(oot)435 202 y Fq(;)c(\032)472 206 y Fm(R)497 202 y Fu(\))p Fo(g)-76 282 y Fu(where)-8 353 y Fq(RE)r(C)15 b Fu(=)31 394 y Fj(rec)5 b Fq(\013)h Fu(\()p Fq(\032)162 398 y Fm(pr)q(t)207 394 y Fq(;)g(\032)244 398 y Fm(cur)q(r)308 394 y Fu(\))p Fq(:)69 436 y Fo(hS)s Fu(\(1\))p Fq(;)g(ptr)q Fu(\()p Fq(\032)262 440 y Fm(pr)q(t)307 436 y Fu(\))p Fo(i[)69 477 y(9)p Fu([)p Fq(\032)121 481 y Fm(L)144 477 y Fq(;)g(\032)181 481 y Fm(R)216 477 y Fo(j)11 b(f)p Fq(\032)277 481 y Fm(L)311 477 y Fo(7!)g Fq(\013)6 b Fu(\()p Fq(\032)426 481 y Fm(cur)q(r)490 477 y Fq(;)g(\032)527 481 y Fm(L)550 477 y Fu(\))p Fo(g\012)235 519 y(f)p Fq(\032)274 523 y Fm(R)310 519 y Fo(7!)11 b Fq(\013)6 b Fu(\()p Fq(\032)425 523 y Fm(cur)q(r)490 519 y Fq(;)g(\032)527 523 y Fm(R)552 519 y Fu(\))p Fo(g)p Fu(])p Fq(:)299 560 y Fo(hS)s Fu(\(2\))p Fq(;)g(ptr)q Fu(\()p Fq(\032)492 564 y Fm(L)516 560 y Fu(\))p Fq(;)g(ptr)q Fu(\()p Fq(\032)634 564 y Fm(R)659 560 y Fu(\))p Fq(;)g(ptr)q Fu(\()p Fq(\032)777 564 y Fm(pr)q(t)823 560 y Fu(\))p Fo(i)-76 640 y Fu(The)15 b(tree)f(has)h(a)f(ro)q(ot)h(no)q(de)g(in)f(lo)q(cation)h Fq(\032)578 644 y Fm(r)q(oot)651 640 y Fu(that)g(p)q(oin)o(ts)g(to)f(a) -76 682 y(pair)c(of)g(c)o(hildren)h(in)f(lo)q(cations)g Fq(\032)405 686 y Fm(L)438 682 y Fu(and)h Fq(\032)530 686 y Fm(R)555 682 y Fu(,)f(eac)o(h)h(of)f(whic)o(h)g(are)g(de-)-76 723 y(\014ned)j(b)o(y)f(the)g(recursiv)o(e)g(t)o(yp)q(e)g Fq(RE)r(C)s Fu(.)18 b Fq(RE)r(C)d Fu(has)d(t)o(w)o(o)g(argumen)o(ts,) -76 765 y(one)g(for)f(the)g(lo)q(cation)g(of)g(its)g(immediate)g(paren) o(t)h Fq(\032)677 769 y Fm(pr)q(t)733 765 y Fu(and)g(one)f(for)-76 806 y(the)16 b(lo)q(cation)g(of)g(the)f(curren)o(t)i(no)q(de)f Fq(\032)509 810 y Fm(cur)q(r)574 806 y Fu(.)25 b(Either)16 b(the)g(curren)o(t)-76 848 y(no)q(de)e(is)e(a)h(leaf,)e(in)i(whic)o(h)f (case)h(it)f(p)q(oin)o(ts)h(bac)o(k)h(to)e(its)g(immediate)-76 889 y(paren)o(t,)17 b(or)g(it)e(is)h(an)g(in)o(terior)g(no)q(de,)i(in)e (whic)o(h)g(case)g(it)g(con)o(tains)-76 931 y(p)q(oin)o(ters)11 b(to)g(its)f(t)o(w)o(o)h(c)o(hildren)g Fq(\032)400 935 y Fm(L)433 931 y Fu(and)h Fq(\032)526 935 y Fm(R)561 931 y Fu(as)f(w)o(ell)f(as)g(a)h(p)q(oin)o(ter)g(to)-76 972 y(its)f(paren)o(t.)17 b(The)11 b(c)o(hildren)g(are)f(de\014ned)i (recursiv)o(ely)f(b)o(y)g(pro)o(viding)-76 1014 y(the)k(lo)q(cation)h (of)f(the)g(curren)o(t)h(no)q(de)g(\()p Fq(\032)521 1018 y Fm(cur)q(r)585 1014 y Fu(\))f(for)g(the)g(paren)o(t)h(pa-)-76 1055 y(rameter)e(and)g(the)g(lo)q(cation)g(of)g(the)g(resp)q(ectiv)o(e) g(c)o(hild)f(\()p Fq(\032)776 1059 y Fm(L)813 1055 y Fu(or)h Fq(\032)881 1059 y Fm(R)905 1055 y Fu(\))-76 1097 y(for)f(the)g(curren)o(t)h(p)q(oin)o(ter.)-76 1191 y Fv(F)o(unction)h(T)m(yp)q(es)38 b Fu(F)m(unctions)16 b(are)g(p)q(olymorphic)g(with)f(t)o(yp)q(e)g(ar-)-76 1232 y(gumen)o(ts)g(\001)e(and)i(they)f(express)g(the)g(shap)q(e)h(of)e (the)h(store)g(\()p Fq(C)s Fu(\))g(re-)-76 1274 y(quired)c(b)o(y)f(the) g(function:)16 b Fo(8)p Fu([\001)10 b Fo(j)h Fq(C)s Fu(])p Fq(:)p Fu(\()p Fq(\034)494 1278 y Fp(1)510 1274 y Fq(;)6 b(:)g(:)g(:)g(;)g(\034)612 1278 y Fm(n)634 1274 y Fu(\))q Fo(!)p Fi(0)p Fu(.)16 b(The)9 b(under-)-76 1315 y(lying)k(term)g (language)i(will)c(b)q(e)j(written)f(in)g(con)o(tin)o(uation-passing) -76 1357 y(st)o(yle)i(and)g(therefore)g(functions)g(nev)o(er)g(return,) h(but)f(instead)g(call)-76 1398 y(another)g(function)g(\(the)f (function's)g(con)o(tin)o(uation\).)21 b(W)m(e)15 b(use)f(the)-76 1440 y(notation)h(\\)p Fo(!)7 b Fi(0)p Fu(")15 b(to)f(indicate)h(this)g (fact.)21 b(Con)o(tin)o(uation-passing)-76 1481 y(st)o(yle)10 b(is)f(extremely)h(con)o(v)o(enien)o(t)h(in)f(this)g(setting)g(b)q (ecause)h(it)e(mak)o(es)-76 1523 y(the)18 b(\015o)o(w)g(of)g(con)o (trol)g(explicit)f(in)h(the)g(language)h(and)f(the)g(store)-76 1564 y(shap)q(e)c(v)n(aries)f(from)g(one)g(con)o(trol-\015o)o(w)g(p)q (oin)o(t)h(to)f(the)g(next.)-76 1658 y Fv(2.2)41 b(Summa)o(ry)13 b(of)g(T)m(yp)q(e)g(Structure)-76 1724 y Fu(The)h(formal)g(syn)o(tax)h (for)f(the)g(t)o(yp)q(e)g(constructor)h(language)h(is)d(de-)-76 1765 y(\014ned)19 b(in)g(the)f(table)g(b)q(elo)o(w.)33 b(W)m(e)19 b(distinguish)g(a)f(subset)h(of)f(the)-76 1807 y(t)o(yp)q(es,)h(called)f(small)f(t)o(yp)q(es,)i(for)e(whic)o(h)h (no)g(additional)g(storage)-76 1848 y(need)f(b)q(e)g(allo)q(cated)g (when)f(they)h(are)g(copied.)27 b(The)17 b(small)f(t)o(yp)q(es)-76 1890 y(con)o(tain)d(ob)r(jects)g(suc)o(h)h(as)f(in)o(tegers,)f (functions)628 1874 y Fp(3)659 1890 y Fu(and)h(data)g(p)q(oin)o(t-)-76 1931 y(ers.)j(F)m(unction)10 b(parameters)h(are)e(required)i(to)e(con)o (tain)i(small)e(t)o(yp)q(es)-76 1973 y(b)q(ecause)22 b(function)g(application)g(is)f(mo)q(deled)g(b)o(y)h(substitution,)-76 2014 y(whic)o(h)12 b(copies)f(v)n(alues.)17 b(Lik)o(ewise,)11 b(\014elds)h(of)f(memory)h(blo)q(c)o(ks)g(m)o(ust)-76 2056 y(b)q(e)h(small)g(b)q(ecause)h(\014eld)f(pro)r(jection)h(copies)f (v)n(alues.)-13 2134 y Fr(kinds)165 b Fq(\024)37 b Fu(::=)g Fj(Loc)9 b Fo(j)i Fj(Store)d Fo(j)j Fj(Small)d Fo(j)j Fj(Type)e Fo(j)388 2175 y Fu(\()p Fq(\024)425 2179 y Fp(1)442 2175 y Fq(;)d(:)g(:)g(:)g(;)g(\024)549 2179 y Fm(n)571 2175 y Fu(\))i Fo(!)h Fj(Type)-13 2217 y Fr(c)n(on.)17 b(vars)94 b Fq(\014)39 b Fu(::=)e Fq(\032)10 b Fo(j)g Fq(\017)h Fo(j)f Fq(\013)-13 2258 y Fr(c)n(on.)17 b(ctxts)78 b Fu(\001)37 b(::=)g Fo(\001)10 b(j)g Fu(\001)p Fq(;)c(\014)r Fu(:)p Fq(\024)-13 2300 y Fr(c)n(onstructors)51 b Fq(c)37 b Fu(::=)g Fq(\021)12 b Fo(j)e Fq(C)k Fo(j)c Fq(\034)p -76 2335 399 2 v -32 2359 a Fl(3)-16 2372 y Fs(F)m(or)j(the)g(purp)q (oses)g(of)f(this)i(pap)q(er,)f(w)o(e)f(ignore)h(the)g(space)f (required)i(b)o(y)-76 2405 y(closures.)29 b(The)15 b(language)f(is)j(p) q(o)o(w)o(erful)f(enough)f(to)g(enco)q(de)g(closure)h(con-)-76 2438 y(v)o(ersion)e(in)f(the)g(st)o(yle)h(of)e(Morrisett)h Fh(et)g(al.)f Fs([22].)20 b(If)13 b(desired,)h(closure)f(en)o(vi-)-76 2471 y(ronmen)o(ts)f(can)e(b)q(e)h(represen)o(ted)g(as)g(memory)g(blo)q (c)o(ks)h(and)f(functions)h(can)e(b)q(e)-76 2504 y(required)i(to)f(b)q (e)g(closed.)1104 -47 y Fr(lo)n(c)n(ations)85 b Fq(\021)39 b Fu(::=)d Fq(\032)11 b Fo(j)f Fq(`)1104 -5 y Fr(c)n(onstr)n(aints)38 b Fq(C)j Fu(::=)36 b Fo(;)11 b(j)f Fq(C)i Fo(\012)c(f)p Fq(\021)13 b Fo(7!)e Fq(\034)t Fo(g)g(j)f Fq(C)i Fo(\012)c Fq(\017)1104 78 y Fr(typ)n(es)147 b Fq(\034)42 b Fu(::=)36 b Fq(\013)10 b Fo(j)h Fq(\033)h Fo(j)e(h)p Fq(\033)1631 82 y Fp(1)1648 78 y Fq(;)c(:)g(:)g(:)h(;)f(\033)1756 82 y Fm(n)1777 78 y Fo(i)k(j)1482 119 y Fq(\034)1499 123 y Fp(1)1525 119 y Fo([)e Fq(\034)1576 123 y Fp(2)1604 119 y Fo(j)i(9)p Fu([\001)h Fo(j)f Fq(C)s Fu(])p Fq(:\034)k Fo(j)1482 161 y Fj(rec)5 b Fq(\013)h Fu(\(\001\))p Fq(:\034)15 b Fo(j)10 b Fq(c)c Fu(\()p Fq(c)1759 165 y Fp(1)1776 161 y Fq(;)g(:)g(:)g(:)g(;)g(c)1878 165 y Fm(n)1899 161 y Fu(\))1104 202 y Fr(smal)r(l)12 b(typ)n(es)44 b Fq(\033)39 b Fu(::=)d Fq(\013)10 b Fo(j)h Fq(int)g Fo(j)f(S)s Fu(\()p Fq(i)p Fu(\))h Fo(j)f Fq(ptr)q Fu(\()p Fq(\021)q Fu(\))i Fo(j)1482 244 y(8)p Fu([\001)f Fo(j)f Fq(C)s Fu(])p Fq(:)p Fu(\()p Fq(\033)1667 248 y Fp(1)1684 244 y Fq(;)c(:)g(:)g(:)g(;)g(\033) 1791 248 y Fm(n)1812 244 y Fu(\))j Fo(!)g Fi(0)1076 306 y Fu(A)k(judgemen)o(t)h(\001)e Fo(`)g Fq(c)f Fu(:)g Fq(\024)i Fu(states)h(that)g(a)f(t)o(yp)q(e)h(is)f(w)o(ell-formed)1020 347 y(and)19 b(has)h(kind)f Fq(\024)f Fu(according)i(to)f(the)f (assignmen)o(t)i(of)e(free)h(t)o(yp)q(e)1020 389 y(v)n(ariables)f(to)g (kinds)h(giv)o(en)f(b)o(y)h(\001.)32 b(Lo)q(cations)19 b(ha)o(v)o(e)f(kind)h Fj(Loc)o Fu(,)1020 430 y(aliasing)d(constrain)o (ts)g(ha)o(v)o(e)g(kind)g Fj(Store)n Fu(,)g(small)f(t)o(yp)q(es)h(ha)o (v)o(e)g(the)1020 472 y(kind)c Fj(Small)n Fu(,)f(but)h(lik)o(e)e(the)i (other)g(t)o(yp)q(es,)g(ma)o(y)f(also)g(b)q(e)h(giv)o(en)g(kind)1020 513 y Fj(Type)o Fu(.)24 b(Recursiv)o(e)16 b(t)o(yp)q(es)g(ha)o(v)o(e)g (arro)o(w)g(kinds)g(that)f(can)h(b)q(e)g(elim-)1020 555 y(inated)h(through)i(constructor)f(application)f Fq(c)6 b Fu(\()p Fq(c)1755 559 y Fp(1)1772 555 y Fq(;)g(:)g(:)g(:)g(;)g(c)1874 559 y Fm(n)1895 555 y Fu(\).)29 b(The)1020 596 y(judgemen)o(t)15 b(\001)d Fo(`)h Fq(c)1306 600 y Fp(1)1335 596 y Fu(=)f Fq(c)1394 600 y Fp(2)1423 596 y Fu(:)g Fq(\024)i Fu(states)g(that)g(t)o (yp)q(e)g(constructors)h Fq(c)1999 600 y Fp(1)1020 638 y Fu(and)h Fq(c)1114 642 y Fp(2)1145 638 y Fu(are)f(equiv)n(alen)o(t)h (and)f(w)o(ell-formed)f(with)h(kind)g Fq(\024)p Fu(.)23 b(T)o(yp)q(es)1020 679 y(are)16 b(considered)g(equiv)n(alen)o(t)h(up)f (to)f(alpha-con)o(v)o(ersion)i(of)f(b)q(ound)1020 721 y(v)n(ariables)11 b(and)h(constrain)o(ts)g(are)f(considered)h(equiv)n (alen)o(t)g(up)f(to)g(re-)1020 762 y(ordering)g(of)g(the)g(elemen)o(ts) f(in)h(the)g(sequence.)17 b(A)10 b(recursiv)o(e)h(t)o(yp)q(e)h(is)1020 804 y(not)h(considered)h(equal)f(to)g(its)g(unfolding.)34 b(The)13 b(formal)f(rules)h(for)1020 845 y(these)d(judgemen)o(ts)h(are) e(straigh)o(tforw)o(ard)h(and)h(ha)o(v)o(e)f(b)q(een)g(omitted)1020 887 y(due)17 b(to)g(space)g(considerations.)29 b(See)17 b(the)f(companion)i(tec)o(hnical)1020 928 y(rep)q(ort)13 b([36)q(])f(for)h(details.)1076 970 y(W)m(e)23 b(use)g(the)g(notation)g Fq(A)p Fu([)p Fq(X=x)p Fu(])e(to)h(denote)i(the)f(capture-)1020 1011 y(a)o(v)o(oiding)14 b(substitution)g(of)f Fq(X)j Fu(for)e(a)f(v)n(ariable)h Fq(x)f Fu(in)g Fq(A)p Fu(.)18 b(Occasion-)1020 1053 y(ally)m(,)11 b(w)o(e)f(use)i(the)f(notation)h Fq(X)s Fu([)p Fq(c)1498 1057 y Fp(1)1514 1053 y Fq(;)6 b(:)h(:)f(:)g(;)g(c)1617 1057 y Fm(n)1638 1053 y Fq(=)p Fu(\001])k(to)i(denote)g(capture-)1020 1094 y(a)o(v)o(oiding)j (substitution)g(of)f(constructors)h Fq(c)1670 1098 y Fp(1)1687 1094 y Fq(;)6 b(:)h(:)f(:)g(;)g(c)1790 1098 y Fm(n)1825 1094 y Fu(for)14 b(the)g(cor-)1020 1136 y(resp)q(onding)g (t)o(yp)q(e)f(v)n(ariables)g(in)f(the)h(domain)g(of)g(\001.)j (Substitution)1020 1177 y(is)i(de\014ned)h(in)f(the)g(stardard)h(w)o(a) o(y)f(in)g(all)f(cases)i(except)f(for)g(the)1020 1219 y(substitution)g(of)g(constrain)o(ts)g(in)f(constrain)o(ts.)32 b(Substitution)18 b(of)1020 1260 y Fq(C)1050 1245 y Fk(0)1072 1260 y Fu(for)11 b(a)g(constrain)o(t)h(v)n(ariable)f Fq(\017)g Fu(in)f Fq(C)k Fu(app)q(ends)f(the)e(list)g Fq(C)1896 1245 y Fk(0)1918 1260 y Fu(to)g(the)1020 1302 y(list)k Fq(C)s Fu(.)24 b(W)m(e)16 b(use)g(the)g(notation)g Fq(C)1545 1286 y Fk(0)1556 1302 y Fu(@)p Fq(C)i Fu(to)e(denote)g(the)g (result)f(of)1020 1343 y(app)q(ending)g Fq(C)i Fu(to)c Fq(C)1328 1328 y Fk(0)1353 1343 y Fu(\(notice)h(that)f Fq(C)f Fo(\012)d Fq(C)1673 1328 y Fk(0)1698 1343 y Fu(is)k(not)h(syn)o (tactically)1020 1385 y(w)o(ell-formed\).)i(F)m(or)d(example,)1165 1461 y(\()p Fo(;)c(\012)f Fq(a)1266 1465 y Fp(1)1292 1461 y Fo(\012)h(\001)d(\001)g(\001)i(\012)g Fq(a)1442 1465 y Fm(m)1472 1461 y Fu(\)@\()p Fo(;)h(\012)f Fq(a)1618 1445 y Fk(0)1618 1468 y Fp(1)1644 1461 y Fo(\012)h(\001)d(\001)g(\001)i (\012)g Fq(a)1794 1445 y Fk(0)1794 1468 y Fm(n)1816 1461 y Fu(\))i(=)1242 1503 y Fo(;)f(\012)f Fq(a)1328 1507 y Fp(1)1354 1503 y Fo(\012)h(\001)d(\001)g(\001)i(\012)g Fq(a)1504 1507 y Fm(m)1542 1503 y Fo(\012)h Fq(a)1601 1487 y Fk(0)1601 1510 y Fp(1)1627 1503 y Fo(\012)f(\001)f(\001)f(\001)i (\012)g Fq(a)1777 1487 y Fk(0)1777 1510 y Fm(n)1020 1578 y Fu(F)m(ormally)m(,)k(substitution)i(for)f(constrain)o(ts)g(is)g (de\014ned)h(as)f(follo)o(ws.)1269 1660 y(\()p Fq(C)e Fo(\012)d Fq(\017)p Fu(\)[)p Fq(C)1432 1642 y Fk(0)1443 1660 y Fq(=\017)p Fu(])i(=)g(\()p Fq(C)s Fu([)p Fq(C)1625 1642 y Fk(0)1636 1660 y Fq(=\017)p Fu(]\)@)p Fq(C)1757 1642 y Fk(0)1076 1734 y Fu(W)m(e)g(will)e(con)o(tin)o(ue)i(to)f(omit)g (the)g(initial)g(\\)p Fo(;)p Fu(")g(when)h(a)g(constrain)o(t)1020 1776 y(is)17 b(non-empt)o(y)m(.)29 b(F)m(or)17 b(example,)h(w)o(e)e (write)g Fo(f)p Fq(\021)j Fo(7!)f Fq(\034)t Fo(g)f Fu(instead)g(of)1020 1817 y Fo(;)9 b(\012)f(f)p Fq(\021)13 b Fo(7!)e Fq(\034)t Fo(g)p Fu(.)1020 1914 y Fv(3)41 b(T)m(erm)14 b(Structure)1020 1993 y Fu(The)k(term)g(structure)h(is)f(split)g(in)o(to)g(three)g (classes:)28 b(v)n(alues,)20 b(in-)1020 2034 y(structions,)h(and)e(co)q (ercions.)36 b(The)19 b(grammar)h(b)q(elo)o(w)e(describ)q(es)1020 2076 y(the)13 b(syn)o(tax)h(of)f(the)g(language.)1076 2149 y Fr(values)94 b Fq(v)38 b Fu(::=)f Fq(x)10 b Fo(j)h Fq(i)g Fo(j)f(S)s Fu(\()p Fq(i)p Fu(\))h Fo(j)f Fq(v)q Fu([)p Fq(c)p Fu(])g Fo(j)1419 2191 y Fj(fix)o Fq(f)t Fu([\001)g Fo(j)g Fq(C)s Fu(]\()p Fq(x)1653 2195 y Fp(1)1670 2191 y Fu(:)p Fq(\033)1703 2195 y Fp(1)1720 2191 y Fq(;)c(:)g(:)g(:)g (;)g(x)1827 2195 y Fm(n)1848 2191 y Fu(:)p Fq(\033)1881 2195 y Fm(n)1902 2191 y Fu(\))p Fq(:\023)1076 2232 y Fr(instruct's)45 b Fq(\023)36 b Fu(::=)h Fj(new)10 b Fq(\032;)5 b(x;)h(i)p Fu(;)g Fq(\023)11 b Fo(j)f Fj(free)f Fq(v)q Fu(;)d Fq(\023)k Fo(j)1419 2274 y Fj(let)g Fq(x)g Fu(=)g(\()p Fq(v)q Fu(\))p Fq(:i)p Fu(;)c Fq(\023)k Fo(j)h Fu(\()p Fq(v)1732 2278 y Fp(1)1749 2274 y Fu(\))p Fq(:i)f Fu(:=)g Fq(v)1868 2278 y Fp(2)1885 2274 y Fu(;)c Fq(\023)11 b Fo(j)1419 2315 y Fj(case)5 b Fq(v)i Fu(\()p Fj(inl)16 b Fo(\))11 b Fq(\023)1684 2319 y Fp(1)1712 2315 y Fo(j)f Fj(inr)16 b Fo(\))11 b Fq(\023)1872 2319 y Fp(2)1889 2315 y Fu(\))g Fo(j)1419 2357 y Fq(v)q Fu(\()p Fq(v)1473 2361 y Fp(1)1490 2357 y Fq(;)6 b(:)g(:)g(:)g(;)g(v)1594 2361 y Fm(n)1615 2357 y Fu(\))11 b Fo(j)f Fj(halt)5 b Fq(v)12 b Fo(j)1419 2398 y Fj(coerce)n Fu(\()p Fq(\015)r Fu(\);)6 b Fq(\023)1076 2440 y Fr(c)n(o)n(er)n(cions)41 b Fq(\015)e Fu(::=)e Fj(union)1517 2444 y Fm(\034)1531 2449 y Fl(1)1548 2444 y Fk([)p Fm(\034)1583 2449 y Fl(2)1601 2440 y Fu(\()p Fq(\021)q Fu(\))11 b Fo(j)1419 2481 y Fj(roll)1497 2487 y Fg(rec)6 b Fm(\013)g Fp(\(\001\))p Fm(:\034)j Fp(\()p Fm(c)1675 2492 y Fl(1)1691 2487 y Fm(;:::)r(;c)1752 2491 y Ff(n)1773 2487 y Fp(\))1787 2481 y Fu(\()p Fq(\021)q Fu(\))i Fo(j)1419 2523 y Fj(unroll)n Fu(\()p Fq(\021)q Fu(\))g Fo(j)1419 2564 y Fj(pack)1497 2575 y Fp([)p Fm(c)1520 2580 y Fl(1)1536 2575 y Fm(;:::)r(;c)1597 2579 y Ff(n)1618 2575 y Fk(j)p Fm(C)r Fp(])p Fg(as)6 b Fk(9)p Fp([\001)p Fk(j)p Fm(C)r Fp(])p Fm(:\034)1814 2564 y Fu(\()p Fq(\021)q Fu(\))11 b Fo(j)1419 2610 y Fj(unpack)t Fq(\021)d Fj(with)d Fu(\001)961 2747 y(4)p eop %%Page: 5 5 5 4 bop -76 -74 2093 2 v -76 -61 217 2 v -76 -5 2 56 v -63 -24 a Fu(\001;)6 b(\000)11 b Fo(`)g Fq(v)h Fu(:)e Fq(\034)p 139 -5 V -76 -3 217 2 v 519 48 248 2 v 519 84 a Fu(\001;)c(\000)11 b Fo(`)g Fq(x)g Fu(:)f(\000\()p Fq(x)p Fu(\))p 843 50 214 2 v 76 w(\001;)c(\000)11 b Fo(`)g Fq(i)g Fu(:)f Fq(int)p 1133 48 288 2 v 77 w Fu(\001;)c(\000)11 b Fo(`)g(S)s Fu(\()p Fq(i)p Fu(\))g(:)f Fo(S)s Fu(\()p Fq(i)p Fu(\))272 202 y(\001)h Fo(`)g(8)p Fu([\001)413 186 y Fk(0)435 202 y Fo(j)f Fq(C)486 186 y Fk(0)497 202 y Fu(])p Fq(:)p Fu(\()p Fq(\033)556 206 y Fp(1)573 202 y Fq(;)c(:)g(:)g(:)g(;)g(\033)680 206 y Fm(n)701 202 y Fu(\))j Fo(!)g Fi(0)h Fu(=)h Fq(\033)867 206 y Fm(f)897 202 y Fu(:)g Fj(Small)36 b Fu(\001\001)1119 186 y Fk(0)1130 202 y Fu(;)6 b Fq(C)1177 186 y Fk(0)1189 202 y Fu(;)g(\000)p Fq(;)g(f)t Fu(:)p Fq(\033)1303 206 y Fm(f)1322 202 y Fq(;)g(x)1361 206 y Fp(1)1378 202 y Fu(:)p Fq(\033)1411 206 y Fp(1)1428 202 y Fq(;)g(:)g(:)g(:)g(;)g(x)1535 206 y Fm(n)1556 202 y Fu(:)p Fq(\033)1589 206 y Fm(n)1621 202 y Fo(`)11 b Fq(\023)p 272 222 1397 2 v 602 260 a Fu(\001;)6 b(\000)11 b Fo(`)g Fj(fix)o Fq(f)t Fu([\001)845 244 y Fk(0)866 260 y Fo(j)f Fq(C)917 244 y Fk(0)929 260 y Fu(]\()p Fq(x)977 264 y Fp(1)993 260 y Fu(:)p Fq(\033)1026 264 y Fp(1)1043 260 y Fq(;)c(:)g(:)g(:)g(;)g(x)1150 264 y Fm(n)1171 260 y Fu(:)p Fq(\033)1204 264 y Fm(n)1225 260 y Fu(\))p Fq(:\023)k Fu(:)h Fq(\033)1319 264 y Fm(f)533 378 y Fu(\001;)6 b(\000)11 b Fo(`)g Fq(v)h Fu(:)e Fo(8)p Fu([)p Fq(\014)r Fu(:)p Fq(\024;)5 b Fu(\001)840 362 y Fk(0)862 378 y Fo(j)11 b Fq(C)914 362 y Fk(0)925 378 y Fu(])p Fq(:)p Fu(\()p Fq(\033)984 382 y Fp(1)1000 378 y Fq(;)6 b(:)h(:)f(:)g(;)g(\033)1108 382 y Fm(n)1129 378 y Fu(\))i Fo(!)h Fi(0)39 b Fu(\001)10 b Fo(`)i Fq(c)e Fu(:)g Fq(\024)p 533 397 875 2 v 589 435 a Fu(\001;)c(\000)k Fo(`)h Fq(v)q Fu([)p Fq(c)p Fu(])f(:)g(\()p Fo(8)p Fu([\001)875 419 y Fk(0)897 435 y Fo(j)g Fq(C)948 419 y Fk(0)960 435 y Fu(])p Fq(:)p Fu(\()p Fq(\033)1019 439 y Fp(1)1035 435 y Fq(;)c(:)g(:)g(:)g(;)h(\033)1143 439 y Fm(n)1164 435 y Fu(\))h Fo(!)h Fi(0)p Fu(\)[)p Fq(c=\014)r Fu(])386 554 y(\001;)d(\000)11 b Fo(`)g Fq(v)h Fu(:)e Fq(\033)579 538 y Fk(0)629 554 y Fu(\001)h Fo(`)g Fq(\033)729 538 y Fk(0)751 554 y Fu(=)f Fq(\033)i Fu(:)f Fj(Small)p 386 571 559 2 v 569 605 a Fu(\001;)6 b(\000)11 b Fo(`)g Fq(v)g Fu(:)g Fq(\033)1022 553 y Fu(\001;)6 b(\000)k Fo(`)h Fq(v)h Fu(:)e Fq(\034)1212 537 y Fk(0)1262 553 y Fu(\001)h Fo(`)g Fq(\034)1360 537 y Fk(0)1382 553 y Fu(=)g Fq(\034)j Fu(:)d Fj(Type)p 1022 571 533 2 v 1192 605 a Fu(\001;)6 b(\000)11 b Fo(`)g Fq(v)h Fu(:)e Fq(\034)p -76 668 2093 2 v 679 735 a Fu(Figure)j(1:)k(Static)c(Seman)o(tics:)k(V)m(alues)-76 859 y Fv(V)o(alues)38 b Fu(V)m(alues)16 b(consist)i(of)e(in)o(tegers,)i (singleton)f(in)o(tegers,)h(and)-76 900 y(functions.)28 b(Their)16 b(t)o(yping)h(judgemen)o(ts)g(ha)o(v)o(e)g(the)f(form)h (\001;)6 b(\000)16 b Fo(`)-76 942 y Fq(v)i Fu(:)e Fq(\034)21 b Fu(where)16 b(\000)h(is)f(a)h(\014nite)f(partial)h(map)g(from)f(v)n (alue)h(v)n(ariables)-76 983 y(to)d(small)f(t)o(yp)q(es.)19 b(The)13 b(rules)h(are)g(mostly)f(standard)i(and)g(are)e(pre-)-76 1025 y(sen)o(ted)j(in)f(\014gure)i(1.)24 b(Notice)15 b(that)h(functions)f(ma)o(y)h(b)q(e)g(recursiv)o(e)-76 1066 y(and)e(con)o(tain)g(a)f(sp)q(eci\014cation)h(of)f(the)g(p)q (olymorphic)h(v)n(ariables)g(\001,)-76 1108 y(the)d(requiremen)o(ts)g (on)g(the)g(store)f Fq(C)k Fu(and)d(the)g(t)o(yp)q(es)g(of)f(the)h (param-)-76 1149 y(eters.)20 b(These)14 b(preconditions)g(are)g(used)h (to)f(t)o(yp)q(e)g(the)g(instruction)-76 1191 y(sequence)d(that)g (forms)f(the)g(b)q(o)q(dy)h(of)f(the)h(function.)16 b(The)10 b(v)n(alue)g Fq(v)q Fu([)p Fq(c)p Fu(])-76 1232 y(denotes)17 b(t)o(yp)q(e)f(application)h(of)e(the)h(p)q(olymorphic)h(function)g Fq(v)f Fu(to)-76 1274 y(t)o(yp)q(e)d(constructor)g Fq(c)p Fu(.)j(W)m(e)c(often)g(abbreviate)h(successiv)o(e)g(t)o(yp)q(e)f(ap-) -76 1315 y(plications)h Fq(v)q Fu([)p Fq(c)145 1319 y Fp(1)162 1315 y Fu(])6 b Fo(\001)g(\001)g(\001)g Fu([)p Fq(c)258 1319 y Fm(n)279 1315 y Fu(])12 b(b)o(y)i Fq(v)q Fu([)p Fq(c)404 1319 y Fp(1)421 1315 y Fq(;)6 b(:)g(:)g(:)g(;)g(c)523 1319 y Fm(n)544 1315 y Fu(].)17 b(Later,)c(when)g(w)o(e)g(giv)o(e)-76 1357 y(an)e(op)q(erational)h(seman)o(tics)f(for)f(the)h(language,)h(w)o (e)e(will)f(add)j(other)-76 1398 y(v)n(alues)h(\(suc)o(h)h(as)f(p)q (oin)o(ters)g(and)h(memory)f(blo)q(c)o(ks\),)g(but)g(these)g(ob-)-76 1440 y(jects)f(only)g(app)q(ear)h(at)f(run)h(time)e(and)i(so)f(w)o(e)g (omit)g(them)g(for)g(no)o(w.)-76 1534 y Fv(Instructions)38 b Fu(Figure)16 b(2)g(presen)o(t)h(the)f(t)o(yping)g(rules)h(for)e(the)i (in-)-76 1575 y(structions.)26 b(The)16 b(judgemen)o(t)g(\001;)7 b Fq(C)s Fu(;)f(\000)15 b Fo(`)h Fq(\023)f Fu(states)h(that)g(in)g(t)o (yp)q(e)-76 1617 y(con)o(text)e(\001,)e(a)h(store)h(describ)q(ed)g(b)o (y)f Fq(C)j Fu(and)e(v)n(alue)f(con)o(text)h(\000,)e(the)-76 1658 y(instruction)i(sequence)g Fq(\023)e Fu(is)h(w)o(ell-formed.)-20 1700 y(The)24 b(principle)f(in)o(terest)h(of)f(the)g(language)i(is)e (the)h(t)o(yping)-76 1741 y(of)c(memory)g(managemen)o(t)h (instructions.)39 b(Op)q(erationally)m(,)21 b(the)-76 1783 y Fj(new)f Fq(\032;)6 b(x;)g(i)19 b Fu(instruction)h(allo)q(cates) g(a)f(memory)h(blo)q(c)o(k)g(of)f(size)g Fq(i)-76 1824 y Fu(at)14 b(a)g(fresh)g(lo)q(cation)g(and)h(substitutes)g(the)f(lo)q (cation)g(for)g Fq(\032)g Fu(and)g(a)-76 1866 y(p)q(oin)o(ter)d(to)g (that)g(lo)q(cation)g(for)f Fq(x)g Fu(in)h(the)g(remaining)g (instructions.)903 1850 y Fp(4)-76 1907 y Fu(This)i(op)q(eration)i(is)e (mo)q(deled)h(in)f(the)h(t)o(yp)q(e)g(system)f(b)o(y)h(extending)-76 1949 y(the)h(store)h(description)f(with)g(a)g(memory)g(t)o(yp)q(e)h(of) e(length)i Fq(i)p Fu(.)23 b(Ini-)-76 1990 y(tially)m(,)9 b(the)h(\014elds)g(of)g(the)g(memory)g(blo)q(c)o(k)g(ha)o(v)o(e)g(t)o (yp)q(e)g Fo(S)s Fu(\(0\))g(since)g(w)o(e)-76 2032 y(assume)16 b(the)g(allo)q(cator)f(returns)i(zero)q(ed-out)f(memory)m(.)759 2016 y Fp(5)801 2032 y Fu(Once)f(a)-76 2073 y(blo)q(c)o(k)d(has)g(b)q (een)h(allo)q(cated,)f(it)f(ma)o(y)h(b)q(e)g(op)q(erated)g(on)g(b)o(y)h (accessor)-76 2115 y(functions)d Fj(let)g Fq(x)g Fu(=)h(\()p Fq(v)263 2119 y Fp(1)280 2115 y Fu(\))p Fq(:i)e Fu(and)i(\()p Fq(v)434 2119 y Fp(1)450 2115 y Fu(\))p Fq(:i)g Fu(:=)f Fq(v)570 2119 y Fp(2)587 2115 y Fu(,)g(whic)o(h)f(pro)r(ject)h(from)-76 2161 y(or)j(store)h(in)o(to)f(the)g Fq(i)223 2145 y Fm(th)269 2161 y Fu(\014eld)g(of)g Fq(v)415 2165 y Fp(1)432 2161 y Fu(.)18 b(The)13 b(pro)r(jection)h(op)q(eration)g(is)-76 2203 y(w)o(ell-formed)h(if)h Fq(v)192 2207 y Fp(1)225 2203 y Fu(is)f(a)i(p)q(oin)o(ter)f(to)g(some)g(lo)q(cation)h Fq(\021)g Fu(and)g(that)-76 2244 y(lo)q(cation)12 b(con)o(tains)g(a)g (ob)r(ject)g(with)g(t)o(yp)q(e)g Fo(h)p Fq(\033)573 2248 y Fp(1)590 2244 y Fq(;)6 b(:)g(:)g(:)g(;)g(\033)697 2248 y Fm(n)719 2244 y Fo(i)11 b Fu(\(where)h Fq(i)g Fu(is)-76 2286 y(less)g(than)h Fq(n)p Fu(\).)j(In)c(this)g(case,)g(the)h (remaining)f(instructions)h Fq(\023)e Fu(m)o(ust)-76 2327 y(b)q(e)k(w)o(ell-formed)f(giv)o(en)h(the)f(additional)h (assumption)h(that)f Fq(x)f Fu(has)-76 2369 y(t)o(yp)q(e)c Fq(\033)29 2373 y Fm(i)42 2369 y Fu(.)16 b(The)9 b(up)q(date)h(op)q (eration)h(is)e(similar)f(in)h(that)h Fq(v)735 2373 y Fp(1)761 2369 y Fu(m)o(ust)g(b)q(e)f(a)-76 2410 y(p)q(oin)o(ter)14 b(to)f(a)g(lo)q(cation)h(con)o(taining)g(a)f(memory)h(blo)q(c)o(k.)k (Ho)o(w)o(ev)o(er,)p -76 2441 399 2 v -32 2465 a Fl(4)-16 2477 y Fs(F)m(or)f(the)g(purp)q(oses)g(of)g(alpha-con)o(v)o(ersion,)j Fe(\032)d Fs(and)g Fe(x)g Fs(are)f(considered)-76 2510 y(b)q(ound)c(b)o(y)g(this)g(instruction.)-32 2534 y Fl(5)-16 2546 y Fs(If)i(an)f(allo)q(cator)g(returns)h(unzero)q(ed,)g(random)g (memory)m(,)h(it)f(is)g(ma)o(y)g(b)q(e)-76 2579 y(mo)q(delled)f(b)o(y)h (adding)f(a)e(T)m(op)i(t)o(yp)q(e)g(and)f(returning)h(a)f(memory)h(blo) q(c)o(k)g(with)-76 2613 y(\014elds)f(of)f(t)o(yp)q(e)g(T)m(op.)1020 859 y Fu(the)17 b(remaining)g(instructions)h(are)f(v)o(eri\014ed)g(in)g (a)g(con)o(text)g(where)1020 900 y(the)g(t)o(yp)q(e)h(of)f(the)g (memory)g(blo)q(c)o(k)h(has)f(c)o(hanged:)27 b(The)17 b Fq(i)1897 884 y Fm(th)1946 900 y Fu(\014eld)1020 942 y(has)f(t)o(yp)q(e)h Fq(\033)g Fu(where)f Fq(\033)h Fu(is)e(the)h(t)o (yp)q(e)g(of)g(the)g(ob)r(ject)g(b)q(eing)h(stored)1020 983 y(in)o(to)9 b(that)h(lo)q(cation,)g(but)g(is)f(otherwise)h (unconstrained.)18 b(Although)1020 1025 y(surprising)12 b(at)g(\014rst,)g(this)g(rule)f(is)h(sound)h(b)q(ecause)g(the)e (constrain)o(ts)1020 1066 y(b)q(eha)o(v)o(e)i(linearly)m(.)j(Despite)d (the)f(fact)g(that)g(the)g(t)o(yp)q(e)h(of)f(a)g(memory)1020 1108 y(blo)q(c)o(k)j(at)g(a)f(lo)q(cation)h(c)o(hanges,)h(eac)o(h)f(lo) q(cation)g(can)g(only)g(app)q(ear)1020 1149 y(once)j(in)f(the)g(domain) g(of)g(a)g(store)h(t)o(yp)q(e)f(and)h(therefore)f(there)h(is)1020 1191 y(no)g(opp)q(ortunit)o(y)h(to)e(in)o(tro)q(duce)h(inconsistencies) g(in)o(to)f(the)h(store)1020 1232 y(t)o(yping.)h(Constrain)o(ts)14 b(suc)o(h)g(as)g Fo(f)p Fq(\021)f Fo(7!)f Fq(\034)t Fo(g)e(\012)e(f)p Fq(\021)14 b Fo(7!)e Fq(\034)1810 1216 y Fk(0)1821 1232 y Fo(g)i Fu(will)e(nev)o(er)1020 1274 y(describ)q(e)k(a)g(w)o (ell-formed)f(store.)25 b(The)15 b(instruction)h Fj(free)e Fq(v)i Fu(frees)1020 1315 y(the)f(memory)h(blo)q(c)o(k)f(p)q(oin)o(ted) h(to)f(b)o(y)g Fq(v)q Fu(.)23 b(This)15 b(e\013ect)h(is)e(re\015ected) 1020 1357 y(in)h(the)h(t)o(yping)g(rule)f(for)g(free)g(b)o(y)h (requiring)g(that)f(the)h(remaining)1020 1398 y(instructions)h(b)q(e)h (w)o(ell-formed)e(in)g(a)h(con)o(text)g Fq(C)1755 1382 y Fk(0)1783 1398 y Fu(that)g(do)q(es)h(not)1020 1440 y(include)13 b(the)g(lo)q(cation)h Fq(\021)q Fu(.)1076 1481 y(The)h(t)o(yping)g(of)f(the)h(case)g(expression)h(is)e(also)h (somewhat)g(un-)1020 1523 y(usual.)i(Op)q(erationally)m(,)c(case)g(c)o (hec)o(ks)g(the)g(\014rst)g(\014eld)g(of)g(the)f(mem-)1020 1564 y(ory)g(blo)q(c)o(k)g(in)f(the)h(lo)q(cation)f(p)q(oin)o(ted)i(to) e(b)o(y)h(a)f(v)n(alue)h Fq(v)q Fu(.)k(If)11 b(the)h(\014rst)1020 1606 y(\014eld)g(is)f(a)h(1,)f(execution)i(con)o(tin)o(ues)f(with)f (the)h(\014rst)g(instruction)g(se-)1020 1647 y(quence,)h(and)g(if)e(it) h(is)g(a)g(2,)g(execution)h(con)o(tin)o(ues)g(with)f(the)g(second)1020 1689 y(instruction)e(sequence.)17 b(Ho)o(w)o(ev)o(er)9 b(the)h(memory)g(t)o(yp)q(e)g(constructor)1020 1730 y Fo(h\001)c(\001)g(\001i)14 b Fu(will)g(not)h(b)q(e)g(the)f(top-most)i (t)o(yp)q(e)f(constructor)h(\(otherwise,)1020 1772 y(the)g(case)g(w)o (ould)f(b)q(e)h(unnecessary\).)26 b(The)16 b(t)o(yp)q(e)f(system)h(exp) q(ects)1020 1813 y(a)f(union)h(t)o(yp)q(e)f(to)g(b)q(e)g(the)g (top-most)h(and)f(eac)o(h)h(alternativ)o(e)f(ma)o(y)1020 1855 y(con)o(tain)h(some)g(n)o(um)o(b)q(er)h(\(p)q(ossibly)f(zero\))g (of)f(existen)o(tial)h(quan)o(ti-)1020 1896 y(\014ers)f(to)f(abstract)h (the)g(store)g(encapsulated)g(in)g(that)f(alternativ)o(e.)1020 1938 y(The)e(underlying)h(memory)f(v)n(alue)g(m)o(ust)g(ha)o(v)o(e)g (either)g(tag)f(1)h(or)g(tag)1020 1979 y(2)g(in)g(its)g(\014rst)g (\014eld.)17 b(As)12 b(men)o(tioned)g(earlier,)g(it)f(is)h(p)q(ossible) h(to)f(for-)1020 2021 y(m)o(ulate)g(other)g(union)g(elimination)f (constructs)i(including)f(p)q(oin)o(ter)1020 2062 y(equalit)o(y)e(c)o (hec)o(ks)f(or)h(discrimination)f(b)q(et)o(w)o(een)h(p)q(oin)o(ters)g (and)g(small)1020 2104 y(in)o(tegers)j(\(suc)o(h)h(as)f(n)o(ull)g (implemen)o(ted)g(b)o(y)g(0\).)1076 2145 y(Because)i(the)g(language)g (has)g(b)q(een)g(de\014ned)g(in)f(con)o(tin)o(uation-)1020 2187 y(passing)d(st)o(yle,)g(all)e(instruction)i(sequences)h(are)e (either)h(terminated)1020 2228 y(b)o(y)h(a)f(function)g(call)g Fq(v)q Fu(\()p Fq(v)1373 2232 y Fp(1)1390 2228 y Fq(;)6 b(:)g(:)g(:)g(;)g(v)1494 2232 y Fm(n)1515 2228 y Fu(\))11 b(or)g(a)g(call)g(to)g(the)g(terminal)g(con-)1020 2270 y(tin)o(uation)k Fj(halt)n Fu(,)g(whic)o(h)f(requires)h(an)f(in)o (teger)h(argumen)o(t.)22 b(F)m(unc-)1020 2311 y(tion)13 b(calls)f(are)h(w)o(ell-formed)f(if)g(the)h(p)q(olymorphic)h(function)f Fq(v)h Fu(has)1020 2353 y(b)q(een)i(fully)f(instan)o(tiated,)h(the)f (constrain)o(ts)h(in)f(the)g(curren)o(t)h(con-)1020 2394 y(text)c(equal)h(the)f(constrain)o(ts)h(required)g(b)o(y)g(the)f (function,)h(and)g(the)1020 2436 y(argumen)o(t)f(t)o(yp)q(es)f(matc)o (h)g(the)g(t)o(yp)q(es)g(of)g(the)g(function)g(parameters.)1076 2478 y(The)20 b(last)g(instruction)h Fj(coerce)m Fu(\()p Fq(\015)r Fu(\))f(applies)g(a)g(t)o(yping)h(co)q(er-)1020 2519 y(cion)16 b(to)g(the)g(store.)26 b(Co)q(ercions,)16 b(unlik)o(e)g(the)g(other)h(instructions)1020 2561 y(are)g(for)f(t)o (yp)q(e-c)o(hec)o(king)i(purp)q(oses)g(only)m(.)28 b(In)o(tuitiv)o(ely) m(,)16 b(co)q(ercions)1020 2602 y(ma)o(y)k(b)q(e)g(erased)g(b)q(efore)g (executing)g(a)g(program)g(and)g(the)g(run-)961 2747 y(5)p eop %%Page: 6 6 6 5 bop -76 -74 2093 2 v -76 -61 205 2 v -76 -5 2 56 v -63 -24 a Fu(\001;)6 b Fq(C)s Fu(;)g(\000)11 b Fo(`)g Fq(\023)p 127 -5 V -76 -3 205 2 v 295 125 a Fu(\001)p Fq(;)6 b(\032)p Fu(:)p Fj(Loc)n Fu(;)g Fq(C)12 b Fo(\012)c(f)p Fq(\032)j Fo(7!)753 59 y Fm(i)626 84 y Fd(z)p 645 84 96 5 v 96 w(}|)p 779 84 V 96 w({)626 125 y Fo(hS)s Fu(\(0\))p Fq(;)6 b(:)g(:)g(:)g(;)h Fo(S)s Fu(\(0\))p Fo(ig)p Fu(;)f(\000)p Fq(;)g(x)p Fu(:)p Fq(ptr)q Fu(\()p Fq(\032)p Fu(\))k Fo(`)h Fq(\023)p 295 144 866 2 v 551 178 a Fu(\001;)6 b Fq(C)s Fu(;)g(\000)11 b Fo(`)g Fj(new)e Fq(\032;)d(x;)g(i)p Fu(;)g Fq(\023)1182 154 y Fu(\()p Fq(x)k Fo(62)g Fr(Dom)s Fu(\(\000\))p Fq(;)c(\032)k Fo(62)h Fr(Dom)s Fu(\(\001\)\))355 294 y(\001;)6 b(\000)11 b Fo(`)g Fq(v)g Fu(:)g Fq(ptr)q Fu(\()p Fq(\021)q Fu(\))39 b(\001)11 b Fo(`)g Fq(C)i Fu(=)e Fq(C)853 278 y Fk(0)873 294 y Fo(\012)d(f)p Fq(\021)13 b Fo(7!)e(h)p Fq(\033)1048 298 y Fp(1)1065 294 y Fq(;)6 b(:)g(:)g(:)g(;)g(\033)1172 298 y Fm(n)1193 294 y Fo(ig)11 b Fu(:)f Fj(Store)37 b Fu(\001;)6 b Fq(C)1475 278 y Fk(0)1486 294 y Fu(;)g(\000)11 b Fo(`)g Fq(\023)p 355 314 1231 2 v 818 348 a Fu(\001;)6 b Fq(C)s Fu(;)g(\000)11 b Fo(`)g Fj(free)e Fq(v)q Fu(;)d Fq(\023)136 465 y Fu(\001;)g(\000)11 b Fo(`)g Fq(v)h Fu(:)e Fq(ptr)q Fu(\()p Fq(\021)q Fu(\))78 b(\001)10 b Fo(`)h Fq(C)j Fu(=)d Fq(C)673 449 y Fk(0)692 465 y Fo(\012)e(f)p Fq(\021)j Fo(7!)f(h)p Fq(\033)867 469 y Fp(1)884 465 y Fq(;)6 b(:)h(:)f(:)g(;)g(\033)992 469 y Fm(n)1013 465 y Fo(ig)11 b Fu(:)f Fj(Store)75 b Fu(\001;)6 b Fq(C)s Fu(;)g(\000)p Fq(;)g(x)p Fu(:)p Fq(\033)1446 469 y Fm(i)1469 465 y Fo(`)12 b Fq(\023)p 136 484 1382 2 v 621 520 a Fu(\001;)6 b Fq(C)s Fu(;)g(\000)11 b Fo(`)g Fj(let)e Fq(x)i Fu(=)f(\()p Fq(v)q Fu(\))p Fq(:i)p Fu(;)c Fq(\023)1538 436 y Fd(\022)1592 471 y Fu(1)11 b Fo(\024)g Fq(i)f Fo(\024)h Fq(n)1568 513 y(x)g Fo(62)f Fr(Dom)s Fu(\(\000\))1774 436 y Fd(\023)277 642 y Fu(\001;)c(\000)11 b Fo(`)g Fq(v)414 646 y Fp(1)442 642 y Fu(:)f Fq(ptr)q Fu(\()p Fq(\021)q Fu(\))78 b(\001)10 b Fo(`)i Fq(C)h Fu(=)e Fq(C)830 626 y Fk(0)850 642 y Fo(\012)d(f)p Fq(\021)k Fo(7!)f(h)p Fq(\033)1024 646 y Fp(1)1042 642 y Fq(;)6 b(:)g(:)g(:)g(;)g(\033)1149 646 y Fm(i)1162 642 y Fq(;)g(:)g(:)g(:)g(;) g(\033)1269 646 y Fm(n)1291 642 y Fo(ig)k Fu(:)h Fj(Store)393 684 y Fu(\001;)6 b(\000)11 b Fo(`)g Fq(v)530 688 y Fp(2)558 684 y Fu(:)f Fq(\033)78 b Fu(\001;)6 b Fq(C)758 669 y Fk(0)778 684 y Fo(\012)i(f)p Fq(\021)13 b Fo(7!)e(h)p Fq(\033)953 688 y Fp(1)970 684 y Fq(;)6 b(:)g(:)g(:)g(;)g(\033)o(;)h(:) f(:)g(:)g(;)g(\033)1184 688 y Fm(n)1205 684 y Fo(ig)p Fu(;)g(\000)11 b Fo(`)g Fq(\023)p 259 707 1215 2 v 674 743 a Fu(\001;)c Fq(C)s Fu(;)f(\000)k Fo(`)h Fu(\()p Fq(v)873 747 y Fp(1)890 743 y Fu(\))p Fq(:i)g Fu(:=)f Fq(v)1010 747 y Fp(2)1027 743 y Fu(;)c Fq(\023)1494 716 y Fu(\(1)11 b Fo(\024)g Fq(i)f Fo(\024)h Fq(n)p Fu(\))493 861 y(\001;)6 b(\000)11 b Fo(`)g Fq(v)g Fu(:)g Fq(ptr)q Fu(\()p Fq(\021)q Fu(\))78 b(\001)10 b Fo(`)h Fq(C)j Fu(=)d Fq(C)1030 845 y Fk(0)1049 861 y Fo(\012)e(f)p Fq(\021)j Fo(7!)f Fq(\034)1204 865 y Fp(1)1230 861 y Fo([)d Fq(\034)1281 865 y Fp(2)1298 861 y Fo(g)j Fu(:)f Fj(Store)483 903 y Fu(\001)h Fo(`)g Fq(\034)577 907 y Fp(1)605 903 y Fu(=)f Fo(9)p Fu([\001)709 887 y Fk(0)709 910 y Fp(1)737 903 y Fo(j)h Fq(C)789 887 y Fk(0)786 910 y Fp(1)803 903 y Fu(])p Fq(:)6 b Fo(\001)g(\001)g(\001)g(9)p Fu([\001)946 887 y Fk(0)946 910 y Fm(j)973 903 y Fo(j)k Fq(C)1024 887 y Fk(0)1021 910 y Fm(j)1038 903 y Fu(])p Fq(:)p Fo(hS)s Fu(\(1\))p Fq(;)5 b(\033)1189 887 y Fk(0)1188 910 y Fp(1)1206 903 y Fq(;)h(:)g(:)g(:)g(;)g(\033)1314 887 y Fk(0)1313 911 y Fm(k)1332 903 y Fo(i)11 b Fu(:)f Fj(Type)462 945 y Fu(\001)h Fo(`)g Fq(\034)556 949 y Fp(2)584 945 y Fu(=)f Fo(9)p Fu([\001)688 930 y Fk(00)688 952 y Fp(1)719 945 y Fo(j)h Fq(C)771 930 y Fk(00)768 952 y Fp(1)791 945 y Fu(])p Fq(:)6 b Fo(\001)g(\001)g(\001)g(9)p Fu([\001)934 930 y Fk(00)934 952 y Fm(m)974 945 y Fo(j)k Fq(C)1025 930 y Fk(00)1022 952 y Fm(m)1052 945 y Fu(])p Fq(:)p Fo(hS)s Fu(\(2\))p Fq(;)5 b(\033)1203 930 y Fk(00)1202 952 y Fp(1)1224 945 y Fq(;)h(:)g(:)g(:)g(;)g(\033)1332 930 y Fk(00)1331 952 y Fm(n)1353 945 y Fo(i)11 b Fu(:)f Fj(Type)525 988 y Fu(\001;)c Fq(C)604 972 y Fk(0)624 988 y Fo(\012)i(f)p Fq(\021)13 b Fo(7!)e Fq(\034)779 992 y Fp(1)796 988 y Fo(g)p Fu(;)6 b(\000)11 b Fo(`)g Fq(\023)915 992 y Fp(1)1009 988 y Fu(\001;)6 b Fq(C)1088 972 y Fk(0)1107 988 y Fo(\012)j(f)p Fq(\021)j Fo(7!)f Fq(\034)1262 992 y Fp(2)1280 988 y Fo(g)p Fu(;)6 b(\000)k Fo(`)i Fq(\023)1399 992 y Fp(2)p 443 1010 1054 2 v 645 1046 a Fu(\001;)6 b Fq(C)s Fu(;)h(\000)j Fo(`)h Fj(case)5 b Fq(v)j Fu(\()p Fj(inl)15 b Fo(\))c Fq(\023)1075 1050 y Fp(1)1103 1046 y Fo(j)f Fj(inr)16 b Fo(\))11 b Fq(\023)1263 1050 y Fp(2)1280 1046 y Fu(\))312 1163 y(\001;)6 b(\000)k Fo(`)i Fq(v)f Fu(:)g Fo(8)p Fu([)p Fo(\001)f(j)g Fq(C)s Fu(])p Fq(:)p Fu(\()p Fq(\033)645 1167 y Fp(1)662 1163 y Fq(;)c(:)g(:)g(:)g(;)g(\033)769 1167 y Fm(n)790 1163 y Fu(\))j Fo(!)g Fi(0)77 b Fu(\001;)6 b(\000)k Fo(`)h Fq(v)1096 1167 y Fp(1)1124 1163 y Fu(:)f Fq(\033)1167 1167 y Fp(1)1268 1163 y Fo(\001)c(\001)g(\001)83 b Fu(\001;)6 b(\000)11 b Fo(`)g Fq(v)1533 1167 y Fm(n)1564 1163 y Fu(:)g Fq(\033)1608 1167 y Fm(n)p 312 1182 1318 2 v 782 1218 a Fu(\001;)6 b Fq(C)s Fu(;)g(\000)11 b Fo(`)g Fq(v)q Fu(\()p Fq(v)1001 1222 y Fp(1)1018 1218 y Fq(;)6 b(:)g(:)g(:)g(;)g(v) 1122 1222 y Fm(n)1143 1218 y Fu(\))860 1332 y(\001;)g(\000)11 b Fo(`)g Fq(v)h Fu(:)e Fq(int)p 835 1350 270 2 v 835 1384 a Fu(\001;)c Fq(C)s Fu(;)h(\000)j Fo(`)h Fj(halt)5 b Fq(v)685 1500 y Fu(\001;)h Fq(C)14 b Fo(`)d Fq(\015)i Fu(=)-6 b Fo(\))10 b Fu(\001)946 1484 y Fk(0)958 1500 y Fu(;)c Fq(C)1005 1484 y Fk(0)1054 1500 y Fu(\001)1086 1484 y Fk(0)1097 1500 y Fu(;)h Fq(C)1145 1484 y Fk(0)1156 1500 y Fu(;)f(\000)k Fo(`)i Fq(\023)p 685 1517 570 2 v 788 1553 a Fu(\001;)6 b Fq(C)s Fu(;)g(\000)11 b Fo(`)g Fj(coerce)m Fu(\()p Fq(\015)r Fu(\);)6 b Fq(\023)p -76 1650 2093 2 v 633 1717 a Fu(Figure)13 b(2:)k(Static)c(Seman)o(tics:)k (Instructions)-76 1840 y(time)f(b)q(eha)o(viour)i(will)d(not)i(b)q(e)g (a\013ected.)29 b(The)16 b(judgemen)o(t)h(form)-76 1882 y(\001;)6 b Fq(C)14 b Fo(`)d Fq(\015)i Fu(=)-6 b Fo(\))10 b Fu(\001)185 1866 y Fk(0)196 1882 y Fu(;)c Fq(C)243 1866 y Fk(0)265 1882 y Fu(indicates)k(that)h(a)f(co)q(ercion)h(is)f(w)o (ell-formed,)-76 1923 y(extends)h(the)g(t)o(yp)q(e)g(con)o(text)g(to)f (\001)419 1907 y Fk(0)430 1923 y Fu(,)g(and)h(pro)q(duces)h(new)e (store)h(con-)-76 1965 y(strain)o(ts)i Fq(C)92 1949 y Fk(0)104 1965 y Fu(.)j(These)d(judgemen)o(ts)h(are)f(presen)o(ted)h(in) f(\014gure)h(3.)-20 2006 y(Eac)o(h)h(co)q(ercion)f(op)q(erates)h(on)f (a)g(particular)g(store)g(lo)q(cation)g Fq(\021)q Fu(.)-76 2048 y(The)i Fj(union)d Fu(co)q(ercion)j(lifts)e(the)i(ob)r(ject)g(at)f Fq(\021)i Fu(in)o(to)e(a)h(union)g(t)o(yp)q(e)-76 2089 y(and)22 b(the)f Fj(roll)o Fq(=)p Fj(unroll)e Fu(co)q(ercions)i (witness)g(the)h(isomorphism)-76 2131 y(b)q(et)o(w)o(een)17 b(a)g(recursiv)o(e)h(t)o(yp)q(e)f(and)h(its)e(unfolding.)30 b(The)17 b(co)q(ercion)-76 2172 y Fj(pack)3 2183 y Fp([)p Fm(c)26 2188 y Fl(1)42 2183 y Fm(;:::)q(;c)102 2187 y Ff(n)123 2183 y Fk(j)p Fm(C)156 2176 y Ft(0)167 2183 y Fp([)p Fm(c)190 2188 y Fl(1)206 2183 y Fm(;:::)r(;c)267 2187 y Ff(n)288 2183 y Fm(=)p Fp(\001)329 2176 y Ft(0)340 2183 y Fp(]])p Fg(as)5 b Fk(9)p Fp([\001)441 2176 y Ft(0)452 2183 y Fk(j)p Fm(C)485 2176 y Ft(0)496 2183 y Fp(])p Fm(:\034)534 2172 y Fu(\()p Fq(\021)q Fu(\))16 b(in)o(tro)q(duces)g(an) g(exis-)-76 2219 y(ten)o(tial)f(t)o(yp)q(e)g(b)o(y)g(hiding)h(the)f(t)o (yp)q(e)g(constructors)i Fq(c)704 2223 y Fp(1)721 2219 y Fq(;)6 b(:)g(:)g(:)g(;)g(c)823 2223 y Fm(n)859 2219 y Fu(and)-76 2261 y(encapsulating)14 b(the)e(store)g(describ)q(ed)h(b)o (y)g Fq(C)575 2245 y Fk(0)586 2261 y Fu([)p Fq(c)614 2265 y Fp(1)631 2261 y Fq(;)6 b(:)g(:)g(:)g(;)g(c)733 2265 y Fm(n)754 2261 y Fq(=)p Fu(\001)805 2245 y Fk(0)816 2261 y Fu(].)16 b(The)-76 2302 y Fj(unpack)7 b Fu(co)q(ercion)j (eliminates)e(an)i(existen)o(tial)f(t)o(yp)q(e,)h(augmen)o(ts)g(the)-76 2344 y(curren)o(t)16 b(constrain)o(ts)g(with)f(the)h(encapsulated)h Fq(C)678 2328 y Fk(0)689 2344 y Fu(,)f(and)g(extends)-76 2385 y(the)d(t)o(yp)q(e)h(con)o(text)f(\001)g(with)g(\001)378 2369 y Fk(0)389 2385 y Fu(,)f(the)h(hidden)h(t)o(yp)q(e)g (constructors.)-76 2483 y Fv(4)41 b(Applications)-76 2561 y Fu(In)16 b(this)f(section,)i(w)o(e)e(sho)o(w)h(ho)o(w)f(our)h (language)h(can)f(b)q(e)g(used)g(to)-76 2603 y(enco)q(de)10 b(t)o(w)o(o)f(common)h(programming)h(patterns,)f(the)g(destination-) 1020 1840 y(passing)k(st)o(yle)f(pattern,)h(whic)o(h)f(constructs)h (data)f(structures)h(e\016-)1020 1882 y(cien)o(tly)c(and)g(the)g (Deutsc)o(h-Sc)o(horr-W)m(aite)i(or)e(\\link-rev)o(ersal")g(pat-)1020 1923 y(terns,)19 b(whic)o(h)e(tra)o(v)o(erse)h(data)g(structures)g (using)g(minimal)f(addi-)1020 1965 y(tional)c(space.)1020 2059 y Fv(4.1)41 b(Destination-P)o(assi)o(ng)10 b(St)o(yle)1020 2124 y Fu(An)21 b(e\013ectiv)o(e)g(optimization)g(for)f(functional)i (languages)g(is)e(the)1020 2166 y Fr(destination)o(-p)n(a)o(ssi)o(ng)8 b(style)h Fu(\(DPS\))i(transformation.)17 b(W)m(adler)11 b([34])1020 2207 y(\014rst)18 b(realized)g(that)g(compilers)f(could)h (detect)g(certain)g(\\almost-)1020 2249 y(tail-recursiv)o(e")e (functions)h(and)g(automatically)f(transform)h(suc)o(h)1020 2290 y(functions)f(in)o(to)f(more)g(e\016cien)o(t)h(tail-recursiv)o(e)f (functions.)24 b(Since)1020 2332 y(then)13 b(sev)o(eral)f(other)g (researc)o(hers)h(ha)o(v)o(e)g(studied)g(v)n(arious)f(facets)g(of)1020 2373 y(this)k(problem)h([16,)f(5,)g(18)q(].)26 b(Our)17 b(con)o(tribution)g(is)f(to)g(pro)o(vide)h(a)1020 2415 y(t)o(yp)q(e)c(system)g(that)g(can)g(b)q(e)g(used)h(in)e(a)h(t)o(yp)q (e-preserving)h(compiler)1020 2456 y(and)g(is)f(capable)h(of)f(v)o (erifying)g(that)g(the)h(co)q(de)g(resulting)f(from)g(the)1020 2498 y(transformation)h(is)e(safe.)1076 2539 y(App)q(end)k(is)f(the)g (canonical)g(example)g(of)g(a)g(function)g(suitable)1020 2581 y(for)e(DPS:)961 2747 y(6)p eop %%Page: 7 7 7 6 bop -76 -74 2093 2 v -76 -61 357 2 v -76 -1 2 60 v -63 -20 a Fu(\001;)6 b Fq(C)14 b Fo(`)d Fq(\015)i Fu(=)-6 b Fo(\))10 b Fu(\001)198 -36 y Fk(0)209 -20 y Fu(;)c Fq(C)256 -36 y Fk(0)p 279 -1 V -76 1 357 2 v 274 72 a Fu(\001)k Fo(`)h Fq(C)j Fu(=)d Fq(C)462 56 y Fk(0)481 72 y Fo(\012)e(f)p Fq(\021)j Fo(7!)f Fq(\034)636 76 y Fm(i)649 72 y Fo(g)g Fu(:)f Fj(Store)75 b Fu(\001)11 b Fo(`)g Fq(\034)969 76 y Fp(1)997 72 y Fu(:)f Fj(Type)76 b Fu(\001)10 b Fo(`)h Fq(\034)1267 76 y Fp(2)1295 72 y Fu(:)g Fj(Type)p 274 91 1122 2 v 431 129 a Fu(\001;)6 b Fq(C)14 b Fo(`)d Fj(union)653 133 y Fm(\034)667 138 y Fl(1)684 133 y Fk([)p Fm(\034)719 138 y Fl(2)737 129 y Fu(\()p Fq(\021)q Fu(\))g(=)-6 b Fo(\))11 b Fu(\001;)6 b Fq(C)950 113 y Fk(0)970 129 y Fo(\012)i(f)p Fq(\021)k Fo(7!)f Fq(\034)1124 133 y Fp(1)1150 129 y Fo([)d Fq(\034)1201 133 y Fp(2)1218 129 y Fo(g)1416 100 y Fu(\(for)k Fq(i)f Fu(=)g(1)i(or)g(2\))61 247 y(\001)e Fo(`)g Fq(\034)k Fu(=)c(\()p Fj(rec)5 b Fq(\013)h Fu(\(\001)369 231 y Fk(0)380 247 y Fu(\))p Fq(:\034)427 231 y Fk(0)438 247 y Fu(\))g(\()p Fq(c)491 251 y Fp(1)508 247 y Fq(;)g(:)g(:)g(:)g(;)g(c) 610 251 y Fm(n)631 247 y Fu(\))11 b(:)f Fj(Type)75 b Fu(\001)11 b Fo(`)g Fq(C)j Fu(=)c Fq(C)1021 231 y Fk(0)1041 247 y Fo(\012)f(f)p Fq(\021)j Fo(7!)f Fq(\034)1200 231 y Fk(0)1211 247 y Fu([)p Fj(rec)5 b Fq(\013)h Fu(\(\001)1365 231 y Fk(0)1377 247 y Fu(\))p Fq(:\034)1424 231 y Fk(0)1434 247 y Fq(=\013)p Fu(][)p Fq(c)1517 251 y Fp(1)1534 247 y Fq(;)g(:)g(:)g(:)g(;)g(c)1636 251 y Fm(n)1657 247 y Fq(=)p Fu(\001)1708 231 y Fk(0)1719 247 y Fu(])p Fo(g)11 b Fu(:)f Fj(Store)p 61 266 1818 2 v 654 304 a Fu(\001;)c Fq(C)14 b Fo(`)d Fj(roll)856 308 y Fm(\034)876 304 y Fu(\()p Fq(\021)q Fu(\))g(=)-6 b Fo(\))10 b Fu(\001;)c Fq(C)1088 288 y Fk(0)1108 304 y Fo(\012)j(f)p Fq(\021)j Fo(7!)f Fq(\034)t Fo(g)326 422 y Fu(\001)g Fo(`)g Fq(C)j Fu(=)c Fq(C)514 406 y Fk(0)534 422 y Fo(\012)e(f)p Fq(\021)13 b Fo(7!)e Fq(\034)t Fo(g)g Fu(:)f Fj(Store)75 b Fu(\001)11 b Fo(`)g Fq(\034)k Fu(=)10 b(\()p Fj(rec)5 b Fq(\013)h Fu(\(\001)1226 406 y Fk(0)1238 422 y Fu(\))p Fq(:\034)1285 406 y Fk(0)1296 422 y Fu(\))g(\()p Fq(c)1349 426 y Fp(1)1366 422 y Fq(;)g(:)g(:)g(:)g(;)g(c)1468 426 y Fm(n)1489 422 y Fu(\))11 b(:)f Fj(Type)p 326 441 1289 2 v 379 479 a Fu(\001;)c Fq(C)14 b Fo(`)d Fj(unroll)n Fu(\()p Fq(\021)q Fu(\))g(=)-6 b Fo(\))11 b Fu(\001;)6 b Fq(C)834 463 y Fk(0)853 479 y Fo(\012)j(f)p Fq(\021)j Fo(7!)f Fq(\034)1012 463 y Fk(0)1024 479 y Fu([)p Fj(rec)t Fq(\013)c Fu(\(\001)1178 463 y Fk(0)1189 479 y Fu(\))p Fq(:\034)1236 463 y Fk(0)1247 479 y Fq(=\013)p Fu(][)p Fq(c)1330 483 y Fp(1)1346 479 y Fq(;)f(:)g(:)g(:)g(;)g(c)1448 483 y Fm(n)1469 479 y Fq(=)p Fu(\001)1520 463 y Fk(0)1531 479 y Fu(])p Fo(g)530 597 y Fu(\001)562 581 y Fk(0)584 597 y Fu(=)11 b Fq(\014)647 601 y Fp(1)664 597 y Fu(:)p Fq(\024)697 601 y Fp(1)714 597 y Fq(;)6 b(:)g(:)g(:)g(;)g(\014)821 601 y Fm(n)842 597 y Fu(:)p Fq(\024)875 601 y Fm(n)973 597 y Fo(\001)k(`)h Fq(c)1045 601 y Fm(i)1069 597 y Fu(:)f Fq(\024)1112 601 y Fm(i)1164 597 y Fu(\(for)i(1)f Fo(\024)g Fq(i)g Fo(\024)f Fq(n)p Fu(\))423 639 y(\001)g Fo(`)h Fq(C)j Fu(=)d Fq(C)611 624 y Fk(00)640 639 y Fo(\012)d(f)p Fq(\021)k Fo(7!)f Fq(\034)t Fu([)p Fq(c)826 643 y Fp(1)843 639 y Fq(;)6 b(:)g(:)g(:)h(;)f(c)946 643 y Fm(n)966 639 y Fq(=)p Fu(\001)1017 624 y Fk(0)1029 639 y Fu(])p Fo(g)i(\012)h Fq(C)1136 624 y Fk(0)1147 639 y Fu([)p Fq(c)1175 643 y Fp(1)1191 639 y Fq(;)e(:)f(:)g(:)g(;)g(c)1294 643 y Fm(n)1315 639 y Fq(=)p Fu(\001)1366 624 y Fk(0)1377 639 y Fu(])k(:)h Fj(Store)p 309 662 1324 2 v 309 700 a Fu(\001;)6 b Fq(C)13 b Fo(`)f Fj(pack)511 710 y Fp([)p Fm(c)534 715 y Fl(1)550 710 y Fm(;:::)r(;c)611 714 y Ff(n)632 710 y Fk(j)p Fm(C)665 703 y Ft(0)676 710 y Fp([)p Fm(c)699 715 y Fl(1)715 710 y Fm(;:::)r(;c)776 714 y Ff(n)796 710 y Fm(=)p Fp(\001)837 703 y Ft(0)848 710 y Fp(]])p Fg(as)6 b Fk(9)p Fp([\001)950 703 y Ft(0)960 710 y Fk(j)p Fm(C)993 703 y Ft(0)1005 710 y Fp(])p Fm(:\034)1042 700 y Fu(\()p Fq(\021)q Fu(\))11 b(=)-6 b Fo(\))11 b Fu(\001;)6 b Fq(C)1255 684 y Fk(00)1284 700 y Fo(\012)i(f)p Fq(\021)13 b Fo(7!)e(9)p Fu([\001)1486 684 y Fk(0)1507 700 y Fo(j)g Fq(C)1559 684 y Fk(0)1570 700 y Fu(])p Fq(:\034)t Fo(g)623 825 y Fu(\001)f Fo(`)i Fq(C)h Fu(=)e Fq(C)811 809 y Fk(00)840 825 y Fo(\012)d(f)p Fq(\021)k Fo(7!)g(9)p Fu([\001)1042 809 y Fk(0)1063 825 y Fo(j)f Fq(C)1115 809 y Fk(0)1126 825 y Fu(])p Fq(:\034)t Fo(g)f Fu(:)h Fj(Store)p 509 844 923 2 v 509 882 a Fu(\001;)6 b Fq(C)14 b Fo(`)d Fj(unpack)t Fq(\021)d Fj(with)d Fu(\001)901 866 y Fk(0)929 882 y Fu(=)-6 b Fo(\))10 b Fu(\001)p Fq(;)c Fu(\001)1082 866 y Fk(0)1094 882 y Fu(;)g Fq(C)1141 866 y Fk(00)1170 882 y Fo(\012)i(f)p Fq(\021)k Fo(7!)f Fq(\034)t Fo(g)c Fu(@)f Fq(C)1420 866 y Fk(0)p -76 979 2093 2 v 651 1046 a Fu(Figure)13 b(3:)k(Static)c(Seman)o(tics:)18 b(Co)q(ercions)-76 1169 y Fj(fun)h(append)e(\(xs,ys\))g(=)-37 1211 y(case)h(xs)h(of)3 1253 y([])f(->)h([])-37 1294 y(|)h(hd)e(::)h(tl)g(->)g(hd)g(::)g(append)e(\(tl,ys\))-20 1374 y Fu(Here,)12 b(the)g(second-last)h(op)q(eration)g(in)f(the)h (second)g(arm)f(of)g(the)-76 1415 y(case)17 b(is)f(a)h(function)f(call) g(and)i(the)e(last)g(op)q(eration)i(constructs)f(a)-76 1457 y(cons)i(cell.)32 b(If)18 b(the)g(t)o(w)o(o)g(op)q(erations)i(w)o (ere)e(in)o(v)o(erted,)h(w)o(e)f(w)o(ould)-76 1498 y(ha)o(v)o(e)e(an)f (e\016cien)o(t)g(tail-recursiv)o(e)g(function.)23 b(In)15 b(DPS,)g(the)g(func-)-76 1540 y(tion)d(allo)q(cates)f(a)g(cons)h(cell)f (b)q(efore)h(the)g(recursiv)o(e)f(call)g(and)h(passes)-76 1581 y(the)g(partially)g(uninitialized)f(v)n(alue)i(to)e(the)h (function,)h(whic)o(h)e(com-)-76 1623 y(putes)i(its)e(result)h(and)h (\014lls)f(in)g(the)g(uninitialized)g(part)g(of)g(the)g(data)-76 1664 y(structure.)17 b(If)12 b(the)g(input)g(list)f Fj(xs)g Fu(is)g(linear,)h(it)f(will)g(not)h(b)q(e)g(used)g(in)-76 1706 y(the)f(future.)17 b(In)11 b(this)g(case,)g(it)f(is)h(p)q(ossible) g(to)g(further)g(optimize)g(the)-76 1747 y(program)17 b(b)o(y)f(reusing)g(the)g(input)g(list)f(cells)g(for)h(the)g(output)g (list.)-76 1789 y(Our)d(example)h(p)q(erforms)f(b)q(oth)h(of)e(these)i (optimizations.)-20 1830 y(Before)k(presen)o(ting)g(the)f(co)q(de)h (for)f(the)h(optimized)f(function,)-76 1872 y(w)o(e)c(will)f(need)i(to) f(de\014ne)i(a)e(n)o(um)o(b)q(er)h(of)g(abbreviations.)19 b(Suc)o(h)14 b(ab-)-76 1913 y(breviations)g(not)f(only)g(aid)g (readabilit)o(y)m(,)g(but)g(also)g(help)g(compress)-76 1955 y(t)o(yping)h(information)f(in)g(a)g(compiler)g([10].)k(First,)c (recall)f(the)i(t)o(yp)q(e)-76 1996 y(of)f(in)o(teger)g(lists)f Fq(List)h Fu(and)h(their)f(unrolling)g Fq(List)658 1981 y Fk(0)669 1996 y Fu(:)-43 2074 y Fq(List)48 b Fu(=)38 b Fq(\026\013:)p Fo(hS)s Fu(\(1\))p Fo(i)8 b([)g(9)p Fu([)p Fq(\032)i Fo(j)g(f)p Fq(\032)h Fo(7!)g Fq(\013)p Fo(g)p Fu(])p Fq(:)p Fo(hS)s Fu(\(2\))p Fq(;)5 b(int)q(;)h(ptr)q Fu(\()p Fq(\032)p Fu(\))p Fo(i)-43 2116 y Fq(List)28 2101 y Fk(0)76 2116 y Fu(=)38 b Fo(hS)s Fu(\(1\))p Fo(i)8 b([)g(9)p Fu([)p Fq(\032)j Fo(j)f(f)p Fq(\032)h Fo(7!)g Fq(List)p Fo(g)p Fu(])p Fq(:)p Fo(hS)s Fu(\(2\))p Fq(;)5 b(int)q(;)h(ptr)q Fu(\()p Fq(\032)p Fu(\))p Fo(i)-76 2196 y Fu(Giv)o(en)17 b(these)h(list)e(de\014nitions,)j(it)d(will)g(b)q (e)h(useful)g(to)g(de\014ne)h(the)-76 2238 y(follo)o(wing)12 b(comp)q(osite)i(co)q(ercion.)-57 2316 y Fj(rollList)s Fq(\032)126 2320 y Fp(1)150 2316 y Fj(packing)s Fq(\032)313 2320 y Fp(2)341 2316 y Fu(=)20 2357 y Fj(pack)98 2368 y Fp([)p Fm(\032)123 2373 y Fl(2)139 2368 y Fk(jf)p Fm(\032)180 2373 y Fl(2)196 2368 y Fk(7!)p Fm(List)p Fk(g)p Fp(])p Fg(as)6 b Fk(9)p Fp([)p Fm(\032)385 2373 y Fl(2)400 2368 y Fk(jf)p Fm(\032)441 2373 y Fl(2)458 2368 y Fk(7!)p Fm(List)p Fk(g)p Fp(])p Fm(:)p Fk(hS)r Fp(\(2\))p Fm(;int;ptr)q Fp(\()p Fm(\032)785 2373 y Fl(2)802 2368 y Fp(\))p Fk(i)829 2357 y Fu(\()p Fq(\032)864 2361 y Fp(1)881 2357 y Fu(\);)20 2403 y Fj(union)118 2409 y Fm(List)177 2402 y Ft(0)190 2403 y Fu(\()p Fq(\032)225 2407 y Fp(1)242 2403 y Fu(\);)20 2444 y Fj(roll)98 2448 y Fm(List)159 2444 y Fu(\()p Fq(\032)194 2448 y Fp(1)211 2444 y Fu(\))-76 2524 y(This)13 b(co)q(ercion)g(op)q (erates)g(on)h(a)e(p)q(ortion)i(of)e(the)h(store)g(with)f(shap)q(e)-76 2566 y Fo(f)p Fq(\032)-37 2570 y Fp(1)-5 2566 y Fo(7!)j(hS)s Fu(\(2\))p Fq(;)6 b(int;)g(ptr)q Fu(\()p Fq(\032)308 2570 y Fp(2)326 2566 y Fu(\))p Fo(ig)k(\012)g(f)p Fq(\032)464 2570 y Fp(2)496 2566 y Fo(7!)15 b Fq(List)p Fo(g)p Fu(.)24 b(It)15 b(pac)o(ks)h(up)g Fq(\032)903 2570 y Fp(2)-76 2607 y Fu(in)o(to)11 b(an)h(existen)o(tial)e(around)j Fq(\032)382 2611 y Fp(1)399 2607 y Fu(,)e(lifts)f(the)h(resultan)o(t)g (ob)r(ject)h(up)f(to)1020 1169 y(a)j(union)h(t)o(yp)q(e)f(and)h (\014nally)f(rolls)f(it)h(up,)g(pro)q(ducing)i(a)d(store)i(with)1020 1211 y(the)e(shap)q(e)h Fo(f)p Fq(\032)1233 1215 y Fp(1)1261 1211 y Fo(7!)d Fq(List)p Fo(g)p Fu(.)1076 1253 y(The)i(function)g Fq(append)1424 1237 y Fk(0)1436 1253 y Fu(,)f(presen)o(ted)i(in)f (\014gure)h(4,)e(implemen)o(ts)1020 1294 y(the)f(inner)g(lo)q(op)g(of)f (the)h(optimized)g(app)q(end)h(function.)k(A)11 b(wrapp)q(er)1020 1336 y(function)g(m)o(ust)g(c)o(hec)o(k)g(for)g(the)f(case)h(that)g (the)g(input)g(list)f(is)g(empt)o(y)m(.)1020 1377 y(If)16 b(not,)h(it)f(passes)h(t)o(w)o(o)f(p)q(oin)o(ters)h(to)g(the)g(b)q (eginning)g(of)f(the)h(\014rst)1020 1419 y(list)c(\(aliases)g(of)g(one) h(another\))g(to)f Fq(append)1657 1403 y Fk(0)1682 1419 y Fu(for)h(parameters)g Fq(pr)q(ev)1020 1460 y Fu(and)g Fq(star)q(t)p Fu(.)j(It)12 b(also)h(passes)h(a)f(p)q(oin)o(ter)g(to)g (the)h(second)f(elemen)o(t)g(in)1020 1502 y(that)e(list)e(for)h (parameter)h Fq(xs)f Fu(and)h(a)f(p)q(oin)o(ter)h(to)f(the)h(second)g (list)e(for)1020 1543 y(parameter)h Fq(y)q(s)p Fu(.)16 b(Notice)9 b(that)g(the)h(con)o(ten)o(ts)g(of)f(lo)q(cation)h Fq(\032)1875 1547 y Fm(s)1900 1543 y Fu(are)g(not)1020 1585 y(describ)q(ed)k(b)o(y)g(the)g(aliasing)f(constrain)o(ts.)19 b(On)14 b(the)g(\014rst)f(iteration)1020 1626 y(of)g(the)h(lo)q(op)f Fq(\032)1235 1630 y Fm(s)1265 1626 y Fu(is)g(an)h(alias)f(of)g Fq(\032)1510 1630 y Fm(p)1541 1626 y Fu(and)h(on)f(successiv)o(e)h (iterations,)1020 1668 y(it)g(abstracted)i(b)o(y)e Fq(\017)p Fu(.)21 b(Ho)o(w)o(ev)o(er,)15 b(these)g(facts)f(are)h(not)f(explicit)g (in)1020 1709 y(the)h(t)o(yp)q(e)h(structure)g(and)f(therefore)h Fq(\032)1604 1713 y Fm(s)1635 1709 y Fu(cannot)g(b)q(e)g(used)f(during) 1020 1751 y(an)o(y)f(iteration)f(of)g(the)h(lo)q(op)f(\()p Fq(cont)g Fu(will)f(b)q(e)h(a)o(w)o(are)g(that)h Fq(\032)1883 1755 y Fm(s)1913 1751 y Fu(equals)1020 1792 y Fq(\032)1040 1796 y Fm(p)1071 1792 y Fu(and)f(ma)o(y)h(use)f(the)g(resultan)o(t)g (list\).)1076 1834 y(The)g(\014rst)h(place)f(to)h(lo)q(ok)f(to)g (understand)j(this)d(co)q(de)h(is)f(at)g(the)1020 1875 y(aliasing)g(constrain)o(ts,)g(whic)o(h)g(act)g(as)h(a)f(lo)q(op)g(in)o (v)n(arian)o(t.)k(Reading)1020 1917 y(the)g(constrain)o(ts)h(in)g(the)f (t)o(yp)q(e)h(from)f(left)f(to)h(righ)o(t)g(rev)o(eals)h(that)1020 1958 y(the)g(function)g(exp)q(ects)g(a)f(store)h(with)f(some)g(unkno)o (wn)i(part)f(\()p Fq(\017)p Fu(\))1020 2000 y(as)e(w)o(ell)e(as)i(a)f (kno)o(wn)i(part.)24 b(The)16 b(kno)o(wn)g(part)g(con)o(tains)g(a)g (cons)1020 2041 y(cell)f(at)g(lo)q(cation)h Fq(\032)1309 2045 y Fm(p)1342 2041 y Fu(that)g(is)f(link)o(ed)h(to)g(a)f Fq(List)h Fu(in)f(lo)q(cation)h Fq(\032)1972 2045 y Fm(xs)2006 2041 y Fu(.)1020 2083 y(Indep)q(enden)o(t)j(of)e(either)g(of)g(these)h (ob)r(jects)g(is)f(a)g(third)g(lo)q(cation,)1020 2124 y Fq(\032)1040 2128 y Fm(y)q(s)1073 2124 y Fu(,)c(whic)o(h)f(also)h (con)o(tains)h(a)f Fq(List)p Fu(.)1076 2166 y(The)e(\014rst)h (instruction)g(in)f(the)g(function)h(unrolls)f(the)h(recursiv)o(e)1020 2207 y(t)o(yp)q(e)g(of)f(the)h(ob)r(ject)g(at)g Fq(\032)1393 2211 y Fm(xs)1438 2207 y Fu(to)g(rev)o(eal)f(that)h(it)f(is)g(a)h (union)g(and)h(can)1020 2249 y(b)q(e)k(eliminated)g(b)o(y)g(a)f(case)h (statemen)o(t.)29 b(In)17 b(the)g(\014rst)g(branc)o(h)g(of)1020 2290 y(the)12 b(case,)g Fq(xs)g Fu(m)o(ust)g(p)q(oin)o(t)g(to)g(n)o (ull.)k(The)c(co)q(de)h(frees)e(the)h(n)o(ull)g(cell,)1020 2332 y(resulting)f(in)f(a)g(store)h(at)f(program)h(p)q(oin)o(t)g Fj(1)e Fu(that)i(can)g(b)q(e)f(describ)q(ed)1020 2373 y(b)o(y)i(the)h(constrain)o(ts)f Fq(\017)7 b Fo(\012)f(f)p Fq(\032)1430 2377 y Fm(p)1459 2373 y Fo(7!)11 b(hS)s Fu(\(2\))p Fq(;)6 b(int;)g(ptr)q Fu(\()p Fq(\032)1768 2377 y Fm(xs)1803 2373 y Fu(\))p Fo(ig)g(\012)h(f)p Fq(\032)1934 2377 y Fm(y)q(s)1978 2373 y Fo(7!)1020 2415 y Fq(List)p Fo(g)p Fu(.)18 b(Observ)o(e)c(that)g(the)f(cons)h(cell)f(at)g Fq(\032)1659 2419 y Fm(p)1690 2415 y Fu(con)o(tains)h(a)f(dangling)1020 2456 y(p)q(oin)o(ter)i(to)g(memory)h(lo)q(cation)f Fq(\032)1522 2460 y Fm(xs)1555 2456 y Fu(,)g(the)g(lo)q(cation)h(that)f(has)g(just) 1020 2498 y(b)q(een)c(freed)f(and)i(no)e(longer)h(app)q(ears)g(in)g (the)f(constrain)o(ts.)17 b(Despite)1020 2539 y(the)c(dangling)h(p)q (oin)o(ter,)g(the)f(co)q(de)h(is)f(p)q(erfectly)g(safe:)k(The)d(t)o (yping)1020 2581 y(rules)f(prev)o(en)o(t)h(the)f(p)q(oin)o(ter)g(from)g (b)q(eing)h(used.)1076 2622 y(Next,)c(the)h(second)g(list)e Fq(y)q(s)h Fu(is)g(banged)h(in)o(to)f(the)h(cons)f(cell)g(at)g Fq(\032)1988 2626 y Fm(p)2006 2622 y Fu(.)961 2747 y(7)p eop %%Page: 8 8 8 7 bop -76 -74 997 2 v -76 -3 a Fj(fix)5 b Fq(append)108 -19 y Fk(0)127 -3 y Fu([)p Fq(\017;)g(\032)190 1 y Fm(xs)224 -3 y Fq(;)h(\032)261 1 y Fm(y)q(s)294 -3 y Fq(;)g(\032)331 1 y Fm(p)349 -3 y Fq(;)g(\032)386 1 y Fm(s)413 -3 y Fo(j)-37 39 y Fq(\017)i Fo(\012)h(f)p Fq(\032)65 43 y Fm(p)94 39 y Fo(7!)i(hS)s Fu(\(2\))p Fq(;)6 b(int;)g(ptr)q Fu(\()p Fq(\032)403 43 y Fm(xs)437 39 y Fu(\))p Fo(i)p Fq(;)g(\032)504 43 y Fm(xs)549 39 y Fo(7!)11 b Fq(List;)6 b(\032)706 43 y Fm(y)q(s)750 39 y Fo(7!)11 b Fq(List)p Fo(g)p Fu(])p Fq(:)-37 80 y Fu(\()p Fq(xs)g Fu(:)f Fq(\032)70 84 y Fm(xs)104 80 y Fq(;)c(y)q(s)11 b Fu(:)f Fq(\032)211 84 y Fm(y)q(s)244 80 y Fq(;)c(pr)q(ev)12 b Fu(:)f Fq(ptr)q Fu(\()p Fq(\032)455 84 y Fm(p)473 80 y Fu(\))p Fq(;)6 b(star)q(t)11 b Fu(:)f Fq(ptr)q Fu(\()p Fq(\032)707 84 y Fm(s)724 80 y Fu(\))p Fq(;)3 122 y(cont)g Fu(:)g Fq(\034)124 126 y Fm(c)140 122 y Fu([)p Fq(\017;)5 b(\032)203 126 y Fm(p)221 122 y Fq(;)h(\032)258 126 y Fm(s)274 122 y Fu(]\))p Fj(.)-37 163 y(unroll)n Fu(\()p Fq(\032)116 167 y Fm(xs)150 163 y Fu(\);)-37 205 y Fj(case)f Fq(xs)3 246 y Fj(\()19 b(inl)f Fu(=)-6 b Fo(\))81 288 y Fj(free)9 b Fq(xs)p Fu(;)311 b Fj(\045)19 b(1.)81 329 y Fu(\()p Fq(pr)q(ev)q Fu(\))p Fq(:)p Fu(3)11 b(:=)f Fq(y)q(s)p Fu(;)205 b Fj(\045)19 b(2.)81 371 y(rollList)s Fq(\032)264 375 y Fm(p)289 371 y Fj(packing)s Fq(\032)452 375 y Fm(y)q(s)485 371 y Fu(;)36 b Fj(\045)19 b(3.)81 412 y Fq(cont)p Fu(\()p Fq(star)q(t)p Fu(\))3 454 y Fo(j)g Fj(inr)f Fu(=)-6 b Fo(\))81 495 y Fj(unpack)t Fq(\032)225 499 y Fm(xs)265 495 y Fj(with)5 b Fq(\032)370 499 y Fm(tl)400 495 y Fu(;)121 b Fj(\045)19 b(4.)81 537 y(let)10 b Fq(tl)h Fu(=)g(\()p Fq(xs)p Fu(\))p Fq(:)p Fu(3;)193 b Fj(\045)19 b(5.)81 579 y Fq(append)200 563 y Fk(0)120 620 y Fu([)p Fq(\017)8 b Fo(\012)g(f)p Fq(\032)232 624 y Fm(p)261 620 y Fo(7!)j(hS)s Fu(\(2\))p Fq(;)6 b(int;)h(ptr)q Fu(\()p Fq(\032)571 624 y Fm(xs)605 620 y Fu(\))p Fo(ig)p Fq(;)f(\032)691 624 y Fm(tl)715 620 y Fq(;)g(\032)752 624 y Fm(y)q(s)785 620 y Fq(;)g(\032)822 624 y Fm(xs)856 620 y Fq(;)g(\032)893 624 y Fm(s)909 620 y Fu(])120 663 y(\()p Fq(tl)q(;)g(y)q(s;)g(xs;)g (star)q(t;)h(cont)465 647 y Fk(0)475 663 y Fu(\)\))-76 746 y Fj(where)18 b Fq(\034)59 750 y Fm(c)75 746 y Fu([)p Fq(\017;)5 b(\032)138 750 y Fm(p)156 746 y Fq(;)h(\032)193 750 y Fm(s)209 746 y Fu(])11 b(=)f Fo(8)p Fu([)p Fo(\001)h(j)f Fq(\017)e Fo(\012)g(f)p Fq(\032)447 750 y Fm(p)476 746 y Fo(7!)j Fq(List)p Fo(g)p Fu(])p Fq(:)p Fu(\()p Fq(ptr)q Fu(\()p Fq(\032)738 750 y Fm(s)755 746 y Fu(\)\))d Fo(!)h Fi(0)p -76 814 V 178 881 a Fu(Figure)k(4:)k(Optimized)c(App)q(end)-76 1005 y(Hence,)g(at)g(program)h(p)q(oin)o(t)g Fj(2)p Fu(,)e(the)h(store) g(has)h(a)f(shap)q(e)h(describ)q(ed)-76 1046 y(b)o(y)d Fq(\017)s Fo(\012)r(f)p Fq(\032)65 1050 y Fm(p)94 1046 y Fo(7!)g(hS)s Fu(\(2\))p Fq(;)6 b(int;)g(ptr)q Fu(\()p Fq(\032)403 1050 y Fm(y)q(s)437 1046 y Fu(\))p Fo(ig)s(\012)s(f)p Fq(\032)561 1050 y Fm(y)q(s)605 1046 y Fo(7!)11 b Fq(List)p Fo(g)p Fu(.)16 b(The)10 b(t)o(yp)q(e)-76 1088 y(of)15 b(the)h(cons)f(cell)g(at)g Fq(\032)266 1092 y Fm(p)299 1088 y Fu(is)g(di\013eren)o(t)h(here)g(than)g(at)f Fj(1)p Fu(,)g(re\015ecting)-76 1129 y(the)c(new)g(link)g(structure)g(of)g (store.)17 b(The)10 b(tail)h(of)f(the)h(cell)g(no)g(longer)-76 1171 y(p)q(oin)o(ts)18 b(to)g(lo)q(cation)f Fq(\032)266 1175 y Fm(xs)300 1171 y Fu(,)h(but)g(to)g Fq(\032)476 1175 y Fm(y)q(s)526 1171 y Fu(instead.)31 b(After)17 b(pac)o(king)-76 1212 y(and)f(rolling)f(using)h(the)g(comp)q(osite)g (co)q(ercion,)h(the)e(store)h(can)g(b)q(e)-76 1254 y(describ)q(ed)e(b)o (y)g Fq(\017)8 b Fo(\012)g(f)p Fq(\032)249 1258 y Fm(p)278 1254 y Fo(7!)k Fq(List)p Fo(g)p Fu(.)17 b(This)c(shap)q(e)h(equals)g (the)f(shap)q(e)-76 1295 y(exp)q(ected)18 b(b)o(y)e(the)h(con)o(tin)o (uation)g(\(see)g(the)f(de\014nition)h(of)f Fq(\034)827 1299 y Fm(c)843 1295 y Fu(\),)h(so)-76 1337 y(the)c(function)h(call)e (is)h(v)n(alid.)-20 1378 y(In)18 b(the)h(second)g(branc)o(h)g(of)f(the) h(case,)g Fq(xs)f Fu(m)o(ust)g(p)q(oin)o(t)h(to)f(a)-76 1420 y(cons)11 b(cell.)16 b(The)10 b(existen)o(tial)h(con)o(taining)g (the)g(tail)f(of)g(the)h(list)f(is)g(un-)-76 1461 y(pac)o(k)o(ed)g(and) g(at)f(program)h(p)q(oin)o(t)f Fj(4)p Fu(,)g(the)g(store)g(has)h(shap)q (e)g Fq(\017)q Fo(\012)o(f)p Fq(\032)853 1465 y Fm(p)882 1461 y Fo(7!)-76 1503 y(hS)s Fu(\(2\))p Fq(;)c(int;)g(ptr)q Fu(\()p Fq(\032)184 1507 y Fm(xs)219 1503 y Fu(\))p Fo(ig)t(\012)s(f)p Fq(\032)344 1507 y Fm(xs)389 1503 y Fo(7!)11 b(hS)s Fu(\(2\))p Fq(;)6 b(int;)g(ptr)q Fu(\()p Fq(\032)698 1507 y Fm(tl)722 1503 y Fu(\))p Fo(ig)t(\012)s(f)p Fq(\032)847 1507 y Fm(tl)882 1503 y Fo(7!)-76 1545 y Fq(List)p Fo(g)j(\012)g(f)p Fq(\032)101 1549 y Fm(y)q(s)145 1545 y Fo(7!)j Fq(List)p Fo(g)p Fu(.)18 b(It)13 b(is)g(no)o(w)g(p)q(ossible)h(to)f(pro)r(ject)g (the)h(tail)-76 1586 y(of)f Fq(xs)p Fu(.)k(T)m(o)c(complete)g(the)g(lo) q(op,)h(the)f(co)q(de)h(uses)f(p)q(olymorphic)i(re-)-76 1628 y(cursion.)31 b(A)o(t)17 b(the)g(end)h(of)f(the)h(second)g(branc)o (h,)h(the)f(constrain)o(t)-76 1669 y(v)n(ariable)e Fq(\017)e Fu(for)i(the)f(next)h(iteration)f(of)g(the)h(lo)q(op)g(is)f(instan)o (tiated)-76 1711 y(with)h(the)g(curren)o(t)h Fq(\017)e Fu(and)i(the)g(con)o(ten)o(ts)f(of)g(lo)q(cation)h Fq(\032)771 1715 y Fm(p)788 1711 y Fu(,)g(hiding)-76 1752 y(the)11 b(previous)h(no)q(de)g(in)f(the)g(list.)16 b(The)11 b(lo)q(cation)g(v)n (ariables)g Fq(\032)814 1756 y Fm(xs)859 1752 y Fu(and)-76 1794 y Fq(\032)-56 1798 y Fm(p)-22 1794 y Fu(are)k(instan)o(tiated)i (to)e(re\015ect)h(the)g(shift)f(to)h(the)g(next)g(no)q(de)g(in)-76 1835 y(the)e(list.)20 b(The)13 b(lo)q(cations)i Fq(\032)336 1839 y Fm(y)q(s)383 1835 y Fu(and)f Fq(\032)478 1839 y Fm(s)509 1835 y Fu(are)g(in)o(v)n(arian)o(t)g(around)h(the)-76 1877 y(lo)q(op)e(and)h(therefore)f(are)g(instan)o(tiated)h(with)e (themselv)o(es.)-20 1918 y(The)24 b(last)g(problem)g(is)g(ho)o(w)g(to)f (de\014ne)i(the)f(con)o(tin)o(uation)-76 1960 y Fq(cont)-3 1944 y Fk(0)25 1960 y Fu(for)17 b(the)g(next)h(iteration.)29 b(The)17 b(function)h(should)g(b)q(e)f(tail-)-76 2001 y(recursiv)o(e,)k(so)e(w)o(e)f(w)o(ould)h(lik)o(e)f(to)h(use)h(the)f (con)o(tin)o(uation)h Fq(cont)p Fu(.)-76 2043 y(Ho)o(w)o(ev)o(er,)h (close)f(insp)q(ection)h(rev)o(eals)f(that)h(the)f(next)g(iteration)-76 2084 y(of)c(app)q(end)i(requires)f(a)f(con)o(tin)o(uation)h(with)f(t)o (yp)q(e)g Fq(\034)715 2088 y Fm(c)731 2084 y Fu([)p Fq(\017)10 b Fo(\012)h(f)p Fq(\032)848 2088 y Fm(p)882 2084 y Fo(7!)-76 2126 y(hS)s Fu(\(2\))p Fq(;)6 b(int;)g(ptr)q Fu(\()p Fq(\032)184 2130 y Fm(xs)219 2126 y Fu(\))p Fo(ig)p Fq(;)g(\032)305 2130 y Fm(xs)339 2126 y Fq(;)g(\032)376 2130 y Fm(s)392 2126 y Fu(])11 b(but)g(that)h(the)f(con)o(tin)o(uation)h Fq(cont)-76 2167 y Fu(has)20 b(t)o(yp)q(e)h Fq(\034)110 2171 y Fm(c)125 2167 y Fu([)p Fq(\017;)6 b(\032)189 2171 y Fm(p)207 2167 y Fq(;)g(\032)244 2171 y Fm(s)260 2167 y Fu(].)37 b(The)19 b(problem)i(is)e(that)h(this)f(iteration)-76 2209 y(of)g(the)f(recursion)i(has)f(unrolled)g(and)h(unpac)o(k)o(ed)g (the)f(recursiv)o(e)-76 2250 y(data)c(structure)f(p)q(oin)o(ted)h(to)f (b)o(y)g Fq(xs)p Fu(,)f(but)i(b)q(efore)f(\\returning")h(b)o(y)-76 2292 y(calling)e(the)g(con)o(tin)o(uation,)h(the)g(list)e(m)o(ust)i(b)q (e)f(pac)o(k)o(ed)i(and)e(rolled)-76 2333 y(bac)o(k)e(up)f(again.)16 b(Therefore,)11 b(the)f(appropriate)h(de\014nition)f(of)g Fq(cont)910 2317 y Fk(0)-76 2375 y Fu(is)15 b Fq(cont)9 b Fo(\016)g Fu(\()p Fj(rollList)t Fq(\032)274 2379 y Fm(p)298 2375 y Fj(packing)t Fq(\032)462 2379 y Fm(xs)495 2375 y Fu(\).)22 b(Once)15 b(the)g(con)o(tin)o(uation)-76 2416 y(pac)o(ks)g Fq(\032)50 2420 y Fm(xs)99 2416 y Fu(and)g(rolls)f (the)g(con)o(ten)o(ts)i(of)e(lo)q(cation)h Fq(\032)694 2420 y Fm(p)726 2416 y Fu(in)o(to)f(a)h Fq(List)p Fu(,)-76 2458 y(the)e(constrain)o(ts)h(satisfy)f(the)g(requiremen)o(ts)h(of)f (the)g(con)o(tin)o(uation)-76 2499 y Fq(cont)p Fu(.)i(Seman)o(tically)m (,)d Fq(cont)329 2483 y Fk(0)350 2499 y Fu(is)e(equiv)n(alen)o(t)i(to)f (the)g(follo)o(wing)f(func-)-76 2541 y(tion.)1076 -47 y Fj(fix)p 1144 -47 12 2 v 26 w Fu([)p Fo(\001)g(j)g Fq(\017)e Fo(\012)g(f)p Fq(\032)1316 -43 y Fm(p)1345 -47 y Fo(7!)j(hS)s Fu(\(2\))p Fq(;)6 b(int;)g(ptr)q Fu(\()p Fq(\032)1654 -43 y Fm(xs)1689 -47 y Fu(\))p Fo(igf)p Fq(\032)1777 -43 y Fm(xs)1821 -47 y Fo(7!)12 b Fq(List)p Fo(g)p Fu(])1134 -5 y(\()p Fq(star)q(t)p Fu(:)p Fq(ptr)q Fu(\()p Fq(\032)1330 -1 y Fm(s)1347 -5 y Fu(\)\))p Fq(:)1134 36 y Fj(rollList)s Fq(\032)1317 40 y Fm(p)1341 36 y Fj(packing)t Fq(\032)1505 40 y Fm(xs)1539 36 y Fu(;)1134 78 y Fq(cont)p Fu(\()p Fq(star)q(t)p Fu(\))1020 120 y(Ho)o(w)o(ev)o(er,)h(b)q(ecause)i (co)q(ercions)f(can)g(b)q(e)g(erased)h(b)q(efore)e(running)i(a)1020 162 y(program,)d(it)e(is)h(simple)g(to)g(arrange)h(for)e Fq(cont)1685 146 y Fk(0)1707 162 y Fu(to)h(b)q(e)g(implemen)o(ted)1020 203 y(b)o(y)i Fq(cont)p Fu(.)1020 297 y Fv(4.2)41 b(Deutsch-Scho)o (rr-W)o(aite)11 b(Algo)o(rithms)1020 363 y Fu(Deutsc)o(h-Sc)o(horr-W)m (aite)26 b(or)f(\\link)g(rev)o(ersal")g(algorithms,)j(are)1020 404 y(w)o(ell-kno)o(wn)15 b(algorithms)h(for)f(tra)o(v)o(ersing)h(data) g(structures)g(while)1020 446 y(incurring)h(minimal)f(additional)h (space)h(o)o(v)o(erhead.)29 b(These)17 b(algo-)1020 487 y(rithms)12 b(w)o(ere)g(\014rst)h(dev)o(elop)q(ed)h(for)e(executing)h (the)f(mark)h(phase)g(of)1020 529 y(a)g(garbage)h(collector)f([28].)k (During)d(garbage)g(collection,)f(there)h(is)1020 570 y(little)c(or)i(no)g(extra)f(space)h(a)o(v)n(ailable)g(for)f(storing)h (con)o(trol)f(informa-)1020 612 y(tion,)i(so)g(minimizing)g(the)h(o)o (v)o(erhead)g(of)f(the)h(tra)o(v)o(ersal)f(is)g(a)g(m)o(ust.)1020 653 y(Recen)o(t)h(w)o(ork)f(b)o(y)g(Sob)q(el)g(and)h(F)m(riedman)g ([30])e(has)i(sho)o(wn)f(ho)o(w)g(to)1020 695 y(automatically)k (transform)h(certain)f(con)o(tin)o(uation-passing)h(st)o(yle)1020 736 y(programs,)13 b(those)g(generated)h(b)o(y)f Fr(anamorphisms)c Fu([17)q(],)i(in)o(to)i(link-)1020 778 y(rev)o(ersal)e(algorithms.)16 b(Here)10 b(w)o(e)g(giv)o(e)h(an)f(example)h(ho)o(w)g(to)f(enco)q(de) 1020 819 y(a)j(link-rev)o(ersal)g(algorithm)g(in)g(our)g(calculus.)1076 861 y(F)m(or)j(this)h(application,)g(w)o(e)f(will)f(use)i(the)g (de\014nition)g(of)f(trees)1020 902 y(from)d(section)g(2.)1098 973 y Fq(T)5 b(r)q(ee)11 b Fu(=)1174 1014 y Fq(\026\013:)p Fo(hS)s Fu(\(1\))p Fo(i)d([)g(9)p Fu([)p Fq(\032)1432 1018 y Fm(L)1455 1014 y Fq(;)e(\032)1492 1018 y Fm(R)1528 1014 y Fo(j)k(f)p Fq(\032)1588 1018 y Fm(L)1622 1014 y Fo(7!)h Fq(\013;)6 b(\032)1733 1018 y Fm(R)1769 1014 y Fo(7!)11 b Fq(\013)p Fo(g)p Fu(])p Fq(:)1405 1056 y Fo(hS)s Fu(\(2\))p Fq(;)6 b(ptr)q Fu(\()p Fq(\032)1598 1060 y Fm(L)1621 1056 y Fu(\))p Fq(;)g(ptr)q Fu(\()p Fq(\032)1739 1060 y Fm(R)1765 1056 y Fu(\))p Fo(i)1098 1140 y Fq(T)f(r)q(ee)1179 1124 y Fk(0)1201 1140 y Fu(=)1174 1181 y Fo(hS)s Fu(\(1\))p Fo(i)k([)f(9)p Fu([)p Fq(\032)1374 1185 y Fm(L)1397 1181 y Fq(;)e(\032)1434 1185 y Fm(R)1470 1181 y Fo(j)k(f)p Fq(\032)1530 1185 y Fm(L)1564 1181 y Fo(7!)h Fq(T)5 b(r)q(ee;)i(\032)1732 1185 y Fm(R)1767 1181 y Fo(7!)k Fq(T)5 b(r)q(ee)p Fo(g)p Fu(])p Fq(:)1405 1223 y Fo(hS)s Fu(\(2\))p Fq(;)h(ptr)q Fu(\()p Fq(\032)1598 1227 y Fm(L)1621 1223 y Fu(\))p Fq(;)g(ptr)q Fu(\()p Fq(\032)1739 1227 y Fm(R)1765 1223 y Fu(\))p Fo(i)1076 1303 y Fu(The)19 b(co)q(de)h(for)e(the)h(algorithm)g(app)q(ears)i(in)d (\014gure)i(5.)35 b(The)1020 1344 y(tric)o(k)16 b(to)g(the)h(algorithm) f(is)g(that)h(when)f(recursing)h(in)o(to)f(the)h(left)1020 1386 y(subtree,)12 b(it)e(uses)h(space)g(normally)g(reserv)o(ed)g(for)g (a)f(p)q(oin)o(ter)h(to)g(that)1020 1427 y(subtree)16 b(to)f(p)q(oin)o(t)h(bac)o(k)f(to)h(the)f(paren)o(t)h(no)q(de.)24 b(Similarly)m(,)15 b(when)1020 1469 y(recursing)j(in)o(to)g(the)g(righ) o(t)g(subtree,)h(it)e(uses)h(the)g(space)g(for)g(the)1020 1510 y(righ)o(t)12 b(p)q(oin)o(ter.)17 b(In)12 b(b)q(oth)h(cases,)f(it) g(uses)h(the)f(tag)g(\014eld)g(of)g(the)h(data)1020 1552 y(structure)e(to)e(store)h(a)g(con)o(tin)o(uation)h(that)f(kno)o(ws)g (what)g(to)g(do)g(next)1020 1593 y(\(recurse)h(in)o(to)f(righ)o(t)g (subtree)h(or)g(follo)o(w)e(the)i(paren)o(t)g(p)q(oin)o(ters)g(bac)o(k) 1020 1635 y(up)j(the)g(tree\).)19 b(Before)13 b(ascending)i(bac)o(k)f (up)h(out)e(of)h(the)g(tree,)f(the)1020 1676 y(algorithm)g(restores)g (the)g(link)g(structure)h(to)f(a)g(prop)q(er)g(tree)g(shap)q(e)1020 1718 y(and)18 b(the)f(t)o(yp)q(e)g(system)h(c)o(hec)o(ks)g(this)e(is)h (done)h(prop)q(erly)m(.)30 b(Notice)1020 1759 y(that)19 b(all)e(of)i(the)f(functions)h(and)g(con)o(tin)o(uations)h(are)e (closed,)i(so)1020 1801 y(there)13 b(is)g(no)g(stac)o(k)h(hiding)f(in)g (the)g(closures.)1020 1899 y Fv(5)41 b(Op)q(erational)11 b(Semantics)i(and)h(T)m(yp)q(e)f(Soundness)1020 1977 y Fu(In)k(this)g(section,)h(w)o(e)e(de\014ne)i(the)g(syn)o(tax)f(and)h (static)f(seman)o(tics)1020 2019 y(of)f(the)g(v)n(alues)h(manipulated)g (at)f(run-time,)g(including)h(p)q(oin)o(ters,)1020 2060 y(memory)h(blo)q(c)o(ks)g(and)h(the)f(store)g(and)g(giv)o(e)g(an)g(op)q (erational)g(se-)1020 2102 y(man)o(tics)f(for)f(the)g(language.)28 b(The)17 b(t)o(yp)q(e)f(system)h(is)f(sound)i(with)1020 2143 y(resp)q(ect)c(to)e(this)h(seman)o(tics.)1020 2237 y Fv(Run-time)d(V)o(alues)38 b Fu(The)9 b(run-time)h(v)n(alues)g (consist)g(of)g(all)f(the)h(v)n(al-)1020 2278 y(ues)16 b(de\014ned)h(in)e(previous)h(sections)g(as)f(w)o(ell)g(as)g(p)q(oin)o (ters)h Fj(ptr)o Fu(\()p Fq(`)p Fu(\),)1020 2320 y(memory)c(blo)q(c)o (ks)h Fo(h)p Fq(v)1317 2324 y Fp(1)1334 2320 y Fq(;)6 b(:)g(:)g(:)g(;)g(v)1438 2324 y Fm(n)1459 2320 y Fo(i)11 b Fu(and)i(witnessed)f(v)n(alues)g Fq(&)s Fu(\()p Fq(v)q Fu(\).)k(Wit-)1020 2361 y(nessed)c(v)n(alues)g(are)g(in)o(tro)q(duced)g (b)o(y)g(co)q(ercions.)17 b(F)m(or)11 b(example,)h(the)1020 2403 y(union)i(co)q(ercion)g(in)o(tro)q(duces)g(a)f(union)h(witness)f (and)h(similarly)e(for)1020 2444 y(roll)f(and)i(pac)o(k)g(co)q (ercions.)k(Notice)12 b(that)g(these)h(v)n(alues)f(are)g(alw)o(a)o(ys) 1020 2486 y(t)o(yp)q(e)19 b(c)o(hec)o(k)o(ed)h(in)e(an)i(empt)o(y)f(t)o (yp)q(e)g(con)o(text)g(and)h(empt)o(y)f(v)n(alue)1020 2527 y(con)o(text)14 b(\(ev)n(aluation)f(of)g(op)q(en)h(terms)f(is)f (nonsensical\).)961 2747 y(8)p eop %%Page: 9 9 9 8 bop -76 -18 997 2 v -76 53 a Fj(\045)39 b(Traverse)17 b(a)i(tree)f(node)-76 95 y(letrec)t Fq(w)q(al)q(k)q Fu([)p Fq(\017;)6 b(\032)194 99 y Fp(1)211 95 y Fq(;)g(\032)248 99 y Fp(2)275 95 y Fo(j)11 b Fq(\017)d Fo(\012)g(f)p Fq(\032)398 99 y Fp(1)426 95 y Fo(7!)j Fq(T)5 b(r)q(ee)p Fo(g)p Fu(])97 136 y(\()p Fq(t)10 b Fu(:)h Fq(ptr)q Fu(\()p Fq(\032)244 140 y Fp(1)261 136 y Fu(\))p Fq(;)6 b(up)11 b Fu(:)g Fq(ptr)q Fu(\()p Fq(\032)453 140 y Fp(2)470 136 y Fu(\))p Fq(;)6 b(cont)k Fu(:)g Fq(\034)623 140 y Fm(c)639 136 y Fu([)p Fq(\017;)c(\032)703 140 y Fp(1)720 136 y Fq(;)g(\032)757 140 y Fp(2)774 136 y Fu(]\).)-18 178 y Fj(unroll)m Fu(\()p Fq(\032)134 182 y Fp(1)151 178 y Fu(\);)-18 219 y Fj(case)f Fq(t)h Fj(of)39 261 y Fu(\()13 b Fj(inl)f Fu(=)-6 b Fo(\))97 302 y Fj(union)195 308 y Fm(T)t(r)q(ee)262 301 y Ft(0)275 302 y Fu(\()p Fq(\032)310 306 y Fp(1)327 302 y Fu(\);)97 344 y Fj(roll)175 348 y Fm(T)t(r)q(ee)244 344 y Fu(\()p Fq(\032)279 348 y Fp(1)296 344 y Fu(\);)97 385 y Fq(cont)p Fu(\()p Fq(t;)5 b(up)p Fu(\))39 427 y Fo(j)13 b Fj(inr)e Fu(=)-6 b Fo(\))97 468 y Fj(unpack)t Fq(\032)241 472 y Fp(1)264 468 y Fj(with)5 b Fq(\032)369 472 y Fm(L)392 468 y Fq(;)h(\032)429 472 y Fm(R)461 468 y Fu(;)97 510 y Fj(\045)19 b(store)f Fq(cont)h Fj(in)g(tag)f(position)97 551 y Fu(\()p Fq(t)p Fu(\))p Fq(:)p Fu(1)10 b(:=)g Fq(cont)p Fu(;)97 593 y Fj(let)f Fq(l)q(ef)t(t)i Fu(=)f(\()p Fq(t)p Fu(\))p Fq(:)p Fu(2;)97 634 y Fj(\045)19 b(store)f(parent)f(pointer)g(as)i(left)f(subtree)97 676 y Fu(\()p Fq(t)p Fu(\))p Fq(:)p Fu(2)10 b(:=)g Fq(up)p Fu(;)97 717 y Fq(w)q(al)q(k)q Fu([)p Fq(\017)p Fo(\012)187 759 y(f)p Fq(\032)226 763 y Fp(1)253 759 y Fo(7!)i(h)p Fq(\034)335 763 y Fm(c)350 759 y Fu([)p Fq(\017;)6 b(\032)414 763 y Fp(1)431 759 y Fq(;)g(\032)468 763 y Fp(2)485 759 y Fu(])p Fq(;)g(ptr)q Fu(\()p Fq(\032)599 763 y Fp(2)616 759 y Fu(\))p Fq(;)g(ptr)q Fu(\()p Fq(\032)734 763 y Fm(R)760 759 y Fu(\))p Fo(ig\012)187 800 y(f)p Fq(\032)226 804 y Fm(R)261 800 y Fo(7!)11 b Fq(T)5 b(r)q(ee)p Fo(g)p Fq(;)i(\032)448 804 y Fm(L)471 800 y Fq(;)f(\032)508 804 y Fp(1)526 800 y Fu(])161 842 y(\()p Fq(l)q(ef)t(t;)f(t;)h(r)q(w)q (al)q(k)q Fu([)p Fq(\017;)g(\032)454 846 y Fp(1)471 842 y Fq(;)g(\032)508 846 y Fp(2)525 842 y Fq(;)g(\032)562 846 y Fm(L)585 842 y Fq(;)g(\032)622 846 y Fm(R)647 842 y Fu(]\)\))-76 925 y Fj(\045)39 b(Walk)18 b(the)h(right-ha)o(nd)d (subtree)-76 966 y(and)5 b Fq(r)q(w)q(al)q(k)q Fu([)p Fq(\017;)h(\032)153 970 y Fp(1)170 966 y Fq(;)g(\032)207 970 y Fp(2)224 966 y Fq(;)g(\032)261 970 y Fm(L)284 966 y Fq(;)g(\032)321 970 y Fm(R)357 966 y Fo(j)k Fq(\017)p Fo(\012)39 1008 y(f)p Fq(\032)78 1012 y Fp(1)106 1008 y Fo(7!)h(h)p Fq(\034)187 1012 y Fm(c)203 1008 y Fu([)p Fq(\017;)5 b(\032)266 1012 y Fp(1)284 1008 y Fq(;)h(\032)321 1012 y Fp(2)338 1008 y Fu(])p Fq(;)f(ptr)q Fu(\()p Fq(\032)451 1012 y Fp(2)469 1008 y Fu(\))p Fq(;)h(ptr)q Fu(\()p Fq(\032)587 1012 y Fm(R)612 1008 y Fu(\))p Fo(ig\012)39 1049 y(f)p Fq(\032)78 1053 y Fm(L)112 1049 y Fo(7!)11 b Fq(T)5 b(r)q(ee)p Fo(g\012)39 1091 y(f)p Fq(\032)78 1095 y Fm(R)114 1091 y Fo(7!)11 b Fq(T)5 b(r)q(ee)p Fo(g)p Fu(])39 1132 y(\()p Fq(l)q(ef)t(t)10 b Fu(:)h Fq(ptr)q Fu(\()p Fq(\032)239 1136 y Fm(L)262 1132 y Fu(\))p Fq(;)6 b(t)11 b Fu(:)f Fq(ptr)q Fu(\()p Fq(\032)426 1136 y Fp(1)444 1132 y Fu(\)\).)-18 1174 y Fj(let)f Fq(up)i Fu(=)g(\()p Fq(t)p Fu(\))p Fq(:)p Fu(2;)-18 1215 y Fj(\045)19 b(restore)e(left)h(subtree)-18 1257 y Fu(\()p Fq(t)p Fu(\))p Fq(:)p Fu(2)10 b(:=)g Fq(l)q(ef)t(t)p Fu(;)-18 1298 y Fj(let)f Fq(r)q(ig)q(ht)j Fu(=)f(\()p Fq(t)p Fu(\))p Fq(:)p Fu(3;)-18 1340 y Fj(\045)19 b(store)f(parent)f (pointer)g(as)i(right)e(subtree)-18 1381 y Fu(\()p Fq(t)p Fu(\))p Fq(:)p Fu(3)10 b(:=)g Fq(up)p Fu(;)-18 1423 y Fq(w)q(al)q(k)q Fu([)p Fq(\017)p Fo(\012)65 1464 y(f)p Fq(\032)104 1468 y Fp(1)132 1464 y Fo(7!)h(h)p Fq(\034)213 1468 y Fm(c)229 1464 y Fu([)p Fq(\017;)5 b(\032)292 1468 y Fp(1)309 1464 y Fq(;)h(\032)346 1468 y Fp(2)363 1464 y Fu(])p Fq(;)g(ptr)q Fu(\()p Fq(\032)477 1468 y Fm(L)500 1464 y Fu(\))p Fq(;)g(ptr)q Fu(\()p Fq(\032)618 1468 y Fp(2)636 1464 y Fu(\))p Fo(ig\012)65 1506 y(f)p Fq(\032)104 1510 y Fm(L)138 1506 y Fo(7!)11 b Fq(T)5 b(r)q(ee)p Fo(g)p Fq(;)i(\032)325 1510 y Fm(R)350 1506 y Fq(;)f(\032)387 1510 y Fp(1)404 1506 y Fu(])39 1547 y(\()p Fq(r)q(ig)q(ht;)h(t;)f(f)t (inish)p Fu([)p Fq(\017;)g(\032)365 1551 y Fp(1)382 1547 y Fq(;)g(\032)419 1551 y Fp(2)436 1547 y Fq(;)g(\032)473 1551 y Fm(L)496 1547 y Fq(;)g(\032)533 1551 y Fm(R)558 1547 y Fu(]\))-76 1630 y Fj(\045)39 b(Reconstruc)o(t)16 b(tree)i(node)h(and)f(return)-76 1672 y(and)5 b Fq(f)t(inish)p Fu([)p Fq(\017;)h(\032)165 1676 y Fp(1)182 1672 y Fq(;)g(\032)219 1676 y Fp(2)236 1672 y Fq(;)g(\032)273 1676 y Fm(L)296 1672 y Fq(;)g(\032)333 1676 y Fm(R)369 1672 y Fo(j)k Fq(\017)p Fo(\012)59 1713 y(f)p Fq(\032)98 1717 y Fp(1)125 1713 y Fo(7!)i(h)p Fq(\034)207 1717 y Fm(c)222 1713 y Fu([)p Fq(\017;)6 b(\032)286 1717 y Fp(1)303 1713 y Fq(;)g(\032)340 1717 y Fp(2)357 1713 y Fu(])p Fq(;)g(ptr)q Fu(\()p Fq(\032)471 1717 y Fm(L)494 1713 y Fu(\))p Fq(;)g(ptr)q Fu(\()p Fq(\032)612 1717 y Fp(2)630 1713 y Fu(\))p Fo(ig\012)59 1755 y(f)p Fq(\032)98 1759 y Fm(L)131 1755 y Fo(7!)11 b Fq(T)5 b(r)q(ee)p Fo(g\012)59 1796 y(f)p Fq(\032)98 1800 y Fm(R)133 1796 y Fo(7!)11 b Fq(T)5 b(r)q(ee)p Fo(g)p Fu(])59 1838 y(\()p Fq(r)q(ig)q(ht)11 b Fu(:)g Fq(ptr)q Fu(\()p Fq(\032)279 1842 y Fm(R)304 1838 y Fu(\))p Fq(;)6 b(t)11 b Fu(:)f Fq(ptr)q Fu(\()p Fq(\032)468 1842 y Fp(1)485 1838 y Fu(\)\).)-18 1879 y Fj(let)f Fq(up)i Fu(=)g(\()p Fq(t)p Fu(\))p Fq(:)p Fu(3;)-18 1921 y Fj(\045)19 b(restore)e(right)h(subtree)-18 1963 y Fu(\()p Fq(t)p Fu(\))p Fq(:)p Fu(3)10 b(:=)g Fq(r)q(ig)q(ht)p Fu(;)-18 2004 y Fj(let)f Fq(cont)h Fu(=)h(\()p Fq(t)p Fu(\))p Fq(:)p Fu(1;)-18 2046 y Fj(\045)19 b(restore)e(tag)-18 2087 y Fu(\()p Fq(t)p Fu(\))p Fq(:)p Fu(1)10 b(:=)g Fo(S)s Fu(\(2\);)-18 2129 y Fj(pack)60 2139 y Fm(\032)76 2145 y Ff(L)98 2139 y Fm(;\032)123 2145 y Ff(R)149 2129 y Fu(\()p Fq(\032)184 2133 y Fp(1)201 2129 y Fu(\);)-18 2174 y Fj(union)80 2180 y Fm(T)t(r)q(ee)147 2173 y Ft(0)160 2174 y Fu(\()p Fq(\032)195 2178 y Fp(1)212 2174 y Fu(\);)-18 2215 y Fj(roll)60 2219 y Fm(T)t(r)q(ee)129 2215 y Fu(\()p Fq(\032)164 2219 y Fp(1)181 2215 y Fu(\);)-18 2257 y Fq(cont)p Fu(\()p Fq(t;)5 b(up)p Fu(\))-76 2340 y(where)13 b Fq(\034)52 2344 y Fm(c)68 2340 y Fu([)p Fq(\017;)5 b(\032)131 2344 y Fp(1)148 2340 y Fq(;)i(\032)186 2344 y Fp(2)203 2340 y Fu(])j(=)1 2381 y Fo(8)p Fu([)p Fo(\001)g(j)h Fq(\017)d Fo(\012)g(f)p Fq(\032)177 2385 y Fp(1)205 2381 y Fo(7!)j Fq(T)5 b(r)q(ee)p Fo(g)p Fu(])p Fq(:)p Fu(\()p Fq(ptr)q Fu(\()p Fq(\032)477 2385 y Fp(1)495 2381 y Fu(\))p Fq(;)h(ptr)q Fu(\()p Fq(\032)613 2385 y Fp(2)630 2381 y Fu(\)\))j Fo(!)g Fi(0)p -76 2450 V -76 2517 a Fu(Figure)i(5:)k (Deutsc)o(h-Sc)o(horr-W)m(aite)d(tree)e(tra)o(v)o(ersal)h(with)e (constan)o(t)-76 2558 y(space)14 b(o)o(v)o(erhead)1088 27 y Fr(values)89 b Fq(v)39 b Fu(::=)d Fo(\001)6 b(\001)g(\001)11 b(j)f Fj(ptr)o Fu(\()p Fq(`)p Fu(\))g Fo(j)h(h)p Fq(v)1674 31 y Fp(1)1691 27 y Fq(;)6 b(:)g(:)g(:)g(;)g(v)1795 31 y Fm(n)1816 27 y Fo(i)k(j)h Fq(&)s Fu(\()p Fq(v)q Fu(\))1088 69 y Fr(witnesses)39 b Fq(&)i Fu(::=)36 b Fj(union)1524 73 y Fm(\034)1538 78 y Fl(1)1555 73 y Fk([)p Fm(\034)1590 78 y Fl(2)1619 69 y Fo(j)1426 111 y Fj(pack)1505 121 y Fp([)p Fm(c)1528 126 y Fl(1)1544 121 y Fm(;:::)r(;c)1605 125 y Ff(n)1625 121 y Fk(j)p Fm(S)q Fp(])p Fg(as)q Fk(9)p Fp([\001)p Fk(j)p Fm(C)r Fp(])p Fm(:\034)1823 111 y Fo(j)1426 156 y Fj(roll)1505 162 y Fp(\()p Fg(rec)6 b Fm(\013)f Fp(\(\001\))p Fm(:\034)s Fp(\))h(\()p Fm(c)1706 167 y Fl(1)1722 162 y Fm(;:::)r(;c)1783 166 y Ff(n)1804 162 y Fp(\))1116 256 y Fo(\001)11 b(`)g Fq(\034)1189 260 y Fp(1)1215 256 y Fo([)d Fq(\034)1266 260 y Fp(2)1294 256 y Fu(:)i Fj(Type)75 b Fo(\001)p Fu(;)6 b Fo(\001)k(`)h Fq(v)h Fu(:)e Fq(\034)1622 260 y Fp(1)1678 256 y Fu(or)39 b Fo(\001)p Fu(;)5 b Fo(\001)11 b(`)g Fq(v)g Fu(:)g Fq(\034)1903 260 y Fp(2)p 1116 274 804 2 v 1289 311 a Fo(\001)p Fu(;)6 b Fo(\001)k(`)h Fj(union)1470 315 y Fm(\034)1484 320 y Fl(1)1501 315 y Fk([)p Fm(\034)1536 320 y Fl(2)1554 311 y Fu(\()p Fq(v)q Fu(\))g(:)f Fq(\034)1653 315 y Fp(1)1679 311 y Fo([)e Fq(\034)1730 315 y Fp(2)1187 411 y Fo(\001)i(`)h Fq(\034)k Fu(=)c(\()p Fj(rec)5 b Fq(\013)h Fu(\(\001\))p Fq(:\034)1520 395 y Fk(0)1531 411 y Fu(\))g(\()p Fq(c)1584 415 y Fp(1)1601 411 y Fq(;)g(:)g(:)g(:)g(;)g(c)1703 415 y Fm(n)1724 411 y Fu(\))11 b(:)f Fj(Type)1186 453 y Fo(\001)p Fu(;)c Fo(\001)k(`)i Fq(v)f Fu(:)g Fq(\034)1343 437 y Fk(0)1354 453 y Fu([)p Fj(rec)5 b Fq(\013)h Fu(\(\001\))p Fq(:\034)1555 437 y Fk(0)1566 453 y Fq(=\013)p Fu(][)p Fq(c)1649 457 y Fp(1)1665 453 y Fq(;)g(:)g(:)g(:)g(;)g(c)1767 457 y Fm(n)1788 453 y Fq(=)p Fu(\001])p 1168 476 701 2 v 1376 512 a Fo(\001)p Fu(;)g Fo(\001)k(`)h Fj(roll)1538 516 y Fm(\034)1557 512 y Fu(\()p Fq(v)q Fu(\))g(:)f Fq(\034)1084 612 y Fu(\001)g(=)h Fq(\014)1189 616 y Fp(1)1206 612 y Fu(:)p Fq(\024)1239 616 y Fp(1)1256 612 y Fq(;)6 b(:)g(:)g(:)g(;)g (\014)1363 616 y Fm(n)1384 612 y Fu(:)p Fq(\024)1417 616 y Fm(n)1515 612 y Fo(\001)k(`)i Fq(c)1588 616 y Fm(i)1611 612 y Fu(:)e Fq(\024)1654 616 y Fm(i)1706 612 y Fu(\(for)j(1)e Fo(\024)f Fq(i)h Fo(\024)f Fq(n)p Fu(\))1111 653 y Fo(`)h Fq(S)i Fu(:)e Fq(C)s Fu([)p Fq(c)1261 657 y Fp(1)1277 653 y Fq(;)6 b(:)h(:)f(:)g(;)g(c)1380 657 y Fm(n)1401 653 y Fq(=)p Fu(\001])76 b Fo(\001)p Fu(;)6 b Fo(\001)k(`)h Fq(v)h Fu(:)e Fq(\034)t Fu([)p Fq(c)1723 657 y Fp(1)1740 653 y Fq(;)c(:)g(:)g(:)g(;)h(c)1843 657 y Fm(n)1863 653 y Fq(=)p Fu(\001])p 1065 676 907 2 v 1158 712 a Fo(\001)p Fu(;)f Fo(\001)11 b(`)g Fj(pack)1320 722 y Fp([)p Fm(c)1343 727 y Fl(1)1359 722 y Fm(;:::)r(;c)1420 726 y Ff(n)1441 722 y Fk(j)p Fm(S)q Fp(])p Fg(as)p Fk(9)p Fp([\001)p Fk(j)p Fm(C)r Fp(])p Fm(:\034)1627 712 y Fu(\()p Fq(v)q Fu(\))g(:)f Fo(9)p Fu([\001)h Fo(j)f Fq(C)s Fu(])p Fq(:\034)1076 787 y Fu(The)17 b(pac)o(k)g(co)q(ercion)g(encapsulates)h(a)f(p)q (ortion)g(of)f(the)h(store,)1020 829 y Fq(S)r Fu(,)c(whic)o(h)f(is)g(a) h(\014nite)g(partial)f(mapping)h(from)g(concrete)g(lo)q(cations)1020 870 y(to)18 b(v)n(alues.)31 b(W)m(e)18 b(treat)f(stores)h(equiv)n(alen) o(t)g(up)g(to)g(reordering)g(of)1020 912 y(their)12 b(elemen)o(ts)g (and)g(use)h(the)f(notation)g Fq(S)r Fo(f)p Fq(`)f Fo(7!)h Fq(v)q Fo(g)f Fu(to)h(denote)h(the)1020 953 y(extension)i(of)e Fq(S)k Fu(to)d(include)g(the)g(mapping)h Fo(f)p Fq(`)d Fo(7!)g Fq(v)q Fo(g)p Fu(.)20 b(The)14 b(nota-)1020 995 y(tion)f(is)g(unde\014ned)i(if)e Fq(`)e Fo(2)g Fr(Dom)s Fu(\()p Fq(S)r Fu(\).)18 b(The)13 b(store)g(w)o(ell-formedness)1020 1036 y(judgemen)o(t)h(is)e(written)h Fo(`)e Fq(S)i Fu(:)e Fq(C)k Fu(and)f(is)f(giv)o(en)g(b)q(elo)o(w.)1285 1105 y Fq(S)g Fu(=)e Fo(f)p Fq(`)1397 1109 y Fp(1)1425 1105 y Fo(7!)g Fq(v)1493 1109 y Fp(1)1510 1105 y Fq(;)6 b(:)g(:)g(:)g(;)g(`) 1611 1109 y Fm(n)1643 1105 y Fo(7!)11 b Fq(v)1711 1109 y Fm(n)1732 1105 y Fo(g)1192 1147 y(\001)f(`)h Fq(C)j Fu(=)d Fo(f)p Fq(`)1364 1151 y Fp(1)1392 1147 y Fo(7!)g Fq(\034)1458 1151 y Fp(1)1475 1147 y Fq(;)6 b(:)g(:)g(:)g(;)g(`)1576 1151 y Fm(n)1608 1147 y Fo(7!)11 b Fq(\034)1674 1151 y Fm(n)1695 1147 y Fo(g)g Fu(:)f Fj(Store)1268 1188 y Fo(\001)p Fu(;)c Fo(\001)k(`)h Fq(v)1370 1192 y Fm(i)1394 1188 y Fu(:)f Fq(\034)1432 1192 y Fm(i)1522 1188 y Fu(\(for)j(1)d Fo(\024)h Fq(i)g Fo(\024)f Fq(n)p Fu(\))p 1173 1211 690 2 v 1457 1245 a Fo(`)h Fq(S)j Fu(:)c Fq(C)1076 1315 y Fu(There)h(are)g(no)g(duplicate)h(lo)q(cations)f(in)g(the)g(domain)g (of)g(a)g(store)1020 1357 y(\(otherwise,)i(it)g(w)o(ould)h(not)g(b)q(e) g(a)f(\014nite)h(partial)g(map\).)19 b(Ho)o(w)o(ev)o(er,)1020 1398 y(w)o(e)c(will)f(require)i(a)f(stronger)i(prop)q(ert)o(y)f(of)g (stores)f(to)h(pro)o(v)o(e)g(that)1020 1440 y(program)e(ev)n(aluation)g (cannot)g(get)f(stuc)o(k.)19 b(Informally)m(,)12 b(there)i(can)1020 1481 y(b)q(e)k(no)g(duplication)g(of)f(lo)q(cations)h(in)g(the)g (domain)g(of)f(the)h(store)1020 1523 y(or)d(in)g(an)o(y)g(encapsulated) i(store.)23 b(W)m(e)15 b(call)f(this)h(prop)q(ert)o(y)h Fr(Glob)n(al)1020 1564 y(Uniqueness)o Fu(.)1020 1634 y Fi(De\014nition)e(1)h(\(Global)h(Uniqueness\))21 b Fj(GU)p Fu(\()p Fq(S)r Fu(\))16 b Fr(if)g(and)f(only)g(if)1020 1676 y(ther)n(e)e(ar)n(e)g(no)g(duplic)n(ate)d(lo)n(c)n(ations)h(in)i Fj(L)p Fu(\()p Fq(S)r Fu(\))p Fr(.)1020 1746 y Fi(De\014nition)h(2)h (\(Global)h(Store)f(Lo)q(cations\))21 b Fj(L)p Fu(\()p Fq(S)r Fu(\))51 b Fr(is)f(the)1020 1787 y(multi-set)12 b(given)g(by)h(the)f(fol)r(lowing)g(de\014nition.)1101 1856 y Fj(L)p Fu(\()p Fo(f)p Fq(`)1171 1860 y Fp(1)1199 1856 y Fo(7!)f Fq(v)1267 1860 y Fp(1)1284 1856 y Fq(;)6 b(:)g(:)g(:)g(;)g(`)1385 1860 y Fm(n)1417 1856 y Fo(7!)11 b Fq(v)1485 1860 y Fm(n)1506 1856 y Fo(g)p Fu(\))1180 1898 y(=)f Fo(f)p Fq(`)1255 1902 y Fp(1)1272 1898 y Fq(;)c(:)h(:)f(:)g (;)g(`)1374 1902 y Fm(n)1395 1898 y Fo(g)j(])f Fj(L)p Fu(\()p Fq(v)1511 1902 y Fp(1)1527 1898 y Fu(\))h Fo(])f(\001)e(\001)g (\001)i(])g Fj(L)p Fu(\()p Fq(v)1726 1902 y Fm(n)1747 1898 y Fu(\))1101 1939 y Fj(L)p Fu(\()p Fj(pack)1214 1950 y Fp([)p Fm(c)1237 1955 y Fl(1)1253 1950 y Fm(;:::)r(;c)1314 1954 y Ff(n)1335 1950 y Fk(j)p Fm(S)q Fp(])p Fg(as)p Fm(\034)1419 1939 y Fu(\()p Fq(v)q Fu(\)\))1180 1985 y(=)i Fj(L)p Fu(\()p Fq(S)r Fu(\))f Fo(])f Fj(L)p Fu(\()p Fq(v)q Fu(\))1101 2068 y Fj(L)p Fu(\()p Fq(x)p Fu(\))i(=)h Fj(L)p Fu(\()p Fq(x)1281 2072 y Fp(1)1297 2068 y Fu(\))e Fo(])f(\001)e(\001)g(\001)i(])g Fj(L)p Fu(\()p Fq(x)1499 2072 y Fm(n)1520 2068 y Fu(\))1180 2109 y Fr(for)13 b(any)f(other)h (term)g(c)n(onstruct)f Fq(x)1180 2151 y Fr(wher)n(e)h Fq(x)1310 2155 y Fp(1)1327 2151 y Fq(;)6 b(:)g(:)g(:)g(;)g(x)1434 2155 y Fm(n)1469 2151 y Fr(ar)n(e)13 b(the)g(sub)n(c)n(omp)n(onen)o(ts) e(of)i Fq(x)p Fr(.)1076 2222 y Fu(A)g(program)h(is)f(a)h(store)f (paired)h(with)f(an)g(instruction)h(stream.)1020 2263 y(A)c(program)i(is)e(w)o(ell-formed,)g(written)g Fo(`)h Fu(\()p Fq(S;)c(\023)p Fu(\),)j(under)i(the)e(follo)o(w-)1020 2305 y(ing)j(circumstances.)1020 2375 y Fi(De\014nition)h(3)h(\(W)l (ell-formed)g(Program\))22 b Fo(`)12 b Fu(\()p Fq(S;)6 b(\023)p Fu(\))13 b Fr(i\013)1051 2439 y(1.)20 b(The)13 b(stor)n(e)g(adher)n(es)f(to)h(glob)n(al)f(uniquenes)o(s)f Fj(GU)p Fr(\(S\).)1051 2506 y(2.)20 b(Ther)n(e)13 b(exists)f(c)n(onstr) n(aints)f Fq(C)17 b Fr(such)12 b(that)g Fo(`)f Fq(S)j Fu(:)c Fq(C)s Fr(.)1051 2574 y(3.)20 b(The)e(instructions)e(ar)n(e)i (wel)r(l-forme)n(d)f(with)h(the)g(given)f(c)n(on-)1103 2615 y(str)n(aints:)e Fo(\001)p Fu(;)6 b Fq(C)s Fu(;)g Fo(\001)11 b(`)g Fq(\023)p Fr(.)961 2747 y Fu(9)p eop %%Page: 10 10 10 9 bop -76 -74 2093 2 v -76 -61 303 2 v -76 -1 2 60 v -63 -21 a Fu(\()p Fq(S;)6 b(\023)p Fu(\))11 b Fo(7\000)-7 b(!)93 -17 y Fm(P)130 -21 y Fu(\()p Fq(S;)6 b(\023)p Fu(\))p 225 -1 V -76 1 303 2 v 247 71 a(\()p Fq(S;)h Fj(new)i Fq(\032;)d(x;)g(i)p Fu(;)g Fq(\023)p Fu(\))554 b Fo(7\000)-7 b(!)1122 75 y Fm(P)1186 71 y Fu(\()p Fq(S)r Fo(f)p Fq(`)11 b Fo(7!)g Fq(v)q Fo(g)p Fq(;)6 b(\023)p Fu([)p Fq(`=\032)p Fu(][)p Fj(ptr)n Fu(\()p Fq(`)p Fu(\))p Fq(=x)p Fu(]\))324 171 y(where)13 b Fq(`)d Fo(62)h Fq(S;)6 b(\023)13 b Fu(and)g Fq(v)f Fu(=)838 104 y Fm(i)710 130 y Fd(z)p 729 130 96 5 v 96 w(}|)p 863 130 V 96 w({)710 171 y Fo(hS)s Fu(\(0\))p Fq(;)7 b(:)f(:)g(:)g(;)g Fo(S)s Fu(\(0\))p Fo(i)247 254 y Fu(\()p Fq(S)r Fo(f)p Fq(`)11 b Fo(7!)g(h)p Fq(v)416 258 y Fp(1)433 254 y Fq(;)6 b(:)g(:)g(:)g(;)h(v) 538 258 y Fm(n)558 254 y Fo(ig)p Fq(;)g Fj(free)i(ptr)o Fu(\()p Fq(`)p Fu(\);)c Fq(\023)p Fu(\))212 b Fo(7\000)-7 b(!)1122 258 y Fm(P)1186 254 y Fu(\()p Fq(S;)6 b(\023)p Fu(\))247 337 y(\()p Fq(S)r Fo(f)p Fq(`)11 b Fo(7!)g(h)p Fq(v)416 341 y Fp(1)433 337 y Fq(;)6 b(:)g(:)g(:)g(;)h(v)538 341 y Fm(n)558 337 y Fo(ig)p Fq(;)g Fj(let)i Fq(x)i Fu(=)f(\()p Fj(ptr)o Fu(\()p Fq(`)p Fu(\)\))p Fq(:i)p Fu(;)5 b Fq(\023)p Fu(\))105 b Fo(7\000)-7 b(!)1122 341 y Fm(P)1186 337 y Fu(\()p Fq(S)r Fo(f)p Fq(`)11 b Fo(7!)g(h)p Fq(v)1355 341 y Fp(1)1372 337 y Fq(;)6 b(:)g(:)g(:)g(;)g(v)1476 341 y Fm(n)1497 337 y Fo(ig)p Fq(;)g(\023)p Fu([)p Fq(v)1592 341 y Fm(i)1604 337 y Fq(=x)p Fu(]\))324 378 y(where)13 b(1)e Fo(\024)f Fq(i)h Fo(\024)g Fq(n)247 462 y Fu(\()p Fq(S)r Fo(f)p Fq(`)g Fo(7!)g(h)p Fq(v)416 466 y Fp(1)433 462 y Fq(;)6 b(:)g(:)g(:)g(;)h(v)538 466 y Fm(i)550 462 y Fq(;)f(:)h(:)f(:)g(;)g(v)655 466 y Fm(n)676 462 y Fo(ig)p Fq(;)g Fu(\()p Fj(ptr)o Fu(\()p Fq(`)p Fu(\)\))p Fq(:i)k Fu(:=)g Fq(v)967 446 y Fk(0)978 462 y Fu(;)c Fq(\023)p Fu(\))37 b Fo(7\000)-7 b(!)1122 466 y Fm(P)1186 462 y Fu(\()p Fq(S)r Fo(f)p Fq(`)11 b Fo(7!)g(h)p Fq(v)1355 466 y Fp(1)1372 462 y Fq(;)6 b(:)g(:)g(:)g(;)g(v)1477 446 y Fk(0)1488 462 y Fq(;)h(:)f(:)g(:)g(;)g(v)1593 466 y Fm(n)1614 462 y Fo(ig)p Fq(;)g(\023)p Fu(\))324 503 y(where)13 b(1)e Fo(\024)f Fq(i)h Fo(\024)g Fq(n)247 587 y Fu(\()p Fq(S)r Fo(f)p Fq(`)g Fo(7!)g Fq(v)q Fo(g)p Fq(;)c Fj(case)t(ptr)o Fu(\()p Fq(`)p Fu(\))f(\()p Fj(inl)16 b Fo(\))11 b Fq(\023)788 591 y Fp(1)816 587 y Fo(j)f Fj(inr)16 b Fo(\))11 b Fq(\023)976 591 y Fp(2)993 587 y Fu(\)\))38 b Fo(7\000)-7 b(!)1122 591 y Fm(P)1186 587 y Fu(\()p Fq(S)r Fo(f)p Fq(`)11 b Fo(7!)g Fq(v)1341 571 y Fk(0)1352 587 y Fo(g)p Fq(;)c(\023)1403 591 y Fm(i)1415 587 y Fu(\))324 671 y(where)454 629 y Fq(i)55 b Fu(=)37 b(1)13 b(or)g(2)454 670 y Fq(v)49 b Fu(=)37 b Fj(union)687 674 y Fm(\034)701 679 y Fl(1)718 674 y Fk([)p Fm(\034)753 679 y Fl(2)772 670 y Fu(\()p Fq(&)801 674 y Fp(1)818 670 y Fu(\()p Fo(\001)6 b(\001)g(\001)g Fq(&)898 674 y Fm(m)927 670 y Fu(\()p Fo(hS)s Fu(\()p Fq(i)p Fu(\))p Fq(;)g(v)1062 674 y Fp(1)1079 670 y Fq(;)g(:)g(:)g(:)g(;)h(v)1184 674 y Fm(n)1204 670 y Fo(i)p Fu(\))g Fo(\001)f(\001)g(\001)o Fu(\)\))454 712 y Fq(v)474 696 y Fk(0)522 712 y Fu(=)37 b Fq(&)603 716 y Fp(1)621 712 y Fu(\()p Fo(\001)6 b(\001)g(\001)g Fq(&)701 716 y Fm(m)730 712 y Fu(\()p Fo(hS)s Fu(\()p Fq(i)p Fu(\))p Fq(;)g(v)865 716 y Fp(1)882 712 y Fq(;)g(:)g(:)g(:)g(;)g (v)986 716 y Fm(n)1007 712 y Fo(i)p Fu(\))g Fo(\001)h(\001)f(\001)o Fu(\))247 795 y(\()p Fq(S;)h(v)q Fu(\()p Fq(v)357 799 y Fp(1)373 795 y Fq(;)f(:)h(:)f(:)g(;)g(v)478 799 y Fm(n)499 795 y Fu(\)\))532 b Fo(7\000)-7 b(!)1122 799 y Fm(P)1186 795 y Fu(\()p Fq(S;)6 b(\022)q Fu(\()p Fq(\023)p Fu(\)\))324 880 y(where)454 837 y Fq(v)49 b Fu(=)37 b Fq(v)609 822 y Fk(0)621 837 y Fu([)p Fq(c)649 841 y Fp(1)665 837 y Fq(;)6 b(:)g(:)g(:)g(;)g(c)767 841 y Fm(m)796 837 y Fu(])454 880 y Fq(v)474 864 y Fk(0)522 880 y Fu(=)37 b Fj(fix)o Fq(f)t Fu([\001)10 b Fo(j)h Fq(C)s Fu(]\()p Fq(x)824 884 y Fp(1)840 880 y Fu(:)p Fq(\033)873 884 y Fp(1)890 880 y Fq(;)6 b(:)g(:)g(:)g(;)h(x)998 884 y Fm(n)1019 880 y Fu(:)p Fq(\033)1052 884 y Fm(n)1072 880 y Fu(\))p Fq(:\023)454 922 y(\022)50 b Fu(=)37 b([)p Fq(c)617 926 y Fp(1)634 922 y Fq(;)6 b(:)g(:)g(:)g(;)g(c)736 926 y Fm(m)765 922 y Fq(=)p Fu(\001][)p Fq(v)858 906 y Fk(0)869 922 y Fq(=f)t Fu(][)p Fq(v)952 926 y Fp(1)968 922 y Fq(;)g(:)g(:)g(:)g (;)g(v)1072 926 y Fm(n)1093 922 y Fq(=x)1134 926 y Fp(1)1152 922 y Fq(;)g(:)g(:)g(:)g(;)g(x)1259 926 y Fm(n)1280 922 y Fu(])247 1005 y(\()p Fq(S;)h Fj(coerce)m Fu(\()p Fq(\015)r Fu(\);)f Fq(\023)p Fu(\))543 b Fo(7\000)-7 b(!)1122 1009 y Fm(P)1186 1005 y Fu(\()p Fq(S)1226 990 y Fk(0)1237 1005 y Fq(;)7 b(\022)q Fu(\()p Fq(\023)p Fu(\)\))324 1048 y(where)13 b Fq(\015)r Fu(\()p Fq(S)r Fu(\))e Fo(7\000)-7 b(!)584 1052 y Fm(\015)615 1048 y Fq(S)640 1032 y Fk(0)652 1048 y Fq(;)6 b(\022)p -76 1119 2093 2 v 602 1187 a Fu(Figure)13 b(6:)k(Op)q(erational)c(Seman)o(tics:)18 b(Programs)-76 1310 y Fv(Op)q(erational)9 b(Semantics)38 b Fu(The)11 b(small-step)f(op)q(erational)i(seman-)-76 1352 y(tics)19 b(for)g(the)g(language)h(is)f(giv)o(en)g(b)o(y)h(a)f(function)h Fq(P)25 b Fo(7\000)-6 b(!)822 1356 y Fm(P)869 1352 y Fq(P)899 1336 y Fk(0)910 1352 y Fu(.)-76 1393 y(The)14 b(ma)r(jorit)o(y)g(of)f(the)h(op)q(erational)h(rules)e(are)h(en)o (tirely)g(standard)-76 1435 y(and)f(formalize)f(the)g(in)o(tuitiv)o(e)g (rules)g(describ)q(ed)i(earlier)e(in)g(the)g(pa-)-76 1476 y(p)q(er.)17 b(The)11 b(op)q(erational)g(rule)g(for)g(the)g(co)q (erce)g(instruction)h(dep)q(ends)-76 1518 y(up)q(on)17 b(a)e(separate)h(seman)o(tics)g(for)f(co)q(ercions)h(that)f(has)h(the)f (form)-76 1559 y Fq(S)h Fo(7\000)-6 b(!)25 1563 y Fm(\015)58 1559 y Fq(S)83 1543 y Fk(0)95 1559 y Fq(;)6 b(\022)16 b Fu(where)f Fq(\022)g Fu(is)f(a)h(substitution)h(of)e(t)o(yp)q(e)h (constructors)-76 1601 y(for)k(t)o(yp)q(e)g(constructors)h(v)n (ariables.)34 b(Insp)q(ection)20 b(of)e(these)h(rules)-76 1642 y(rev)o(eals)c(that)g(co)q(ercions)g(do)g(not)g(alter)f(the)h (asso)q(ciation)g(b)q(et)o(w)o(een)-76 1684 y(lo)q(cations)g(and)h (memory)f(blo)q(c)o(ks;)h(they)f(simply)g(insert)g(witnesses)-76 1725 y(that)10 b(alter)g(the)g(t)o(yping)h(deriv)n(ation)f(so)h(that)f (it)f(is)h(p)q(ossible)h(to)f(pro)o(v)o(e)-76 1767 y(a)h(t)o(yp)q(e)g (soundness)h(result.)k(The)11 b(rules)g(for)f(program)h(and)h(co)q (ercion)-76 1808 y(op)q(erational)i(seman)o(tics)f(ma)o(y)g(b)q(e)h (found)f(in)g(\014gures)h(6)f(and)h(7.)-76 1900 y Fv(T)m(yp)q(e)h (Soundness)38 b Fu(W)m(e)14 b(no)o(w)h(ha)o(v)o(e)g(all)f(the)h(pieces) g(necessary)g(to)-76 1942 y(state)c(and)h(pro)o(v)o(e)f(that)g (execution)h(of)f(a)g(program)g(in)g(our)g(language)-76 1983 y(\\can't)19 b(get)f(stuc)o(k.")33 b(A)18 b Fr(stuck)f(pr)n(o)n (gr)n(am)g Fu(is)h(a)g(program)h(that)g(is)-76 2025 y(not)e(in)g(the)g (terminal)g(con\014guration)i Fj(halt)5 b Fq(i)17 b Fu(and)g(for)g (whic)o(h)g(no)-76 2066 y(op)q(erational)d(rule)f(applies.)-76 2133 y Fi(Theorem)i(4)g(\(T)o(yp)q(e)g(Soundness\))-76 2174 y Fr(If)e Fo(`)f Fu(\()p Fq(S;)6 b(\023)p Fu(\))13 b Fr(and)g Fu(\()p Fq(S;)6 b(\023)p Fu(\))k Fo(7\000)-6 b(!)327 2158 y Fk(\003)327 2182 y Fm(P)363 2174 y Fu(\()p Fq(S)403 2158 y Fk(0)415 2174 y Fq(;)6 b(\023)446 2158 y Fk(0)457 2174 y Fu(\))14 b Fr(then)e Fu(\()p Fq(S)611 2158 y Fk(0)623 2174 y Fq(;)6 b(\023)654 2158 y Fk(0)664 2174 y Fu(\))14 b Fr(is)f(not)g(stuck.)-20 2241 y Fu(The)19 b(pro)q(of)g(itself)f(uses)h(standard)h(Sub)r(ject)g(Reduction)g(and) -76 2282 y(Progress)g(lemmas)f(in)g(the)g(st)o(yle)g(p)q(opularized)i (b)o(y)e(W)m(righ)o(t)h(and)-76 2324 y(F)m(elleisen)f([37])g(and)h(is)f (mostly)h(mec)o(hanical.)73 b(Due)20 b(to)g(space)-76 2365 y(limitations,)d(it)g(has)h(not)f(b)q(een)h(included.)30 b(See)18 b(the)f(companion)-76 2407 y(tec)o(hnical)c(rep)q(ort)h([36])e (for)h(details.)-76 2502 y Fv(6)41 b(Related)13 b(W)o(o)o(rk)-76 2581 y Fu(Our)d(t)o(yp)q(e)g(system)g(builds)g(up)q(on)g(the)g (foundational)g(w)o(ork)g(b)o(y)g(other)-76 2622 y(groups)17 b(on)f(syn)o(tactic)f(con)o(trol)h(of)f(in)o(terference)h([25])30 b(and)16 b(linear)1020 1310 y(t)o(yp)q(e)f(systems)f(in)g(functional)h (programming)g(languages)g([35)q(,)e(33)q(,)1020 1352 y(2].)30 b(W)m(e)17 b(also)h(o)o(w)o(e)f(m)o(uc)o(h)h(to)f(researc)o (hers)h(in)f(alias)h(analysis)f(for)1020 1393 y(imp)q(erativ)o(e)c (languages)h([12,)f(15,)g(7,)f(9,)h(26].)1076 1435 y(Our)21 b(t)o(yp)q(e)f(system)h(app)q(ears)h(most)f(closely)f(related)h(to)f (the)1020 1476 y(shap)q(e)k(analysis)g(dev)o(elop)q(ed)g(b)o(y)g (Sagiv,)i(Reps,)g(and)d(Wilhelm)1020 1518 y(\(SR)l(W\))16 b([26].)23 b(Although)16 b(the)f(precise)g(relationship)h(is)f(curren)o (tly)1020 1559 y(unkno)o(wn)j(to)e(us,)h(it)e(is)h(clear)g(that)h(sev)o (eral)f(of)g(the)g(k)o(ey)h(features)1020 1601 y(that)e(mak)o(e)g(SR)l (W)h(shap)q(e)g(analysis)f(more)g(e\013ectiv)o(e)g(than)h(similar)1020 1642 y(alias)g(analyses)h(can)f(b)q(e)h(expressed)g(in)f(our)h(t)o(yp)q (e)f(system.)27 b(More)1020 1684 y(sp)q(eci\014cally:)1052 1751 y(1.)21 b(Unlik)o(e)14 b(some)h(other)g(analyses,)g(SR)l(W)g(shap) q(e)h(no)q(des)f(do)g(not)1103 1792 y(con)o(tain)21 b(information)g(ab) q(out)h(concrete)f(lo)q(cations)g(or)g(the)1103 1834 y(site)c(where)g(the)g(no)q(de)h(w)o(as)f(allo)q(cated.)29 b(Our)17 b(t)o(yp)q(e)h(system)1103 1875 y(drops)13 b(information)g(ab) q(out)g(concrete)h(lo)q(cations)e(using)h(lo)q(ca-)1103 1917 y(tion)g(p)q(olymorphism.)1052 1986 y(2.)21 b(SR)l(W)15 b(shap)q(e)h(no)q(des)f(are)g(named)g(with)f(the)h(set)f(of)g(program) 1103 2027 y(v)n(ariables)19 b(that)f(p)q(oin)o(t)h(to)f(that)g(no)q (de.)34 b(Our)18 b(t)o(yp)q(e)h(system)1103 2069 y(can)d(only)f(lab)q (el)g(a)g(no)q(de)h(with)e(a)h(single)g(name,)h(but)f(w)o(e)g(are)1103 2110 y(able)d(to)g(express)h(the)f(fact)g(that)g(a)g(set)g(of)g (program)h(v)n(ariables)1103 2152 y(p)q(oin)o(t)k(to)f(that)h(no)q(de)h (using)f(the)g(same)f(singleton)h(t)o(yp)q(e)g(for)1103 2193 y(eac)o(h)c(program)h(v)n(ariable)f(in)g(the)g(set.)1052 2263 y(3.)21 b(SR)l(W)14 b(shap)q(e)g(no)q(des)g(ma)o(y)f(b)q(e)g (\015agged)h(as)f(unshared.)19 b(Linear)1103 2304 y(t)o(yp)q(es)14 b(accoun)o(t)f(for)g(unshared)i(shap)q(e)f(no)q(des.)1052 2373 y(4.)21 b(A)e(single)g(SR)l(W)h(summary)g(no)q(de)g(describ)q(es)h (man)o(y)e(mem-)1103 2415 y(ory)14 b(blo)q(c)o(ks,)h(but)g(through)g (the)f(pro)q(cess)h(of)f Fr(materialization)1103 2456 y Fu(a)i(summary)h(no)q(de)g(ma)o(y)f(split)g(o\013)h(a)f(new,)g (separate)h(shap)q(e)1103 2498 y(no)q(de.)31 b(Summary)18 b(no)q(des)g(ma)o(y)g(b)q(e)f(represen)o(ted)i(as)e(recur-)1103 2539 y(siv)o(e)11 b(t)o(yp)q(es)h(in)f(our)g(framew)o(ork)h(and)f (materialization)g(can)h(b)q(e)1103 2581 y(explained)i(b)o(y)g(the)g (pro)q(cess)h(of)e(unrolling)h(and)g(unpac)o(king)h(a)1103 2622 y(recursiv)o(e)e(and)h(existen)o(tial)f(t)o(yp)q(e.)951 2747 y(10)p eop %%Page: 11 11 11 10 bop -76 -74 2093 2 v -76 -61 280 2 v -76 1 2 62 v -63 -20 a Fq(\015)r Fu(\()p Fq(S)r Fu(\))11 b Fo(7\000)-6 b(!)87 -16 y Fm(\015)118 -20 y Fq(S)143 -36 y Fk(0)154 -20 y Fq(;)6 b(\022)p 202 1 V -76 3 280 2 v 185 73 a Fj(union)283 77 y Fm(\034)297 82 y Fl(1)313 77 y Fk([)p Fm(\034)348 82 y Fl(2)367 73 y Fu(\()p Fq(`)p Fu(\)\()p Fq(S)r Fo(f)p Fq(`)11 b Fo(7!)g Fq(v)q Fo(g)p Fu(\))506 b Fo(7\000)-7 b(!)1169 77 y Fm(\015)1227 73 y Fq(S)r Fo(f)p Fq(`)11 b Fo(7!)g Fj(union)1446 77 y Fm(\034)1460 82 y Fl(1)1476 77 y Fk([)p Fm(\034)1511 82 y Fl(2)1530 73 y Fu(\()p Fq(v)q Fu(\))p Fo(g)p Fq(;)6 b Fu([)g(])185 156 y Fj(roll)263 160 y Fm(\034)283 156 y Fu(\()p Fq(`)p Fu(\)\()p Fq(S)r Fo(f)p Fq(`)11 b Fo(7!)g Fq(v)q Fo(g)p Fu(\))590 b Fo(7\000)-7 b(!)1169 160 y Fm(\015)1227 156 y Fq(S)r Fo(f)p Fq(`)11 b Fo(7!)g Fj(roll)1426 160 y Fm(\034)1445 156 y Fu(\()p Fq(v)q Fu(\))p Fo(g)p Fq(;)c Fu([)f(])185 239 y Fj(unroll)m Fu(\()p Fq(`)p Fu(\)\()p Fq(S)r Fo(f)p Fq(`)11 b Fo(7!)g Fj(roll)562 243 y Fm(\034)581 239 y Fu(\()p Fq(v)q Fu(\))p Fo(g)p Fu(\))443 b Fo(7\000)-7 b(!)1169 243 y Fm(\015)1227 239 y Fq(S)r Fo(f)p Fq(`)11 b Fo(7!)g Fq(v)q Fo(g)p Fq(;)c Fu([)f(])185 323 y Fj(pack)263 333 y Fp([)p Fm(c)286 338 y Fl(1)302 333 y Fm(;:::)r(;c)363 337 y Ff(n)384 333 y Fk(j)p Fm(C)r Fp(])p Fg(as)f Fm(\034)477 323 y Fu(\()p Fq(`)p Fu(\)\()p Fq(S)r Fo(f)p Fq(`)11 b Fo(7!)g Fq(v)q Fo(g)p Fq(S)722 307 y Fk(0)734 323 y Fu(\))359 b Fo(7\000)-7 b(!)1169 327 y Fm(\015)1227 323 y Fq(S)r Fo(f)p Fq(`)11 b Fo(7!)g Fj(pack)1426 333 y Fp([)p Fm(c)1449 338 y Fl(1)1465 333 y Fm(;:::)r(;c)1526 337 y Ff(n)1546 333 y Fk(j)p Fm(S)1575 326 y Ft(0)1587 333 y Fp(])p Fg(as)p Fm(\034)1642 323 y Fu(\()p Fq(v)q Fu(\))p Fo(g)p Fq(;)6 b Fu([)g(])261 369 y(where)14 b Fq(C)f Fu(=)e Fo(f)p Fq(`)489 373 y Fp(1)517 369 y Fo(7!)g Fq(\034)583 373 y Fp(1)600 369 y Fq(;)6 b(:)g(:)g(:)g(;)g(`)701 373 y Fm(m)741 369 y Fo(7!)11 b Fq(\034)807 373 y Fm(m)837 369 y Fo(g)i Fu(and)g Fq(S)968 353 y Fk(0)991 369 y Fu(=)d Fo(f)p Fq(`)1066 373 y Fp(1)1094 369 y Fo(7!)h Fq(v)1162 373 y Fp(1)1179 369 y Fq(;)6 b(:)g(:)g(:)g(;)g(`)1280 373 y Fm(m)1320 369 y Fo(7!)11 b Fq(v)1388 373 y Fm(m)1417 369 y Fo(g)185 453 y Fj(unpack)t Fq(`)6 b Fj(with)f Fu(\001)h(\()p Fq(S)r Fo(f)p Fq(`)12 b Fo(7!)f Fj(pack)668 463 y Fp([)p Fm(c)691 468 y Fl(1)707 463 y Fm(;:::)r(;c)768 467 y Ff(n)788 463 y Fk(j)p Fm(S)817 456 y Ft(0)829 463 y Fp(])p Fg(as)q Fk(9)p Fp([\001)p Fk(j)p Fm(C)r Fp(])p Fm(:\034)987 453 y Fu(\()p Fq(v)q Fu(\))p Fo(g)p Fu(\))37 b Fo(7\000)-7 b(!)1169 457 y Fm(\015)1227 453 y Fq(S)r(S)1277 437 y Fk(0)1289 453 y Fo(f)p Fq(`)11 b Fo(7!)g Fq(v)q Fo(g)p Fq(;)c Fu([)p Fq(c)1469 457 y Fp(1)1485 453 y Fq(;)f(:)g(:)g(:)g(;)g(c) 1587 457 y Fm(n)1608 453 y Fq(=)p Fu(\001])p -76 529 2093 2 v 601 596 a(Figure)13 b(7:)k(Op)q(erational)c(Seman)o(tics:)k (Co)q(ercions)-76 719 y(One)12 b(of)g(the)g(adv)n(an)o(tages)i(to)e (our)g(approac)o(h)i(is)e(that)g(our)g(language)-76 761 y(mak)o(es)21 b(it)f(straigh)o(tforw)o(ard)h(to)f(create)h(dep)q (endencies)h(b)q(et)o(w)o(een)-76 803 y(functions)c(and)g(data)g(using) g(store)g(or)f(lo)q(cation)h(p)q(olymorphism.)-76 844 y(F)m(or)13 b(example,)g(in)g(our)h(implemen)o(tation)f(of)g(the)g (Deutsc)o(h-Sc)o(horr-)-76 886 y(W)m(aite)19 b(algorithm,)g(w)o(e)f (manipulate)i(con)o(tin)o(uations)f(that)g(kno)o(w)-76 927 y(ho)o(w)11 b(to)g(reconstruct)h(a)g(w)o(ell-formed)e(tree)h(from)g (the)g(curren)o(t)g(heap)-76 969 y(structure)21 b(and)f(w)o(e)g(are)g (able)f(to)h(express)h(this)f(dep)q(endence)h(in)-76 1010 y(the)15 b(t)o(yp)q(e)g(system.)23 b(Explicit)14 b(manipulation)h(of)g(con)o(tin)o(uations)h(is)-76 1052 y(necessary)i(in)f(su\016cien)o(tly)g(lo)o(w-lev)o(el)f(t)o(yp)q(ed)i (languages)g(suc)o(h)g(as)-76 1093 y(T)o(yp)q(ed)12 b(Assem)o(bly)g (Language)g(when)g(return)g(addresses)g(are)g(in)o(ter-)-76 1135 y(preted)i(as)f(con)o(tin)o(uations)h([21].)-20 1176 y(Other)d(w)o(ork)g(has)h(fo)q(cused)g(on)f(dev)o(eloping)h (expressiv)o(e)g(p)q(oin)o(ter)-76 1218 y(logics)k(for)g(describing)h (the)g(shap)q(e)g(of)f(the)g(store)h([20,)f(13,)g(27,)g(3].)-76 1259 y(Some)d(of)f(these)h(logics)g(can)f(express)i(more)f (sophisticated)g(p)q(oin)o(ter)-76 1301 y(relationships)j(than)h(the)f (t)o(yp)q(e)g(structure)g(describ)q(ed)h(in)e(this)h(pa-)-76 1342 y(p)q(er.)g(F)m(or)10 b(example,)h(Benedikt)g Fr(et)g(al.)e Fu([3])g(pro)o(vide)i(a)f(complex)h(logic)-76 1384 y(that)i(includes)h (path)g(equalit)o(y)f(and)h(inequalit)o(y)f(relations,)g(allo)q(ca-)-76 1425 y(tion)h(constrain)o(ts,)h(reac)o(habilit)o(y)f(constrain)o(ts)h (and)f(other)h(connec-)-76 1467 y(tiv)o(es.)i(Our)12 b(t)o(yp)q(e)g(system)g(is)g(built)f(b)o(y)i(starting)f(with)f(the)h (concept)-76 1508 y(of)f(a)g(\014nite)g(partial)g(map)g(to)g(describ)q (e)g(the)h(store)f(and)g(then)h(using)f(a)-76 1550 y(com)o(bination)f (of)f(standard)i(t)o(yp)q(e)f(constructors)h(suc)o(h)f(as)f(singleton,) -76 1591 y(union,)15 b(p)q(olymorphic,)h(existen)o(tial)e(and)h (recursiv)o(e)g(t)o(yp)q(es.)22 b(These)-76 1633 y(t)o(yp)q(e)d (constructors)h(can)e(b)q(e)h(reused)g(for)g(a)f(v)n(ariet)o(y)g(of)h (di\013eren)o(t)-76 1674 y(purp)q(oses)c(within)e(a)g(t)o(yp)q (e-preserving)i(compiler)e(from)g(represen)o(t-)-76 1716 y(ing)k(closures)g([19])e(to)i(data-\015o)o(w)g(analysis)g([8])e(to)i (ob)r(ject)g(enco)q(d-)-76 1757 y(ings)11 b([24])f(to)g(source-lev)o (el)h(p)q(olymorphism)h(and)f(existen)o(tial)f(t)o(yp)q(es.)-76 1799 y(F)m(rom)15 b(an)h(engineering)g(p)q(ersp)q(ectiv)o(e,)h(there)e (are)h(de\014nite)f(adv)n(an-)-76 1840 y(tages)f(to)e(reusing)i(as)f(m) o(uc)o(h)h(t)o(yp)q(e)f(structure)h(as)f(p)q(ossible.)-20 1882 y(Sev)o(eral)22 b(other)g(authors)g(ha)o(v)o(e)g(considered)h (alternativ)o(es)e(to)-76 1923 y(pure)15 b(linear)g(t)o(yp)q(e)f (systems)h(that)g(increase)g(their)f(\015exibilit)o(y)m(.)21 b(F)m(or)-76 1965 y(example,)12 b(Koba)o(y)o(ashi)h([14])f(extends)g (standard)i(linear)d(t)o(yp)q(es)i(with)-76 2006 y(data-\015o)o(w)h (information)f(and)g(Minamide)g([18])g(uses)g(a)g(linear)g(t)o(yp)q(e) -76 2048 y(discipline)g(to)f(allo)o(w)g(programmers)i(to)f(manipulate)g (\\data)g(struc-)-76 2089 y(tures)19 b(with)f(a)g(hole.")34 b(Minamide's)18 b(language)i(allo)o(ws)d(users)i(to)-76 2131 y(write)d(programs)h(that)g(are)g(compiled)f(in)o(to)h (destination-passing)-76 2172 y(st)o(yle.)f(Ho)o(w)o(ev)o(er,)9 b(Minamide's)h(language)h(is)e(still)f(quite)i(high-lev)o(el;)-76 2214 y(he)16 b(do)q(es)h(not)f(sho)o(w)g(ho)o(w)f(to)h(v)o(erify)g (explicit)f(p)q(oin)o(ter)h(manipula-)-76 2255 y(tion.)26 b(Moreo)o(v)o(er,)18 b(neither)e(of)g(these)g(t)o(yp)q(e)h(systems)f (pro)o(vide)h(the)-76 2297 y(abilit)o(y)c(to)g(represen)o(t)g(cyclic)g (data)g(structures.)-20 2338 y(T)m(ofte,)g(T)m(alpin,)h(and)h(others)f ([32,)g(4,)f(1)q(,)g(6])h(ha)o(v)o(e)g(explored)h(the)-76 2380 y(use)j(of)g(region-based)h(memory)f(managemen)o(t.)33 b(In)18 b(their)g(w)o(ork,)-76 2421 y(ob)r(jects)h(are)g(allo)q(cated)g (in)o(to)g(one)g(of)g(sev)o(eral)g Fr(r)n(e)n(gions)e Fu(of)i(mem-)-76 2463 y(ory)m(.)27 b(When)18 b(a)e(region)h(is)e (deallo)q(cated,)j(all)e(the)g(ob)r(jects)h(in)f(that)-76 2504 y(region)f(are)f(deallo)q(cated)g(to)q(o.)21 b(Region-based)15 b(memory)g(manage-)-76 2546 y(men)o(t)h(p)q(erforms)g(extremely)g(w)o (ell)f(in)g(man)o(y)i(circumstances,)g(but)-76 2587 y(unlik)o(e)10 b(systems)g(based)g(on)g(linear)f(t)o(yp)q(es,)i(space)f(is)f(not,)h (in)f(general,)1020 719 y(reused)16 b(on)g(a)f(p)q(er-ob)r(ject)h (basis.)24 b(Moreo)o(v)o(er,)16 b(regions)g(cannot)g(b)q(e)1020 761 y(encapsulated)f(inside)f(recursiv)o(e)h(data)f(structures.)20 b(Ho)o(w)o(ev)o(er,)14 b(w)o(e)1020 803 y(b)q(eliev)o(e)f(that)g(some)g (of)f(the)h(tec)o(hniques)h(w)o(e)e(ha)o(v)o(e)i(dev)o(elop)q(ed)g (here)1020 844 y(ma)o(y)i(b)q(e)g(adapted)h(to)e(the)h(region)g (setting)g(and)g(w)o(e)f(are)h(eager)g(to)1020 886 y(in)o(v)o(estigate) e(a)g(com)o(bined)h(framew)o(ork)f(that)g(can)h(tak)o(e)f(adv)n(an)o (tage)1020 927 y(of)f(b)q(oth)g(forms)g(of)g(t)o(yp)q(ed)h(memory)f (managemen)o(t.)1020 1025 y Fv(Ackno)o(wledgements)1020 1099 y Fu(F)m(red)k(Smith)g(w)o(ork)o(ed)g(with)f(us)h(on)g(the)g (predecessor)h(to)f(this)f(re-)1020 1137 y(searc)o(h)10 b(and)f(the)g(man)o(y)h(stim)o(ulating)f(discussions)g(w)o(e)g(had)h (together)1020 1174 y(con)o(tributed)16 b(to)e(the)h(curren)o(t)h(pap)q (er.)23 b(Neal)14 b(Glew)g(made)h(helpful)1020 1211 y(commen)o(ts)f(on) f(an)g(earlier)g(draft)g(of)f(this)h(pap)q(er.)1020 1303 y Fv(References)1038 1373 y Fc([1])20 b(Alexander)7 b(Aik)o(en,)h(Man)o (uel)g(F\177)-18 b(ahndric)o(h,)7 b(and)h(Raph)g(Levien.)h(Bet-)1096 1410 y(ter)19 b(static)g(memory)h(managemen)o(t:)30 b(Impro)o(ving)18 b(region-based)1096 1448 y(analysis)11 b(of)h(higher-orde)o(r)e (languages.)16 b(In)d Fb(A)o(CM)g(Confer)n(enc)n(e)j(on)1096 1485 y(Pr)n(o)n(gr)n(amming)g(L)n(anguage)g(Design)e(and)g (Implementation)p Fc(,)h(pages)1096 1523 y(174{185,)9 b(La)i(Jolla,)g(California,)e(1995.)1038 1577 y([2])20 b(Erik)g(Barendsen)e(and)i(Sjaak)g(Smetsers.)42 b(Con)o(v)o(en)o (tional)17 b(and)1096 1614 y(uniqueness)c(t)o(yping)g(in)j(graph)e (rewrite)h(systems)g(\(extended)d(ab-)1096 1651 y(stract\).)30 b(In)16 b Fb(Thirte)n(enth)i(Confer)n(enc)n(e)i(on)e(the)g(F)m (oundations)h(of)1096 1689 y(Softwar)n(e)k(T)m(e)n(chnolo)n(gy)i(and)e (The)n(or)n(etic)n(al)i(Computer)e(Scienc)n(e)p Fc(,)1096 1726 y(pages)6 b(41{51,)h(Bom)o(ba)o(y)m(,)h(1993.)g(In)g(Sh)o(y)o (amasundar,)d(ed.,)j(Springer-)1096 1763 y(V)m(erlag,)i(LNCS)j(761.) 1038 1817 y([3])20 b(Mic)o(hael)13 b(Benedikt,)f(Thomas)i(Reps,)g(and)f (Mo)q(oly)g(Sagiv.)22 b(A)14 b(de-)1096 1855 y(cidable)c(logic)g(for)i (describing)d(link)o(ed)h(data)h(structures.)i(In)f Fb(Eur)n(o-)1096 1892 y(p)n(e)n(an)h(Symp)n(osium)f(on)g(Pr)n(o)n(gr)n(amming)p Fc(,)h(pages)c(2{19,)g(Amsterdam,)1096 1929 y(Marc)o(h)h(1999.)1038 1983 y([4])20 b(Lars)c(Birk)o(edal,)f(Mads)i(T)m(ofte,)g(and)e(Magn)o (us)h(V)m(ejlstrup.)28 b(F)m(rom)1096 2021 y(region)8 b(inference)g(to)i(von)f(Neumann)h(mac)o(hines)f(via)g(region)g(repre-) 1096 2058 y(sen)o(tation)i(inference.)18 b(In)13 b Fb(Twenty-Thir)n(d)h (A)o(CM)h(Symp)n(osium)g(on)1096 2095 y(Principles)i(of)f(Pr)n(o)n(gr)n (amming)j(L)n(anguages)p Fc(,)f(pages)c(171{183,)g(St.)1096 2133 y(P)o(etersburg,)9 b(Jan)o(uary)g(1996.)1038 2187 y([5])20 b(P)o(erry)13 b(Cheng)g(and)g(Chris)h(Ok)n(asaki.)21 b(Destination-pa)o(ssing)11 b(st)o(yle)1096 2224 y(and)g(generational)e (garbage)i(collection.)16 b(Unpublished.,)10 b(No)o(v)o(em-)1096 2261 y(b)q(er)g(1996.)1038 2315 y([6])20 b(Karl)8 b(Crary)m(,)h(Da)o (vid)f(W)m(alk)o(er,)g(and)g(Greg)g(Morrisett.)h(T)o(yp)q(ed)f(mem-) 1096 2353 y(ory)14 b(managemen)o(t)g(in)h(a)g(calculus)e(of)i (capabilities.)24 b(In)15 b Fb(Twenty-)1096 2390 y(Sixth)d(A)o(CM)g (Symp)n(osium)h(on)f(Principles)h(of)f(Pr)n(o)n(gr)n(amming)i(L)n(an-) 1096 2427 y(guages)p Fc(,)e(pages)f(262{275,)e(San)h(An)o(tonio,)g(Jan) o(uary)g(1999.)1038 2481 y([7])20 b(Alain)9 b(Deutsc)o(h.)i(In)o (terpro)q(cedu)o(ral)c(ma)o(y-alias)h(analysis)h(for)g(p)q(oin)o(t-) 1096 2519 y(ers:)21 b(Bey)o(ond)13 b(k-limiting.)23 b(In)14 b Fb(A)o(CM)i(Confer)n(enc)n(e)h(on)f(Pr)n(o)n(gr)n(am-)1096 2556 y(ming)c(L)n(anguage)h(Design)f(and)g(Implementation)p Fc(,)f(pages)e(230{241,)1096 2594 y(Orlando,)h(June)h(1994.)951 2747 y Fu(11)p eop %%Page: 12 12 12 11 bop -58 -34 a Fc([8])20 b(Allyn)13 b(Dimo)q(c)o(k,)g(Rob)q(ert)f (Muller,)h(F)m(ranklyn)f(T)m(urbak,)g(and)h(J.)h(B.)0 3 y(W)m(ells.)h(Strongly)9 b(t)o(yp)q(ed)h(\015o)o(w-directed)e (represen)o(tation)g(transfor-)0 40 y(mations.)21 b(In)13 b Fb(A)o(CM)i(International)g(Confer)n(enc)n(e)i(on)e(F)m(unctional)0 78 y(Pr)n(o)n(gr)n(amming)p Fc(,)f(pages)c(85{98,)g(Amsterdam,)h(June)g (1997.)-58 129 y([9])20 b(Rak)o(esh)8 b(Ghiy)o(a)g(and)h(Laurie)f(J.)i (Hendren.)g(Is)g(it)f(a)g(tree,)g(a)g(D)o(A)o(G,)h(or)0 166 y(a)i(cyclic)e(graph?)16 b(A)d(shap)q(e)e(analysis)f(for)h (heap-directed)e(p)q(oin)o(ters)0 203 y(in)14 b(C.)24 b(In)13 b Fb(Twenty-Thir)n(d)i(A)o(CM)h(Symp)n(osium)g(on)f(Principles) h(of)0 241 y(Pr)n(o)n(gr)n(amming)e(L)n(anguages)p Fc(,)f(pages)c (1{15,)h(St.)g(P)o(etersburg)e(Beac)o(h,)0 278 y(Florida,)i(Jan)o(uary) f(1996.)-76 329 y([10])20 b(Dan)10 b(Grossman)g(and)g(Greg)f (Morrisett.)k(Scalable)c(certi\014catio)o(n)f(of)0 366 y(nativ)o(e)g(co)q(de:)13 b(Exp)q(erience)7 b(from)j(compiling)e(to)h (T)m(ALx86.)k(T)m(ec)o(hni-)0 403 y(cal)c(Rep)q(ort)f(TR2000-1783,)g (Cornell)g(Univ)o(ersit)o(y)m(,)g(F)m(ebruary)g(2000.)-76 454 y([11])20 b(Rob)q(ert)12 b(Harp)q(er.)19 b(A)14 b(simpli\014ed)d (accoun)o(t)h(of)g(p)q(olymorphic)f(refer-)0 492 y(ences.)22 b Fb(Information)16 b(Pr)n(o)n(c)n(essing)g(L)n(etters)p Fc(,)g(51\(4\):201{2)o(06,)c(Au-)0 529 y(gust)e(1994.)-76 580 y([12])20 b(Neil)12 b(D.)h(Jones)e(and)h(Stev)o(en)f(Muc)o(hnic)o (k,)f(editors.)17 b Fb(Flow)c(analysis)0 617 y(and)d(optimization)f(of) h(Lisp-like)g(structur)n(es)p Fc(.)f(Pren)o(tice-Hall,)d(1981.)-76 668 y([13])20 b(Nils)13 b(Klarlund)e(and)h(Mic)o(hael)g(Sc)o(h)o(w)o (artzbac)o(h.)k(Graph)c(t)o(yp)q(es.)18 b(In)0 705 y Fb(Twentieth)13 b(A)o(CM)f(Symp)n(osium)i(on)f(Principles)h(of)f(Pr)n (o)n(gr)n(amming)0 743 y(L)n(anguages)p Fc(,)g(pages)e(196{205,)e (Charleston,)g(Jan)o(uary)h(1993.)-76 793 y([14])20 b(Naoki)8 b(Koba)o(y)o(ashi.)i(Quasi-linear)d(t)o(yp)q(es.)j(In)f Fb(Twenty-Sixth)h(A)o(CM)0 831 y(Symp)n(osium)h(on)g(Principles)g(of)f (Pr)n(o)n(gr)n(amming)j(L)n(anguages)p Fc(,)e(pages)0 868 y(29{42,)f(San)g(An)o(tonio,)g(Jan)o(uary)g(1999.)-76 919 y([15])20 b(James)14 b(R.)g(Larus)f(and)h(P)o(aul)f(N.)h (Hil\014nger.)22 b(Detecting)12 b(con\015icts)0 956 y(b)q(et)o(w)o(een) j(structure)f(accesses.)28 b(In)16 b Fb(A)o(CM)h(Confer)n(enc)n(e)i(on) e(Pr)n(o-)0 994 y(gr)n(amming)c(L)n(anguage)h(Design)f(and)f (Implementation)p Fc(,)g(pages)d(24{)0 1031 y(31,)i(June)f(1988.)-76 1082 y([16])20 b(James)10 b(Ric)o(hard)f(Larus.)k Fb(R)n(estructuring)g (Symb)n(olic)h(Pr)n(o)n(gr)n(ams)f(for)0 1119 y(Concurr)n(ent)g(Exe)n (cution)g(on)f(Multipr)n(o)n(c)n(essors)p Fc(.)j(PhD)10 b(thesis,)g(Uni-)0 1157 y(v)o(ersit)o(y)k(of)i(California)f(at)g(Berk)o (eley)m(,)h(Ma)o(y)g(1989.)27 b(Av)n(ailable)15 b(as)0 1194 y(Berk)o(eley)9 b(tec)o(hnical)g(rep)q(ort)h(UCB/CSD)j(89/502.)-76 1245 y([17])20 b(Erik)13 b(Meijer,)g(Maarten)g(F)m(okkinga,)f(and)g (Ross)i(P)o(aterson.)20 b(F)m(unc-)0 1282 y(tional)c(programming)g (with)h(bananas,)g(lenses,)h(en)o(v)o(elop)q(es,)f(and)0 1319 y(barb)q(ed)11 b(wire.)21 b(In)13 b Fb(A)o(CM)h(Confer)n(enc)n(e)i (on)f(F)m(unctional)h(Pr)n(o)n(gr)n(am-)0 1357 y(ming)f(and)h(Computer) g(A)o(r)n(chite)n(ctur)n(e)p Fc(,)h(1991.)k(Also)15 b(published)c(in)0 1394 y(Lecture)f(Notes)h(in)g(Computer)g(Science,)e(523,)h(Springer-V)m (erlag.)-76 1445 y([18])20 b(Y.)10 b(Minamide.)h(A)f(functional)d (represen)o(tati)o(on)f(of)k(data)e(structures)0 1482 y(with)13 b(a)g(hole.)20 b(In)13 b Fb(Twenty-Fifth)h(A)o(CM)h(Symp)n (osium)g(on)g(Princi-)0 1520 y(ples)i(of)g(Pr)n(o)n(gr)n(amming)j(L)n (anguages)p Fc(,)f(pages)c(75{84,)h(San)f(Diego,)0 1557 y(Jan)o(uary)10 b(1998.)-76 1608 y([19])20 b(Y.)13 b(Minamide,)g(G.)f (Morrisett,)g(and)g(R.)h(Harp)q(er.)19 b(T)o(yp)q(ed)12 b(closure)0 1645 y(con)o(v)o(ersion.)20 b(In)14 b Fb(Twenty-Thir)n(d)h (A)o(CM)g(Symp)n(osium)h(on)f(Princi-)0 1683 y(ples)e(of)g(Pr)n(o)n(gr) n(amming)j(L)n(anguages)p Fc(,)e(pages)c(271{283,)g(St.)h(P)o(eters-)0 1720 y(burg,)f(Jan)o(uary)g(1996.)-76 1771 y([20])20 b(Bernhard)7 b(M\177)-18 b(oller.)12 b(T)m(o)o(w)o(ards)e(p)q(oin)o (ter)d(algebra.)k Fb(Scienc)n(e)i(of)e(Com-)0 1808 y(puter)i(Pr)n(o)n (gr)n(amming)p Fc(,)h(21:57{90,)9 b(1993.)-76 1859 y([21])20 b(Greg)11 b(Morrisett,)g(Karl)i(Crary)m(,)f(Neal)g(Glew,)h(and)e(Da)o (vid)h(W)m(alk)o(er.)0 1896 y(Stac)o(k-based)g(Typ)q(ed)j(Assem)o(bly)g (Language.)25 b(In)15 b Fb(Se)n(c)n(ond)j(Inter-)0 1934 y(national)12 b(Workshop)h(on)f(T)m(yp)n(es)h(in)f(Compilation)p Fc(,)f(pages)f(95{117,)0 1971 y(Ky)o(oto,)g(Marc)o(h)h(1998.)j (Published)9 b(in)i(Xa)o(vier)g(Lero)o(y)f(and)g(A)o(tsushi)0 2008 y(Ohori,)h(editors,)g Fb(L)n(e)n(ctur)n(e)k(Notes)f(in)f(Computer) h(Scienc)n(e)p Fc(,)g(v)o(olume)0 2046 y(1473,)c(pages)g(28-52.)g (Springer-V)m(erlag)o(,)f(1998.)-76 2096 y([22])20 b(Greg)11 b(Morrisett,)g(Da)o(vid)h(W)m(alk)o(er,)g(Karl)g(Crary)m(,)g(and)g (Neal)g(Glew.)0 2134 y(F)m(rom)h(System)f(F)h(to)f(Typ)q(ed)g(Assem)o (bly)h(Language.)k(In)12 b Fb(Twenty-)0 2171 y(Fifth)g(A)o(CM)g(Symp)n (osium)i(on)e(Principles)h(of)f(Pr)n(o)n(gr)n(amming)j(L)n(an-)0 2208 y(guages)p Fc(,)d(pages)f(85{97,)f(San)g(Diego,)g(Jan)o(uary)g (1998.)-76 2259 y([23])20 b(George)10 b(Necula)h(and)g(P)o(eter)g(Lee.) k(The)d(design)e(and)h(implemen)o(ta-)0 2297 y(tion)h(of)h(a)h (certifying)d(compiler.)19 b(In)13 b Fb(A)o(CM)i(Confer)n(enc)n(e)h(on) f(Pr)n(o-)0 2334 y(gr)n(amming)e(L)n(anguage)h(Design)f(and)f (Implementation)p Fc(,)g(pages)d(333)0 2371 y({)i(344,)g(Mon)o(treal,)e (June)i(1998.)-76 2422 y([24])20 b(Benjamin)13 b(Pierce)g(and)g(Da)o (vid)h(T)m(urner.)22 b(Simple)14 b(t)o(yp)q(e-theore)o(tic)0 2460 y(foundation)o(s)h(for)i(ob)r(ject-orien)n(ted)d(programming.)31 b Fb(Journal)18 b(of)0 2497 y(functional)13 b(pr)n(o)n(gr)n(amming)p Fc(,)h(4:207{247,)9 b(1994.)-76 2548 y([25])20 b(John)9 b(C.)h(Reynolds.)g(Syn)o(tactic)e(con)o(trol)f(of)j(in)o(terference)o (.)g(In)f Fb(Fifth)0 2585 y(A)o(CM)h(Symp)n(osium)i(on)e(Principles)h (of)g(Pr)n(o)n(gr)n(amming)i(L)n(anguages)p Fc(,)0 2622 y(pages)d(39{46,)g(T)m(ucson,)g(1978.)1020 -34 y([26])20 b(Mo)q(oly)13 b(Sagiv,)f(Thomas)i(Reps,)f(and)f(Reinhard)g(Wilhelm.)21 b(Solv-)1096 3 y(ing)15 b(shap)q(e-analys)o(is)f(problems)g(in)i (languages)e(with)i(destructiv)o(e)1096 40 y(up)q(dating.)21 b Fb(A)o(CM)15 b(T)m(r)n(ansactions)g(on)h(Pr)n(o)n(gr)n(amming)h(L)n (anguages)1096 78 y(and)c(Systems)p Fc(,)e(20\(1\):1{50,)e(Jan)o(uary)g (1998.)1020 132 y([27])20 b(Mo)q(oly)12 b(Sagiv,)f(Thomas)i(Reps,)g (and)f(Reinhard)f(Wilhelm.)19 b(P)o(ara-)1096 169 y(metric)14 b(shap)q(e)h(analysis)e(via)i(3-v)n(alued)e(logic.)26 b(In)15 b Fb(Twenty-Sixth)1096 206 y(A)o(CM)10 b(Symp)n(osium)h(on)g (Principles)g(of)g(Pr)n(o)n(gr)n(amming)i(L)n(anguages)p Fc(,)1096 244 y(pages)d(105{118,)f(San)i(An)o(tonio,)f(Jan)o(uary)f (1999.)1020 298 y([28])20 b(H.)26 b(Sc)o(horr)d(and)i(W.)h(M.)g(W)m (aite.)56 b(An)26 b(e\016cien)o(t)e(mac)o(hine-)1096 335 y(indep)q(enden)n(t)9 b(pro)q(cedure)h(for)i(garbage)e(collection)g (in)h(v)n(arious)g(list)1096 372 y(structures.)30 b Fb(Communic)n (ations)19 b(of)f(the)g(A)o(CM)p Fc(,)g(10\(8\):501{5)o(06,)1096 410 y(August)10 b(1967.)1020 464 y([29])20 b(F)m(rederic)o(k)38 b(Smith,)48 b(Da)o(vid)39 b(W)m(alk)o(er,)47 b(and)40 b(Greg)g(Mor-)1096 501 y(risett.)72 b(Alias)31 b(t)o(yp)q(es.)72 b(In)30 b Fb(Eur)n(op)n(e)n(an)j(Symp)n(osium)f(on)1096 539 y(Pr)n(o)n(gr)n(amming)p Fc(,)g(Marc)o(h)25 b(2000.)58 b(T)m(o)27 b(app)q(ear.)d(Av)n(ailable)h(at)1096 576 y(h)o(ttp://www.cs.corne)o(ll.ed)o(u/)o(talc)o(/p)o(ap)q(e)o(rs.h)n (tml.)1020 630 y([30])20 b(Johnathan)13 b(Sob)q(el)h(and)h(Daniel)f(F)m (riedman.)26 b(Recycling)13 b(con)o(tin-)1096 667 y(uations.)24 b(In)14 b Fb(A)o(CM)i(International)h(Confer)n(enc)n(e)h(on)e(F)m (unctional)1096 705 y(Pr)n(o)n(gr)n(amming)p Fc(,)e(pages)c(251{260,)f (Baltimore,)h(Septem)o(b)q(er)f(1998.)1020 759 y([31])20 b(T)m(ALx86.)j(See)14 b(h)o(ttp://www.cs.cornel)o(l.ed)o(u/)o(talc)d (for)i(an)h(imple-)1096 796 y(men)o(tation)h(of)j(T)o(yp)q(ed)f(Assem)o (bly)g(Language)f(based)g(on)h(In)o(tel's)1096 833 y(IA32)11 b(arc)o(hitecture)o(.)1020 887 y([32])20 b(Mads)12 b(T)m(ofte)g(and)g (Jean-Pierre)e(T)m(alpin.)17 b(Implemen)o(tation)10 b(of)i(the)1096 925 y(t)o(yp)q(ed)h(call-b)o(y-v)n(alu)o(e)f Fa(\025)p Fc(-calculus)g(using)i(a)h(stac)o(k)e(of)i(regions.)23 b(In)1096 962 y Fb(Twenty-First)14 b(A)o(CM)i(Symp)n(osium)g(on)g (Principles)g(of)g(Pr)n(o)n(gr)n(am-)1096 999 y(ming)c(L)n(anguages)p Fc(,)h(pages)c(188{201,)f(P)o(ortland,)h(Oregon,)g(Jan)o(uary)1096 1037 y(1994.)1020 1091 y([33])20 b(Da)o(vid)7 b(N.)h(T)m(urner,)g (Philip)f(W)m(adler,)h(and)f(Christian)g(Mossin.)i(Once)1096 1128 y(up)q(on)k(a)h(t)o(yp)q(e.)23 b(In)14 b Fb(A)o(CM)h (International)i(Confer)n(enc)n(e)g(on)e(F)m(unc-)1096 1165 y(tional)c(Pr)n(o)n(gr)n(amming)i(and)e(Computer)h(A)o(r)n(chite)n (ctur)n(e)p Fc(,)g(San)d(Diego,)1096 1203 y(CA,)j(June)f(1995.)1020 1257 y([34])20 b(Philip)13 b(W)m(adler.)24 b Fb(Listlessness)15 b(is)g(Better)h(than)g(L)n(aziness)p Fc(.)25 b(PhD)1096 1294 y(thesis,)11 b(Carnegie)h(Mellon)g(Univ)o(ersit)o(y)m(,)f(August)h (1985.)17 b(Av)n(ailable)1096 1331 y(as)9 b(Carnegie)f(Mellon)h(Univ)o (ersit)o(y)f(tec)o(hnical)f(rep)q(ort)h(CMU-CS-85-)1096 1369 y(171.)1020 1423 y([35])20 b(Philip)c(W)m(adler.)33 b(Linear)17 b(t)o(yp)q(es)g(can)g(c)o(hange)f(the)h(w)o(orld!)50 b(In)1096 1460 y(M.)12 b(Bro)o(y)f(and)g(C.)h(Jones,)f(editors,)f Fb(Pr)n(o)n(garmming)15 b(Conc)n(epts)f(and)1096 1497 y(Metho)n(ds)p Fc(,)g(Sea)f(of)g(Galilee,)f(Israel,)h(April)g(1990.)f (North)h(Holland.)1096 1535 y(IFIP)e(TC)i(2)e(W)m(orking)f(Conference.) 1020 1589 y([36])20 b(Da)o(vid)15 b(W)m(alk)o(er)g(and)g(Greg)g (Morrisett.)28 b(Alias)16 b(t)o(yp)q(es)f(for)g(recur-)1096 1626 y(siv)o(e)f(data)h(structures)e(\(extended)f(v)o(ersion\).)25 b(T)m(ec)o(hnical)14 b(Rep)q(ort)1096 1663 y(TR2000-1787,)f(Cornell)g (Univ)o(ersit)o(y)m(,)h(Marc)o(h)g(2000.)23 b(Also)15 b(a)o(v)n(ail-)1096 1701 y(able)10 b(at)h(h)o(ttp://www.cs.cornell.)o (edu)o(/ta)o(lc/p)o(apers.)o(h)o(tml.)1020 1755 y([37])20 b(Andrew)12 b(K.)h(W)m(righ)o(t)f(and)f(Matthias)g(F)m(elleisen.)17 b(A)c(syn)o(tactic)d(ap-)1096 1792 y(proac)o(h)j(to)h(t)o(yp)q(e)f (soundness.)23 b Fb(Information)16 b(and)g(Computation)p Fc(,)1096 1830 y(115\(1\):38{)o(94,)8 b(1994.)951 2747 y Fu(12)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF