%!PS-Adobe-2.0 %%Creator: dvips 5.493 Copyright 1986, 1992 Radical Eye Software %%Title: h_manual.dvi %%CreationDate: Sat Aug 14 17:07:29 1993 %%Pages: 62 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSCommandLine: dvips h_manual %DVIPSSource: TeX output 1993.08.14:1707 %%BeginProcSet: tex.pro /TeXDict 250 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 /@rigin{isls{[0 -1 1 0 0 0] concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize -72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put 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 add]{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{/FV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook} if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255 {IE S 1 string dup 0 3 index put cvn put}for 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 product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}ifelse}{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 /FV{ gsave 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 TeXDict begin 40258437 52099154 1000 300 300 (/users/onl2/coates/startup/tmp/funnelweb/hackman/h_manual.dvi) @start /Fa 37 123 df<000FF000007FFC0001F80E0003E01F0007C03F000F803F000F803F00 0F801E000F800C000F8000000F8000000F8000000F800000FFFFFF00FFFFFF000F801F000F801F 000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F80 1F000F801F000F801F000F801F000F801F000F801F000F801F007FF0FFE07FF0FFE01B237FA21F >12 D<387CFEFEFE7C3807077C8610>46 D<00180000780001F800FFF800FFF80001F80001F800 01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800 01F80001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07FFFE013207C 9F1C>49 D<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8FE01F87C01F83803F800 03F80003F00003F00007E00007C0000F80001F00003E0000380000700000E01801C01803801807 00180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF015207D9F1C>I<00FE0007FFC00F07E0 1E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F00003E00007C0001F8001FE0001FF00 0007C00001F00001F80000FC0000FC3C00FE7E00FEFF00FEFF00FEFF00FEFF00FC7E01FC7801F8 1E07F00FFFC001FE0017207E9F1C>I<00FE0003FFC00703E00E00F01C00F01C00783C00783E00 783F00783F80783FE0F01FF9E01FFFC00FFF8007FFC003FFE007FFF01E7FF83C1FFC7807FC7801 FEF000FEF0003EF0001EF0001EF0001CF8001C7800383C00381F01F00FFFC001FF0017207E9F1C >56 D<0003FE0080001FFF818000FF01E38001F8003F8003E0001F8007C0000F800F800007801F 800007803F000003803F000003807F000001807E000001807E00000180FE00000000FE00000000 FE00000000FE00000000FE00000000FE00000000FE00000000FE000000007E000000007E000001 807F000001803F000001803F000003801F800003000F8000030007C000060003F0000C0001F800 380000FF00F000001FFFC0000003FE000021227DA128>67 DIII73 D77 DI80 D82 D<01FC0407FF8C1F03FC3C007C7C003C78 001C78001CF8000CF8000CFC000CFC0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03 FFFE003FFE0003FF00007F00003F00003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF 00F8C7FFE080FF8018227DA11F>I<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F0 0001F0003FF003FDF01FC1F03F01F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F 07E03F18167E951B>97 DI<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC0000FC 0000FC00007C00007E00007E00003E00301F00600FC0E007FF8000FE0014167E9519>I<0001FE 000001FE0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E000000 3E0000003E0000003E0001FC3E0007FFBE000F81FE001F007E003E003E007E003E007C003E00FC 003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E007C003E007C003E00 3E007E001E00FE000F83BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF800F87C01E01E0 3E01F07C00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E0000 3E00181F00300FC07003FFC000FF0015167E951A>I<003F8000FFC001E3E003C7E007C7E00F87 E00F83C00F80000F80000F80000F80000F80000F8000FFFC00FFFC000F80000F80000F80000F80 000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80 000F80007FF8007FF80013237FA211>I104 D<1C003E007F007F007F003E001C000000000000000000000000000000FF 00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00 FFE0FFE00B247EA310>I108 DII<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007E FC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE00 17167E951C>I114 D<0FF3003FFF00781F00600700E00300E00300F00300FC00007FE0007FF8003FFE000FFF 0001FF00000F80C00780C00380E00380E00380F00700FC0E00EFFC00C7F00011167E9516>I<01 80000180000180000180000380000380000780000780000F80003F8000FFFF00FFFF000F80000F 80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F81800F81800F81800F 81800F81800F830007C30003FE0000F80011207F9F16>IIIIII<7FFFF07FFFF07C03E07007C0600FC0E01F80C01F00C03E00 C07E0000FC0000F80001F00003F03007E03007C0300F80701F80703F00603E00E07C03E0FFFFE0 FFFFE014167E9519>I E /Fb 44 122 df<00FCF807839C0E079C1C07081C07001C07001C0700 1C07001C0700FFFFE01C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700 1C07001C0700FF1FE01617809615>11 D<00FC000782000E07001C07001C02001C00001C00001C 00001C0000FFFF001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C 07001C0700FF1FE01317809614>I<60F0F070101020204040040A7D830A>44 D<60F0F06004047D830A>46 D<03000700FF000700070007000700070007000700070007000700 07000700070007000700070007007FF00C157E9412>49 D<01F00608080C181C301C70006000E0 00E3E0EC30F018F00CE00EE00EE00E600E600E300C3018183007C00F157F9412>54 D<07E018302018600C600C700C78183E101F600FC00FF018F8607C601EC00EC006C006C004600C 38300FE00F157F9412>56 D<07C0183030186018E00CE00CE00EE00EE00E601E301E186E0F8E00 0E000C001C70187018603020C01F800F157F9412>I<001000003800003800003800005C00005C 00005C00008E00008E00008E0001070001070003078002038002038007FFC00401C00401C00800 E00800E01800E03800F0FE03FE17177F961A>65 D<00FC100383300E00B01C0070380030300030 700010600010E00010E00000E00000E00000E00000E00000E00010600010700010300020380020 1C00400E008003830000FC0014177E9619>67 D70 D<007E080381980600580C00381800183000187000 08700008E00008E00000E00000E00000E00000E003FEE000387000387000383000381800380C00 380600380380D8007F0817177E961C>III77 DI<00FC000303000E01C01C00E0380070300030700038600018E0001CE000 1CE0001CE0001CE0001CE0001CE0001C7000387000383000303800701C00E00E01C003030000FC 0016177E961B>I<7FFFF860381840380840380880380480380480380400380000380000380000 380000380000380000380000380000380000380000380000380000380000380000380007FFC016 177F9619>84 DI87 D<1FC0386038301038003803F81E3830387038E039E039E07970FF1F1E 100E7F8D12>97 DI<07F01838303870106000E000E000E000E000600070083008183007C00D0E7F8D10> I<007E00000E00000E00000E00000E00000E00000E00000E00000E0007CE001C3E00300E00700E 00600E00E00E00E00E00E00E00E00E00600E00700E00301E00182E0007CFC012177F9614>I<0F C0186030307038E018FFF8E000E000E000600070083010183007C00D0E7F8D10>I<03E006700E 701C201C001C001C001C001C00FF801C001C001C001C001C001C001C001C001C001C001C001C00 FF800C1780960B>I<0F9E18E33060707070707070306018C02F80200060003FE03FF83FFC600E C006C006C006600C38380FE010157F8D12>II<183C3C1800000000007C1C1C1C1C1C1C1C1C1C1C1C1C FF081780960A>I<0300078007800300000000000000000000001F800380038003800380038003 800380038003800380038003800380038003804380E300E7007C00091D82960B>IIIII<07C018303018600C600CE00EE00EE00EE00EE00E701C3018183007C00F0E7F8D12>II<07C2001C2600381E00700E00600E 00E00E00E00E00E00E00E00E00600E00700E00301E001C2E0007CE00000E00000E00000E00000E 00000E00007FC012147F8D13>II<1F4060C0C040C040E000FF007F801FC001E080608060C060E0C09F000B 0E7F8D0E>I<080008000800180018003800FF8038003800380038003800380038003840384038 4038401C800F000A147F930E>IIII121 D E /Fc 1 50 df<0C003C00CC000C000C000C000C000C000C000C000C000C000C000C000C00FF 8009107E8F0F>49 D E /Fd 1 50 df<0C001C00EC000C000C000C000C000C000C000C000C000C 000C000C000C000C000C000C00FFC00A137D9211>49 D E /Fe 59 122 df<0001FF0000001FFFC000007F80F00000FC00F80001F801F80003F803FC0007F003FC0007F0 03FC0007F003FC0007F001F80007F000F00007F000000007F000000007F000000007F0000000FF FFFFFC00FFFFFFFC00FFFFFFFC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC00 07F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC 0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001 FC007FFF1FFFC07FFF1FFFC07FFF1FFFC0222A7FA926>12 D<0001FF803FE000001FFFE3FFF800 007F80FFF01E0000FE007F801F0001F800FF003F0003F801FF007F8007F001FE007F8007F001FE 007F8007F001FE007F8007F000FE003F0007F000FE001E0007F000FE00000007F000FE00000007 F000FE00000007F000FE000000FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF8007F000FE00 3F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F0 00FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F 8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000 FE003F8007F000FE003F8007F000FE003F8007F000FE003F807FFF0FFFE3FFF87FFF0FFFE3FFF8 7FFF0FFFE3FFF8352A7FA939>14 D<1C007F007F00FF80FFC0FFC07FC07FC01CC000C000C00180 018001800300030006000C001800300020000A157BA913>39 D45 D<1C003E007F00FF80FF80FF807F003E001C0009097B8813>I<00 000300000007800000078000000F8000000F0000000F0000001F0000001E0000003E0000003C00 00003C0000007C0000007800000078000000F8000000F0000001F0000001E0000001E0000003E0 000003C0000003C0000007C00000078000000F8000000F0000000F0000001F0000001E0000003E 0000003C0000003C0000007C0000007800000078000000F8000000F0000001F0000001E0000001 E0000003E0000003C0000003C0000007C00000078000000F8000000F0000000F0000001F000000 1E0000001E0000003E0000003C0000007C0000007800000078000000F8000000F0000000F00000 0060000000193C7CAC22>I<003F800001FFF00007E0FC000FC07E001F803F001F803F003F001F 803F001F807F001FC07F001FC07F001FC07F001FC0FF001FE0FF001FE0FF001FE0FF001FE0FF00 1FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF 001FE07F001FC07F001FC07F001FC07F001FC03F001F803F001F801F803F001F803F000FC07E00 07E0FC0001FFF000003F80001B277DA622>I<000E00001E00007E0007FE00FFFE00FFFE00F8FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE007FFFFE7FFFFE7FFFFE17277BA622>I<00FF800003FFF0000FFFFC001F 03FE003800FF007C007F80FE003FC0FF003FC0FF003FE0FF001FE0FF001FE07E001FE03C003FE0 00003FE000003FC000003FC000007F8000007F000000FE000000FC000001F8000003F0000003E0 0000078000000F0000001E0000003C00E0007000E000E000E001C001C0038001C0070001C00FFF FFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800003FF F00007FFFC000F81FE001F00FF003F80FF003F807F803F807F803F807F801F807F800F007F8000 00FF000000FF000000FE000001FC000001F8000007F00000FFC00000FFF0000001FC0000007E00 00007F0000007F8000003FC000003FC000003FE000003FE03C003FE07E003FE0FF003FE0FF003F E0FF003FC0FF007FC07E007F807C007F003F01FE001FFFFC0007FFF00000FF80001B277DA622> I<00000E0000001E0000003E0000007E000000FE000000FE000001FE000003FE0000077E00000E 7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E0001C07E0003807E0007007E000E 007E000E007E001C007E0038007E0070007E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE00 0000FE000000FE000000FE000000FE000000FE000000FE000000FE00007FFFF8007FFFF8007FFF F81D277EA622>I<0C0003000F803F000FFFFE000FFFFC000FFFF8000FFFF0000FFFE0000FFFC0 000FFE00000E0000000E0000000E0000000E0000000E0000000E0000000E7FC0000FFFF8000F80 FC000E003E000C003F0000001F8000001FC000001FC000001FE000001FE018001FE07C001FE0FE 001FE0FE001FE0FE001FE0FE001FC0FC001FC078003F8078003F803C007F001F01FE000FFFF800 03FFF00000FF80001B277DA622>I<0007F000003FFC0000FFFE0001FC0F0003F01F8007E03F80 0FC03F801FC03F801F803F803F801F003F8000007F0000007F0000007F000000FF000000FF0FC0 00FF3FF800FF707C00FFC03E00FFC03F00FF801F80FF801FC0FF001FC0FF001FE0FF001FE0FF00 1FE07F001FE07F001FE07F001FE07F001FE03F001FE03F001FC01F801FC01F803F800FC03F0007 E07E0003FFFC0000FFF000003FC0001B277DA622>I<380000003E0000003FFFFFF03FFFFFF03F FFFFF07FFFFFE07FFFFFC07FFFFF807FFFFF0070000E0070000E0070001C00E0003800E0007000 E000E0000000E0000001C000000380000007800000078000000F0000000F0000001F0000001F00 00003F0000003E0000003E0000007E0000007E0000007E0000007E000000FE000000FE000000FE 000000FE000000FE000000FE000000FE000000FE0000007C0000003800001C297CA822>I<003F C00001FFF00003FFFC0007C07E000F003F001E001F001E000F803E000F803E000F803F000F803F 000F803FC00F003FF01F001FFC1E001FFE3C000FFFF80007FFE00003FFF80001FFFC0001FFFE00 07FFFF000F0FFF801E03FFC03C01FFC07C007FE078001FE0F80007E0F80007E0F80003E0F80003 E0F80003E0F80003C07C0003C07C0007803F000F001FC03E000FFFFC0003FFF800007FC0001B27 7DA622>I<007F800001FFF00007FFF8000FE0FC001F807E003F803F007F003F007F001F80FF00 1F80FF001FC0FF001FC0FF001FC0FF001FE0FF001FE0FF001FE0FF001FE07F001FE07F003FE03F 003FE01F807FE00F807FE007C1DFE003FF9FE0007E1FE000001FE000001FC000001FC000001FC0 00003F801F003F803F803F003F803F003F807E003F807C001F01F8001E03F0000FFFE00007FF80 0001FE00001B277DA622>I<01FF000FFFE01E03F03801F87801FCFC01FEFE01FEFE01FEFE01FE 7C01FE3801FC0003F80007F00007C0000F80001F00001E00003C00003800003800007800007000 00700000700000700000700000700000000000000000000000000000000000000000700000F800 01FC0003FE0003FE0003FE0001FC0000F800007000172A7CA920>63 D<000003800000000007C0 0000000007C0000000000FE0000000000FE0000000000FE0000000001FF0000000001FF0000000 003FF8000000003FF8000000003FF80000000073FC0000000073FC00000000F3FE00000000E1FE 00000000E1FE00000001C0FF00000001C0FF00000003C0FF80000003807F80000007807FC00000 07003FC0000007003FC000000E003FE000000E001FE000001E001FF000001C000FF000001FFFFF F000003FFFFFF800003FFFFFF80000780007FC0000700003FC0000700003FC0000E00001FE0000 E00001FE0001E00001FF0001C00000FF0001C00000FF00FFFE001FFFFEFFFE001FFFFEFFFE001F FFFE2F297EA834>65 DI<00003FF001800003FFFE 0380000FFFFF8780003FF007DF8000FF8001FF8001FE00007F8003FC00003F8007F000001F800F F000000F801FE0000007801FE0000007803FC0000007803FC0000003807FC0000003807F800000 03807F8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF 8000000000FF8000000000FF8000000000FF80000000007F80000000007F80000000007FC00000 03803FC0000003803FC0000003801FE0000003801FE0000007000FF00000070007F000000E0003 FC00001E0001FE00003C0000FF8000F800003FF007E000000FFFFFC0000003FFFF000000003FF8 000029297CA832>II70 D<00007FE003000003FFFC0700001FFFFF0F00003FF00FFF0000FF8001FF0001FE 0000FF0003F800003F0007F000003F000FF000001F001FE000000F001FE000000F003FC000000F 003FC0000007007FC0000007007F80000007007F8000000000FF8000000000FF8000000000FF80 00000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8001FFFF F87F8001FFFFF87F8001FFFFF87FC00000FF003FC00000FF003FC00000FF001FE00000FF001FE0 0000FF000FF00000FF0007F00000FF0003F80000FF0001FE0000FF0000FF8001FF00003FF007BF 00001FFFFF1F000003FFFE0F0000007FF003002D297CA836>III76 DII<0000FFE000000007FFFC0000003FC07F8000007F001FC00001FC0007F00003F80003F8 0007F00001FC000FF00001FE001FE00000FF001FE00000FF003FC000007F803FC000007F807FC0 00007FC07F8000003FC07F8000003FC07F8000003FC0FF8000003FE0FF8000003FE0FF8000003F E0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF80 00003FE07F8000003FC07FC000007FC07FC000007FC03FC000007F803FC000007F801FE00000FF 001FE00000FF000FF00001FE0007F00001FC0003F80003F80001FC0007F00000FF001FE000003F C07F8000000FFFFE00000000FFE000002B297CA834>I I82 D<007F806003FFF0E007FFF9E00F807FE01F00 1FE03E0007E07C0003E07C0001E0FC0001E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FF C000007FFE00007FFFE0003FFFFC001FFFFE000FFFFF8007FFFFC003FFFFE000FFFFE00007FFF0 00007FF000000FF8000007F8000003F8600001F8E00001F8E00001F8E00001F8F00001F0F00001 F0F80003F0FC0003E0FF0007C0FFE01F80F3FFFF00E0FFFE00C01FF0001D297CA826>I<7FFFFF FFFFC07FFFFFFFFFC07FFFFFFFFFC07F803FC03FC07E003FC007C078003FC003C078003FC003C0 70003FC001C0F0003FC001E0F0003FC001E0E0003FC000E0E0003FC000E0E0003FC000E0E0003F C000E0E0003FC000E000003FC0000000003FC0000000003FC0000000003FC0000000003FC00000 00003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003F C0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC00000 00003FC0000000003FC0000000003FC0000000003FC00000007FFFFFE000007FFFFFE000007FFF FFE0002B287EA730>IIII<01FF80 0007FFF0000F81F8001FC07E001FC07E001FC03F000F803F8007003F8000003F8000003F800000 3F80000FFF8000FFFF8007FC3F800FE03F803F803F803F003F807F003F80FE003F80FE003F80FE 003F80FE003F807E007F807F00DF803F839FFC0FFF0FFC01FC03FC1E1B7E9A21>97 DI<001FF80000FFFE0003F01F0007E03F80 0FC03F801F803F803F801F007F800E007F0000007F000000FF000000FF000000FF000000FF0000 00FF000000FF000000FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0 070003F01E0000FFFC00001FE0001A1B7E9A1F>I<00003FF80000003FF80000003FF800000003 F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8000000 03F800000003F800000003F800000003F800001FE3F80000FFFBF80003F03FF80007E00FF8000F C007F8001F8003F8003F8003F8007F0003F8007F0003F8007F0003F800FF0003F800FF0003F800 FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8007F0003F8 003F8003F8001F8003F8000F8007F80007C00FF80003F03BFF8000FFF3FF80003FC3FF80212A7E A926>I<003FE00001FFF80003F07E0007C01F000F801F801F800F803F800FC07F000FC07F0007 C07F0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF0000007F0000007F00 00007F0000003F8000E01F8000E00FC001C007E0038003F81F0000FFFE00001FF0001B1B7E9A20 >I<0007F0003FFC00FE3E01F87F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007 F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007 F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007 F0007FFF807FFF807FFF80182A7EA915>I<00FF81F003FFE7F80FC1FE7C1F80FC7C1F007C383F 007E107F007F007F007F007F007F007F007F007F007F007F007F003F007E001F007C001F80FC00 0FC1F8001FFFE00018FF800038000000380000003C0000003E0000003FFFF8001FFFFF001FFFFF 800FFFFFC007FFFFE01FFFFFF03E0007F07C0001F8F80000F8F80000F8F80000F8F80000F87C00 01F03C0001E01F0007C00FC01F8003FFFE00007FF0001E287E9A22>II<07000F801FC03FE03FE03FE01FC00F800700000000000000000000 0000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0 0FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>I107 DIII<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F00 07F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF 0007F87F0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001FFFC00003FE000 1D1B7E9A22>II114 D<03FE300FFFF01E03F03800F070 0070F00070F00070F80070FC0000FFE0007FFE007FFF803FFFE01FFFF007FFF800FFF80003FC00 00FC60007CE0003CF0003CF00038F80038FC0070FF01E0F7FFC0C1FF00161B7E9A1B>I<007000 00700000700000700000F00000F00000F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF0 07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000 07F03807F03807F03807F03807F03807F03803F03803F87001F86000FFC0001F8015267FA51B> IIIIII E /Ff 17 121 df<00001E000000003E00000000FE 00000003FE0000003FFE0000FFFFFE0000FFFFFE0000FFFFFE0000FFCFFE0000000FFE0000000F FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000 0FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000 000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00 00000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE 0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000F FE0000000FFE0000000FFE00007FFFFFFFC07FFFFFFFC07FFFFFFFC07FFFFFFFC0223879B731> 49 D<0007FE0000007FFFE00001FFFFF80003FFFFFE0007F01FFF000F8007FF801F0001FFC03E 0000FFE07F8000FFF07FC0007FF0FFE0007FF8FFF0003FF8FFF0003FFCFFF0003FFCFFF0003FFC FFF0003FFC7FE0003FFC3FC0003FFC1F80003FFC0000003FFC0000003FF80000007FF80000007F F00000007FF0000000FFE0000000FFC0000001FF80000001FF00000003FE00000007FC00000007 F80000000FF00000001FC00000003F800000007F00000000FC00000001F800000001F0003C0003 E0003C0007C0003C000F000078001E000078003C00007800780000F800F00000F801FFFFFFF803 FFFFFFF007FFFFFFF00FFFFFFFF01FFFFFFFF03FFFFFFFF07FFFFFFFF0FFFFFFFFF0FFFFFFFFE0 FFFFFFFFE0FFFFFFFFE026387BB731>I<0003FF8000001FFFF000007FFFFE0000FE03FF0001F0 00FF8003C000FFC00780007FE00FF0007FF00FF8007FF01FFC007FF81FFE007FF81FFE007FF81F FE007FF81FFE007FF81FFE007FF80FFC007FF007F8007FF003F0007FF0000000FFE0000000FFC0 000001FF80000001FF00000003FE00000007FC0000001FF000000FFFC000000FFF8000000FFFF8 00000003FE00000000FF800000007FE00000003FF00000003FF80000003FFC0000001FFC000000 1FFE0000001FFE0200001FFF1FC0001FFF3FE0001FFF7FF0001FFF7FF0001FFFFFF8001FFFFFF8 001FFFFFF8001FFEFFF8001FFEFFF0001FFE7FF0003FFC7FE0003FFC3FC0003FF81F80007FF01F E000FFE007FC03FFC003FFFFFF0001FFFFFE00003FFFF0000007FF800028397CB731>I<000000 07C0000000000FC0000000000FC0000000001FC0000000003FC0000000007FC000000000FFC000 000000FFC000000001FFC000000003FFC000000007FFC00000000FFFC00000000FFFC00000001E FFC00000003CFFC00000007CFFC0000000F8FFC0000000F0FFC0000001E0FFC0000003C0FFC000 0007C0FFC000000F80FFC000000F00FFC000001E00FFC000003C00FFC000007C00FFC00000F800 FFC00000F000FFC00001E000FFC00003C000FFC00007C000FFC0000F8000FFC0000F0000FFC000 1E0000FFC0003C0000FFC0007C0000FFC000F80000FFC000FFFFFFFFFFC0FFFFFFFFFFC0FFFFFF FFFFC0FFFFFFFFFFC0000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000 000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0000007FFFFFFC00007FF FFFFC00007FFFFFFC00007FFFFFFC02A377DB631>I<00000001F80000000000000001F8000000 0000000003FC0000000000000003FC0000000000000007FE0000000000000007FE000000000000 0007FE000000000000000FFF000000000000000FFF000000000000001FFF800000000000001FFF 800000000000001FFF800000000000003FFFC00000000000003FFFC00000000000007FFFE00000 000000007DFFE00000000000007DFFE0000000000000FDFFF0000000000000F8FFF00000000000 01F8FFF8000000000001F07FF8000000000001F07FF8000000000003F07FFC000000000003E03F FC000000000007E03FFE000000000007C01FFE00000000000FC01FFF00000000000F801FFF0000 0000000F800FFF00000000001F800FFF80000000001F0007FF80000000003F0007FFC000000000 3E0003FFC0000000003E0003FFC0000000007E0003FFE0000000007C0001FFE000000000FC0001 FFF000000000F80000FFF000000000F80000FFF000000001FFFFFFFFF800000001FFFFFFFFF800 000003FFFFFFFFFC00000003FFFFFFFFFC00000003E000003FFC00000007E000003FFE00000007 C000001FFE0000000FC000001FFF0000000F8000000FFF0000001F8000000FFF8000001F000000 0FFF8000001F00000007FF8000003F00000007FFC000003E00000003FFC000007E00000003FFE0 0000FF00000001FFE000FFFFFC0001FFFFFFF0FFFFFC0001FFFFFFF0FFFFFC0001FFFFFFF0FFFF FC0001FFFFFFF0443B7DBA4B>65 DI<0000001FFF000030000001FFFF E000F000000FFFFFFC01F000007FFFFFFE03F00001FFFE007F87F00003FFE0000FCFF0000FFF00 0003FFF0001FFC000001FFF0003FF80000007FF0007FF00000003FF000FFC00000003FF001FFC0 0000001FF003FF800000000FF007FF000000000FF00FFF0000000007F00FFE0000000007F01FFE 0000000003F01FFE0000000003F03FFC0000000003F03FFC0000000001F03FFC0000000001F07F FC0000000001F07FF80000000001F07FF80000000000007FF8000000000000FFF8000000000000 FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF80000000000 00FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800000000 00007FF80000000000007FF80000000000007FF80000000000007FFC0000000000F03FFC000000 0000F03FFC0000000000F03FFC0000000000F01FFE0000000000F01FFE0000000001E00FFE0000 000001E00FFF0000000001E007FF0000000003C003FF8000000003C001FFC0000000078000FFE0 0000000F00007FF00000001F00003FF80000003E00001FFC0000007C00000FFF000001F8000003 FFE00007F0000001FFFE003FC00000007FFFFFFF000000000FFFFFFC0000000001FFFFF0000000 00001FFF0000003C3D7BBB47>I<001FFF00000001FFFFF0000003FFFFFC000007F007FE00000F F801FF00001FFC00FF80001FFC007FC0001FFC007FE0001FFC003FE0000FF8003FF0000FF8003F F00007F0003FF00001C0003FF0000000003FF0000000003FF0000000003FF0000000FFFFF00000 0FFFFFF000007FF83FF00001FF803FF00007FE003FF0000FF8003FF0001FF0003FF0003FE0003F F0007FE0003FF0007FE0003FF000FFC0003FF000FFC0003FF000FFC0003FF000FFC0003FF000FF C0007FF0007FE0007FF0007FE000DFF0003FF0039FF8001FFC0F0FFFF007FFFE0FFFF001FFFC07 FFF0003FE000FFF02C267DA530>97 D<000000003FC00000003FFFC00000003FFFC00000003FFF C00000003FFFC000000001FFC000000000FFC000000000FFC000000000FFC000000000FFC00000 0000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FF C000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC00000FFC0FFC0000F FFF8FFC0003FFFFEFFC000FFE03FFFC001FF000FFFC003FE0003FFC007FC0001FFC00FF80000FF C01FF00000FFC01FF00000FFC03FF00000FFC03FE00000FFC07FE00000FFC07FE00000FFC07FE0 0000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FF C0FFE00000FFC0FFE00000FFC0FFE00000FFC07FE00000FFC07FE00000FFC07FE00000FFC03FF0 0000FFC03FF00000FFC01FF00000FFC00FF80001FFC007F80003FFC003FC0007FFC001FE000FFF E000FFC07EFFFF003FFFFCFFFF000FFFF0FFFF0001FF80FFFF303C7DBB37>100 D<0001FFC000000FFFF800003FFFFE0000FF80FF0001FE003F8007FC001FC00FF8000FE00FF800 0FF01FF00007F03FF00007F83FF00007F87FE00007F87FE00003FC7FE00003FC7FE00003FCFFE0 0003FCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFE0000000FFE0000000FFE0000000FFE00000007F E00000007FE00000007FE00000003FE00000003FF000003C1FF000003C1FF000003C0FF8000078 07FC0000F803FE0001F001FF0007E000FFC03FC0003FFFFF000007FFFC000000FFE00026267DA5 2D>I<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF00000000 03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00 00000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000 03FF0000000003FF0000000003FF0000000003FF007FC00003FF01FFF80003FF07FFFC0003FF0F 03FE0003FF1C01FF0003FF3001FF8003FF6000FF8003FFE000FFC003FFC000FFC003FF8000FFC0 03FF8000FFC003FF8000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00 00FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0 03FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00 00FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFF FFFFFC3FFFFFFFFFFC3FFFFF303C7CBB37>104 D<01F00007FC000FFE000FFE001FFF001FFF00 1FFF001FFF001FFF000FFE000FFE0007FC0001F000000000000000000000000000000000000000 00000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003FF0003FF00 03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00 03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00FFFFF8 FFFFF8FFFFF8FFFFF8153D7DBC1B>I<00FE007FC000FFFE01FFF800FFFE07FFFC00FFFE0F03FE 00FFFE1C01FF0007FE3001FF8003FE6000FF8003FEE000FFC003FEC000FFC003FF8000FFC003FF 8000FFC003FF8000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF 0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFF FC3FFFFFFFFFFC3FFFFF30267CA537>110 D<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFF FE03FF00FFFFF000FF8003FFC0007FC003FF80003FE003FF00003FF003FF00001FF803FF00001F FC03FF00000FFC03FF00000FFE03FF00000FFE03FF000007FE03FF000007FF03FF000007FF03FF 000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007 FF03FF000007FE03FF000007FE03FF00000FFE03FF00000FFC03FF00000FFC03FF00001FF803FF 00001FF803FF00003FF003FF80003FE003FFC0007FC003FFF001FF8003FFFC07FF0003FF3FFFFC 0003FF0FFFF00003FF01FF000003FF0000000003FF0000000003FF0000000003FF0000000003FF 0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000 0003FF0000000003FF00000000FFFFFC000000FFFFFC000000FFFFFC000000FFFFFC0000003037 7DA537>112 D<00FE03F000FFFE0FFE00FFFE1FFF00FFFE3C3F80FFFE707FC007FE60FFE003FE E0FFE003FEC0FFE003FFC0FFE003FF807FC003FF807FC003FF803F8003FF800E0003FF00000003 FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000 03FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF0000 0003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE0000FFFFFE0000FFFFFE 000023267DA529>114 D<0007800000078000000780000007800000078000000F8000000F8000 000F8000000F8000001F8000001F8000003F8000003F8000007F800000FF800001FF800007FF80 001FFFFFF0FFFFFFF0FFFFFFF0FFFFFFF001FF800001FF800001FF800001FF800001FF800001FF 800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001 FF800001FF800001FF800001FF800001FF803C01FF803C01FF803C01FF803C01FF803C01FF803C 01FF803C01FF803C00FF807800FFC078007FC070003FE0E0001FFFC00007FF800001FF001E377E B626>116 D120 D E /Fg 1 98 df<00200000700000700000700000B80000B80000B800011C 00011C00011C00020E00020E0004070004070007FF000803800803800803801801C03803C0FE0F F815157F9419>97 D E /Fh 36 122 df<0001FC000703000C03001C07001C0300180000380000 380000380000380000700007FFFC00701C00701C00701C00E03800E03800E03800E03800E07001 C07001C07001C07001C0E201C0E201C0E20380E4038064038038038000030000070000060000C6 0000E40000CC00007000001825819C17>12 D<183C3C3C0404080810204080060C779C0D>39 D<0000180000001800000038000000380000007800000078000000B8000001B800000138000002 380000023C0000041C0000041C0000081C0000181C0000101C0000201C0000201C00007FFC0000 401C0000801C0001801C0001001C0002001C0002001C0004000E000C000E001C001E00FF00FFC0 1A1D7E9C1F>65 D<0003F020001E0C60003002E000E003C001C001C0038001C0070000C00E0000 801E0000801C0000803C0000803C000000780000007800000078000000F0000000F0000000F000 0000F0000000F0000400F0000400F0000400F0000800700008007000100038002000180040000C 0180000706000001F800001B1E7A9C1E>67 D<01FFFFC0003C01C0003800C00038008000380080 003800800070008000700080007020800070200000E0400000E0400000E0C00000FFC00001C080 0001C0800001C0800001C080000381000003800000038000000380000007000000070000000700 0000070000000F000000FFF000001A1C7D9B1B>70 D<01FFCFFE003C01E0003801C0003801C000 3801C0003801C00070038000700380007003800070038000E0070000E0070000E0070000FFFF00 01C00E0001C00E0001C00E0001C00E0003801C0003801C0003801C0003801C0007003800070038 0007003800070038000F007800FFE7FF001F1C7D9B1F>72 D<01FFC0003C000038000038000038 0000380000700000700000700000700000E00000E00000E00000E00001C00001C00001C00001C0 000380000380000380000380000700000700000700000700000F0000FFE000121C7E9B10>I<00 7FF0000780000700000700000700000700000E00000E00000E00000E00001C00001C00001C0000 1C0000380000380000380000380000700000700000700000700060E000E0E000C0C00081C00083 80004700003C0000141D7B9B16>I<01FE0007F8003E000780002E000F00002E001700002E0017 00002E002700004E002E00004E004E00004E004E00004E008E00008E011C00008E011C00008E02 1C00008E021C000107043800010704380001070838000107103800020710700002072070000207 2070000207407000040740E000040780E000040700E0000C0700E0001C0601E000FF861FFC0025 1C7D9B25>77 D<01FFFC00003C070000380380003801C0003801C0003801C0007003C0007003C0 007003C00070038000E0078000E0070000E00E0000E0380001FFE00001C0000001C0000001C000 0003800000038000000380000003800000070000000700000007000000070000000F000000FFE0 00001A1C7D9B1C>80 D<000F8400304C00403C0080180100180300180300180600100600100600 0007000007000003E00003FC0001FF00007F800007C00001C00001C00000C00000C02000C02000 C0600180600180600300600200F00400CC180083E000161E7D9C17>83 D<1FFFFFC01C0701C030 0E00C0200E0080600E0080400E0080401C0080801C0080801C0080001C00000038000000380000 00380000003800000070000000700000007000000070000000E0000000E0000000E0000000E000 0001C0000001C0000001C0000001C0000003C000007FFE00001A1C799B1E>I<7FF0FF800F001C 000E0018000E0010000E0010000E0010001C0020001C0020001C0020001C002000380040003800 4000380040003800400070008000700080007000800070008000E0010000E0010000E0010000E0 020000E0020000E0040000E00400006008000030300000104000000F800000191D779B1F>I87 D<03CC063C0C3C181C3838303870387038E070E070E070E070E0E2C0E2C0E261E462643C380F12 7B9115>97 D<3F00070007000E000E000E000E001C001C001C001C0039C03E6038303830703870 3870387038E070E070E070E060E0E0C0C0C1C0618063003C000D1D7B9C13>I<01F007080C0818 1C3838300070007000E000E000E000E000E000E008E010602030C01F000E127B9113>I<001F80 000380000380000700000700000700000700000E00000E00000E00000E0003DC00063C000C3C00 181C00383800303800703800703800E07000E07000E07000E07000E0E200C0E200C0E20061E400 6264003C3800111D7B9C15>I<01E007100C1018083810701070607F80E000E000E000E000E000 E0086010602030C01F000D127B9113>I<0003C0000670000C70001C60001C00001C0000380000 380000380000380000380003FF8000700000700000700000700000700000E00000E00000E00000 E00000E00001C00001C00001C00001C00001C000038000038000038000030000030000070000C6 0000E60000CC00007800001425819C0D>I<00F3018F030F06070E0E0C0E1C0E1C0E381C381C38 1C381C383830383038187818F00F700070007000E000E0C0C0E1C0C3007E00101A7D9113>I<0F C00001C00001C0000380000380000380000380000700000700000700000700000E78000E8C000F 0E000E0E001C0E001C0E001C0E001C0E00381C00381C00381C0038380070388070388070708070 7100E03200601C00111D7D9C15>I<01800380010000000000000000000000000000001C002600 470047008E008E000E001C001C001C0038003800710071007100720072003C00091C7C9B0D>I< 0FC00001C00001C0000380000380000380000380000700000700000700000700000E0F000E1100 0E23800E43801C83001C80001D00001E00003F800039C00038E00038E00070E20070E20070E200 70E400E06400603800111D7D9C13>107 D<1F800380038007000700070007000E000E000E000E 001C001C001C001C0038003800380038007000700070007000E400E400E400E40068003800091D 7C9C0B>I<3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C07 01C01C0701C01C0701C01C070380380E0388380E0388380E0708380E0710701C0320300C01C01D 127C9122>I<3C3C002646004687004707008E07008E07000E07000E07001C0E001C0E001C0E00 1C1C00381C40381C40383840383880701900300E0012127C9117>I<01E007180C0C180C380C30 0E700E700EE01CE01CE01CE018E038E030E06060C031801E000F127B9115>I<07870004D98008 E0C008E0C011C0E011C0E001C0E001C0E00381C00381C00381C003818007038007030007070007 06000E8C000E70000E00000E00001C00001C00001C00001C00003C0000FF8000131A7F9115>I< 3C3C26C2468747078E068E000E000E001C001C001C001C0038003800380038007000300010127C 9112>114 D<01F006080C080C1C18181C001F001FC00FF007F0007800386030E030C030806060 C01F000E127D9111>I<00C001C001C001C00380038003800380FFE00700070007000E000E000E 000E001C001C001C001C00384038403840388019000E000B1A7D990E>I<1E0300270700470700 470700870E00870E000E0E000E0E001C1C001C1C001C1C001C1C00383880383880183880183900 1C5900078E0011127C9116>I<1E01832703874703874703838707018707010E07010E07011C0E 021C0E021C0E021C0E04180C04181C04181C081C1C100C263007C3C018127C911C>119 D<070E0019910010E38020E38041C30041C00001C00001C0000380000380000380000380000702 00670200E70400CB04008B080070F00011127D9113>I<1E03270747074707870E870E0E0E0E0E 1C1C1C1C1C1C1C1C38383838183818381C7007F00070007000E0E0C0E1C0818047003C00101A7C 9114>I E /Fi 91 127 df<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600000000060F0F0600419 779816>33 DI<00C00001 C00001C00001C00007F0001FFC003FFE007DCF0071C780E1C380E1C780E1C780F1C30079C0003F C0001FF00007FC0001FE0001CF0001C70061C380F1C380F1C380E1C38071C70079DF003FFE001F F80007E00001C00001C00000C00011207E9C16>36 D<03800007E0000FE0001E70001C70001C70 001C70001C77E01CE7E01DE7E00FC7000F8E000F0E001E0E003F1C007F1C00739C00E3F800E1F8 00E0F1C0E0F1C071F9C07FFFC03F9F801E070013197F9816>38 D<30787C3C1C1C1C1C3878F0E0 40060D789816>I<00E001E0038007000E001C001C0038003800700070007000E000E000E000E0 00E000E000E000E000E000700070007000380038001C001C000E000700038001E000E00B217A9C 16>II<01C0 0001C00001C00001C00071C700F9CF807FFF001FFC0007F00007F0001FFC007FFF00F9CF8071C7 0001C00001C00001C00001C00011127E9516>I<01C00001C00001C00001C00001C00001C00001 C00001C000FFFF80FFFF80FFFF8001C00001C00001C00001C00001C00001C00001C00001C00011 137E9516>I<387C7E7E3E0E1E1C78F060070B798416>II< 70F8F8F8700505788416>I<000180000380000380000700000700000E00000E00001C00001C00 00380000380000700000700000E00000E00001C00001C0000380000380000700000700000E0000 0E00001C00001C0000380000380000700000700000E00000E00000C0000011207E9C16>I<03E0 000FF8001FFC001E3C00380E00780F00700700700700E00380E00380E00380E00380E00380E003 80E00380E00380F00780700700700700780F003C1E001E3C001FFC000FF80003E00011197E9816 >I<01800380038007800F807F80FF807380038003800380038003800380038003800380038003 800380038003807FF87FFC7FF80E197C9816>I<07E0001FF8003FFC00783E00E00700F00780F0 0380600380000380000380000700000700000E00001C0000380000700000E00001C0000380000F 00001E03803803807FFF80FFFF807FFF8011197E9816>I<07E0001FF8003FFC00781E00780700 300700000700000700000E00003E0007FC0007F00007FC00001E00000700000300000380000380 600380F00380E00700781E003FFC001FF80007E00011197E9816>I<007C0000FC0000DC0001DC 00039C00039C00071C000F1C000E1C001E1C003C1C00381C00781C00F01C00FFFFE0FFFFE0FFFF E0001C00001C00001C00001C00001C0001FFC001FFC001FFC013197F9816>I<3FFE003FFE003F FE003800003800003800003800003800003800003800003BF0003FFC003FFE003C0F0030070000 0380000380600380F00380F00380E00700781E003FFC001FF80007E00011197E9816>I<00F800 03FC0007FE000F07001C0F00380F00780600700000700000E3F800EFFC00FFFE00F80F00F00700 F00380E00380E003807003807003807007803807003C1E001FFC000FF80003E00011197E9816> II<07F0001FFC003FFE007C1F00F00780E00380E00380E003807007007C1F001F FC0007F0001FFC003C1E00700700F00780E00380E00380E00380F007807007007C1F003FFE001F FC0007F00011197E9816>I<03E0000FF8001FFC003C1E00700E00700700E00700E00780E00380 E00380E00780700780780F803FFF801FFB800FE380000700000700300700780E00781C00707800 3FF0001FE0000F800011197E9816>I<70F8F8F870000000000000000070F8F8F8700512789116> I<387C7C7C38000000000000000038787C7C3C1C1C3870E0400618799116>I<00018000078000 1F80003E0000F80001F00007C0000F80003E0000FC0000F00000FC00003E00000F800007C00001 F00000F800003E00001F8000078000018011157E9616>I<7FFF00FFFF80FFFF80000000000000 000000000000000000FFFF80FFFF807FFF00110B7E9116>II<0FE03FF87FFCF01EF00EF00E601E003C007800F001C0 038003800380038003800300000000000000000003000780078003000F197D9816>I<00F80003 FC0007FE000F07001C3F80387F8078FF8071C3C071C3C0E381C0E381C0E381C0E381C0E381C0E3 81C0E381C071C38071C38078FF00387E001C3C000F03C007FFC003FF0000FC0012197E9816>I< 00E00001F00001F00001B00001B00003B80003B80003B800031800071C00071C00071C00071C00 071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007F1FC0FF1FE07F1FC013197F 9816>I<7FF800FFFE007FFF001C0F001C07801C03801C03801C03801C07801C07001FFF001FFE 001FFE001C1F001C03801C03C01C01C01C01C01C01C01C01C01C03C01C07807FFF80FFFF007FFC 0012197F9816>I<01F18007FB800FFF801F0F803C0780380380700380700380F00000E00000E0 0000E00000E00000E00000E00000E00000F000007003807003803803803C07001F0F000FFE0007 FC0001F00011197E9816>I<7FF800FFFE007FFF001C0F001C07801C03C01C01C01C01C01C01E0 1C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C03C01C07801C0F80 7FFF00FFFE007FF8001319809816>I<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00 001C00001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00 E01C00E07FFFE0FFFFE07FFFE013197F9816>II<03E30007FF000FFF001E1F003C0F00 380700700700700700F00000E00000E00000E00000E00000E03F80E07FC0E03F80F00700700700 700700380F003C0F001E1F000FFF0007F70003E70012197E9816>I<7F1FC0FFBFE07F1FC01C07 001C07001C07001C07001C07001C07001C07001FFF001FFF001FFF001C07001C07001C07001C07 001C07001C07001C07001C07001C07007F1FC0FFBFE07F1FC013197F9816>II<07FE07FF07FE00380038003800380038003800380038003800380038 003800380038003800386038F038F0707FF07FE01F8010197D9816>I<7F0FE0FF8FF07F0FE01C 07801C0F001C0E001C1C001C3C001C78001CF0001CE0001DF0001FF0001FF8001F38001E1C001C 1C001C0E001C0E001C07001C07001C03807F07E0FF8FF07F07E01419809816>III<7E1FC0FF3FE07F1FC01D07001D87001D87001D87001DC7001DC7001CC7001CC7001CE7001C E7001CE7001C67001C67001C77001C77001C37001C37001C37001C17007F1F00FF9F007F0F0013 197F9816>I<1FFC003FFE007FFF00780F00F00780E00380E00380E00380E00380E00380E00380 E00380E00380E00380E00380E00380E00380E00380E00380F00780F00780780F007FFF003FFE00 1FFC0011197E9816>I<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03 C01C03801C0F801FFF001FFE001FF8001C00001C00001C00001C00001C00001C00001C00007F00 00FF80007F000012197F9816>I<1FFC003FFE007FFF00780F00F00780E00380E00380E00380E0 0380E00380E00380E00380E00380E00380E00380E00380E00380E00380E0E380E1E380F0F78078 7F007FFF003FFE001FFC00001C00001E00000E00000F00000700000700111F7E9816>I<7FE000 FFF8007FFC001C1E001C0F001C07001C07001C07001C07001C0F001C1E001FFC001FF8001FFC00 1C1C001C0E001C0E001C0E001C0E001C0E201C0E701C0E707F07E0FF87E07F03C014197F9816> I<07E3001FFF003FFF00781F00F00700E00700E00700E00000F000007800003F80001FF00007FC 0000FE00000F00000700000380000380600380E00380E00700F80F00FFFE00FFFC00C7F0001119 7E9816>I<7FFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0E0E000E00000E00000E00000E00000 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00007FC000FFE0007 FC0013197F9816>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C0 1C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C00E03800E038007070007FF00 03FE0000F8001519809816>III<7F1F807F3F807F1F800E1E000E1C00073C00 07380003B80003F00001F00001E00000E00001E00001F00003F00003B80007B800071C00071C00 0E0E000E0E001C07007F1FC0FF1FE07F1FC013197F9816>II<7FFF80FFFF80FFFF80E0 0700E00F00E01E00E01C00003C0000780000700000F00001E00001C00003C0000780000700000F 00001E03801C03803C0380780380700380FFFF80FFFF80FFFF8011197E9816>IIII<03000F803FE0FDF8F07840100D067C9816>II< 081C3C7870E0E0E0E0F0F87830060D789B16>I<1FE0003FF0007FF800783C00300E00000E0000 0E0003FE001FFE003E0E00700E00E00E00E00E00E00E00783E007FFFE03FE7E00F83E013127E91 16>I<7E0000FE00007E00000E00000E00000E00000E00000E3E000EFF000FFF800F83C00F00E0 0E00E00E00700E00700E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF00063C00 1419809816>I<03F80FFC1FFE3C1E780C7000E000E000E000E000E000F000700778073E0E1FFC 0FF803F010127D9116>I<003F00007F00003F0000070000070000070000070003C7000FF7001F FF003C1F00780F00700700E00700E00700E00700E00700E00700E00700700F00700F003C1F001F FFE00FE7F007C7E014197F9816>I<03E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E000 700778073C0F1FFE0FFC03F010127D9116>I<001F00007F8000FF8001E78001C30001C00001C0 007FFF00FFFF00FFFF0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0 0001C00001C0003FFE007FFF003FFE0011197F9816>I<03E3C007F7E00FFFE01C1CC0380E0038 0E00380E00380E00380E001C1C000FF8001FF0001BE0003800001800001FFC001FFF003FFF8078 03C0E000E0E000E0E000E0E000E07001C07C07C03FFF800FFE0003F800131C7F9116>I<7E0000 FE00007E00000E00000E00000E00000E00000E3C000EFE000FFF000F87800F03800E03800E0380 0E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01519809816> I<018003C003C0018000000000000000007FC07FC07FC001C001C001C001C001C001C001C001C0 01C001C001C001C07FFFFFFF7FFF101A7D9916>I<003000780078003000000000000000001FF8 1FF81FF80038003800380038003800380038003800380038003800380038003800380038003800 3800386070F0F0FFE07FC03F800D237E9916>I<7E0000FE00007E00000E00000E00000E00000E 00000E7FE00E7FE00E7FE00E0F000E1E000E3C000E78000EF0000FF0000FF8000FBC000F1E000E 0E000E07000E07807F87F0FFCFF07F87F01419809816>III<7E3C00FEFE007FFF000F87800F03800E03800E03800E03800E03800E 03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01512809116>I<03E0000FF800 1FFC003C1E00780F00700700E00380E00380E00380E00380E00380F00780700700780F003C1E00 1FFC000FF80003E00011127E9116>I<7E3E00FEFF007FFF800F83C00F00E00E00E00E00700E00 700E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF000E3C000E00000E00000E00 000E00000E00000E00007FC000FFE0007FC000141B809116>I<07C7000FE7001FF7003C1F0070 0F00700F00E00700E00700E00700E00700E00700E00700700F00700F003C3F003FF7001FE70007 C700000700000700000700000700000700000700003FE0007FF0003FE0141B7E9116>II<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8 003C600EE00EF00EF81EFFFCFFF8C7E00F127D9116>I<0300000700000700000700000700007F FF00FFFF00FFFF0007000007000007000007000007000007000007000007010007038007038007 038007870003FE0001FC0000F80011177F9616>I<7E1F80FE3F807E1F800E03800E03800E0380 0E03800E03800E03800E03800E03800E03800E03800E03800E0F800FFFF007FBF803E3F0151280 9116>I<7F1FC0FF1FE07F1FC01C07001E0F000E0E000E0E000E0E00071C00071C00071C00071C 0003B80003B80003B80001F00001F00000E00013127F9116>II<7F1FC07F3FC07F1FC00F1C00073C0003B80003F00001F00000E00001E000 01F00003B800073C00071C000E0E007F1FC0FF3FE07F1FC013127F9116>I<7F1FC0FF9FE07F1F C01C07000E07000E0E000E0E00070E00071C00071C00039C00039C0003980001B80001B80000F0 0000F00000F00000E00000E00000E00001C00079C0007BC0007F80003F00003C0000131B7F9116 >I<001F80007F8000FF8001E00001C00001C00001C00001C00001C00001C00001C00001C00001 C00003C0007F8000FF0000FF00007F800003C00001C00001C00001C00001C00001C00001C00001 C00001C00001C00001E00000FF80007F80001F8011207E9C16>123 DI<7C0000FF0000FF800003 C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001E00000FF00007F8000 7F8000FF0001E00001C00001C00001C00001C00001C00001C00001C00001C00001C00003C000FF 8000FF00007C000011207E9C16>I<1C303F78FFF8F7E061C00D057C9816>I E /Fj 8 111 df<60F0F06004047C830C>58 D<0000038000000F0000003C000000F0000003C0 00000F0000003C000000F0000003C000000F0000003C000000F0000000F00000003C0000000F00 000003C0000000F00000003C0000000F00000003C0000000F00000003C0000000F000000038019 187D9520>60 D62 D<00000C0000000C0000001C0000001C0000003C0000007C0000005C0000009C0000008E000001 0E0000010E0000020E0000040E0000040E0000080E0000080E0000100E0000200E00003FFE0000 400700004007000080070001000700010007000200070002000700060007001E000700FF807FF0 1C1D7F9C1F>65 D<01FFFF00003C01C0003800E0003800F0003800700038007000700070007000 F0007000F0007001E000E003C000E0078000E01F0000FFFC0001C00F0001C0078001C003C001C0 03C0038003C0038003C0038003C0038003C0070007800700070007000E0007001C000E007800FF FFC0001C1C7E9B1F>I<01FFC0FF80001E003C00001E003000000E002000000F00400000070080 000007010000000782000000038400000003C800000001D000000001F000000000E000000000E0 00000000F00000000170000000027000000004380000000838000000103C000000201C00000040 1E000000800E000001800E000003000F000006000700001E000F8000FF803FF000211C7F9B22> 88 DI<381F004E61804681C04701C08F01C08E01C00E01C00E01C01C03801C03801C03801C 0700380710380710380E10380E2070064030038014127E9119>110 D E /Fk 71 123 df<003FE3F801F03F1C03C03E3E07C07C3E0F807C3E0F807C1C0F807C000F807C00 0F807C000F807C000F807C00FFFFFFC0FFFFFFC00F807C000F807C000F807C000F807C000F807C 000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C007FE1 FFC07FE1FFC01F1D809C1C>11 D<003FC00001F0300003C0380007C07C000F807C000F807C000F 8038000F8000000F8000000F8000000F800000FFFFFC00FFFFFC000F807C000F807C000F807C00 0F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C 000F807C007FE1FF807FE1FF80191D809C1B>I<003FC1FE0001F03F818003C03E01C007C07E03 E00F807C03E00F807C03E00F807C01C00F807C00000F807C00000F807C00000F807C0000FFFFFF FFE0FFFFFFFFE00F807C03E00F807C03E00F807C03E00F807C03E00F807C03E00F807C03E00F80 7C03E00F807C03E00F807C03E00F807C03E00F807C03E00F807C03E00F807C03E00F807C03E07F E1FF0FFC7FE1FF0FFC261D809C28>14 D<00038000000380000003800000038000000380000003 80000003800000038000000380000003800000038000000380000003800000038000FFFFFFFCFF FFFFFCFFFFFFFC0003800000038000000380000003800000038000000380000003800000038000 0003800000038000000380000003800000038000000380001E1F7D9925>43 D<78FCFCFEFE7A0202040408083040070E7D850D>II<78FCFC FCFC7806067D850D>I<03F8000F1E001C07003C07803803807803C07803C07803C0F803E0F803 E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E07803C07803C03803 803C07801C07000F1E0003F800131B7E9A18>48 D<00600001E0000FE000FFE000F3E00003E000 03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000 03E00003E00003E00003E00003E00003E0007FFF807FFF80111B7D9A18>I<07F8001FFE00383F 80780FC0FC07C0FC07E0FC03E0FC03E07803E00007E00007C00007C0000F80001F00001E000038 0000700000E0000180600300600600600800E01FFFC03FFFC07FFFC0FFFFC0FFFFC0131B7E9A18 >I<03F8001FFE003C1F003C0F807C07C07E07C07C07C03807C0000F80000F80001E00003C0003 F800001E00000F800007C00007C00007E03007E07807E0FC07E0FC07E0FC07C0780F80781F001F FE0007F800131B7E9A18>I<000180000380000780000F80001F80003F80006F8000CF80008F80 018F80030F80060F800C0F80180F80300F80600F80C00F80FFFFF8FFFFF8000F80000F80000F80 000F80000F80000F8001FFF801FFF8151B7F9A18>I<1801801FFF001FFE001FFC001FF8001FC0 0018000018000018000018000019F8001E0E00180F801007800007C00007E00007E00007E07807 E0F807E0F807E0F807C0F007C0600F80381F001FFE0007F000131B7E9A18>I<007E0003FF0007 81800F03C01E07C03C07C03C0380780000780000F80000F8F800FB0E00FA0780FC0380FC03C0F8 03E0F803E0F803E0F803E07803E07803E07803C03C03C03C07801E0F0007FE0003F800131B7E9A 18>I<6000007FFFE07FFFE07FFFC07FFF807FFF80E00300C00600C00C00C01800003000003000 00600000E00000E00001E00001C00003C00003C00003C00003C00007C00007C00007C00007C000 07C00007C000038000131C7D9B18>I<03F8000FFE001E0F803807803803C07803C07803C07E03 C07F83807FC7003FFE001FFC000FFE0007FF801DFF80387FC0781FE0F007E0F003E0F001E0F001 E0F001E07801C07803803E07801FFE0003F800131B7E9A18>I<03F8000FFE001E0F003C078078 07807803C0F803C0F803C0F803E0F803E0F803E0F803E07807E03807E03C0BE00E1BE003E3E000 03E00003C00003C03807C07C07807C0700780F00383C001FF8000FE000131B7E9A18>I<78FCFC FCFC7800000000000078FCFCFCFC7806127D910D>I<0FF0303C601EF01FF81FF81F701F003E00 3C007000E001C00180018003000300030003000300000000000000000007800FC00FC00FC00FC0 0780101D7D9C17>63 D<001FE00000E01C0003000300060001800C0000C018000060300FC03020 38601060F0101860F01F18C1E01F0CC1E01F0CC3E01F0CC3E01F0CC3E01F0CC3E01F0CC3E01F0C C1E01F0CC1E01F0C60F01F0860F01F1820386F10300FC7E0180000000C00000006000000030000 3C00E007F0001FFC001E1D7D9C25>I<00038000000380000007C0000007C0000007C000000FE0 00000FE000001FF000001BF000001BF0000031F8000031F8000061FC000060FC0000E0FE0000C0 7E0000C07E0001803F0001FFFF0003FFFF8003001F8003001F8006000FC006000FC00E000FE00C 0007E0FFC07FFEFFC07FFE1F1C7E9B24>II<001FE02000FFF8E003F80FE007C003E00F8001 E01F0000E03E0000E03E0000607E0000607C000060FC000000FC000000FC000000FC000000FC00 0000FC000000FC000000FC0000007C0000607E0000603E0000603E0000C01F0000C00F80018007 C0030003F80E0000FFFC00001FE0001B1C7D9B22>IIII<000FF008007FFE3801FC07 F807E001F80F8000781F0000783F0000383E0000387E0000187C000018FC000000FC000000FC00 0000FC000000FC000000FC000000FC007FFFFC007FFF7C0001F87E0001F83E0001F83F0001F81F 0001F80F8001F807E001F801FC07F8007FFE78000FF818201C7D9B26>III<07FFF007FFF0001F80001F80001F80001F80001F8000 1F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8030 1F80781F80FC1F80FC1F80FC1F00783E00387C000FF000141C7F9B19>IIIII<00 3FE00001F07C0003C01E000F800F801F0007C01E0003C03E0003E07E0003F07C0001F07C0001F0 FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F87C0001F07E0003 F07E0003F03E0003E03F0007E01F0007C00F800F8003C01E0001F07C00003FE0001D1C7D9B24> II82 D<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE0007FFE003FFF 003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0E000E0F001C0FC03 C0EFFF0083FC00141C7D9B1B>I<7FFFFFE07FFFFFE0781F81E0701F80E0601F8060E01F8070C0 1F8030C01F8030C01F8030C01F8030001F8000001F8000001F8000001F8000001F8000001F8000 001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80 0007FFFE0007FFFE001C1C7E9B21>IIII<7FFE1FFE007FFE1FFE0007 F001800003F803800001FC07000000FC06000000FE0C0000007F1C0000003F380000003FB00000 001FE00000000FE00000000FE000000007F000000003F800000007F80000000FFC0000000CFE00 0000187E000000387F000000703F800000601F800000C01FC00001C00FE000018007F000030007 F000FFF03FFF80FFF03FFF80211C7F9B24>I91 D93 D<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07C0F807 C0F807C0F807C0780BC03E13F80FE1F815127F9117>97 D I<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F80000F800007800 007801803C01801C03000E0E0003F80011127E9115>I<000FF0000FF00001F00001F00001F000 01F00001F00001F00001F00001F00001F001F9F00F07F01C03F03C01F07801F07801F0F801F0F8 01F0F801F0F801F0F801F0F801F07801F07801F03C01F01C03F00F0FFE03F9FE171D7E9C1B>I< 01FC000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F80000780000 7C00603C00601E00C00F038001FC0013127F9116>I<007F0001E38003C7C00787C00F87C00F83 800F80000F80000F80000F80000F8000FFF800FFF8000F80000F80000F80000F80000F80000F80 000F80000F80000F80000F80000F80000F80000F80000F80007FF8007FF800121D809C0F>I<03 F8F00E0F381E0F381C07303C07803C07803C07803C07801C07001E0F000E0E001BF80010000018 00001800001FFF001FFFC00FFFE01FFFF07801F8F00078F00078F000787000707800F01E03C007 FF00151B7F9118>II<1E003F003F003F003F001E000000 00000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F 001F00FFE0FFE00B1E7F9D0E>I<007800FC00FC00FC00FC007800000000000000000000000003 FC03FC007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C 707CF87CF878F8F070E01F800E26839D0F>IIIII<01FC000F07801C01C03C01E07800F0 7800F0F800F8F800F8F800F8F800F8F800F8F800F87800F07800F03C01E01E03C00F078001FC00 15127F9118>II<03F0600F0CE01E07E03C03E07C03E07803E0F803E0F803E0F8 03E0F803E0F803E0F803E07803E07C03E03C03E01C07E00E0FE003F3E00003E00003E00003E000 03E00003E00003E0001FFC001FFC161A7E9119>II<1FD830786018E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CE018F830CF C00E127E9113>I<0300030003000300070007000F000F003FFCFFFC1F001F001F001F001F001F 001F001F001F001F0C1F0C1F0C1F0C0F08079803F00E1A7F9913>IIIIII<3FFF803C1F00303F00303E00607C00 60FC0060F80001F00003F00007E00007C1800F81801F81801F03803E03007E07007C0F00FFFF00 11127F9115>I E /Fl 36 121 df<00000007FF800000000001FFFFF0000000000FFFFFFC0000 00003FFFFFFE00000000FFFC00FF00000001FFC0003F80000007FF00007FC000000FFE0001FFC0 00001FFC0001FFE000001FF80003FFE000003FF00003FFE000003FF00003FFE000007FE00003FF E000007FE00003FFE000007FE00003FFE000007FE00003FFE000007FE00001FFC000007FE00000 FF8000007FE000003E0000007FE00000000000007FE00000000000007FE00000000000007FE000 00000000007FE00000000000007FE00000000000007FE0003FFFF000FFFFFFFFFFFFF000FFFFFF FFFFFFF000FFFFFFFFFFFFF000FFFFFFFFFFFFF000FFFFFFFFFFFFF000007FF00000FFF000007F F000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF00000 7FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000 007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0 00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007F F000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF00000 7FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000 007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0 00007FF0003FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFF FFE03FFFFFE03B487EC742>12 D<0000FFE00000000FFFFE0000003FFFFFC00000FFFFFFF00003 FFFFFFFC0007FC01FFFE000FE0007FFF001FC0001FFF803F80000FFFC03FE00007FFE07FF80007 FFE07FFC0003FFF0FFFC0003FFF0FFFE0001FFF8FFFE0001FFF8FFFE0001FFF8FFFE0000FFFCFF FE0000FFFC7FFC0000FFFC7FFC0000FFFC3FF80000FFFC1FF00000FFFC0FE00000FFFC00000001 FFFC00000001FFF800000001FFF800000001FFF000000003FFF000000003FFE000000003FFE000 000007FFC000000007FF800000000FFF800000001FFF000000001FFE000000003FFC000000007F F8000000007FE000000000FFC000000001FF8000000003FF0000000007FC000000000FF8000000 001FF0000000003FC0000000007F80007C0000FF00007C0000FE00007C0001FC00007C0003F000 00F80007E00000F8000FC00000F8001F800000F8003F000001F8007C000003F800FFFFFFFFF801 FFFFFFFFF003FFFFFFFFF007FFFFFFFFF00FFFFFFFFFF01FFFFFFFFFF03FFFFFFFFFF07FFFFFFF FFF07FFFFFFFFFF0FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE02E447AC33B>50 D<0000000003E000000000000000000007F000000000000000000007F00000000000000000000F F80000000000000000000FF80000000000000000000FF80000000000000000001FFC0000000000 000000001FFC0000000000000000003FFE0000000000000000003FFE0000000000000000007FFF 0000000000000000007FFF0000000000000000007FFF000000000000000000FFFF800000000000 000000FFFF800000000000000001FFFFC00000000000000001FFFFC00000000000000001FFFFC0 0000000000000003FFFFE00000000000000003EFFFE00000000000000007EFFFF0000000000000 0007CFFFF00000000000000007C7FFF0000000000000000FC7FFF8000000000000000F83FFF800 0000000000001F83FFFC000000000000001F03FFFC000000000000001F01FFFC00000000000000 3F01FFFE000000000000003E00FFFE000000000000007E00FFFF000000000000007C007FFF0000 0000000000FC007FFF80000000000000F8007FFF80000000000000F8003FFF80000000000001F8 003FFFC0000000000001F0001FFFC0000000000003F0001FFFE0000000000003E0001FFFE00000 00000003E0000FFFE0000000000007E0000FFFF0000000000007C00007FFF000000000000FC000 07FFF800000000000F800007FFF800000000000F800003FFF800000000001F800003FFFC000000 00001F000001FFFC00000000003FFFFFFFFFFE00000000003FFFFFFFFFFE00000000007FFFFFFF FFFF00000000007FFFFFFFFFFF00000000007FFFFFFFFFFF0000000000FC0000007FFF80000000 00F80000003FFF8000000001F80000003FFFC000000001F00000003FFFC000000001F00000001F FFC000000003F00000001FFFE000000003E00000000FFFE000000007E00000000FFFF000000007 C00000000FFFF000000007C000000007FFF00000000FC000000007FFF80000000F8000000003FF F80000001F8000000003FFFC0000001F0000000003FFFC0000007FC000000001FFFC0000FFFFFF C00007FFFFFFFF80FFFFFFC00007FFFFFFFF80FFFFFFC00007FFFFFFFF80FFFFFFC00007FFFFFF FF80FFFFFFC00007FFFFFFFF8051487CC75A>65 D<000000003FFE00000E0000000FFFFFC0001E 0000007FFFFFF8003E000003FFFFFFFE00FE00000FFFFFFFFF81FE00003FFFF800FFC3FE0000FF FF80000FF7FE0001FFFC000003FFFE0007FFF0000001FFFE000FFFC00000007FFE001FFF800000 003FFE003FFF000000001FFE007FFE000000000FFE00FFFC0000000007FE01FFF80000000007FE 03FFF00000000003FE03FFF00000000001FE07FFE00000000001FE07FFE00000000000FE0FFFC0 0000000000FE0FFFC000000000007E1FFFC000000000007E1FFF8000000000007E3FFF80000000 00007E3FFF8000000000003E3FFF8000000000003E7FFF8000000000003E7FFF0000000000003E 7FFF000000000000007FFF00000000000000FFFF00000000000000FFFF00000000000000FFFF00 000000000000FFFF00000000000000FFFF00000000000000FFFF00000000000000FFFF00000000 000000FFFF00000000000000FFFF00000000000000FFFF00000000000000FFFF00000000000000 FFFF00000000000000FFFF000000000000007FFF000000000000007FFF000000000000007FFF00 0000000000007FFF8000000000003E3FFF8000000000003E3FFF8000000000003E3FFF80000000 00003E1FFF8000000000003E1FFFC000000000003E0FFFC000000000007C0FFFC000000000007C 07FFE000000000007C07FFE00000000000F803FFF00000000000F803FFF00000000001F801FFF8 0000000001F000FFFC0000000003E0007FFE0000000007E0003FFF000000000FC0001FFF800000 001F80000FFFC00000003F000007FFF0000000FE000001FFFC000001FC000000FFFF80000FF800 00003FFFF8007FF00000000FFFFFFFFFC000000003FFFFFFFF00000000007FFFFFFC0000000000 0FFFFFE00000000000003FFE000000474979C756>67 DI70 D<000000003FFE00000E000000000FFFFFC0001E000000007FFFFF F8003E00000003FFFFFFFE00FE0000000FFFFFFFFF81FE0000003FFFF800FFC3FE000000FFFF80 000FF7FE000001FFFC000003FFFE000007FFF0000001FFFE00000FFFC00000007FFE00001FFF80 0000003FFE00003FFF000000001FFE00007FFE000000000FFE0000FFFC0000000007FE0001FFF8 0000000007FE0003FFF00000000003FE0003FFF00000000001FE0007FFE00000000001FE0007FF E00000000000FE000FFFC00000000000FE000FFFC000000000007E001FFFC000000000007E001F FF8000000000007E003FFF8000000000007E003FFF8000000000003E003FFF8000000000003E00 7FFF8000000000003E007FFF0000000000003E007FFF00000000000000007FFF00000000000000 00FFFF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF000000000000 0000FFFF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF0000000000 000000FFFF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF00000000 00000000FFFF0000007FFFFFFFFE7FFF0000007FFFFFFFFE7FFF0000007FFFFFFFFE7FFF800000 7FFFFFFFFE7FFF8000007FFFFFFFFE3FFF8000000000FFFE003FFF8000000000FFFE003FFF8000 000000FFFE001FFF8000000000FFFE001FFFC000000000FFFE000FFFC000000000FFFE000FFFC0 00000000FFFE0007FFE000000000FFFE0007FFE000000000FFFE0003FFF000000000FFFE0003FF F800000000FFFE0001FFF800000000FFFE0000FFFC00000000FFFE00007FFE00000000FFFE0000 3FFF00000000FFFE00001FFF80000000FFFE00000FFFE0000001FFFE000007FFF0000003FFFE00 0001FFFC000007FFFE000000FFFF80001FFFFE0000003FFFFC00FFC7FE0000000FFFFFFFFF83FE 00000003FFFFFFFE00FE000000007FFFFFF8003E000000000FFFFFE0000E00000000003FFE0000 00004F4979C75D>I73 D76 DII80 D82 D 85 DII<0007FFFC000000007FFFFFC0000001FFFFFFF8000003 FFFFFFFE000007FE001FFF000007FF0003FFC0000FFF8001FFE0000FFF8000FFF0000FFF80007F F0000FFF80007FF8000FFF80007FF80007FF00003FFC0007FF00003FFC0003FE00003FFC0000F8 00003FFC00000000003FFC00000000003FFC00000000003FFC00000000003FFC00000007FFFFFC 000000FFFFFFFC000007FFFFFFFC00003FFFE03FFC0000FFFE003FFC0003FFF0003FFC0007FFC0 003FFC000FFF00003FFC001FFE00003FFC003FFC00003FFC007FF800003FFC007FF800003FFC00 FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF00000 7FFC007FF80000FFFC007FF80001EFFC003FFC0003EFFC003FFF0007CFFF000FFFC03F8FFFF807 FFFFFF07FFFC01FFFFFC03FFFC007FFFF001FFFC0003FF80007FF8362E7DAD3A>97 D<007FC00000000000FFFFC00000000000FFFFC00000000000FFFFC00000000000FFFFC0000000 0000FFFFC0000000000003FFC0000000000001FFC0000000000001FFC0000000000001FFC00000 00000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000 0000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0 000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FF C0000000000001FFC0000000000001FFC00FFC00000001FFC07FFFC0000001FFC3FFFFF0000001 FFCFFFFFFC000001FFDFF00FFF000001FFFF8003FF800001FFFE0001FFC00001FFF800007FE000 01FFF000007FF00001FFE000003FF80001FFE000001FFC0001FFE000001FFC0001FFE000001FFE 0001FFE000001FFE0001FFE000000FFF0001FFE000000FFF0001FFE000000FFF0001FFE000000F FF0001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE00000 0FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000 000FFF8001FFE000000FFF0001FFE000000FFF0001FFE000000FFF0001FFE000001FFE0001FFE0 00001FFE0001FFE000001FFC0001FFE000001FFC0001FFE000003FF80001FFF000003FF80001FF F800007FF00001FFFC0000FFE00001FFFE0001FFC00001FFBF0007FF800001FF1FE01FFE000001 FE0FFFFFFC000001FC03FFFFF0000001F800FFFF80000001F0001FF800000039487CC742>I<00 001FFFC0000000FFFFF8000007FFFFFE00001FFFFFFF80007FFC00FFC000FFE001FFC001FFC003 FFE003FF8003FFE007FF0003FFE00FFE0003FFE00FFE0003FFE01FFC0001FFC01FFC0001FFC03F FC0000FF803FFC00003E007FF8000000007FF8000000007FF800000000FFF800000000FFF80000 0000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FF F800000000FFF8000000007FF8000000007FF8000000007FFC000000003FFC000000003FFC0000 00001FFC000000F81FFE000000F80FFE000000F80FFF000001F007FF800003F003FFC00007E001 FFE0000FC000FFF0001F80007FFE00FF00001FFFFFFE000007FFFFF8000000FFFFE00000001FFE 00002D2E7CAD35>I<00000000007FC00000000000FFFFC00000000000FFFFC00000000000FFFF C00000000000FFFFC00000000000FFFFC0000000000003FFC0000000000001FFC0000000000001 FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000000000 01FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000000000 0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000 000001FFC0000000000001FFC0000000000001FFC00000000FFC01FFC0000000FFFF81FFC00000 07FFFFE1FFC000001FFFFFF9FFC000007FFC03FFFFC00000FFF0007FFFC00001FFC0001FFFC000 03FF80000FFFC00007FF000007FFC0000FFE000003FFC0000FFE000003FFC0001FFC000003FFC0 001FFC000003FFC0003FFC000003FFC0003FFC000003FFC0007FF8000003FFC0007FF8000003FF C0007FF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003 FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF80000 03FFC000FFF8000003FFC0007FF8000003FFC0007FF8000003FFC0007FF8000003FFC0003FF800 0003FFC0003FFC000003FFC0003FFC000003FFC0001FFC000003FFC0001FFC000003FFC0000FFE 000007FFC00007FF00000FFFC00003FF00001FFFC00001FFC0003FFFC00000FFE000FFFFE00000 7FF807FBFFFF80001FFFFFF3FFFF800007FFFFC3FFFF800001FFFF03FFFF8000001FF803FFFF80 39487CC742>I<00001FFE00000001FFFFE0000007FFFFF800001FFFFFFE00007FFC07FF0000FF E001FF8001FFC0007FC003FF80003FE007FF00003FF00FFE00001FF01FFE00000FF81FFC00000F F83FFC00000FFC3FFC000007FC7FFC000007FC7FF8000007FC7FF8000007FE7FF8000007FEFFF8 000007FEFFF8000007FEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFCFFF8000000 00FFF800000000FFF800000000FFF8000000007FF8000000007FF8000000007FFC000000003FFC 000000003FFC000000003FFC0000001C1FFE0000003E0FFE0000003E07FF0000007E07FF000000 FC03FF800001F801FFC00003F0007FF0001FE0003FFE00FFC0001FFFFFFF800007FFFFFE000000 FFFFF80000000FFF80002F2E7DAD36>I<000000FFC000000007FFF80000003FFFFC000000FFFF FF000001FFC1FF000007FF03FF80000FFC03FF80000FF807FFC0001FF807FFC0003FF007FFC000 3FF007FFC0003FE003FF80007FE003FF80007FE001FF00007FE000FE00007FE0003800007FE000 0000007FE0000000007FE0000000007FE0000000007FE0000000007FE0000000007FE000000000 7FE0000000007FE0000000007FE0000000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000FFFFFFFE 0000FFFFFFFE0000007FF0000000007FF0000000007FF0000000007FF0000000007FF000000000 7FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF000 0000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF000000000 7FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF000 0000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF000000000 7FF0000000007FF0000000007FF0000000007FF0000000007FF00000003FFFFFF800003FFFFFF8 00003FFFFFF800003FFFFFF800003FFFFFF800002A487DC724>I<00000000001F8000007FF000 FFE00007FFFF03FFF0001FFFFFC7FFF0007FFFFFFFC7F800FFE03FFE0FF801FF800FFC0FF803FF 0007FE0FF807FE0003FF07F007FE0003FF07F00FFC0001FF81C00FFC0001FF80000FFC0001FF80 001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC00 01FFC0000FFC0001FF80000FFC0001FF80000FFC0001FF800007FE0003FF000007FE0003FF0000 03FF0007FE000001FF800FFC000000FFE03FF8000001FFFFFFF0000001DFFFFFC0000003C7FFFF 00000003C07FF000000007C0000000000007C0000000000007C0000000000007C0000000000007 E0000000000007F0000000000007F8000000000007FFFFFFF0000007FFFFFFFF000003FFFFFFFF E00003FFFFFFFFF80001FFFFFFFFFE0001FFFFFFFFFF0000FFFFFFFFFF80007FFFFFFFFF8003FF FFFFFFFFC00FFFFFFFFFFFC01FF800001FFFE03FE0000001FFE07FC00000007FF07FC00000003F F0FF800000001FF0FF800000001FF0FF800000001FF0FF800000001FF0FF800000001FF07FC000 00003FE07FC00000003FE03FE00000007FC03FF0000000FFC01FFC000003FF800FFF00000FFF00 03FFF000FFFC0000FFFFFFFFF000003FFFFFFFC0000007FFFFFE000000003FFFC0000035447DAE 3B>I<00FC0001FE0003FF0007FF800FFFC01FFFE01FFFE01FFFE01FFFE01FFFE01FFFE00FFFC0 07FF8003FF0001FE0000FC00000000000000000000000000000000000000000000000000000000 000000000000007FC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC003FFC001FFC001FFC001FFC001FFC0 01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0 01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0 01FFC001FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18497CC820>105 D<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC0 0000000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000 01FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000 00000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001 FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0007FFFF801FFC0007F FFF801FFC0007FFFF801FFC0007FFFF801FFC0007FFFF801FFC0000FFE0001FFC00007F00001FF C0000FE00001FFC0003FC00001FFC0007F800001FFC000FE000001FFC001FC000001FFC007F800 0001FFC00FF0000001FFC01FC0000001FFC03F80000001FFC0FF00000001FFC1FE00000001FFC3 FF00000001FFCFFF80000001FFDFFFC0000001FFFFFFC0000001FFFFFFE0000001FFFFFFF00000 01FFFCFFF8000001FFF87FFC000001FFE03FFC000001FFC01FFE000001FFC01FFF000001FFC00F FF800001FFC007FFC00001FFC003FFC00001FFC001FFE00001FFC001FFF00001FFC000FFF80001 FFC0007FFC0001FFC0003FFC0001FFC0001FFE0001FFC0000FFF0001FFC0000FFF8001FFC0000F FFC0FFFFFF807FFFFFFFFFFF807FFFFFFFFFFF807FFFFFFFFFFF807FFFFFFFFFFF807FFFFF3848 7CC73F>107 D<007FC000FFFFC000FFFFC000FFFFC000FFFFC000FFFFC00003FFC00001FFC000 01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0 0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0 0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF C000FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF8019487CC720>I<007FC001FFC00000FFE0 0000FFFFC00FFFF80007FFFC0000FFFFC03FFFFE001FFFFF0000FFFFC0FFFFFF007FFFFF8000FF FFC1FC07FF80FE03FFC000FFFFC3E003FFC1F001FFE00003FFC7C001FFC3E000FFE00001FFCF00 01FFE78000FFF00001FFDE0000FFEF00007FF00001FFDC0000FFEE00007FF00001FFFC0000FFFE 00007FF80001FFF80000FFFC00007FF80001FFF00000FFF800007FF80001FFF00000FFF800007F F80001FFF00000FFF800007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001 FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE000 00FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF0 00007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007F F80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001 FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE000 00FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF0 00007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007F F80001FFE00000FFF000007FF800FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF0FF FFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF05C2E7CAD 63>I<007FC001FFC00000FFFFC00FFFF80000FFFFC03FFFFE0000FFFFC0FFFFFF0000FFFFC1FC 07FF8000FFFFC3E003FFC00003FFC7C001FFC00001FFCF0001FFE00001FFDE0000FFE00001FFDC 0000FFE00001FFFC0000FFF00001FFF80000FFF00001FFF00000FFF00001FFF00000FFF00001FF F00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001 FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF000 01FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0 0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000 FFF00001FFE00000FFF00001FFE00000FFF000FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC0 7FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE03B2E7CAD42>I<00000FFF0000000000FFFFF0 00000007FFFFFE0000001FFFFFFF8000003FFC03FFC00000FFE0007FF00001FF80001FF80003FF 00000FFC0007FE000007FE000FFE000007FF000FFC000003FF001FFC000003FF803FFC000003FF C03FF8000001FFC03FF8000001FFC07FF8000001FFE07FF8000001FFE07FF8000001FFE0FFF800 0001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0 FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF07FF8000001FFE07FF80000 01FFE07FF8000001FFE07FF8000001FFE03FFC000003FFC03FFC000003FFC01FFC000003FF801F FE000007FF800FFE000007FF0007FF00000FFE0003FF80001FFC0001FFC0003FF80000FFE0007F F000007FFC03FFE000001FFFFFFF80000007FFFFFE00000000FFFFF0000000000FFF000000342E 7DAD3B>I<007FC00FFC000000FFFFC07FFFC00000FFFFC3FFFFF00000FFFFCFFFFFFC0000FFFF DFF01FFF0000FFFFFF8007FF800003FFFE0001FFC00001FFF80000FFE00001FFF00000FFF00001 FFE000007FF80001FFE000003FFC0001FFE000003FFC0001FFE000003FFE0001FFE000001FFE00 01FFE000001FFF0001FFE000001FFF0001FFE000001FFF0001FFE000000FFF0001FFE000000FFF 8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000F FF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE00000 0FFF0001FFE000001FFF0001FFE000001FFF0001FFE000001FFE0001FFE000001FFE0001FFE000 003FFC0001FFE000003FFC0001FFE000007FF80001FFF000007FF80001FFF80000FFF00001FFFC 0001FFE00001FFFE0003FFC00001FFFF0007FF800001FFFFE03FFE000001FFEFFFFFFC000001FF E3FFFFF0000001FFE0FFFF80000001FFE01FF800000001FFE0000000000001FFE0000000000001 FFE0000000000001FFE0000000000001FFE0000000000001FFE0000000000001FFE00000000000 01FFE0000000000001FFE0000000000001FFE0000000000001FFE0000000000001FFE000000000 0001FFE0000000000001FFE0000000000001FFE00000000000FFFFFFC000000000FFFFFFC00000 0000FFFFFFC000000000FFFFFFC000000000FFFFFFC00000000039427CAD42>I<00FF803F8000 FFFF80FFF000FFFF83FFFC00FFFF87FFFE00FFFF8FC3FF00FFFF8F07FF0003FF9E0FFF8001FFBC 0FFF8001FFB80FFF8001FFF80FFF8001FFF00FFF8001FFF007FF0001FFF007FF0001FFE003FE00 01FFE000F80001FFE000000001FFE000000001FFC000000001FFC000000001FFC000000001FFC0 00000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0000000 01FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0 00000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0000000 01FFC0000000FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000292E7C AD31>114 D<000FFF00E0007FFFF3E001FFFFFFE007FFFFFFE00FF800FFE01FC0001FE03F8000 0FE03F000007E07F000003E07F000003E0FF000003E0FF000003E0FF800003E0FFC0000000FFF0 000000FFFE000000FFFFF800007FFFFFC0007FFFFFF0003FFFFFFC001FFFFFFF000FFFFFFF8007 FFFFFFC003FFFFFFE000FFFFFFF0003FFFFFF00003FFFFF800001FFFF8000000FFFC0000001FFC 7800000FFCF8000007FCF8000003FCFC000003FCFC000003FCFE000003F8FE000003F8FF000003 F8FF800007F0FFC0000FF0FFF0001FE0FFFC00FFC0FFFFFFFF80FC7FFFFE00F81FFFF800E003FF 8000262E7CAD2F>I<0001F000000001F000000001F000000001F000000001F000000001F00000 0003F000000003F000000003F000000007F000000007F000000007F00000000FF00000000FF000 00001FF00000003FF00000003FF00000007FF0000001FFF0000003FFF000000FFFFFFFC0FFFFFF FFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC000FFF0000000FFF0000000FFF0000000FFF0000000FF F0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000 FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF00000 00FFF0000000FFF0000000FFF0000000FFF001F000FFF001F000FFF001F000FFF001F000FFF001 F000FFF001F000FFF001F000FFF001F000FFF001F0007FF001E0007FF803E0003FF803E0003FFC 07C0001FFE0F80000FFFFF800007FFFE000001FFFC0000001FF00024427EC12E>I<007FE00000 3FF000FFFFE0007FFFF000FFFFE0007FFFF000FFFFE0007FFFF000FFFFE0007FFFF000FFFFE000 7FFFF00003FFE00001FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0 0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FF E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001 FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF000 01FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0 0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00001FFF00001FFE00001FF F00001FFE00001FFF00001FFE00003FFF00000FFE00007FFF00000FFE0000F7FF000007FE0001F 7FF000007FF0003E7FF800003FFC00FC7FFFE0001FFFFFF87FFFE00007FFFFE07FFFE00001FFFF 807FFFE000003FFE007FFFE03B2E7CAD42>I119 D<7FFFFF801FFFFF007FFFFF801FFFFF007FFFFF 801FFFFF007FFFFF801FFFFF007FFFFF801FFFFF00007FF80001FF0000007FFC0001FC0000003F FE0003F80000001FFF0007F00000000FFF0007E000000007FF800FC000000003FFC01F80000000 03FFE03F8000000001FFF07F0000000000FFF8FE00000000007FF9FC00000000003FFFF8000000 00003FFFF000000000001FFFE000000000000FFFC0000000000007FFC0000000000003FFC00000 00000001FFE0000000000001FFF0000000000001FFF8000000000003FFFC000000000003FFFE00 0000000007FFFE00000000000FEFFF00000000001FCFFF80000000003F87FFC0000000007F03FF E000000000FE01FFE000000001FC00FFF000000001F8007FF800000003F0007FFC00000007F000 3FFE0000000FE0001FFF0000001FC0000FFF0000003F800007FF800000FF800007FFC000FFFFF8 003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFFFFC03A2E 7EAD3F>I E /Fm 5 121 df<0003FE0000000FFF8000003C01E00000F000780001C0001C000300 00060006000003000C0000018018000000C018000000C030000000603000000060600000003060 000000306000000030C000000018C000000018C000000018C000000018C000000018C000000018 C000000018C000000018C000000018600000003060000000306000000030300000006030000000 6018000000C018000000C00C000001800600000300030000060001C0001C0000F0007800003C01 E000000FFF80000003FE000025277E9D2A>13 D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFF FF7FFE7FFE3FFC1FF80FF003C010107E9115>15 D<003C00E001C0018003800380038003800380 03800380038003800380038003800380030007001C00F0001C0007000300038003800380038003 8003800380038003800380038003800380018001C000E0003C0E297D9E15>102 DI<1F00308070406060E0E0E0E0E040E00060007000300018001C0033 00718061C0E0C0E0E0E0E0E0E060E070C031C0198007000300018001C000C000E040E0E0E0E0E0 C0C041C021801F000B257D9C12>120 D E /Fn 84 125 df<007E1F0001C1B1800303E3C00703 C3C00E03C1800E01C0000E01C0000E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E 01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C000 0E01C0000E01C0000E01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E00000E0000FFFFC00E01 C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 C00E01C00E01C07F87F8151D809C17>I<007FC001C1C00303C00703C00E01C00E01C00E01C00E 01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E 01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17>I<003F07E00001 C09C18000380F018000701F03C000E01E03C000E00E018000E00E000000E00E000000E00E00000 0E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C 000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E0 1C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D809C23>I<60F0F0F0F0F0F0F06060 6060606060606060606060000000000060F0F060041E7C9D0C>33 D<6060F0F0F8F86868080808 080808101010102020404080800D0C7F9C15>I<0080008007E01898308460824081C087C08FC0 8FC086E080F0807E803FC01FF00FF803FC00BE008E00876087F083F083E0838082408240842088 189007E00080008010217E9E15>36 D<00E0000001900000030800000308000007080000070800 0007080000070800000710000007100000072000000740000003C03FE003800F00038006000380 040005C0040009C0080010E0100030E010006070200060702000E0384000E03C4000E01C8000E0 0F0020E0070020700780403009C0401830E18007C03E001B1F7E9D20>38 D<60F0F8680808081010204080050C7C9C0C>I<004000800100020006000C000C001800180030 0030007000600060006000E000E000E000E000E000E000E000E000E000E000E000E00060006000 6000700030003000180018000C000C00060002000100008000400A2A7D9E10>I<800040002000 100018000C000C000600060003000300038001800180018001C001C001C001C001C001C001C001 C001C001C001C001C0018001800180038003000300060006000C000C0018001000200040008000 0A2A7E9E10>I<60F0F0701010101020204080040C7C830C>44 DI<60F0 F06004047C830C>I<00010003000600060006000C000C000C0018001800180030003000300060 006000C000C000C0018001800180030003000300060006000C000C000C00180018001800300030 003000600060006000C000C00010297E9E15>I<03C00C301818300C300C700E60066006E007E0 07E007E007E007E007E007E007E007E007E007E007E00760066006700E300C300C18180C3007E0 101D7E9B15>I<030007003F00C700070007000700070007000700070007000700070007000700 07000700070007000700070007000700070007000F80FFF80D1C7C9B15>I<07C01830201C400C 400EF00FF80FF807F8077007000F000E000E001C001C00380070006000C00180030006010C0118 0110023FFE7FFEFFFE101C7E9B15>I<07E01830201C201C781E780E781E381E001C001C001800 30006007E00030001C001C000E000F000F700FF80FF80FF80FF00E401C201C183007E0101D7E9B 15>I<000C00000C00001C00003C00003C00005C0000DC00009C00011C00031C00021C00041C00 0C1C00081C00101C00301C00201C00401C00C01C00FFFFC0001C00001C00001C00001C00001C00 001C00001C0001FFC0121C7F9B15>I<300C3FF83FF03FC020002000200020002000200023E024 302818301C200E000E000F000F000F600FF00FF00FF00F800E401E401C2038187007C0101D7E9B 15>I<00F0030C06040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006E007E007 E007E007E007600760077006300E300C18180C3003E0101D7E9B15>I<4000007FFF807FFF007F FF0040020080040080040080080000100000100000200000600000400000C00000C00001C00001 800001800003800003800003800003800007800007800007800007800007800007800003000011 1D7E9B15>I<03E00C301008200C20066006600660067006780C3E083FB01FE007F007F818FC30 7E601E600FC007C003C003C003C00360026004300C1C1007E0101D7E9B15>I<03C00C30181830 0C700C600EE006E006E007E007E007E007E0076007700F300F18170C2707C700060006000E300C 780C78187010203030C00F80101D7E9B15>I<60F0F0600000000000000000000060F0F0600412 7C910C>I<60F0F0600000000000000000000060F0F0701010101020204080041A7C910C>I<7FFF FFC0FFFFFFE00000000000000000000000000000000000000000000000000000000000000000FF FFFFE07FFFFFC01B0C7E8F20>61 D<0FE03038401CE00EF00EF00EF00E000C001C0030006000C0 008001800100010001000100010001000000000000000000000003000780078003000F1D7E9C14 >63 D<003F800000C0600003001800040004000800020010000100201F00802070808040E04040 40C0384041C038408180382083803820838038208380382083803820838038208180382041C038 2040C0384040E0784020709880201F0F00100000000800000004000000030001E000C01F80003F F0001B1D7E9C20>I<000600000006000000060000000F0000000F0000000F0000001780000017 8000001780000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F00001 80F8000100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C001F00 1E001F00FF80FFF01C1D7F9C1F>II<001F808000E06180018019 80070007800E0003801C0003801C00018038000180780000807800008070000080F0000000F000 0000F0000000F0000000F0000000F0000000F0000000F000000070000080780000807800008038 0000801C0001001C0001000E000200070004000180080000E03000001FC000191E7E9C1E>I III<001F808000E0618001801980 070007800E0003801C0003801C00018038000180780000807800008070000080F0000000F00000 00F0000000F0000000F0000000F0000000F000FFF0F0000F807000078078000780780007803800 07801C0007801C0007800E00078007000B800180118000E06080001F80001C1E7E9C21>II< FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F 000F000F000F000F000F000F000F00FFF00C1C7F9B0F>I<1FFF00F80078007800780078007800 7800780078007800780078007800780078007800780078007800787078F878F878F878F0F040E0 21C01F00101D7F9B15>IIIII<003F800000E0E0000380380007001C000E000E00 1C0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001 E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C0380003803C0007801C00 07000E000E0007001C000380380000E0E000003F80001B1E7E9C20>II82 D<07E0801C1980300580700380600180E00180E00080E00080E00080F000 00F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001 C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F 00C0400F0040400F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F000000 0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 000F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B1E>IIII< 7FF0FFC00FC03E000780180003C0180003E0100001E0200001F0600000F0400000788000007D80 00003D0000001E0000001F0000000F0000000F8000000F80000013C0000023E0000021E0000041 F00000C0F8000080780001007C0003003C0002001E0006001F001F003F80FFC0FFF01C1C7F9B1F >II<7FFFF07C01F07001E06003C06003C0400780400F80400F00401E00001E00003C00007C 0000780000F00000F00001E00003E00003C0100780100780100F00101F00301E00203C00203C00 607800E0F803E0FFFFE0141C7E9B19>I<08081010202040404040808080808080B0B0F8F87878 30300D0C7A9C15>92 D<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C 00701C00601C00E01C40E01C40E01C40603C40304E801F870012127E9115>97 DI<07E00C301878307870306000E000E000E000E000E000 E00060007004300418080C3007C00E127E9112>I<003F00000700000700000700000700000700 00070000070000070000070000070003E7000C1700180F00300700700700600700E00700E00700 E00700E00700E00700E00700600700700700300700180F000C370007C7E0131D7E9C17>I<03E0 0C301818300C700E6006E006FFFEE000E000E000E00060007002300218040C1803E00F127F9112 >I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E000E 000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C38 80181800381C00381C00381C00381C001818001C38000C300013C0001000003000001800001FF8 001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C7F9215 >II<18003C003C00180000000000000000000000000000 00FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091D 7F9C0C>I<00C001E001E000C000000000000000000000000000000FE000E000E000E000E000E0 00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0C0F1C061803E 000B25839C0D>IIIII<03F0000E1C00180600300300700380600180E001C0E001C0E001 C0E001C0E001C0E001C06001807003803003001806000E1C0003F00012127F9115>II<03C1000C3300180B00300F00700700700700E00700E00700E00700E00700E00700E00700 600700700700300F00180F000C370007C700000700000700000700000700000700000700000700 003FE0131A7E9116>II<1F9030704030C010C010E010F8007F803FE00FF000F8803880 18C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C003C00FFE01C001C 001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F9910>IIII<7F8FF00F03800F030007020003840001C80001D80000F00000700000780000F80000 9C00010E00020E000607000403801E07C0FF0FF81512809116>II<7FFC703860 38407040F040E041C003C0038007000F040E041C043C0C380870087038FFF80E127F9112>III E /Fo 20 122 df<78FCFCFCFC7806067B85 11>46 D<007F000001C1C0000780F0000F0078000E0038001C001C003C001E003C001E003C001E 0078000F0078000F0078000F0078000F00F8000F80F8000F80F8000F80F8000F80F8000F80F800 0F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F8078 000F0078000F0078000F0078000F003C001E003C001E003C001E001C001C000E0038000F007800 0780F00001C1C000007F000019297EA71E>48 D<00100000700001F0000FF000FEF000F0F00000 F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000 F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000 F00000F00000F00000F00000F00001F8007FFFE07FFFE013287BA71E>I<00FE0007FF800E07E0 1803F02001F82000F840007C40007CF8007EFC007EFC003EFC003EFC003E78007E00007E00007C 00007C0000F80000F80001F00001E00003C0000780000700000E00001C00003800007000006000 00C0000180020300020600040C000418000410000C3FFFFC7FFFF8FFFFF8FFFFF817287DA71E> I<007F000003FFC0000701F0000C00F80010007C001C007C003E007E003E003E003E003E001E00 3E000C007E0000007C0000007C00000078000000F0000000E0000001C0000007000000FF000000 01E0000000F0000000780000003C0000003E0000001F0000001F0000001F8000001F8030001F80 78001F80FC001F80FC001F80FC001F00F8001F0040003F0040003E0030007C001800F8000F01F0 0003FFC000007F000019297EA71E>I<007F000001FFC00007C1E0000F0070001E0038001C003C 003C001C0078001E0078001E00F8000F00F8000F00F8000F00F8000F00F8000F80F8000F80F800 0F80F8000F8078000F8078001F803C001F803C001F801C002F800E004F800700CF8003810F8000 7E0F8000000F0000000F0000000F0000001E0000001E0000001E0000003C001C003C003E007800 3E0070003C00E0001801C0001C0780000FFE000003F8000019297EA71E>57 D70 D 77 D86 DI<01FC00000E0780001001C0003C00E0003E00 F0003E0078001C00780008007800000078000000780000007800007FF80003E078000F8078001F 0078003E0078007C00780078007820F8007820F8007820F8007820F800F8207C00F8203C013C40 1F063FC007F80F001B1A7E991E>97 D<07800000FF800000FF8000000F80000007800000078000 000780000007800000078000000780000007800000078000000780000007800000078000000780 00000783F000078C1C0007B0070007A0038007C003C0078001E0078001E0078000F0078000F007 8000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F0078000F0078001F0 078001E0078001C007C003C00740078007200E0006181C000407E0001D2A7FA921>I<007E0003 C3800700E00E00F01C00703C00783C003878003C78003CF8003CF8003CFFFFFCF80000F80000F8 0000F80000F800007800007C00003C00043C00041E00080E001007002001C0C0007F00161A7E99 1B>101 D<001F000070C000E1E001C3E003C3E00381C007808007800007800007800007800007 8000078000078000078000078000FFFE00FFFE0007800007800007800007800007800007800007 800007800007800007800007800007800007800007800007800007800007800007800007800007 800007800007C000FFFE00FFFE00132A7FA912>I<0780FF80FF800F8007800780078007800780 078007800780078007800780078007800780078007800780078007800780078007800780078007 8007800780078007800780078007800780078007800780FFFCFFFC0E2A7FA911>108 D<0783F800FF8C1C00FF900E000FA0070007A0078007C0078007C0078007800780078007800780 078007800780078007800780078007800780078007800780078007800780078007800780078007 80078007800780078007800780078007800780FFFCFFFCFFFCFFFC1E1A7F9921>110 D<007F000001C1C000070070000E0038001C001C003C001E003C001E0078000F0078000F00F800 0F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F8078000F0078000F003C 001E003C001E001E003C000E0038000700700001C1C000007F0000191A7E991E>I<0787C0FF98 E0FF91F00FA1F007C1F007C0E007C0000780000780000780000780000780000780000780000780 0007800007800007800007800007800007800007800007800007C000FFFE00FFFE00141A7F9917 >114 D<07800780FF80FF80FF80FF800F800F8007800780078007800780078007800780078007 800780078007800780078007800780078007800780078007800780078007800780078007800780 07800780078007800F8007800F800380178001C027C000E047FC003F87FC1E1A7F9921>117 D121 D E /Fp 10 116 df<78FCFCFCFC7806067A8512>46 D78 D82 D87 D<00FE00000303C0000C00E00010007000100038003C003C003E001C003E001E003E001E 0008001E0000001E0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F001E003E00 1E003C001E007C001E00F8001E04F8001E04F8001E04F8003E04F8003E0478003E047C005E043E 008F080F0307F003FC03E01E1F7D9E21>97 D<0F001F801F801F801F800F000000000000000000 00000000000000000000000000000780FF80FF800F800780078007800780078007800780078007 800780078007800780078007800780078007800780078007800780078007800FC0FFF8FFF80D30 7EAF12>105 D<0780FF80FF800F80078007800780078007800780078007800780078007800780 078007800780078007800780078007800780078007800780078007800780078007800780078007 80078007800780078007800780078007800780078007800FC0FFFCFFFC0E327EB112>108 D<0780FE001FC000FF83078060F000FF8C03C18078000F9001E2003C0007A001E4003C0007A000 F4001E0007C000F8001E0007C000F8001E00078000F0001E00078000F0001E00078000F0001E00 078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0 001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E0007 8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F000 1E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>I<001FC00000F0780001 C01C00070007000F0007801E0003C01C0001C03C0001E03C0001E0780000F0780000F0780000F0 F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8780000F07C0001 F03C0001E03C0001E01E0003C01E0003C00F00078007800F0001C01C0000F07800001FC0001D1F 7E9E21>111 D<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800 007E00003FF0001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC000 1CE0001CE00018F00038F00030CC0060C301C080FE00161F7E9E1A>115 D E /Fq 15 118 df<1F003F807FC0FFC0FFE0FFE0FFF0FFF07FF03FB01F300030003000300030 003000600060006000C000C000C0018001800300060006000C001800300020000C1F77C71D>39 D70 D72 D77 D87 D<0003FE000000001FFFC00000007E03F0000000F000FC000001C0007E0000 0380003F000007C0001F800007F0001FC0000FF0000FC0000FF8000FE0000FF8000FE0000FF800 07F00007F00007F00007F00007F00001C00007F00000000007F00000000007F00000000007F000 00000007F000000001FFF00000007FFFF0000003FF87F000001FF007F000007F8007F00001FE00 07F00003F80007F00007F00007F0000FE00007F0001FC00007F0003FC00007F0003F800007F000 7F800007F01C7F800007F01CFF000007F01CFF000007F01CFF000007F01CFF00000FF01CFF0000 0FF01CFF00000FF01C7F80001BF01C7F800033F01C3FC00031F8381FC00061F8380FF001C0FC70 03FC0780FFE000FFFE003FC0001FF8001F802E2F7CAD34>97 D<01FE0000000000FFFE00000000 00FFFE0000000000FFFE000000000003FE000000000001FE000000000000FE000000000000FE00 0000000000FE000000000000FE000000000000FE000000000000FE000000000000FE0000000000 00FE000000000000FE000000000000FE000000000000FE000000000000FE000000000000FE0000 00000000FE000000000000FE000000000000FE000000000000FE000000000000FE000000000000 FE000000000000FE000000000000FE000000000000FE00FF00000000FE07FFF0000000FE1F01FC 000000FE38003E000000FE70001F800000FEC0000FC00000FF800007E00000FF800003F00000FF 000003F80000FE000001FC0000FE000001FC0000FE000000FE0000FE000000FE0000FE000000FF 0000FE000000FF0000FE0000007F8000FE0000007F8000FE0000007F8000FE0000007FC000FE00 00007FC000FE0000007FC000FE0000007FC000FE0000007FC000FE0000007FC000FE0000007FC0 00FE0000007FC000FE0000007FC000FE0000007FC000FE0000007F8000FE0000007F8000FE0000 00FF8000FE000000FF0000FE000000FF0000FE000000FE0000FE000001FE0000FE000001FC0000 FE000001F80000FF000003F00000FF800007F00000FD800007E00000F9C0000F800000F8E0003F 000000F078007E000000F01E03F8000000E00FFFE00000000001FE00000032497DC739>I<0000 3FE0000001FFFE000007E01F80001F8003C0003E0000E0007C00007001F80000F803F80003F803 F00003FC07F00007FC0FE00007FC1FE00007FC1FC00003F83FC00003F83FC00000E03FC0000000 7FC00000007F800000007F80000000FF80000000FF80000000FF80000000FF80000000FF800000 00FF80000000FF80000000FF80000000FF80000000FF800000007F800000007F800000007FC000 00003FC00000003FC000000E1FC000000E1FE000000E0FE000001C0FF000001C07F000003803F8 00003801F800007000FC0000E0007E0001C0001F800780000FE03E000001FFFC0000003FE00027 2F7DAD2E>I<00007F80000003FFF000000FC0FC00003F003F00007C001F8000F8000FC001F800 07E003F00007E007E00003F00FE00003F80FE00003F81FC00001FC1FC00001FC3FC00001FC3FC0 0001FC7F800001FE7F800000FE7F800000FEFF800000FEFF800000FEFFFFFFFFFEFFFFFFFFFEFF 80000000FF80000000FF80000000FF80000000FF80000000FF800000007F800000007F80000000 7F800000007FC00000003FC00000003FC000000E1FC000000E1FE000000E0FE000001C07E00000 1C07F000003803F000007001F800007000FC0000E0003E0003C0001F8007000007E03E000001FF F80000003FC000272F7DAD2E>101 D<01FE0000000000FFFE0000000000FFFE0000000000FFFE 000000000003FE000000000001FE000000000000FE000000000000FE000000000000FE00000000 0000FE000000000000FE000000000000FE000000000000FE000000000000FE000000000000FE00 0000000000FE000000000000FE000000000000FE000000000000FE000000000000FE0000000000 00FE000000000000FE000000000000FE000000000000FE000000000000FE000000000000FE0000 00000000FE000000000000FE000000000000FE001FFFFE0000FE001FFFFE0000FE001FFFFE0000 FE0007FFE00000FE0003FF000000FE0001FC000000FE0001F0000000FE0003E0000000FE0003C0 000000FE000780000000FE000E00000000FE001C00000000FE007800000000FE00F000000000FE 01E000000000FE03C000000000FE07C000000000FE0FC000000000FE1FE000000000FE3FF00000 0000FEF3F000000000FFE3F800000000FFC1FC00000000FF80FE00000000FF00FE00000000FE00 7F00000000FC003F80000000FC003F80000000FC001FC0000000FC000FE0000000FC000FE00000 00FC0007F0000000FC0003F8000000FC0001F8000000FC0001FC000000FC0000FE000000FC0000 FF000000FC00007F000000FC00007F800000FC00007FC00003FF0000FFF000FFFFFC07FFFF80FF FFFC07FFFF80FFFFFC07FFFF8031487DC737>107 D<01FE00FFFE00FFFE00FFFE0003FE0001FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0003FF80FFFFFEFFFF FEFFFFFE17487DC71C>I<01FC007F800000FFFC03FFF00000FFFC0781F80000FFFC0C007C0000 03FC18007E000001FC30003F000000FC60003F800000FCC0001F800000FD80001F800000FD8000 1FC00000FF00001FC00000FF00001FC00000FF00001FC00000FE00001FC00000FE00001FC00000 FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001F C00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE 00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC0 0000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00 001FC00000FE00001FC00000FE00001FC00000FE00001FC00003FF80007FF000FFFFFE1FFFFFC0 FFFFFE1FFFFFC0FFFFFE1FFFFFC0322D7CAC39>110 D<01FC01F800FFFC07FE00FFFC1E1F00FF FC383F8003FC607FC001FC607FC000FCC07FC000FCC07FC000FD803F8000FD801F0000FF000E00 00FF00000000FF00000000FF00000000FE00000000FE00000000FE00000000FE00000000FE0000 0000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00 000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE 00000000FE00000000FE00000000FE00000000FE00000000FE00000000FF00000003FF800000FF FFFF8000FFFFFF8000FFFFFF8000222D7DAC28>114 D<001FF8060000FFFF0E0003F0079E0007 8001FE000E00007E001C00003E003C00003E007800001E007800001E00F800001E00F800000E00 F800000E00FC00000E00FC00000E00FE00000E00FF000000007FC00000007FF80000003FFFE000 001FFFFE00000FFFFF800007FFFFE00003FFFFF00000FFFFFC00001FFFFE000001FFFE0000000F FF00000001FF800000007F806000001FC0E000001FC0E000000FC0F000000FC0F0000007C0F000 0007C0F0000007C0F8000007C0F800000780FC00000780FC00000F00FE00000F00FF00001E00FF 80003C00F9E0007800F0F803E000E03FFFC000C007FC0000222F7DAD29>I<01FE00003FC000FF FE001FFFC000FFFE001FFFC000FFFE001FFFC00003FE00007FC00001FE00003FC00000FE00001F C00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE 00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC0 0000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00 001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC000 00FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00003FC00000FE0000 3FC00000FE00003FC00000FE00007FC000007E00007FC000007E00007FC000003F0000DFC00000 3F00019FE000001F00031FF000000F80061FFFC00007F01C1FFFC00001FFF81FFFC000003FE01F E000322E7CAC39>117 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%EndSetup %%Page: 0 1 0 0 bop 206 823 a Fq(F)-9 b(unnelW)g(eb)37 b(Hac)m(k)m(er's)d(Man)m(ual)603 1151 y Fp(Ross)21 b(N.)g(Williams)519 1343 y Fo(V1.0)e(for)h(F)-5 b(unnelW)g(eb)20 b(V3.0)725 1536 y(Ma)n(y)g(1992)p eop %%Page: 1 2 1 1 bop 177 2597 1772 2 v 177 2675 a Fn(Cop)o(yrigh)o(t)384 2674 y(c)372 2675 y Fm(\015)14 b Fn(1992)e(Ross)i(N.)g(William)o(s.)177 2750 y(P)o(ermission)j(is)g(gran)o(ted)g(to)h(mak)o(e)d(and)j(distribute)g(v) o(erbatim)d(copies)j(of)f(this)h(man)o(ual)c(pro)o(vided)k(that)f(the)177 2800 y(cop)o(yrigh)o(t)d(notice)g(and)g(this)g(p)q(ermission)e(notice)j(are)f (preserv)o(ed)i(on)e(all)e(copies.)p 177 2835 V 1053 2940 a(1)p eop %%Page: 2 3 2 2 bop 1053 2940 a Fn(2)p eop %%Page: 3 4 3 3 bop 177 397 a Fl(Con)m(ten)m(ts)177 679 y Fk(Preface)1592 b(5)177 794 y(Ac)o(kno)o(wledgemen)o(ts)1348 b(7)177 909 y(Presen)o(tation)12 b(Notes)1347 b(9)177 1024 y(1)38 b(F)l(unnelW)l(eb)14 b(Design)1268 b(11)239 1098 y Fn(1.1)42 b(Motiv)n(ation)12 b(for)i(F)m(unnelW)m(eb)k Fj(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:) h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(11)239 1172 y(1.2)42 b(Inden)o(tation)30 b Fj(:)20 b(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(12)239 1245 y(1.3)42 b(Review)14 b(of)f(F)m(unnelW)m(eb)g(Syn)o(tax)28 b Fj(:)20 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(14)335 1319 y(1.3.1)46 b(Review)13 b(of)h(Macro)g(De\014nition)f(Syn)o(tax)k Fj(:)j(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:) g(:)h(:)f(:)g(:)61 b Fn(14)335 1393 y(1.3.2)46 b(Review)13 b(of)h(Macro)g(Call)e(Syn)o(tax)26 b Fj(:)20 b(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(16)335 1467 y(1.3.3)46 b(Review)13 b(of)h(P)o(arameterized)g(Macro)g (Call)f(Syn)o(tax)42 b Fj(:)20 b(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)61 b Fn(16)239 1540 y(1.4)42 b(Do)q(cumen)o(t)13 b(Structuring)27 b Fj(:)20 b(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)61 b Fn(16)239 1614 y(1.5)42 b(Discussion)14 b(of)f(Some)g (Miscellaneous)h(Issues)30 b Fj(:)20 b(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:) h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(18)239 1688 y(1.6)42 b(Automated)13 b(Regression)h(T)m(esting)38 b Fj(:)20 b(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(18)239 1761 y(1.7)42 b(Command)11 b(Line)i(In)o(terface)j Fj(:)k(:)h(:)f(:)g(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(18)239 1835 y(1.8)42 b(File)13 b(Name)g(Managemen)o(t)31 b Fj(:)20 b(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)61 b Fn(19)335 1909 y(1.8.1)46 b(Filename)12 b(Extensions)24 b Fj(:)c(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(20)335 1982 y(1.8.2)46 b(Filename)12 b(Inheritance)k Fj(:)k(:)g(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)61 b Fn(20)335 2056 y(1.8.3)46 b(P)o(ortable)14 b(Structure)h(of)f(File)f(Names)20 b Fj(:)g(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(21)239 2130 y(1.9)42 b(Sp)q(ecifying)13 b(Constrain)o(ts)i(on)e(the)i (Num)o(b)q(er)e(of)g(Instan)o(tiations)38 b Fj(:)20 b(:)h(:)f(:)g(:)h(:)f(:)g (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(22)239 2204 y(1.10)21 b(The)14 b(Relationship)f(Bet)o(w)o(een)i(Do)q(cumen)o(t)e(Structure)j(and)e (Macro)g(Structure)19 b Fj(:)h(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(23)239 2277 y(1.11)21 b(Diagnostic)13 b(Messages)32 b Fj(:)21 b(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(25)239 2351 y(1.12)21 b(Summary)31 b Fj(:)20 b(:)g(:)h(:)f(:)g(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(25)177 2466 y Fk(2)38 b(F)l(unnelW)l(eb)14 b(Implemen)o(tati)o(on)1077 b(27)239 2540 y Fn(2.1)42 b(In)o(tro)q(duction)13 b Fj(:)20 b(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)61 b Fn(27)239 2614 y(2.2)42 b(History)14 b(of)f(F)m(unnelW)m(eb)g (Implemen)o(tations)40 b Fj(:)20 b(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:) f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(27)239 2687 y(2.3)42 b(Wh)o(y)13 b(F)m(unnelW)m(eb)h(W)m(asn't)e(Used)j(to)f(W)m (rite)g(Itself)35 b Fj(:)21 b(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(28)239 2761 y(2.4)42 b(Co)q(ding)13 b(St)o(yle)38 b Fj(:)21 b(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(28)239 2835 y(2.5)42 b(Use)15 b(of)e(Memory)27 b Fj(:)20 b(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(29)1053 2940 y(3)p eop %%Page: 4 5 4 4 bop 239 42 a Fn(2.6)42 b(The)14 b(Heap)30 b Fj(:)20 b(:)g(:)h(:)f(:)g(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(29)239 116 y(2.7)42 b(The)14 b(Stac)o(k)24 b Fj(:)c(:)g(:)h(:)f(:)g(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(30)239 191 y(2.8)42 b(Static)14 b(V)m(ariables)k Fj(:)i(:)g(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(30)239 266 y(2.9)42 b(Implemen)o(ting)11 b(T)m(ext)j(Inden)o(tation)25 b Fj(:)20 b(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(30)177 382 y Fk(3)38 b(F)l(unnelW)l(eb)14 b(Mo)q(di\014cation)1145 b(35)239 457 y Fn(3.1)42 b(In)o(tro)q(duction)13 b Fj(:)20 b(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)61 b Fn(35)239 531 y(3.2)42 b(The)14 b(Danger)g(of)f(Mo)q(difying)g (Languages)26 b Fj(:)20 b(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(35)239 606 y(3.3)42 b(Authorit)o(y)14 b(vs)g(User)h(Securit)o(y)43 b Fj(:)20 b(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(36)239 681 y(3.4)42 b(What)13 b(I)h(W)m(an)o(t)f(to)h(Protect)25 b Fj(:)20 b(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(37)239 756 y(3.5)42 b(Mo)q(difying)12 b(the)j(Man)o(uals)c Fj(:)20 b(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(38)239 830 y(3.6)42 b(Ho)o(w)13 b(Cop)o(yrigh)o(t)g(La)o(w)h(W)m(orks)37 b Fj(:)20 b(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(38)239 905 y(3.7)42 b(Managemen)o(t)13 b(of)g(the)h(O\016cial)f(F)m (unnelW)m(eb)f Fj(:)21 b(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(39)239 980 y(3.8)42 b(A)14 b(GNU)g(V)m(ersion?)29 b Fj(:)20 b(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(41)239 1054 y(3.9)42 b(Summary)31 b Fj(:)20 b(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(41)177 1171 y Fk(4)38 b(F)l(unnelW)l(eb)14 b(F)l(uture)1270 b(43)239 1245 y Fn(4.1)42 b(Do)q(cumen)o(tation)25 b Fj(:)20 b(:)g(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(43)239 1320 y(4.2)42 b(Command)11 b(Line)i(In)o(terface)j Fj(:)k(:)h(:)f(:)g(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(43)239 1395 y(4.3)42 b(Shell)13 b(In)o(terpreter)42 b Fj(:)20 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)61 b Fn(43)239 1469 y(4.4)42 b(Language)13 b(Design)28 b Fj(:)20 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)61 b Fn(44)239 1544 y(4.5)42 b(Scanner/Mapp)q(er)34 b Fj(:)20 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)61 b Fn(44)239 1619 y(4.6)42 b(P)o(arser)29 b Fj(:)20 b(:)h(:)f(:)g(:)h(:) f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(45)239 1694 y(4.7)42 b(Analyser)16 b Fj(:)21 b(:)f(:)g(:)h(:)f(:)g(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(45)239 1768 y(4.8)42 b(T)m(angle)21 b Fj(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(45)239 1843 y(4.9)42 b(W)m(ea)o(v)o(e)26 b Fj(:)20 b(:)h(:)f(:)g(:)h(:)f (:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(45)239 1918 y(4.10)21 b(Lister)39 b Fj(:)20 b(:)h(:)f(:)g(:)h(:)f(:)g(:) g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(46)239 1993 y(4.11)21 b(Diagnostics)32 b Fj(:)20 b(:)h(:)f(:)g(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(47)239 2067 y(4.12)21 b(Sp)q(eed)37 b Fj(:)20 b(:)h(:)f(:)g(:)h(:)f(:)g (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(47)239 2142 y(4.13)21 b(Correctness)32 b Fj(:)20 b(:)h(:)f(:)g(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(47)239 2217 y(4.14)21 b(T)m(est)14 b(Suite)25 b Fj(:)20 b(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)61 b Fn(47)239 2291 y(4.15)21 b(Mac)o(hine-Sp)q(eci\014c)15 b(Changes)29 b Fj(:)21 b(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(48)239 2366 y(4.16)21 b(Summary)31 b Fj(:)20 b(:)g(:)h(:)f(:)g(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)61 b Fn(48)177 2482 y Fk(A)26 b(GNU)16 b(General)e(Public)f(License)h(V)l (ersion)g(2)841 b(49)177 2599 y(B)28 b(References)1436 b(57)177 2715 y(Index)1605 b(57)1053 2940 y Fn(4)p eop %%Page: 5 6 5 5 bop 177 399 a Fl(Preface)177 639 y Fn(This)15 b(man)o(ual)d(is)j(for)f (hac)o(k)o(ers!)22 b(An)o(y)o(one)15 b(who)g(w)o(an)o(ts)f(to)h(bash,)g (diddle,)f(frob,)g(grind,)h(mangle,)d(patc)o(h,)j(p)q(ok)o(e,)177 689 y(toggle,)e(t)o(widdle,)g(zap,)h(or)f(generally)h(hac)o(k)g(F)m(unnelW)m (eb)f(should)h(at)g(least)g(tak)o(e)g(a)f(lo)q(ok)g(at)h(this)g(man)o(ual.) 177 764 y(This)g(do)q(cumen)o(t)f(has)h(b)q(een)h(created)h(to)e(serv)o(e)h (t)o(w)o(o)e(purp)q(oses:)228 880 y(1.)20 b(T)m(o)12 b(act)h(as)f(a)h(rep)q (ository)g(for)f(sp)q(eci\014c)j(design)d(and)h(implemen)o(tatio)o(n)d (information)g(not)i(appropriate)h(to)281 930 y(b)q(e)h(included)g(in)g (program)e(commen)o(ts.)228 1013 y(2.)20 b(T)m(o)13 b(guide)h(those)g(in)o (terested)i(in)d(mo)q(difying)e(the)k(program.)177 1129 y(As)e(a)g(result,)g (this)g(do)q(cumen)o(t)f(has)h(gro)o(wn)g(in)f(\014ts)i(and)e(starts.)19 b(This)13 b(man)o(ual)d(is)j(not)f(a)h(particularly)f(p)q(olished)177 1179 y(or)h(w)o(ell-balanced)e(do)q(cumen)o(t)h(but)h(it)f(should)h(b)q(e)g (of)f(assistance)h(to)g(those)g(\(including)f(m)o(yself)s(\))f(in)o(v)o(olv)o (ed)g(with)177 1229 y(mo)q(difying)g(F)m(unnelW)m(eb.)177 1328 y Fk(Ross)k(N.)i(Williams)177 1378 y(Adelaide,)d(Australia)177 1428 y(Ma)o(y)i(1992)1053 2940 y Fn(5)p eop %%Page: 6 7 6 6 bop 1053 2940 a Fn(6)p eop %%Page: 7 8 7 7 bop 177 399 a Fl(Ac)m(kno)m(wledgemen)m(ts)177 645 y Fn(Man)o(y)16 b(thanks)h(to)g Fk(Da)o(vid)h(Hulse)d Fn(\()p Fi(dave@cs.adelaide.e)o(du.au)o Fn(\))f(for)j(translating)f(the)h(original)e(v)o(ersion)177 695 y(of)g(F)m(unnelW)m(eb)g(\(F)m(unnelW)m(eb)h(V1\))f(from)f(Ada)i(in)o(to) f(C)g(and)h(getting)f(it)h(to)f(w)o(ork)g(on)h(Unix)f(and)h(a)f(PC.)g(The)177 744 y(C)i(co)q(de)h(written)f(b)o(y)g(Da)o(vid)e(\(F)m(unnelW)m(eb)i(V2\))f (formed)g(the)h(basis)g(of)g(F)m(unnelW)m(eb)f(V3,)h(but)g(w)o(as)g(en)o (tirely)177 794 y(rewritten)h(during)f(the)h(in)o(tensiv)o(e)f(re\014nemen)o (t)h(and)e(feature-injection)i(p)q(erio)q(d)f(leading)f(up)h(to)g(this)h (release)177 844 y(\(F)m(unnelW)m(eb)12 b(V3)g(is)f(ab)q(out)h(three)h(times) e(the)i(size)g(of)e(F)m(unnelW)m(eb)g(V2\).)18 b(Nev)o(ertheless,)c(without)e (this)g(imp)q(or-)177 894 y(tan)o(t)h(\014rst)i(translation)d(step,)i(I)g(w)o (ould)e(probably)h(not)g(ha)o(v)o(e)g(found)g(the)h(motiv)n(ation)d(to)i(dev) o(elop)g(F)m(unnelW)m(eb)177 944 y(to)h(its)g(presen)o(t)h(state.)177 1018 y(Thanks)f(go)e(to)h Fk(Simon)h(Hac)o(k)o(ett)e Fn(\()p Fi(simon@internode.com)o(.au)p Fn(\))e(of)j(In)o(terno)q(de)h(Systems)f(Pt)o (y)h(Ltd)f(for)g(the)177 1068 y(use)18 b(of)e(his)h(Sun,)h(Mac,)g(and)e(PC,)h (for)g(assistance)h(in)f(p)q(orting)f(F)m(unnelW)m(eb)h(to)g(the)g(Sun)h(and) e(PC,)h(and)g(for)177 1118 y(helpful)c(discussions.)177 1193 y(Thanks)j(go)g(to)f Fk(Jerem)o(y)i(Begg)f Fn(\()p Fi(jeremy@vsm.com.au)o Fn(\))d(of)j(VSM)g(Soft)o(w)o(are)f(Services)j(for)d(the)i(use)g(of)e(his)177 1243 y(V)-5 b(AX,)14 b(and)g(for)g(assistance)h(with)e(the)i(VMS-sp)q (eci\014c)g(co)q(de.)177 1317 y(Thanks)50 b(to)h Fk(Barry)57 b(Dwy)o(er)50 b Fn(\()p Fi(dwyer@cs.adelaid)o(e.edu)o(.au)p Fn(\))d(and)j Fk(Roger)57 b(Brissenden)177 1367 y Fn(\()p Fi (rjb@koala.harvard.e)o(du)p Fn(\))15 b(for)j(trying)g(out)g(F)m(unnelW)m(eb)g (V)m(ersion)g(1)g(in)g(1987)f(and)h(pro)o(viding)f(v)n(aluable)177 1417 y(feedbac)o(k.)177 1492 y(Thanks)d(to)g(Donald)f(Kn)o(uth)h(for)f (establishing)h(the)g(idea)g(of)f(literate)h(programming)d(in)i(the)i (\014rst)f(place.)177 1591 y Fk(Ross)h(N.)i(Williams)177 1641 y(Adelaide,)d(Australia)177 1691 y(Ma)o(y)i(1992)1053 2940 y Fn(7)p eop %%Page: 8 9 8 8 bop 1053 2940 a Fn(8)p eop %%Page: 9 10 9 9 bop 177 399 a Fl(Presen)m(tation)42 b(Notes)177 639 y Fk(References:)e Fn(All)24 b(references)29 b(are)c(set)i(in)e(b)q(old)f(and)i(are)f(cited)h (in)f(square)h(brac)o(k)o(ets)h(in)e(the)h(form)177 689 y Fk([)p Fj(<)p Fh(\014rstauthor)p Fj(><)p Fh(ye)n(ar)p Fj(>)p Fk(])p Fn(.)19 b(All)13 b(references)j(cited)e(in)f(the)g(text)h(app)q(ear)g(in)f (the)h(reference)h(list)e(and)g(the)h(index.)177 764 y Fk(Sp)q(ecial)d (terms:)17 b Fn(New)12 b(or)f(imp)q(ortan)o(t)f(terminology)f(has)i(b)q(een)i (set)f(in)f(b)q(old)g(face)h(and)f(app)q(ears)h(in)f(the)h(index.)177 839 y Fk(T)o(yp)q(esetting:)69 b Fn(This)41 b(do)q(cumen)o(t)f(w)o(as)g (prepared)i(b)o(y)e(the)h(author)f(using)h(Andrew)g(T)m(rev)o(or-)177 888 y(ro)o(w's)29 b(\()p Fi(akt150@cscgpo.anu.e)o(du.au)o Fn(\))e(implemen)o (tatio)o(n)g(\(OzT)m(eX\))j(of)f(the)h(T)1558 897 y(E)1581 888 y(X/L)1644 883 y Fg(a)1663 888 y Fn(T)1686 901 y(E)1709 888 y(X)p Fk([Kn)o(uth84])177 938 y([Lamp)q(ort86])13 b Fn(t)o(yp)q(esetting) i(system)e(running)h(on)g(a)f(Macin)o(tosh-SE.)177 1013 y Fk(Graphics:)i Fn(All)c(diagrams)e(ha)o(v)o(e)i(b)q(een)i(constructed)g(out)e(of)g(text)h (using)f(the)h(L)1431 1008 y Fg(a)1450 1013 y Fn(T)1473 1025 y(E)1496 1013 y(X)f Fi(verbatim)f Fn(en)o(vironmen)o(t)177 1063 y(so)17 b(as)f(to)h(allo)o(w)e(this)h(do)q(cumen)o(t)g(to)h(b)q(e)g (disseminated)e(electronically)i(and)f(prin)o(ted)h(using)f(L)1695 1058 y Fg(a)1714 1063 y Fn(T)1737 1075 y(E)1761 1063 y(X)g(without)177 1112 y(access)g(to)e(the)g(author's)g(dra)o(wing)f(to)q(ols.)177 1187 y Fk(Kno)o(wn)g(t)o(yp)q(esetting)d(problems:)k Fn(While)d(ev)o(ery)h (attempt)f(has)h(b)q(een)g(made)e(to)i(giv)o(e)f(a)g(go)q(o)q(d)g(presen)o (tation)177 1237 y(within)h(the)h(time)e(a)o(v)n(ailable,)f(some)i(shortcuts) i(ha)o(v)o(e)e(had)g(to)g(b)q(e)h(tak)o(en.)18 b(In)13 b(particular,)f(the)h (author)f(has)h(b)q(een)177 1287 y(unable)h(to)g(w)o(ork)f(out)h(ho)o(w)g(to) f(get)h(L)754 1282 y Fg(a)773 1287 y Fn(T)796 1299 y(E)820 1287 y(X)g(to)g(suppress)h(blank)f(pages)g(at)f(the)i(start)f(of)g(c)o (hapters.)1053 2940 y(9)p eop %%Page: 10 11 10 10 bop 1042 2940 a Fn(10)p eop %%Page: 11 12 11 11 bop 177 381 a Ff(Chapter)34 b(1)177 617 y Fl(F)-10 b(unnelW)g(eb)41 b(Design)177 861 y Fn(This)18 b(c)o(hapter)i(con)o(tains)e(notes)h(on)f(the)h (design)f(of)g(F)m(unnelW)m(eb.)31 b(These)19 b(notes)g(w)o(ere)h(not)e (created)i(\\from)177 911 y(scratc)o(h",)d(as)f(the)g(original)e(v)o(ersion)i (of)f(F)m(unnelW)m(eb)g(\()p Fk(F)l(unnelW)l(eb)h(V1)p Fn(\))g(w)o(as)g (designed)g(and)g(constructed)177 961 y(in)d(a)h(h)o(urry)f(late)h(in)f (1986,)f(and)h(no)h(design)f(notes)i(w)o(ere)f(ev)o(er)h(recorded.)k(These)c (notes)f(are)g(in)f(fact)h(the)g(result)177 1011 y(of)g(a)h(complete)f (review)h(of)f(the)h(F)m(unnelW)m(eb)f(design)h(that)g(to)q(ok)f(place)h(in)f (late)h(1991)e(as)i(part)g(of)f(the)h(pro)q(cess)177 1061 y(of)e(upgrading)h (it)f(for)h(public)f(release.)177 1139 y(Throughout)f(the)h(design)g(pro)q (cess)h(I)f(tried)g(to)f(stic)o(k)g(to)h(the)g(principles)g(of)e(simplicit)o (y)f(and)i(clarit)o(y)m(.)17 b(As)c(a)f(rule,)177 1188 y(it)17 b(w)o(as)h(considered)h(more)e(imp)q(ortan)o(t)f(that)i(a)f(feature)h(b)q(e)h (simple)d(and)h(not)h(allo)o(w)e(the)i(user)h(to)f(outsmart)177 1238 y(himself)d(than)h(it)g(w)o(as)g(for)g(the)h(feature)f(to)h(b)q(e)f (particularly)g(crisp.)26 b(F)m(or)15 b(example,)g(the)i(F)m(unnelW)m(eb)f (macro)177 1288 y(calling)d(syn)o(tax)g(is)h(not)g(as)g(crisp)g(as)g(the)h(C) f(syn)o(tax,)f(but)h(is)g(more)f(visible.)177 1366 y(T)m(o)i(some)f(exten)o (t)i(the)g(design)f(review)h(w)o(as)f(in\015uenced)i(b)o(y)e(the)h (requiremen)o(ts)f(of)g(bac)o(kw)o(ard)g(compatibilit)o(y)l(.)177 1416 y(During)d(the)h(review)g(it)g(w)o(as)f(hard)h(not)f(to)h(think)f(ab)q (out)g(all)g(the)h(source)h(\014les)e(in)h(F)m(unnelW)m(eb)f(V1)g(format)f (that)177 1466 y(I)j(ha)o(v)o(e)f(written)i(o)o(v)o(er)f(the)g(y)o(ears)g (that)g(w)o(ould)f(ha)o(v)o(e)h(to)f(b)q(e)i(con)o(v)o(erted)g(w)o(ere)f(I)g (to)g(signi\014can)o(tly)e(deviate)j(from)177 1516 y(the)h(old)f(input)g (language.)22 b(Luc)o(kily)14 b(it)h(turned)i(out)e(that)h(there)g(w)o(as)g (little)e(clash)i(b)q(et)o(w)o(een)h(these)g(in)o(terests,)177 1565 y(and)g(the)h(resulting)f(design)g(is)g(b)q(oth)g(clean)g(and)g(do)q(es) h(not)f(require)h(m)o(uc)o(h)e(con)o(v)o(ersion)h(of)f(old)h(source)h (\014les.)177 1615 y(The)f(main)d(revision)i(is)h(in)f(the)h(do)q(cumen)o(t)e (structuring)j(facilit)o(y)m(.)23 b(F)m(unnelW)m(eb)16 b(V1)g(had)g(just)h(t) o(w)o(o)f(lev)o(els)g(of)177 1665 y(heading)d(indicated)g(b)o(y)g Fi(@*@*)g Fn(\(for)g(ma)r(jor)e(headings\))j(and)f Fi(@*)g Fn(\(for)g(minor)e(headings\).)18 b(This)13 b(sc)o(heme)h(\(whic)o(h)177 1715 y(w)o(as)i(copied)g(from)e(Kn)o(uth's)i(W)m(eb\))f(has)h(b)q(een)h (replaced)g(b)o(y)e(a)h(hierarc)o(hical)f(sc)o(heme)h(of)f(\014v)o(e)h (heading)g(lev)o(els)177 1765 y(lev)o(els)e(\()p Fi(@A)p Fj(:)7 b(:)g(:)n Fi(@E)p Fn(\).)177 1843 y(This)18 b(c)o(hapter)h(is)e(rather)i (unstructured,)i(acting)c(as)h(it)g(has,)g(mainly)e(as)i(a)f(dumping)f (ground)i(for)f(random)177 1893 y(ideas)d(ab)q(out)g(F)m(unnelW)m(eb.)177 2066 y Fe(1.1)70 b(Motiv)l(ation)22 b(for)i(F)-6 b(unnelW)g(eb)177 2186 y Fn(During)16 b(1986,)f(I)h(w)o(as)g(exp)q(osed)i(to)e(Donald)f(Kn)o (uth's)i Fi(WEB)e Fn(literate)i(programmi)o(ng)c(system)j(in)g(the)h(form)d (of)177 2236 y(Jon)j(Ben)o(tley's)h Fh(Pr)n(o)n(gr)n(amming)f(Pe)n(arls)f Fn(column)f(in)h Fh(Communic)n(ations)i(of)g(the)g(A)o(CM)7 b Fk([Ben)o(tley86])p Fn(.)1825 2221 y Fd(1)1868 2236 y Fn(This)177 2286 y(prompted)17 b(me)f(to)h(obtain)g(a)g(cop)o(y)g(of)g(the)h(rep)q(ort)g (on)f(the)h(W)m(eb)f(system)p Fk([Kn)o(uth83])f Fn(and)h(to)g(try)h(out)f (the)177 2336 y(program)12 b(whic)o(h)i(had)g(b)q(een)h(installed)e(on)h(the) g(lo)q(cal)f(V)m(axen.)177 2414 y(W)m(eb)h(w)o(as)f(the)i(b)q(est)f(system)g (that)g(I)f(had)h(seen)h(for)e(pro)q(ducing)h(prin)o(ted)g(and)g(online,)f (inline)f(do)q(cumen)o(tation.)177 2464 y(T)m(o)k(me)g(the)i(most)e (extraordinary)h(asp)q(ect)h(of)f(the)g(system)g(w)o(as)g(its)g(success)j (despite)e(the)f(fact)g(that)g(it)g(had)177 2514 y(b)q(een)h(built)e(in)o(to) h(the)g(horribly)g(an)o(tiquated)f(\014le/batc)o(h)h(pro)q(cessing)h(systems) f(that)g(w)o(e)h(all)d(kno)o(w)i(and)f(lo)o(v)o(e)177 2563 y(\(and)f(use\).)20 b(I)15 b(had)f(imagined)e(sophisticated)j(do)q(cumen)o (tation)f(systems)g(b)q(efore)h(this)g(time,)e(but)i(had)f(alw)o(a)o(ys)177 2613 y(assumed)i(that)h(they)g(w)o(ould)f(b)q(e)i(parts)f(of)f(complex)f (programming)e(en)o(vironmen)o(ts.)26 b(Kn)o(uth)17 b(sho)o(w)o(ed)g(that,) 177 2663 y(to)f(some)e(exten)o(t,)j(it)e(can)h(b)q(e)g(done)g(using)f(1960s)g (soft)o(w)o(are)h(tec)o(hnology)f(\(excluding)h(the)g(1980s)f(t)o(yp)q (esetting)177 2713 y(tec)o(hnology\).)j(This)c(w)o(as)g(exciting.)p 177 2757 709 2 v 223 2783 a Fc(1)241 2795 y Fb(As)g(it)g(happ)q(ens,)e(this)h (w)o(as)h(somewhat)f(of)g(a)h(luc)o(ky)e(encoun)o(ter.)20 b(I)14 b(had)f(only)g(just)g(joined)f(the)h(A)o(CM)i(and)e(the)h(Ma)o(y)f(1986)177 2835 y(issue)e(of)g(CA)o(CM)j(in)d(whic)o(h)g(the)f(column)g(app)q(eared)f(w) o(as)j(the)e(\014rst)h(issue)g(I)g(receiv)o(ed.)1042 2940 y Fn(11)p eop %%Page: 12 13 12 12 bop 177 42 a Fn(The)16 b(W)m(eb)g(system)f(w)o(as)h(en)o(ticing)f(and)h (promising)d(but)j(to)g(me)e(su\013ered)k(from)c(man)o(y)g(dra)o(wbac)o(ks,)i (man)o(y)d(of)177 91 y(whic)o(h)j(Kn)o(uth)g(had)g(promoted)f(as)h(adv)n(an)o (tages.)23 b(The)17 b(follo)o(wing)c(highly)i(sub)r(jectiv)o(e)i(list)e(of)g (disadv)n(an)o(tages)177 141 y(formed)e(a)g(springb)q(oard)h(for)g(the)g (construction)h(of)f(F)m(unnelW)m(eb.)239 247 y Fm(\017)21 b Fn(W)m(eb)13 b(can)i(only)e(pro)q(cess)i(P)o(ascal)f(programs.)239 327 y Fm(\017)21 b Fn(W)m(eb)16 b(can)h(pro)q(duce)h(only)e(one)h(output)f (\014le.)27 b(In)16 b(man)o(y)f(instances)j(it)e(is)g(desirable)h(to)g (generate)h(more)281 377 y(than)g(one)h(output)g(\014le.)31 b(F)m(or)18 b(example,)g(when)h(programming)c(in)j(Ada,)h(it)f(is)g (desirable)h(to)f(write)h(a)281 427 y(pac)o(k)n(age)13 b(sp)q(eci\014cation)i (and)f(a)f(pac)o(k)n(age)h(b)q(o)q(dy)g(together)h(in)e(the)i(same)e(\014le.) 239 507 y Fm(\017)21 b Fn(W)m(eb)15 b(enforces)h(Kn)o(uth's)f(individual)e (st)o(yle)j(of)e(inden)o(tation.)21 b(W)m(eb)15 b(supplies)g(commands)e(to)i (o)o(v)o(er-ride)281 557 y(the)h(automatic)e(inden)o(tation)h(but)g(it)g(is)h (an)f(uphill)f(battle)i(and)f(the)h(co)q(de)h(b)q(ecomes)e(clogged)h(up)f (with)281 606 y(format)d(directiv)o(es.)239 686 y Fm(\017)21 b Fn(W)m(eb)f(do)q(es)i(not)f(cater)g(for)g(non-standard)g(P)o(ascal)f (programs.)38 b(In)21 b(particular,)g(all)f(iden)o(ti\014ers)h(are)281 736 y(truncated)15 b(to)f(ab)q(out)g(eigh)o(t)f(c)o(haracters.)239 816 y Fm(\017)21 b Fn(W)m(eb)13 b(formats)g(the)h(program)f(output)h(\014le)g (in)o(to)f(a)g(form)g(that)g(is)h(unreadable)g(to)g(h)o(umans.)239 896 y Fm(\017)21 b Fn(W)m(eb)11 b(do)q(es)i(not)f(pro)o(vide)g(an)f(include)h (facilit)o(y)m(.)j(This)d(w)o(as)g(considered)h(a)f(feature)g(essen)o(tial)h (for)e(supp)q(ort-)281 946 y(ing)i(macro)g(libraries.)239 1026 y Fm(\017)21 b Fn(W)m(eb)13 b(pro)o(vides)h(macros)f(with)g(at)h(most)e(one)i (parameter.)k(Kn)o(uth)c(describ)q(es)i(a)d(hac)o(k)h(that)g(can)g(extract) 281 1076 y(a)d(m)o(ultiple)f(parameter)h(macro)g(facilit)o(y)f(from)g(a)h (single)g(parameter)h(one,)g(but)g(it)f(is)g(hardly)h(satisfactory)m(.)239 1156 y Fm(\017)21 b Fn(W)m(eb)13 b(do)q(es)i(not)f(pro)o(vide)g (conditionals.)177 1262 y(Most)19 b(of)e(these)j(ob)r(jections)f(b)q(oiled)e (do)o(wn)h(to)g(t)o(w)o(o)g(p)q(oin)o(ts:)27 b(that)18 b(W)m(eb)g(is)g(far)g (to)q(o)g(sp)q(ecialized,)i(and)e(that)177 1312 y(Kn)o(uth's)h(\\Occam's)f (Razor")h(had)g(cut)g(to)q(o)g(far.)33 b(What)18 b(I)h(w)o(an)o(ted)g(w)o(as) g(a)f(do)q(cumen)o(tation)g(system)h(that)177 1362 y(emplo)o(y)o(ed)11 b(all)g(the)i(same)f(principles)h(as)f(W)m(eb)g(but)h(w)o(as)g(far)f(more)f (general.)18 b(The)13 b(result)g(w)o(as)f(F)m(unnelW)m(eb)g(V1,)177 1412 y(whic)o(h)i(can)g(pro)q(cess)i(programs)c(in)h(an)o(y)h(language)f(or)h (an)o(y)f(com)o(bination)e(of)i(languages)h(at)f(the)i(cost)f(of)f(t)o(yp)q (e-)177 1461 y(setting)h(the)h(text)f(in)g Fi(tt)21 b(font)p Fn(.)177 1533 y(Originally)m(,)13 b(it)i(w)o(as)g(in)o(tended)h(that)f(F)m (unnelW)m(eb)f(w)o(ould)h(b)q(e)h(t)o(yp)q(esetter)h(indep)q(enden)o(t)g(as)e (w)o(ell)f(as)i(language)177 1583 y(indep)q(enden)o(t.)23 b(It)15 b(w)o(as)f(in)o(tended)i(that)f(a)f(format)f(\014le)i(consisting)g(of)g(a)f (set)i(of)e(pro)q(ductions)i(describing)f(ho)o(w)177 1633 y(the)h(do)q(cumen) o(t)e(\014le)i(w)o(as)f(to)f(b)q(e)i(formatted)e(w)o(ould)g(b)q(e)i(handed)g (to)e(F)m(unnelW)m(eb)h(along)f(with)h(the)g(input)g(\014le.)177 1683 y(In)k(the)g(end,)g(time)e(pressures)k(forced)e(me)f(to)g(tak)o(e)g(the) h(bac)o(k)g(do)q(or)f(and)g(hac)o(k)h(up)f(a)g(T)1627 1691 y(E)1650 1683 y(X)h(do)q(cumen)o(t)f(\014le)177 1732 y(generator.)h(This)14 b(compromise)d(has)j(found)f(its)h(w)o(a)o(y)f(in)o(to)g(F)m(unnelW)m(eb)g (V3.0)g(whic)o(h)g(is)h(still)e(relian)o(t)i(on)f(T)1883 1741 y(E)1906 1732 y(X,)177 1782 y(although)f(V3.0)g(at)h(least)g(encourages)h (input)f(\014les)g(to)g(b)q(e)g(t)o(yp)q(esetter)i(indep)q(enden)o(t.)k(It)13 b(is)g(hop)q(ed)g(that)g(future)177 1832 y(v)o(ersions)i(of)e(F)m(unnelW)m (eb)g(will)g(include)h(more)e(sophisticated)j(t)o(yp)q(esetting)g (facilities.)177 1990 y Fe(1.2)70 b(Inden)n(tation)177 2103 y Fn(A)12 b(macro)f(call)h(that)g(do)q(es)h(not)f(app)q(ear)h(at)f(the)h (left)e(margin)g(is)h(called)g(an)f Fk(inden)o(ted)g(macro)i(call)f Fn(and)g(seems)177 2153 y(to)f(lead)h(to)f(three)h(di\013eren)o(t)h (alternativ)o(es)e(for)g(its)h(expansion:)k Fk(no)d(inden)o(tat)o(ion)o Fn(,)8 b Fk(blank)k(inden)o(tati)o(on)p Fn(,)c(and)177 2202 y Fk(text)15 b(inden)o(tati)o(on)p Fn(.)g(Here)g(are)f(examples)f(of)g(eac)o (h)i(kind)e(of)g(inden)o(tation.)18 b(First)c(the)g(example)f(problem.)177 2308 y Fi(@$@==@{@-)177 2358 y(Aardvark)177 2408 y(Walrus@})177 2508 y(@O@==@{@-)177 2557 y(Zebra@)177 2607 y(Giraffe)177 2657 y(@})177 2763 y Fn(There)i(are)g(three)g(w)o(a)o(ys)e (that)h(the)h(second)g(line)e(of)g(the)i Fi(Sloth)e Fn(macro)f(can)i(b)q(e)h (inden)o(ted.)177 2835 y Fk(No)h(inden)o(tati)o(on:)1042 2940 y Fn(12)p eop %%Page: 13 14 13 13 bop 286 42 a Fi(ZebraAardvark)286 91 y(Walrus)286 141 y(Giraffe)177 252 y Fk(Blank)15 b(inden)o(tati)o(on:)286 362 y Fi(ZebraAardvark)395 412 y(Walrus)286 462 y(Giraffe)177 572 y Fk(T)l(ext)h(inden)o(tati)o(on)o(:)286 683 y Fi(ZebraAardvark)286 733 y(ZebraWalrus)286 783 y(Giraffe)177 893 y Fn(No)g(inden)o(tation)f(is)h (useful)g(where)i(the)e(user)h(wishes)g(to)f(deal)g(with)g(the)g(output)g (stream)g(as)g(a)g(pure)h(output)177 943 y(stream.)g(Blank)11 b(inden)o(tation)g(is)g(useful)g(when)h(the)g(user)h(wishes)f(to)f(generate)h (inden)o(ted)g(computer)f(programs.)177 993 y(T)m(ext)k(inden)o(tation)f(is)g (useful)h(where)h(the)f(user)h(wishes)f(to)g(pre\014x)g(eac)o(h)h(line)e(of)g (an)g(en)o(tire)i(macro)d(in)o(v)o(o)q(cation)177 1043 y(with)c(a)h(string.) 16 b(This)10 b(can)f(b)q(e)i(useful)e(for)g(commen)o(ting)e(out)j(co)q(de)g (\(e.g.)f(in)g(Ada)g(using)h Fi(--)p Fn(\),)f(and)h(for)f(prep)q(ending)177 1092 y(things)14 b(lik)o(e)f(a)h(dollar)e(sign)i(at)g(the)g(start)h(of)e(eac) o(h)h(line)g(an)f(a)h(V)-5 b(AX)15 b(VMS)f(DCL)f(script)i(command)c(\014le.) 177 1168 y(F)m(unnelW)m(eb)i(V1)h(pro)o(vided)g(a)f(c)o(hoice)i(of)e(no)h (inden)o(tation)f(or)h(blank)f(inden)o(tation.)k(The)d(c)o(hoice)h(w)o(as)f (made)e(in)177 1218 y(the)j(command)c(line)i(and)h(could)g(not)f(b)q(e)i(o)o (v)o(erridden.)177 1294 y(The)f(design)h(questions)f(are)g(as)g(follo)o(ws:) 228 1414 y(1.)20 b(Whic)o(h)13 b(of)h(the)g(three)h(kinds)f(of)f(inden)o (tation)h(should)f(F)m(unnelW)m(eb)h(supp)q(ort?)228 1499 y(2.)20 b(What)13 b(should)h(b)q(e)h(the)f(gran)o(ularit)o(y)f(of)g(sw)o(apping)g(b)q (et)o(w)o(een)i(inden)o(tation)f(mo)q(des?)228 1585 y(3.)20 b(Are)15 b(particular)e(inden)o(tation)h(mo)q(des)f(dangerous?)228 1671 y(4.)20 b(Is)14 b(the)h(presence)h(of)d(particular)h(com)o(binations)e (of)h(inden)o(tation)g(mo)q(des)g(confusing)h(to)g(the)g(user?)228 1756 y(5.)20 b(Ho)o(w)13 b(and)h(when)h(should)e(the)i(c)o(hoice)f(of)f (inden)o(tation)h(b)q(e)g(sp)q(eci\014ed?)177 1876 y(All)j(sorts)h(of)f(sc)o (hemes)g(w)o(ere)i(considered,)g(including)d(a)h(\014nely)g(grained)g(system) h(in)e(whic)o(h)i(the)g(user)g(could)177 1926 y(sp)q(ecify)13 b(at)g(the)g(p)q(oin)o(t)f(of)g(call)g(whic)o(h)g(inden)o(tation)g(mo)q(de)f (should)i(b)q(e)g(used)g(for)g(the)g(called)f(macro)f(expansion.)177 2002 y(After)f(a)f(lot)g(of)g(though)o(t,)g(the)i(dominan)o(t)c(factor)i (that)h(should)f(a\013ect)h(the)g(design)g(w)o(as)f(decided)h(to)g(b)q(e)g (the)g Fh(clarity)177 2051 y Fn(in)k(the)g(user's)h(mind)d(of)h(the)i(inden)o (tation)e(facilit)o(y)f(and)i(the)g Fh(danger)h Fn(asso)q(ciated)f(with)g (misunderstanding)f(it.)177 2101 y(Here)f(are)f(t)o(w)o(o)f(examples)f(that)i (sho)o(w)f(ho)o(w)g(easily)g(a)h(confusion)f(or)g(misunderstanding)g(of)g (the)h(inden)o(ting)f(b)q(eing)177 2151 y(used)15 b(can)f(cause)h(danger.)j (The)d(\014rst)f(example)f(sho)o(ws)h(ho)o(w)g(blank)f(or)h(no)f(inden)o (tation)g(migh)o(t)f(b)q(e)j(misused.)177 2271 y Fi(--Misuse)20 b(of)i(blank)e(\(and)h(no\))h(indentation.)177 2320 y(--@)177 2440 y Fn(Here)d(the)g(user)g(has)g(assumed)e(that)h(text)h(inden)o(tation)e (is)h(in)g(action)g(and)g(has)g(placed)g(an)g(Ada)g(commen)o(t)177 2490 y(sym)o(b)q(ol)12 b(\\)p Fi(--)p Fn(")g(b)q(efore)i(the)g(in)o(v)o(o)q (cation)e(of)h(the)h(macro)e Fi(@)f Fn(in)i(the)h(hop)q(e)g(that)f (the)h(en)o(tire)g(text)g(of)f(the)177 2539 y(macro)d(w)o(ould)h(b)q(e)g (pre\014xed)i(b)o(y)e(\\)p Fi(--)p Fn(".)16 b(The)c(result)g(could)f(b)q(e)h (passed)g(b)o(y)f(the)h(compiler)d(whic)o(h)j(w)o(ould)e(activ)n(ate)177 2589 y(all)j(but)h(the)g(\014rst)h(statemen)o(t)f(in)f(the)i(expansion)f(of)f (macro)g Fi(@)p Fn(.)177 2665 y(The)h(next)h(example)d(demonstrates)j (ho)o(w)e(text)i(inden)o(tation)e(could)h(b)q(e)g(misused.)177 2785 y Fi(--Misuse)20 b(of)i(text)f(indentation:)177 2835 y(a++;)g(@) 1042 2940 y Fn(13)p eop %%Page: 14 15 14 14 bop 177 42 a Fn(Here)15 b(the)g(user)g(has)f(placed)g(the)h(call)e(to)h Fi(@)e Fn(after)i(the)h(incremen)o(ting)e(of)g(v)n(ariable)g Fi(a)p Fn(.)18 b(The)c(result)h(is)177 91 y(that)e(there)h(is)e(a)h(go)q(o)q (d)f(c)o(hance)i(that)e(the)i(\\)p Fi(a++;)p Fn(")d(prep)q(ended)k(to)d(eac)o (h)i(line)e(of)g(the)h(expansion)g(of)f Fi(@)177 141 y Fn(will)h(b)q(e)h(passed)h(b)o(y)f(the)g(compiler)f(and)g(will)g(cause)i Fi(a)e Fn(to)h(b)q(e)h(o)o(v)o(erincremen)o(ted.)177 216 y(These)h(examples)e (are)h(not)g(to)f(b)q(e)i(laughed)e(at.)20 b(It)15 b(is)g(p)q(ossible)f(that) h(F)m(unnelW)m(eb)f(will)g(b)q(e)h(used)h(widely)m(,)d(and)177 266 y(the)i(problems)e(ab)q(o)o(v)o(e)h(ma)o(y)f(cause)i(problems)e(in)h (critical)g(systems.)20 b(The)14 b(examples)g(ab)q(o)o(v)o(e)g(are)h (particularly)177 316 y(scary)h(b)q(ecause)g(they)g(are)f(re\015exiv)o(e.)22 b(One)15 b(cannot)g(simply)e(pin)h(the)i(blame)d(on)i(one)g(particular)f (inden)o(tation)177 366 y(form.)j(A)d(little)g(though)o(t)f(rev)o(eals)i (that)f(the)h(greatest)g(danger)g(lies)f(in)f Fh(c)n(onfusion)i Fn(in)f(the)g(user's)i(mind.)g(If)e(the)177 416 y(user)h(is)f(confused)h(b)q (et)o(w)o(een)g(text)f(or)g(blank)f(inden)o(ting,)g(problems)g(will)g(arise.) 177 491 y(There)20 b(seem)e(to)h(b)q(e)g(t)o(w)o(o)f(w)o(a)o(ys)g(to)g(solv)o (e)h(the)g(problem.)31 b(The)19 b(\014rst)g(is)f(to)h(ban)f(all)f(macro)h (calls)g(that)g(are)177 541 y(preceded)f(b)o(y)e(non-blank)f(text.)23 b(This)15 b(is)g(not)g(a)f(go)q(o)q(d)h(option)f(b)q(ecause)j(there)g(are)e (so)g(man)o(y)e(cases)k(where)f(it)177 591 y(is)g(desirable)g(to)f(expand)h (more)f(than)g(one)h(single)g(line)f(macros)g(on)g(the)h(same)f(line.)23 b(A)16 b(second)g(option)f(is)h(to)177 640 y(eliminate)e(one)i(of)g(the)g(t)o (w)o(o)g(forms)e(so)i(as)g(to)g(reduce)i(the)e(p)q(oten)o(tial)g(for)f(am)o (biguit)o(y)e(in)j(the)g(user's)h(mind.)23 b(I)177 690 y(c)o(ho)q(ose)17 b(the)g(latter)f(option.)24 b(Of)16 b(the)g(t)o(w)o(o)g(forms,)f(the)h(clear) h(c)o(hoice)f(for)g(elimination)d(is)j(text)h(inden)o(ting)e(for)177 740 y(the)g(follo)o(wing)c(reasons:)228 858 y(1.)20 b(It)14 b(actually)f(in)o(tro)q(duces)i(extra)f(text)h(whic)o(h)e(giv)o(es)h(it)g(an) f(a)h(priori)f(p)q(oten)o(tial)g(for)h(problems.)228 942 y(2.)20 b(It)14 b(is)g(harder)g(to)g(implemen)o(t)d(and)j(w)o(ould)f(slo)o(w)g(do)o (wn)h(T)m(angle.)228 1026 y(3.)20 b(It)14 b(w)o(ould)f(not)h(b)q(e)g (compatible)e(with)i(F)m(unnelW)m(eb)f(V1)h(whic)o(h)g(uses)h(blank)e(inden)o (tation.)177 1144 y(The)18 b(only)f(other)h(decision)g(is)f(the)i(lev)o(el)e (of)g(gran)o(ularit)o(y)f(of)h(c)o(hoice)h(b)q(et)o(w)o(een)h(the)f (remaining)e(options:)25 b(no)177 1194 y(inden)o(tation)11 b(and)h(blank)f(inden)o(tation.)17 b(F)m(unnelW)m(eb)11 b(V1)h(allo)o(w)o(ed) e(this)i(c)o(hoice)g(to)g(b)q(e)g(made)f(in)g(the)i(command)177 1243 y(line.)27 b(In)17 b(retrosp)q(ect,)j(this)d(w)o(as)g(bad)g(design)g(b)q (ecause)i(the)f(user)g(migh)o(t)d(un)o(wittingly)g(co)q(de)j(certain)g(macro) 177 1293 y(calls)12 b(relying)h(on)f(one)h(or)g(the)g(other)h(mo)q(de.)i(A)d (b)q(etter)h(system)f(is)f(to)h(allo)o(w)e(the)i(user)h(to)f(sp)q(ecify)g (whic)o(h)g(mo)q(de)177 1343 y(in)h(the)g(input)g(\014le)g(itself.)j(This)d (has)g(b)q(een)h(done)f(in)g(F)m(unnelW)m(eb)f(V3.)177 1418 y(Again,)20 b(to)g(a)o(v)o(oid)f(confusion,)i(it)f(seems)g(sensible)h(to)f (allo)o(w)e(the)j(user)g(only)e(one)h(inden)o(tation)g(mo)q(de)f(p)q(er)177 1468 y(F)m(unnelW)m(eb)14 b(input)h(\014le.)20 b(In)15 b(most)e(cases,)j(the) g(user)f(will)f(b)q(e)h(happ)o(y)f(with)h(blank)f(inden)o(tation)g(\(the)h (default\))177 1518 y(and)f(there)h(will)d(b)q(e)j(no)f(need)h(for)e(c)o (hange)h(an)o(yw)o(a)o(y)m(.)177 1593 y Fk(Decision:)j Fn(Implemen)o(t)12 b(only)i(\\no)g(inden)o(tation")f(and)h(\\blank)g(inden)o(tation".)k(Mak)o(e) c(the)h(c)o(hoice)g(of)f(inden-)177 1643 y(tation)j(a)g(static)h(attribute)g (of)f(a)g(particular)h(F)m(unnelW)m(eb)f(run)g(that)h(is)f(sp)q(eci\014ed)i (in)e(the)i(input)e(\014le.)29 b(This)177 1693 y(solution)13 b(is)h(the)h(same)e(as)h(F)m(unnelW)m(eb)f(V1)h(except)h(that)f(the)h(c)o (hoice)f(has)g(b)q(een)h(mo)o(v)o(ed)e(from)f(the)j(command)177 1743 y(line)f(to)f(the)i(input)e(\014le.)177 1907 y Fe(1.3)70 b(Review)20 b(of)k(F)-6 b(unnelW)g(eb)22 b(Syn)n(tax)177 2023 y Fn(One)12 b(of)e(the)i(distressing)g(asp)q(ects)h(of)d(F)m(unnelW)m(eb)h (V1)f(w)o(as)h(its)g(clumsy)f(macro)g(de\014nition)h(and)g(calling)e(syn)o (tax.)177 2073 y(Compared)14 b(to)h(\(sa)o(y\))g(the)g(C)g(prepro)q(cessor,)i (F)m(unnelW)m(eb's)d(macro)g(call)g(syn)o(tax)h(is)g(lik)o(e)f(a)g(freigh)o (t)h(train)g(in)f(a)177 2123 y(c)o(hina)i(sho)o(w.)24 b(During)15 b(the)h(F)m(unnelW)m(eb)f(redesign,)i(a)f(complete)f(review)h(of)g(this)f (syn)o(tax)h(to)q(ok)g(place)g(to)g(try)177 2173 y(to)f(neaten)h(it)f(up.)22 b(Surprisingly)m(,)14 b(the)i(V1)f(syn)o(tax)g(surviv)o(ed)h(unscathed)g (with)f(the)h(exception)g(that)f(\\)p Fi(==)p Fn(")f(in)177 2223 y(macro)i(de\014nitions)i(w)o(as)f(made)g(optional.)27 b(The)18 b(surviv)n(al)f(of)g(this)g(clumsy)g(syn)o(tax)g(w)o(as)h(a)f(pro)q (duct)h(of)f(the)177 2272 y(design)d(goal)f(of)g(making)f(ev)o(erything)i (simple,)e(explicit,)h(and)g(not)h(sub)r(ject)i(to)d(subtle)i(errors.)177 2415 y Fa(1.3.1)55 b(Review)18 b(of)g(Macro)h(De\014nition)f(Syn)n(tax)177 2518 y Fn(F)m(unnelW)m(eb)i(V1)h(used)g(a)f(macro)g(de\014nition)g(syn)o(tax) h(that)f(resulted)i(in)e(macro)g(de\014nitions)g(suc)o(h)h(as)g(the)177 2568 y(follo)o(wing.)177 2685 y Fi(@$@==@{@-)177 2735 y(Open)g(the)g(door)177 2785 y(Say)g(out)177 2835 y(Close)g(the)g (door@})1042 2940 y Fn(14)p eop %%Page: 15 16 15 15 bop 177 42 a Fn(This)16 b(is)f(messy)m(,)g(but)h(I)g(couldn't)f(think)h (of)f(an)o(ything)g(b)q(etter)i(at)e(the)i(time.)22 b(The)16 b Fi(@$)f Fn(is)h(necessary)i(to)d(cue)i(a)177 91 y(de\014nition.)k(Without) 14 b(it,)h(the)g(de\014nition)g(migh)o(t)e(someho)o(w)g(b)q(e)j(mistak)o(en)e (for)g(an)h(in)o(v)o(o)q(cation.)20 b(The)15 b Fi(@<)g Fn(and)177 141 y Fi(@>)e Fn(delimit)d(the)k(name.)j(The)c Fi(@)p Fm(f)g Fn(and)f Fi(@)p Fm(g)h Fn(delimit)e(the)i(text.)19 b(The)13 b Fi(@-)g Fn(is)f(a)h(pro)q(duct)h(of)e(the)i(rule)f(\\exactly)g(the)177 191 y(text)i(b)q(et)o(w)o(een)g(the)f Fi(@)p Fm(f)g Fn(and)g Fi(@)p Fm(g)p Fn(".)177 260 y(The)g(only)f(real)h(target)g(is)g(the)g(\\)p Fi(+=)p Fn(")f(and)g(\\)p Fi(==)p Fn(")g(whic)o(h)h(really)f(break)h(all)f (the)h(rules)g(and)g(should)f(b)q(e)i(c)o(hanged.)177 310 y(Unfortunately)f (I)h(couldn't)e(think)h(of)g(an)o(ything)f(to)h(c)o(hange)h(them)e(to.)19 b(If)14 b(there)i(w)o(as)e(no)g Fi(+=)g Fn(mec)o(hanism,)e(w)o(e)177 360 y(could)i(use:)177 458 y Fi(@$@@{)177 507 y(Open)g(the)g(door)177 557 y(Say)g(out)177 607 y(Close)g(the)g(door@}) 177 705 y Fn(In)14 b(fact,)f(eliminating)d Fi(+=)j Fn(is)h(think)n(able)e(b)q (ecause)k(it)d(do)q(es)h(not)g(app)q(ear)g(in)f(man)o(y)e(of)i(m)o(y)f (existing)h(F)m(unnelW)m(eb)177 754 y(source)i(\014les.)k(This)14 b(indicates)g(at)f(least)i(that)e(it)h(w)o(as)g(not)g(needed)h(m)o(uc)o(h)e (b)o(y)g(m)o(yself.)177 824 y(A)h(minim)o(ali)o(st)e(construct)j(could)f(b)q (e)177 921 y Fi(@)177 971 y(Open)g(the)g(door)177 1021 y(Say)g(out)177 1071 y(Close)g(the)g(door@})177 1168 y Fn(but)14 b(this)g(is)g(to)q(o)g(dangerous)g(for)g(m)o(y)e(tastes.)177 1238 y Fk(Decision:)j Fn(F)m(or)c(compatibili)o(t)o(y)d(reasons,)k(retain)g (the)f(old)g Fi(+=)f Fn(and)h Fi(==)g Fn(constructs,)i(but)e(mak)o(e)e(them)i (optional.)177 1287 y(The)j(new)h(syn)o(tax)f(for)f(de\014ning)h(macros)f (is:)177 1385 y Fi(@$@@{)177 1435 y(Open)g(the)g(door)177 1485 y(Say)g(out)177 1534 y(Close)g(the)g(door@})177 1632 y Fn(Next)12 b(w)o(e)f(turn)h(to)f(parameterized)g(macro)f (de\014nitions.)17 b(A)11 b(con)o(v)o(en)o(tional)f(F)m(unnelW)m(eb)h (parameterized)g(macro)177 1682 y(de\014nition)j(lo)q(oks)f(lik)o(e)g(this:) 177 1779 y Fi(@$@@\(@3@\)==@{@-)177 1829 y(Open)g(the)g(door)177 1879 y(Say)g(out)177 1929 y(Close)g(the)g (door@})177 2026 y Fn(whic)o(h)14 b(is)g(a)f(bit)h(messy)m(.)j(The)d(natural) g(alternativ)o(e)f(is)h(ev)o(en)h(w)o(orse:)177 2124 y Fi(@$@@\(@1@,@2@,@3)o(@\)==@)o({@-)177 2174 y(Open)g(the)g(door) 177 2224 y(Say)g(out)177 2273 y(Close)g(the)g(door@})177 2371 y Fn(Th)o(us,)12 b(just)g(sp)q(ecifying)f(the)h(n)o(um)o(b)q(er)f(of)g (parameters)h(seems)g(sensible.)18 b(Ho)o(w)o(ev)o(er,)12 b(p)q(erhaps)g(the) g(syn)o(tax)g(could)177 2421 y(b)q(e)j(trimmed)c(to)177 2518 y Fi(@$@@3==@{@-)177 2568 y(Open)g(the)g(door)177 2618 y(Say)g(out)177 2668 y(Close)g(the)g(door@})177 2765 y Fn(I)14 b(decided)h(to)f(reject)h(this)f(in)f(fa)o(v)o(our)g(of)h(the)g(old)f (syn)o(tax.)177 2835 y Fk(Decision:)j Fn(Retain)e(the)g(old)f(syn)o(tax)h(of) f Fj(:)7 b(:)g(:)o Fi(@\(@3@\))p Fj(:)g(:)g(:)1042 2940 y Fn(15)p eop %%Page: 16 17 16 16 bop 177 42 a Fa(1.3.2)55 b(Review)18 b(of)g(Macro)h(Call)g(Syn)n(tax) 177 147 y Fn(Here)c(are)g(some)e(ideas)h(for)f(alternativ)o(es)h(to)g(the)g (F)m(unnelW)m(eb)g(V1)f(macro)g(call)g(syn)o(tax.)177 270 y Fi(Open)21 b(the)g(door)177 320 y(@)195 b(@!)21 b(FunnelWeb~V1)f(style.)177 370 y(Close)h(the)g(door)177 470 y(Open)g(the)g(door)177 520 y(@@)177 569 y(Close)g(the)g(door)177 669 y(Open)g(the)g(door)177 719 y(@"Say)g(out@")177 769 y(Close)g(the)g(door) 177 868 y(Open)g(the)g(door)177 918 y(@\(Say)g(out@\))177 968 y(Close)g(the)g(door)177 1068 y(Open)g(the)g(door)177 1117 y(@)177 1167 y(Close)g(the)g(door)177 1291 y Fk(Decision:)29 b Fn(Con)o(tin)o(ue)20 b(with)g(the)g(old)g(notation.)36 b(It)20 b(ma)o(y)e(not)i(b)q(e)h(neat,)h(but)e(at)g(least)h(it)e(is)h(clear)h(and)177 1340 y(consisten)o(t.)j(The)16 b(main)d(temptation)h(is)h(the)h(format)e Fi(@@)14 b Fn(whic)o(h)h(lo)q(oks)g(rather)i(go)q(o)q(d.)22 b(Ho)o(w)o(ev)o(er,)177 1390 y(it)14 b(breaks)g(the)h(sp)q(ecial)f(sequence)i (rational)d(and)g(hence)j(is)d(to)q(o)h(confusing.)177 1540 y Fa(1.3.3)55 b(Review)18 b(of)g(P)n(arameterized)f(Macro)i(Call)f(Syn)n(tax) 177 1646 y Fn(F)m(unnelW)m(eb)c(V1)f(pro)o(vided)h(a)g(messy)f(parameterized) h(macro)f(call)g(syn)o(tax:)177 1769 y Fi(@@\(@"firstpar)o (am@")d(@,)k(@"Secondparam@")c(@,)k(@"thirdparam@")d(@\))177 1893 y Fn(This)d(syn)o(tax)g(can)g(b)q(e)g(cleaned)h(up)f(considerably)g(b)o (y)g(making)d(the)k Fi(@")e Fn(sym)o(b)q(ols)g(optional.)22 b(This)16 b(results)h(in)177 1942 y(calls)d(suc)o(h)g(as)g(the)h(follo)o (wing:)177 2066 y Fi(@@\(firstparam)o(@,Sec)o(ondpa)o(ram@,)o (thir)o(dpara)o(m@\))177 2189 y Fn(As)c(the)g(\014rst)g(form)e(allo)o(ws)g (the)i(alignmen)o(t)d(of)h(complicated)h(parameters)g(b)o(y)g(allo)o(wing)e (white)j(space)g(to)f(b)q(e)177 2239 y(inserted)h(outside)f(the)g Fi(@")p Fn(,)f(and)h(the)g(second)h(form)d(is)h(cleaner,)i(b)q(oth)f(are)g (retained)g(simply)e(b)o(y)h(making)e(the)177 2289 y(quotes)i(optional.)177 2366 y Fk(Decision:)h Fn(Mak)o(e)e(the)h(double)e(quotes)i(optional.)177 2538 y Fe(1.4)70 b(Do)r(cumen)n(t)21 b(Structuring)177 2657 y Fn(Exp)q(erience)e(with)e(F)m(unnelW)m(eb)f(V1,)h(whic)o(h)g(pro)o(vided)g (only)f(t)o(w)o(o)h(lev)o(els)g(of)f(headings)h(\(ma)r(jor)f(and)g(minor\)) 177 2707 y(pro)o(v)o(ed)10 b(that)h(there)g(w)o(as)f(a)g(strong)g(need)h(for) f(fully)f(hierarc)o(hical)h(m)o(ultiple-lev)o(el)d(headings.)17 b(The)10 b(only)g(question)177 2757 y(w)o(as)k(ho)o(w)f(it)h(should)g(b)q(e)g (done.)177 2835 y(Here)h(are)g(some)e(ideas)h(that)g(w)o(ere)g(considered.) 1042 2940 y(16)p eop %%Page: 17 18 17 17 bop 177 42 a Fi(@*@)177 91 y(@**@)177 141 y(@***@)177 241 y(@*@)177 291 y(@*@*@)177 340 y(@*@*@*@)177 440 y(@s@)177 490 y(@ss@)177 540 y(@sss@) 177 639 y(@s@)177 689 y(@s@s@)177 739 y(@s@s@s@)177 839 y(@S@)177 888 y(@SS@)177 938 y(@SSS@) 177 1038 y(@S@)177 1088 y(@S@S@)177 1137 y(@S@S@S@)177 1237 y(@A@)238 b(--)22 b(The)f(syntax)f(finally)h(chosen.)177 1287 y(@B@)177 1337 y(@C@)177 1436 y(@A)h(Main)f(Program)177 1486 y(@B)h(Read)f(the)g(Message)177 1536 y(@C)h(Encrypt)e(the)h(Buffer)177 1636 y(@*A)g(Main)g(Program)177 1685 y(@*B)g(Read)g(the)g(Message)177 1735 y(@*C)g(Encrypt)g(the)g(Buffer)177 1835 y(@1@)177 1885 y(@2@)177 1934 y(@3@)177 1984 y(\(using)g(@A..@I@)f(as)h (macro)g(parameters)f(or)h(overload)f(@1..@9\))177 2084 y(@*@1@)177 2134 y(@*@2@)177 2183 y(@*@3@)177 2233 y(\(using)g(@A..@I@)f(as)h(macro)g (parameters)f(or)h(overload)f(@1..@9\))177 2351 y Fn(Cho)q(osing)f(b)q(et)o (w)o(een)i(these)g(alternativ)o(es)e(w)o(as)h(not)f(easy)m(.)35 b(The)20 b(follo)o(wing)d(though)o(ts)j(con)o(tributed)g(to)f(the)177 2400 y(decision.)239 2518 y Fm(\017)i Fn(Syn)o(taxes)14 b(that)g(require)h (visual)e(coun)o(ting)g(are)i(probably)e(not)h(a)f(go)q(o)q(d)h(idea.)239 2601 y Fm(\017)21 b Fn(Syn)o(taxes)14 b(that)f(do)g(not)h(delimit)d(the)j (heading)f(name)f(someho)o(w)h(are)g(lik)o(ely)f(to)i(cause)g(problems)f (where)281 2651 y(heading)18 b(names)f(are)h(omitted.)30 b(Users)19 b(will)e(b)q(e)i(tempted)f(to)g(start)g(paragraphs)h(after)f(the)h(start)f (of)281 2701 y(heading)c(sym)o(b)q(ol)f(and)h(the)h(result)g(is)f(that)h(the) g(\014rst)g(line)f(of)g(the)h(paragraph)f(will)f(b)q(e)i(suc)o(k)o(ed)g(in)o (to)f(the)281 2751 y(heading.)239 2835 y Fm(\017)21 b Fn(Ov)o(erloading)13 b(the)h Fi(@1)p Fn(,)f Fj(:)7 b(:)g(:)o Fn(,)13 b Fi(@9)h Fn(sequences)i(is)e (undesirable.)1042 2940 y(17)p eop %%Page: 18 19 18 18 bop 177 42 a Fk(Decision:)21 b Fn(Use)c Fi(@A)p Fj(:)7 b(:)g(:)n Fi(@E)16 b Fn(with)g(optional)f(follo)o(wing)e(macro)i(name)g(syn)o (tax)h(for)g(the)h(section)g(name.)24 b(Note:)177 91 y(W)m(e)15 b(stop)g(at)g Fi(@E)f Fn(b)q(ecause)j(\014v)o(e)e(lev)o(els)g(is)g(probably)f (su\016cien)o(t,)i(and)e(w)o(e)i(ma)o(y)d(wish)h(later)i(to)e(use)i Fi(@F)f Fn(for)f Fk(F)p Fn(ile)177 141 y(\(to)g(augmen)o(t)f(or)g(replace)i Fi(@O)p Fn(\).)177 321 y Fe(1.5)70 b(Discussion)21 b(of)j(Some)e(Miscell)o (aneous)f(Issues)177 445 y Fk(Commen)o(t)d(duplication)o(:)k Fn(If)17 b(the)h(F)m(unnelW)m(eb)f(user)h(inserts)g(commen)o(ts)d(in)o(to)i (the)h(target)f(co)q(de)h(\(in)f(the)177 495 y Fi(.fw)12 b Fn(\014le\))g(as)g(w)o(ell)f(as)h(in)o(to)g(the)g(do)q(cumen)o(tation)f (\(free)i(text\))g(part)f(of)g(the)g Fi(.fw)g Fn(\014le,)g(then)h(it)e(is)h (p)q(ossible)g(for)g(the)177 544 y(situation)h(to)h(get)g(a)g(bit)f(silly)m (.)k Fk(Decision:)f Fn(This)e(is)g(a)f(problem)g(for)g(the)i(programmer,)c (not)j(for)f(F)m(unnelW)m(eb.)177 625 y Fk(Out-of-date)k(do)q(cumen)o(tation) o(:)22 b Fn(Sometimes)14 b(it)j(is)f(all)g(to)q(o)h(easy)g(for)f(the)i (programmer)c(to)j(mo)q(dify)d(the)177 674 y(co)q(de)k(without)e(up)q(dating) g(the)h(surrounding)g(do)q(cumen)o(tation.)24 b Fk(Decision:)e Fn(This)16 b(is)h(a)f(serious)h(and)f(ma)r(jor)177 724 y(problem.)27 b(In)17 b(an)g(automated)f(en)o(vironmen)o(t,)g(it)h(ma)o(y)e(b)q(e)j(p)q (ossible)f(to)g(create)i(a)e(system)g(of)f(dep)q(endencies)177 774 y(b)q(et)o(w)o(een)h(scraps)g(of)d(co)q(de)i(and)g(scraps)g(of)f(do)q (cumen)o(tation.)21 b(Ho)o(w)o(ev)o(er,)16 b(it)f(is)g(hard)h(to)f(see)h(ho)o (w)f(a)g(to)q(ol)g(suc)o(h)177 824 y(as)f(F)m(unnelW)m(eb)f(could)h(pro)o (vide)g(supp)q(ort)h(for)e(prev)o(en)o(tion)h(of)g(this)g(sort)g(of)f(error.) 177 904 y Fk(Meta-macro-lev)o(el)j(parameterization:)k Fn(Sometimes,)14 b(when)j(using)f(F)m(unnelW)m(eb,)g(the)g(facilit)o(y)f(to)h(use)177 954 y(one)11 b(macro)f(to)h(construct)i(the)e(name)f(of)h(another)g(has)g(b)q (een)h(needed.)19 b Fk(Decision:)c Fn(Allo)o(wing)9 b(macro)h(names)g(to)177 1004 y(b)q(e)k(constructed)h(w)o(ould)e(lose)g(the)h(simple)d(nature)j(of)f (the)h(prepro)q(cessor)h(and)e(so)h(this)f(suggestion)g(is)g(rejected.)177 1084 y Fk(Clumsy)j(notation:)h Fn(The)e Fi(@)f Fn(notation)f(can)i(b)q(e)g (clumsy)m(.)j Fk(Decision:)f Fn(This)e(is)f(necessary)i(to)f(main)o(tain)c (the)177 1134 y(simplicit)o(y)h(of)h(the)h(translation.)177 1314 y Fe(1.6)70 b(Automated)22 b(Regression)g(T)-6 b(esting)177 1438 y Fn(Automated)13 b(regression)i(testing)f(is)g(extremely)g(imp)q(ortan) o(t)e(for)h(t)o(w)o(o)h(reasons:)228 1568 y(1.)20 b(It)14 b(pro)o(vides)g (con\014dence)i(that)e(c)o(hanges)g(made)f(to)h(the)g(program)e(ha)o(v)o(e)i (not)g(in)o(tro)q(duced)h(bugs.)228 1662 y(2.)20 b(It)11 b(allo)o(ws)e(p)q (ortabilit)o(y)g(problems)h(to)g(b)q(e)i(pinp)q(oin)o(ted)e(when)h(the)g (program)e(is)i(mo)o(v)o(ed)e(to)h(a)g(new)i(mac)o(hine.)177 1792 y(The)j(simplest)e(w)o(a)o(y)g(to)h(set)h(up)g(automated)d(regression)k (testing)e(is)g(to)g(construct)i(a)e(suite)h(of)e(test)i(cases)h(\(and)177 1842 y(their)e(solutions\))e(and)h(then)h(write)f(a)g(script)g(in)g(the)g (target)h(mac)o(hine's)d(command)g(language)h(to)g(run)i(through)177 1892 y(the)k(suite.)29 b(Unfortunately)m(,)17 b(there)i(is)e(no)g(command)d (language)j(that)g(is)g(shared)h(among)e(the)i(mac)o(hines)e(to)177 1941 y(whic)o(h)f(F)m(unnelW)m(eb)f(m)o(ust)g(b)q(e)h(p)q(orted.)22 b(These)16 b(mac)o(hines)e(are)i(at)e(least:)20 b(Macin)o(tosh,)15 b(IBM-PC,)g(Sun,)g(VMS)177 1991 y(V)m(ax.)177 2072 y(One)h(option)e(is)h (simply)e(to)i(rewrite)h(the)g(script)g(in)e(eac)o(h)i(mac)o(hine's)d (particular)i(command)d(language.)21 b(This)177 2121 y(w)o(ould)15 b(b)q(e)i(a)e(feasible)h(option)f(w)o(ere)i(it)e(not)h(for)f(the)i(fact)f (that)g(the)g(Macin)o(tosh)g(\(the)g(mac)o(hine)f(up)q(on)h(whic)o(h)177 2171 y(F)m(unnelW)m(eb)e(w)o(as)f(dev)o(elop)q(ed\))i(do)q(es)g(not)e(ha)o(v) o(e)h(a)g(command)d(language!)177 2252 y(After)i(some)f(though)o(t,)g(I)g (decided)i(that)e(the)h(b)q(est)h(solution)e(to)g(the)h(problem)e(w)o(as)i (to)f(create)i(a)e(command)e(lan-)177 2301 y(guage)i Fh(within)h(F)m (unnelWeb)p Fn(.)18 b(F)m(unnelW)m(eb)12 b(could)g(then)h(b)q(e)f(in)o(v)o (ok)o(ed)g(in)f(t)o(w)o(o)h(mo)q(des,)f(one-shot)i(command)c(line)177 2351 y(or)15 b(in)o(teractiv)o(e/script.)20 b(This)15 b(approac)o(h)f(had)g (the)h(b)q(ene\014t)h(of)e(pro)o(viding)f(total)h(con)o(trol)g(o)o(v)o(er)g (the)i(command)177 2401 y(language)d(and)h(its)g(complete)f(p)q(ortabilit)o (y)m(.)177 2481 y(The)h(result)h(is)f(describ)q(ed)i(in)d(the)h Fh(F)m(unnelWeb)j(User's)d(Manual)p Fn(.)177 2661 y Fe(1.7)70 b(Command)22 b(Line)g(In)n(terface)177 2785 y Fn(F)m(unnelW)m(eb)12 b(V1)g(w)o(as)g(implemen)o(ted)e(in)i(Ada)g(and)g(runs)h(on)f(a)g(VMS)g(V)-5 b(AX.)13 b(As)g(suc)o(h)g(it)e(has)i(a)f(full)f(VMS)h(DCL)177 2835 y(command)f(line)j(in)o(terface.)k(Here)d(is)f(the)h(\\)p Fi(.CLD)p Fn(")d(\014le)i(for)g(the)g(DCL)g(command)d(line)i(in)o(terface.) 1042 2940 y(18)p eop %%Page: 19 20 19 19 bop 177 42 a Fi(!)22 b(FUNNELWEB)e(Command)g(Definition)177 91 y(!)i(================)o(=====)o(=====)o(==)177 141 y(!)g(Ross)f (Williams.)f(28)h(April)g(1987.)177 241 y(module)g(command_table)243 291 y(define)f(verb)h(dummy_command)243 340 y(parameter)e(p1)240 b(,)21 b(label=input_file)62 b(,value\(required,type)o(=$fi)o(le\))243 390 y(qualifier)19 b(include_files,)g(label=include_files)o(,valu)o(e\(typ)o (e=$fi)o(le\))g(,default)243 440 y(qualifier)g(output_files)h(,)h (label=output_files)d(,value\(type=$file\))h(,default)243 490 y(qualifier)g(delete)152 b(,)21 b(label=delete)565 b(,default)243 540 y(qualifier)19 b(tex_file)108 b(,)21 b(label=tex_file)106 b(,value\(type=$file\))19 b(,default)243 589 y(qualifier)g(listing_file)h(,)h (label=listing_file)d(,value\(type=$file\))h(,default)243 639 y(qualifier)g(brief)174 b(,)21 b(label=brief,value\(t)o(ype=$)o(numbe)o (r,def)o(ault=)o(5\),d)o(efaul)o(t)243 689 y(qualifier)e(screen)152 b(,)21 b(label=screen)150 b(,value\(type=$number,)o(defa)o(ult=0)o(\))243 739 y(qualifier)19 b(trace)174 b(,)21 b(label=trace)243 789 y(qualifier)e(file_spec)86 b(,)21 b(label=file_spec)243 839 y(qualifier)e(compare)177 981 y Fn(As)d(p)q(ortabilit)o(y)f(w)o(as)g(a)h(k)o (ey)g(goal)e(of)h(F)m(unnelW)m(eb)g(V3,)h(it)f(w)o(as)h(ob)o(vious)f(that)h (the)g(command)d(line)i(in)o(terface)177 1031 y(w)o(ould)e(ha)o(v)o(e)h(to)g (b)q(e)g(redesigned.)20 b(The)14 b(design)g(goals)f(for)h(the)g(new)g (command)d(line)j(in)o(terface)g(w)o(ere:)228 1174 y(1.)20 b(The)15 b(in)o(terface)g(should)f(not)g Fh(dep)n(end)i Fn(on)e(case.)21 b(Ho)o(w)o(ev)o(er,)14 b(it)g(m)o(ust)g(allo)o(w)e(case-sensitiv)o(e)k (\014lenames)e(to)281 1224 y(b)q(e)g(transmitted)g(on)f(systems)i(that)e(ha)o (v)o(e)h(case-sensitiv)o(e)i(\014lenames.)228 1328 y(2.)k(Eac)o(h)13 b(option)f(m)o(ust)g(ha)o(v)o(e)h(a)f(symmetric)f(p)q(ositiv)o(e)i(and)g (negativ)o(e)f(form.)k(F)m(or)d(example,)e(it)h(is)h(confusing)281 1378 y(for)g Fi(-X)h Fn(to)g(turn)g(on)g(a)f(feature)i(and)f Fi(-Q)f Fn(to)h(turn)g(it)g(o\013.)228 1482 y(3.)20 b(The)14 b(in)o(terface)h(m)o(ust)e(b)q(e)h(extensible)h(to)f(allo)o(w)e(inclusion)h (of)g(more)g(features)i(at)f(a)g(later)g(date.)228 1586 y(4.)20 b(Options)14 b(should)g(b)q(e)g(consisten)o(t)h(and)f(memorable.)177 1729 y(The)g(result)h(is)f(describ)q(ed)i(in)d(the)h Fh(F)m(unnelWeb)j (User's)d(Manual)p Fn(.)177 1925 y Fe(1.8)70 b(File)21 b(Name)h(Managemen)n (t)177 2056 y Fn(File)e(names)f(presen)o(t)j(a)e(host)g(of)g(problems)f(for)h (a)f(program)g(lik)o(e)g(F)m(unnelW)m(eb.)36 b(First,)22 b(F)m(unnelW)m(eb)e (can)177 2106 y(generate)c(so)f(man)o(y)e(di\013eren)o(t)j(kinds)f(of)f (\014les)h(that)g(con)o(v)o(en)o(tions)g(m)o(ust)f(b)q(e)i(adopted)f(to)g (prev)o(en)o(t)g(them)g(from)177 2156 y(b)q(ecoming)9 b(unmanageable.)15 b(Second,)c(the)f(constrain)o(ts)g(on)g(\014le)g(names,)f(and)h(ev)o(en)g (the)h(structure)h(of)d(\014le)h(names)177 2205 y(themselv)o(es)16 b(v)n(aries)f(considerably)h(from)e(mac)o(hine)g(to)h(mac)o(hine.)22 b(These)17 b(t)o(w)o(o)e(problems)f(ha)o(v)o(e)i(com)o(bined)e(to)177 2255 y(result)g(in)e(the)i(sophisticated)g(and)e(rather)i(complicated)e(w)o (a)o(y)g(in)h(whic)o(h)g(F)m(unnelW)m(eb)f(V3)h(handles)g(\014lenames.)177 2340 y(T)m(o)g(summarize,)f(the)i(three)h(problems)e(are:)228 2483 y(1.)20 b(What)13 b(\014lename)g(extensions)i(should)f(b)q(e)g(c)o (hosen)h(for)f(v)n(arious)f(kinds)h(of)f(\014le?)228 2588 y(2.)20 b(What)13 b(\014lename)g(inheritance)i(should)e(tak)o(e)h(place?)228 2692 y(3.)20 b(Ho)o(w)13 b(should)h(F)m(unnelW)m(eb)g(cop)q(e)g(with)g(the)g (v)n(ariations)f(in)g(\014lename)g(structure)j(b)q(et)o(w)o(een)f(mac)o (hines?)177 2835 y(The)f(follo)o(wing)e(three)j(sections)g(address)g(these)g (questions.)1042 2940 y(19)p eop %%Page: 20 21 20 20 bop 177 42 a Fa(1.8.1)55 b(Filename)17 b(Extensions)177 147 y Fn(F)m(unnelW)m(eb)11 b(is)h(capable)f(of)g(reading)h(and)f(writing)g (a)g(v)n(ariet)o(y)g(of)g(di\013eren)o(t)i(kinds)f(of)f(\014les.)17 b(In)12 b(particular,)f(F)m(un-)177 197 y(nelW)m(eb)g(m)o(ust)f(often)h(op)q (erates)h(in)f(an)g(en)o(vironmen)o(t)f(where)i(the)f(same)f(information)f (is)h(stored)i(in)f(man)o(y)e(forms)177 247 y(\(e.g.)16 b(prog.fw,)f(prog.c,) i(pro)q(c.exe\).)26 b(File)16 b(extensions)i(are)e(an)h(essen)o(tial)f(to)q (ol)g(in)g(managing)e(this)i(situation.)177 297 y(The)e(\014lename)f (extensions)i(c)o(hosen)g(for)f(F)m(unnelW)m(eb)f(are:)177 421 y Fi(FunnelWeb)107 b(:)22 b(.fw)177 471 y(Product)151 b(:)22 b(None.)177 521 y(Documentation)d(:)j(.tex)177 570 y(Listing)151 b(:)22 b(.lis)177 620 y(Journal)151 b(:)22 b(.jrn)177 744 y Fn(Lo)o(w)o(ercase)15 b(will)e(b)q(e)h(used)h(in)e(systems)h(that)g(are)h (case)f(sensitiv)o(e.)177 822 y(Readers)g(who)f(are)h(w)o(ondering)e(ho)o(w)h (F)m(unnelW)m(eb)g(cop)q(es)h(in)f(en)o(vironmen)o(ts)f(suc)o(h)i(as)f(UNIX)h (where)g(there)g(are)177 872 y(no)g(\014le)g(extensions)h(should)e(refer)i (to)f(Section)g(1.8.3.)177 1023 y Fa(1.8.2)55 b(Filename)17 b(Inheritance)177 1129 y Fn(Inheritance)d(in)d(\014lenames)h(refers)i(to)e (ho)o(w)g(input)g(and)g(output)g(\014les)h(inherit)f(parts)h(of)f(their)h (name)e(from)f(other)177 1178 y(\014lenames)j(and)h(their)g(en)o(vironmen)o (t.)j(F)m(or)d(example)e(if)h(the)i(command)243 1302 y Fi(fw)21 b(sloth)g(+J)g(+L)g(+T)177 1426 y Fn(w)o(as)d(issued,)i(y)o(ou)e(w)o(ould)f (exp)q(ect)j(to)e(see)h(output)g(\014les)f Fi(sloth.jrn)p Fn(,)f Fi(sloth.lis)p Fn(,)g(and)h Fi(sloth.tex)p Fn(.)29 b(The)177 1476 y(output)14 b(\014le)h(names)e(ha)o(v)o(e)h(inherited)g(the)h(\\)p Fi(sloth)p Fn(".)i(The)e(follo)o(wing)c(table)j(giv)o(es)g(the)h(hierarc)o(h) o(y)f(devised)h(for)177 1526 y(F)m(unnelW)m(eb.)p 366 1606 1394 2 v 365 1656 2 50 v 436 1656 V 462 1641 a(Script)p 615 1656 V 70 w(Input)p 778 1656 V 64 w(Include)p 961 1656 V 50 w(Journal)p 1147 1656 V 50 w(List)p 1326 1656 V 108 w(Do)q(cumen)o(t)p 1562 1656 V 49 w(Pro)q(duct)p 1759 1656 V 366 1658 1394 2 v 365 1707 2 50 v 391 1692 a(1)p 436 1707 V 615 1707 V 778 1707 V 392 w Fi(@i)p 961 1707 V 1147 1707 V 1326 1707 V 1562 1707 V 739 w(@o)p 1759 1707 V 365 1757 V 391 1742 a Fn(2)p 436 1757 V 50 w Fi(+x)p 615 1757 V 134 w(+f)p 778 1757 V 120 w(+i)p 961 1757 V 138 w(+j)p 1147 1757 V 143 w(+l)p 1326 1757 V 134 w(+t)p 1562 1757 V 192 w(+o)p 1759 1757 V 365 1807 V 391 1792 a Fn(3)p 436 1807 V 50 w(\\)p Fi(.fws)p Fn(")p 615 1807 V 48 w(\\)p Fi(.fw)p Fn(")p 778 1807 V 56 w(\\)p Fi(.fwi)p Fn(")p 961 1807 V 52 w(\\)p Fi(.jrn)p Fn(")p 1147 1807 V 57 w(\\)p Fi(.lis)p Fn(")p 1326 1807 V 48 w(\\)p Fi(.tex)p Fn(")p 1562 1807 V 1759 1807 V 365 1857 V 391 1842 a(4)p 436 1857 V 615 1857 V 778 1857 V 392 w Fi(+f)p 961 1857 V 138 w(+f)p 1147 1857 V 143 w(+f)p 1326 1857 V 134 w(+f)p 1562 1857 V 1759 1857 V 365 1907 V 391 1892 a Fn(5)p 436 1907 V 50 w(DefDir)p 615 1907 V 55 w(Defdir)p 778 1907 V 50 w(Defdir)p 961 1907 V 68 w(Defdir)p 1147 1907 V 73 w(Defdir)p 1326 1907 V 64 w(Defdir)p 1562 1907 V 122 w(Defdir)p 1759 1907 V 366 1908 1394 2 v 177 2015 a(The)f(follo)o(wing)e(notes)i(explain)g(the)g(table.)228 2139 y(1.)20 b(This)14 b(sc)o(heme)g(is)g(similar)d(to)j(that)g(used)g(in)g (F)m(unnelW)m(eb)f(V1.)228 2229 y(2.)20 b(The)14 b(journal,)f(list,)f(and)i (do)q(cumen)o(tation)e(\014les)j(all)d(fall)g(in)i(the)g(same)f(pattern)h (and)g(can)g(b)q(e)g(considered)281 2278 y(as)g(a)g(single)f(case.)228 2368 y(3.)20 b(Lev)o(el)15 b(1)h(has)f(the)h(highest)g(priorit)o(y)e(b)q (ecause)k(it)d(is)g(a)g(direct)h(sp)q(eci\014cation)g(b)o(y)g(the)g(user)g (in)f(the)h(input)281 2418 y(\014le.)228 2507 y(4.)k(Lev)o(el)14 b(2)f(comes)h(next)g(b)q(ecause)h(this)f(is)g(also)f(a)g(direct)i(sp)q (eci\014cation)f(from)e(the)j(user)g(on)e(the)i(command)281 2557 y(line.)228 2646 y(5.)20 b(Lev)o(el)13 b(3)f(pro)o(vides)h(the)h (default)e(\014le)h(extensions.)19 b(Pro)q(duct)14 b(\014les)f(do)g(not)f (inherit)h(an)g(extension)g(as)g(they)281 2696 y(could)h(b)q(e)g(of)f(an)o(y) h(t)o(yp)q(e.)228 2785 y(6.)20 b(Lev)o(el)12 b(5)h(is)f(built)g(in)o(to)f (most)h(op)q(erating)g(systems')g(\014le)h(sp)q(eci\014cation)g(systems.)k (If)c(I)f(sp)q(ecify)h(\014le)f(\\)p Fi(x.y)p Fn(",)281 2835 y(it)h(is)h(tak)o(en)g(to)g(mean)f(on)g(the)i(default)e(disk)h(in)f(the)i (default)e(directory)m(.)1042 2940 y(20)p eop %%Page: 21 22 21 21 bop 228 42 a Fn(7.)20 b(Lev)o(el)15 b(4)g(lo)q(oks)g(straigh)o(tforw)o (ard,)f(but)i(secretly)h(conceals)f(a)f(di\016cult)f(design)i(decision.)22 b(By)15 b(the)h(time)281 91 y(w)o(e)j(get)g(do)o(wn)f(to)g(this)h(lev)o(el)f (of)g(inheritance,)i(w)o(e)e(kno)o(w)h(for)f(sure)h(that)g(the)g(\014lename)e (has)i(already)281 141 y(pic)o(k)o(ed)c(up)g(a)f(\014le)h(extension.)21 b(So)15 b(all)e(that)i(is)g(left)f(to)h(inherit)g(is)g(the)g(path)g(and)f (the)i(\014lename)d(prop)q(er.)281 191 y(Ob)o(viously)g(w)o(e)h(ha)o(v)o(e)g (to)g(inherit)g(the)h(\014lename)e(prop)q(er)i(\(e.g.)j Fi(sloth)13 b Fn(in)h Fi(sloth.tex)p Fn(\),)d(but)k(should)f(w)o(e)281 241 y(inherit)j(the)g(input)g(\014le)g(path?)26 b(If)17 b(w)o(e)g(do)f (inherit)h(the)g(input)g(\014le)g(path,)g(\014les)g(will)e(b)q(e)j(placed)f (in)f(the)281 291 y(same)f(directory)h(as)g(the)g(input)g(\014le.)23 b(If)16 b(w)o(e)g(don't)f(inherit)h(the)g(input)f(\014le)h(path,)g(\014les)g (will)e(b)q(e)j(placed)281 340 y(in)c(the)h(curren)o(t)h(directory)m(.)j(The) c(c)o(hoice)g(I)f(ha)o(v)o(e)h(made)e(is)h(to)g(send)i(all)d(the)i(logging)e (t)o(yp)q(e)i(\014les)f(in)o(to)g(the)281 390 y(same)h(directory)j(as)e(the)h (input)f(\014le.)23 b(This)15 b(means,)g(for)g(example,)f(that)h Fi(sloth.lis)e Fn(and)j Fi(sloth.tex)281 440 y Fn(will)c(generally)i(land)f (in)g(the)i(same)e(directory)h(as)g Fi(sloth.fw)p Fn(.)j(Ho)o(w)o(ev)o(er,)c (I)h(ha)o(v)o(e)g(decided)h(that)f(output)281 490 y(\014les)e(should)f(b)q(e) h(sen)o(t)g(to)f(the)h(default)f(directory)h(\(if)f(not)g(earlier)h(sp)q (eci\014ed\))h(as)e(this)g(is)h(where)g(the)g(action)281 540 y(is.)19 b(In)c(normal)d(use,)j(the)g(main)d(pro)q(duct)j(of)f(F)m(unnelW)m (eb)g(will)e(b)q(e)j(pro)q(duct)h(\014les)e(and)g(so)h(the)g(user)g(will)281 589 y(exp)q(ect)g(them)e(to)h(app)q(ear)h(in)e(the)h(curren)o(t)i(directory)e (b)o(y)g(default.)177 757 y Fa(1.8.3)55 b(P)n(ortable)19 b(Structure)f(of)h (File)e(Names)177 871 y Fn(Another)g(problem)e(with)g(\014le)h(names)f(is)h (the)h(v)n(ariation)d(of)h(their)i(structure)h(b)q(et)o(w)o(een)f(en)o (vironmen)o(ts.)24 b(Here)177 921 y(are)14 b(examples)f(of)h(some)f(of)g(the) h(formats)f(that)h(prev)n(ail:)243 1059 y Fi(UNIX)64 b(/device/dir1/dir2/)o (name)243 1108 y(VMS)86 b(node::device:[dir1)o(.dir2)o(]name)o(.ext)o(;vn)243 1158 y(MSDOS)42 b(device:\\dir1\\dir2\\)o(name.)o(ext)243 1208 y(MAC)86 b(device:dir1:dir2:n)o(ame)177 1345 y Fn(Isn't)14 b(it)g(amazing)d(that)j(none)g(of)g(these)h(p)q(opular)f(systems)g(use)g(the) h(same)e(format?)177 1429 y(The)j(solution)f(to)g(dealing)g(with)g(these)i (di\013eren)o(t)f(formats)e(is)h(to)h(classify)f(them)g(as)g(non-p)q(ortable) g(and)h(hide)177 1479 y(the)g(functions)f(that)g(manipulate)e(them)h(in)g (the)i(mac)o(hine-sp)q(eci\014c)f(mo)q(dule)e(of)i(F)m(unnelW)m(eb.)20 b(Luc)o(kily)14 b(there)177 1528 y(are)g(not)g(man)o(y)e(suc)o(h)j (functions.)177 1612 y(The)g(main)c(problem)i(is)h(coping)f(with)h(\014le)g (systems)g(that)g(do)g(not)g(explicitly)e(supp)q(ort)j(\014le)f(extensions.) 19 b(With)177 1661 y(so)14 b(man)o(y)e(p)q(ossible)i(input)f(and)g(output)h (\014les,)g(F)m(unnelW)m(eb)f(all)f(but)i(needs)h(suc)o(h)g(extensions.)k (Mac)o(hines)14 b(that)177 1711 y(do)h(not)g(supp)q(ort)h(them)e(p)q(ose)h (di\016cult)g(design)g(decisions.)22 b(If)14 b(the)i(user)g(sp)q(eci\014es)h (\\)p Fi(sloth)p Fn(")c(as)i(an)g(input)g(\014le)177 1761 y(on)d(suc)o(h)g(a) g(non-extension-supp)q(orting)g(system,)g(should)g(F)m(unnelW)m(eb)f(lo)q(ok) g(for)g Fi(sloth)g Fn(or)h Fi(sloth.fw)p Fn(?)k(If)11 b(the)177 1811 y(user)k(sp)q(eci\014es)h Fi(walrus)c Fn(as)i(a)g(listing)f(\014le,)g (should)h(it)f(generate)j Fi(walrus)c Fn(or)i Fi(walrus.lis)p Fn(?)177 1894 y(Some)f(p)q(ossible)h(solutions)f(are:)228 2032 y(1.)20 b(Regard)14 b(the)g(\014lename)f Fi(sloth)g Fn(as)h(ha)o(ving)e(an)i (empt)o(y)f(extension.)19 b(It)14 b(will)e(then)j(default)e(to)h Fi(sloth.fw)p Fn(.)228 2132 y(2.)20 b(Regard)g(the)h(\014lename)d Fi(sloth)h Fn(as)i(ha)o(ving)e(a)g(blank)h(but)g(full)f(extension.)37 b(That)20 b(is,)h(it)f(cannot)g(b)q(e)281 2181 y(o)o(v)o(erwritten)14 b(b)o(y)g(inheritance,)g(but)g(it)g(remains)f(blank.)228 2282 y(3.)20 b(Pro)o(vide)c(an)g(extra)h(syn)o(tactic)f(mec)o(hanism)e(to)i(allo)o (w)f(the)i(user)g(to)f(sp)q(ecify)h(one)f(or)g(other)h(of)e(the)i(t)o(w)o(o) 281 2331 y(options)c(ab)q(o)o(v)o(e.)177 2469 y(My)i(solution)e(w)o(as)i(to)f (c)o(ho)q(ose)i(the)f(\014rst)g(option.)k(Use)d(of)e(F)m(unnelW)m(eb)g (results)h(in)f(lots)h(of)f(\014les)h(lying)e(around)177 2519 y(\(e.g.)h Fi(sloth.lis)p Fn(\))f(and)h(it)g(is)g(hard)h(to)f(see)i(ho)o(w)e (the)h(user)h(will)c(cop)q(e)k(with)e(them)g(all)f(without)h(some)f(kind)h (of)177 2569 y(naming)e(discipline.)17 b(If)d(a)f(naming)f(discipline)h(has)h (to)g(b)q(e)h(used,)f(it)g(migh)o(t)d(as)j(w)o(ell)f(b)q(e)i(the)f(F)m (unnelW)m(eb)g(one.)177 2652 y(Th)o(us)h(the)g(names)e(of)h(all)f(\014les)i (read)f(and)h(written)f(b)o(y)h(F)m(unnelW)m(eb)e(will)g(ha)o(v)o(e)h(a)g (\014le)h(extension)g(of)e(from)g(zero)177 2702 y(to)h(three)h(letters)g (separated)g(from)e(the)h(rest)h(of)e(the)i(\014lename)e(b)o(y)g(a)h(\\)p Fi(.)p Fn(".)177 2785 y(The)d(only)f(exception)i(is)f(pro)q(duct)g(\014les)g (whose)h(extension)f(is)g(left)f(unde\014ned.)19 b(Pro)q(duct)12 b(\014les)f(need)h(not)e(con)o(tain)177 2835 y(a)k(\\)p Fi(.)p Fn(")k(and)13 b(a)h(\014le)g(extension,)g(although)f(they)h(can)g(inherit)g (one)g(if)f(the)i(user)g(wishes.)1042 2940 y(21)p eop %%Page: 22 23 22 22 bop 177 42 a Fe(1.9)70 b(Sp)r(ecifying)31 b(Constrain)n(ts)i(on)h(the)e (Num)n(b)r(er)g(of)i(Instan)n(tia-)334 116 y(tions)177 232 y Fn(Exp)q(erience)17 b(with)d(F)m(unnelW)m(eb)g(V1)g(demonstrated)h(the)g (need)g(to)g(b)q(e)g(able)f(to)g(sp)q(ecify)h(in)g(macro)e(de\014nitions)177 281 y(ho)o(w)f(man)o(y)f(times)h(it)g(w)o(as)h(exp)q(ected)h(that)f(the)g (macro)f(w)o(ould)g(b)q(e)h(used.)18 b(F)m(unnelW)m(eb)13 b(V1)f(generates)i (an)f(error)177 331 y(if)g(a)g(macro)f(is)h(not)g(used,)h(but)g(p)q(ermits)f (macros)f(to)i(b)q(e)g(called)f(more)f(than)h(once.)19 b(This)13 b(caused)i(problems)d(for)177 381 y(macro)h(libraries,)g(whic)o(h)h(w)o(ould) f(b)q(e)h(included,)g(but)g(whose)g(macros)f(w)o(ere)i(often)f(not)g(called.) 177 455 y(By)g(default,)e(F)m(unnelW)m(eb)h(V3)h(requires)g(that)g(eac)o(h)f (macro)g(\(except)i(for)e(the)h(ones)f(attac)o(hed)h(to)g(output)f(\014les\)) 177 505 y(b)q(e)19 b(called)e(exactly)h(once.)30 b(Ho)o(w)o(ev)o(er,)19 b(it)f(also)f(pro)o(vides)h(syn)o(tax)g(that)f(allo)o(ws)g(the)h(user)h(to)f (sp)q(ecify)g(that)g(a)177 555 y(macro)13 b(b)q(e)h(allo)o(w)o(ed)e(to)i(b)q (e)g(called)f(zero)i(times)d(or)i(man)o(y)e(times.)17 b(This)c(allo)o(ws)g(a) g(macro)f(to)i(b)q(e)g(sp)q(eci\014ed)h(with)177 605 y(the)f(follo)o(wing)d (p)q(ermissible)i(ranges)h(of)f(n)o(um)o(b)q(ers)g(of)g(calls)g(dep)q(ending) h(on)f(the)h(presence)i(or)e(absence)h(of)e(\\)p Fi(@Z)p Fn(")177 655 y(and)h(\\)p Fi(@M)p Fn(":)243 770 y Fi(0..1)217 b(@$@@Z==.)o(..) 308 819 y(1)h(@$@==...)308 869 y(1..n)152 b(@$@@M==.)o(..)243 919 y(0.....n)f(@$@@Z@M=)o(=...)177 1034 y Fn(The)14 b(only)g(t)o(w)o(o)f(problems)g(with)g(this)h(sc)o(heme)g(are:)228 1149 y(1.)20 b(It)11 b(is)g(incompatible)f(with)h(F)m(unnelW)m(eb)f(V1)i (\014les,)f(as)h(the)f(default)g(in)g(F)m(unnelW)m(eb)g(V1)g(is)g(1)c Fj(:)g(:)g(:)e(n)11 b Fn(whereas)281 1198 y(the)16 b(default)g(in)f(new)h(F)m (unnelW)m(eb)f(is)h(1.)23 b(This)16 b(is)f(not)h(a)g(big)f(problem)f(b)q (ecause)j(most)e(macros)g(in)g(the)281 1248 y(old)e(\014les)h(w)o(ere)h(used) g(exactly)f(once.)19 b(Only)13 b(a)h(few)g(macros)f(will)f(ha)o(v)o(e)i(to)g (b)q(e)g(c)o(hanged.)228 1331 y(2.)20 b(What)13 b(should)h(the)h(syn)o(tax)e (b)q(e?)19 b(\(ab)q(o)o(v)o(e)14 b(is)g(a)f(sneak)i(preview)f(only!\))177 1446 y(The)g(initial)d(prop)q(osal)i(for)g(syn)o(tax)g(w)o(as)g(to)g(allo)o (w)f(the)i(user)g(to)f(insert)h(zero,)g(one,)f(or)g(b)q(oth)g(of)g Fi(@?)18 b Fn(and)13 b Fi(@M)g Fn(just)177 1496 y(after)h(the)h Fi(@$)e Fn(of)g(a)h(macro)f(de\014nition.)k(Ho)o(w)o(ev)o(er,)d(this)g(has)g (the)h(follo)o(wing)c(dra)o(wbac)o(ks:)228 1610 y(1.)20 b(It)14 b(uses)h(t)o(w)o(o)e(sequences)k(that)d(are)g(desirable)g(to)g(reserv)o(e)i (\()p Fi(@?)i Fn(for)c(conditionals)f(and)g Fi(@M)h Fn(for)f(macro\).)228 1693 y(2.)20 b(It)14 b(stops)g(the)h(user)g(from)d(searc)o(hing)i(for)g(the)g (string)g Fi(@$@@\(@5@\)==@{@-)177 2022 y(This)i(is)h(a)f(short)g(macro.)177 2072 y(With)g(only)g(a)h(line)f(or) g(two@})177 2172 y(@$@@?@M@\(@5@\)=)o(=@{@-)177 2222 y(This)h(is)h(a)f(short)g(macro.)177 2271 y(With)g(only)g(a)h(line)f(or) g(two@})177 2371 y(@$@@\(@5@\)@?@M=)o(=@{@-)177 2421 y(This)h(is)h(a)f(short)g(macro.)177 2471 y(With)g(only)g(a)h(line)f(or) g(two@)177 2586 y Fn(The)14 b(\014rst)f(form)e(puts)j(me)e(o\013)h(b)q (ecause)h(I)f(think)g(that)g(it)f(is)h(a)g(go)q(o)q(d)f(visual)g(rule)h(to)g (start)h(all)e(the)h(macros)f(with)177 2635 y Fi(@$)p Fn(.)17 b(The)12 b(second)h(form)d(puts)j(me)d(o\013)i(b)q(ecause)i(it)d(detac)o(hes) i(the)g(macro)d(name)h(from)f(the)j(parameter)e(list,)g(th)o(us)177 2685 y(making)g(it)i(lo)q(ok)f(less)i(lik)o(e)f(a)g(call,)f(whic)o(h)h(is)h (desirable)f(syn)o(tactic)h(resonance.)20 b(The)13 b(third)h(form)d(is)j (messy)f(but)177 2735 y(probably)i(w)o(ork)n(able.)23 b(Because)17 b(w)o(e)f(are)g(righ)o(t)g(next)g(to)f(the)h(tested)i(constan)o(t)e(string)g (\(either)g Fi(==)g Fn(or)f Fi(+=)p Fn(\))h(w)o(e)177 2785 y(could)f(augmen)o(t)e(it)h(further.)21 b(F)m(or)15 b(example,)e Fi(01==)h Fn(could)g(allo)o(w)f(a)h(macro)g(to)g(b)q(e)i(called)e(from)f(0)h (to)h(1)f(times.)177 2835 y(The)g(main)e(problem)h(with)g(this)h(is)g(that)g (w)o(e)g(are)g(trying)g(to)g(phase)g(out)g Fi(==)f Fn(an)o(yw)o(a)o(y!)1042 2940 y(22)p eop %%Page: 23 24 23 23 bop 177 42 a Fn(Nev)o(ertheless,)17 b(all)c(the)j(logic)d(p)q(oin)o(ts) i(to)f(after)h(the)g(parameter)g(list)f(as)h(the)g(b)q(est)h(place)f(to)f(lo) q(cate)h(this)g(infor-)177 91 y(mation.)177 167 y(After)21 b(some)d(though)o(t,)j(it)e(w)o(as)h(decided)h(that)f(the)g(\\)p Fi(@?)p Fn(")35 b(sequence)22 b(b)q(e)e(reserv)o(ed)i(for)e(a)f(p)q(ossible)h (future)177 217 y(conditional)13 b(facilit)o(y)m(,)e(and)j(so)g Fi(@Z)f Fn(w)o(as)h(used)h(instead.)177 292 y Fk(Decision:)h Fn(The)f(p)q(osition)e(is)h(after)g(the)g(parameter)g(list.)j(The)e(notation) e(is)g Fi(@Z)h Fn(for)f(zero,)i(and)e Fi(@M)h Fn(for)f(man)o(y)m(.)177 368 y(Example)g(of)g(\014nal)g(syn)o(tax:)177 486 y Fi(@$@@\(@5@\)@Z@M+)o(=@{@-)177 536 y(This)h(is)h(a)f(short)g(macro.)177 585 y(With)g(only)g(a)h(line)f(or)g(two@})177 750 y Fe(1.10)70 b(The)25 b(Relationship)e(Bet)n(w)n(een)g(Do)r(cumen)n(t)h(Structure)h(and) 368 825 y(Macro)f(Structure)177 942 y Fn(Ha)o(ving)15 b(already)h(decided)h (up)q(on)f(a)g(fully)e(hierarc)o(hical)i(do)q(cumen)o(t)g(structure,)i(I)e (determined)g(to)g(re\014ne)h(the)177 992 y(details.)h(The)c(issues)h(to)f(b) q(e)h(addressed)g(w)o(ere)g(as)f(follo)o(ws:)239 1110 y Fm(\017)21 b Fn(Ho)o(w)13 b(should)h(the)h(hierarc)o(hical)e(structure)j(connect)g(to)d (the)i(macro)e(structure?)239 1194 y Fm(\017)21 b Fn(Ho)o(w)13 b(can)i(bac)o(kw)o(ards)f(compatibilit)o(y)c(b)q(e)15 b(ac)o(hiev)o(ed?)j (Should)c(it?)239 1279 y Fm(\017)21 b Fn(Should)13 b(the)i(macros)e(b)q(e)h (cross)h(referenced)i(b)o(y)c(section)i(or)f(b)o(y)g(de\014nition?)239 1363 y Fm(\017)21 b Fn(Should)13 b(nameless)h(sections)h(inherit)f(macro)e (names)h(as)h(headings?)239 1448 y Fm(\017)21 b Fn(Should)13 b(w)o(e)h(simply)e(use)j(T)708 1457 y(E)731 1448 y(X)f(macros)f(to)h (structure)i(the)e(do)q(cumen)o(t?)177 1566 y(After)h(some)e(though)o(t,)g(I) h(arriv)o(ed)g(at)f(the)i(follo)o(wing)c(though)o(ts:)177 1642 y Fk(Basically)i(a)h(T)439 1651 y(E)464 1642 y(X)h(\014le:)h Fn(One)d(option)f(is)g(simply)e(to)i(treat)h(eac)o(h)g Fi(.fw)e Fn(\014le)i(as)f(a)g(T)1481 1651 y(E)1504 1642 y(X)g(\014le)h(laced)f(with)g (macros.)177 1691 y(That)18 b(is,)g(a)g Fi(.fw)f Fn(\014le)h(could)f(b)q(e)i (structured)h(as)e(a)f(real)h(T)1117 1700 y(E)1140 1691 y(X)g(\014le)g(from)e (whic)o(h)i(F)m(unnelW)m(eb)f(could)h(extract)177 1741 y(macro)13 b(de\014nitions.)18 b(This)13 b(approac)o(h)h(is)g(feasible)f(b)q(ecause)j(T) 1157 1750 y(E)1180 1741 y(X)e(could)f(b)q(e)i(programmed)c(to)j(resp)q(ond)h (to)e(the)177 1791 y Fi(@)g Fn(sequences)i(in)d(the)i(same)e(w)o(a)o(y)g (that)h(F)m(unnelW)m(eb)f(resp)q(onds)i(to)f(them.)k(Th)o(us,)12 b(there)i(w)o(ould)e(b)q(e)i(no)e(need)i(for)177 1841 y(W)m(ea)o(v)o(e.)177 1916 y(I)h(rejected)i(this)e(approac)o(h,)g(\014rst)g(b)q(ecause)i(it)e(is)g (to)q(o)f(t)o(yp)q(esetter-dep)q(e)q(nden)o(t,)k(and)d(second)h(b)q(ecause)h (it)d(com-)177 1966 y(plicates)i(the)h(inclusion)e(of)h(an)o(y)f(sort)h(of)g (complicated)e(p)q(ost-pro)q(cessing)k(in)d(the)i(do)q(cumen)o(tation)e (\014le.)24 b(This)177 2016 y(w)o(ould)13 b(ha)o(v)o(e)h(to)g(b)q(e)g (implemen)o(ted)e(in)h(T)818 2025 y(E)841 2016 y(X.)177 2091 y(A)h(b)q(etter)h(approac)o(h)f(is)f(to)h(use)g(an)g(in)o(v)o(en)o(ted)g (section)g(notation)f(\(e.g.)18 b Fi(@A)j(@B)g(@C)p Fn(\).)13 b(This)h(main)o(tains)d(F)m(unnel-)177 2141 y(W)m(eb's)h(t)o(yp)q(esetter)k (indep)q(endence)f(and)d(can)h(easily)f(b)q(e)i(con)o(v)o(erted)g(in)o(to)e (T)1365 2150 y(E)1388 2141 y(X)h(sectioning)f(macros)g(b)o(y)h(W)m(ea)o(v)o (e.)177 2217 y(In)g(the)h(same)e(spirit,)g(it)h(migh)o(t)e(b)q(e)j(w)o(orth)f (in)o(tro)q(ducing)f(a)h(few)g Fi(@)g Fn(sequences)i(for)e(certain)h(general) f(t)o(yp)q(esetting)177 2267 y(op)q(erations)h(suc)o(h)h(as)f(italics)f(and)h (program)e(co)q(de.)177 2342 y Fk(Confusion)f(in)i(F)l(unnelW)l(eb)e(V1)j (Heading)e(Num)o(b)q(ering:)j Fn(F)m(unnelW)m(eb)d(V1)g(uses)h(t)o(w)o(o)f (lev)o(els)g(of)f(section)177 2392 y(headings,)16 b(but)g(n)o(um)o(b)q(ers)f (all)f(the)i(headings)g(sequen)o(tially)m(.)22 b(In)16 b(this,)f(it)h(is)f(a) g(little)g(confused.)24 b(Clearly)15 b(with)177 2442 y(a)20 b(fully)e(hierarc)o(hical)h(do)q(cumen)o(t)h(structure,)i(the)f(headings)e (cannot)h(b)q(e)g(n)o(um)o(b)q(ered)g(sequen)o(tially)f(|)g(the)177 2492 y(n)o(um)o(b)q(ering)13 b(m)o(ust)g(re\015ect)i(the)g(structure)h (\(e.g.)d(3.2.1\).)177 2567 y Fk(Hierarc)o(hical)d(n)o(um)o(b)q(erin)o(g)f (is)j(messy)f(for)h(macros:)k Fn(Unfortunately)m(,)11 b(hierarc)o(hical)f(n)o (um)o(b)q(ering)g(is)g(messy)177 2617 y(and)k(confusing)f(when)i(applied)e (to)h(macro)e(names.)18 b(In)c(F)m(unnelW)m(eb)f(V1's)h(t)o(yp)q(eset)h (output,)f(eac)o(h)g(macro)f(call)177 2667 y(has)i(app)q(ended)g(in)f(square) h(brac)o(k)o(ets)h(the)f(n)o(um)o(b)q(er)f(of)f(the)i(section)h(in)e(whic)o (h)g(the)h(macro)e(is)h(de\014ned.)21 b(Use)15 b(of)177 2716 y(hierarc)o(hical)f(n)o(um)o(b)q(ering)e(w)o(ould)i(b)q(e)g(somewhat)f(messy) m(.)k(F)m(or)d(example,)e(a)h(macro)g(call)g(migh)o(t)f(lo)q(ok)h(lik)o(e.) 243 2835 y Fi(Write)20 b(out)h(the)h(output[6.7.4.3])1042 2940 y Fn(23)p eop %%Page: 24 25 24 24 bop 177 42 a Fn(Similarly)l(,)11 b(cross)k(reference)h(lists)e(w)o (ould)f(b)q(e)i(messy:)243 180 y Fi(This)21 b(macro)f(is)i(used)f(in)g (3.4.5,)g(1.2,)g(7.8.9,)f(7.4,)h(2.2.1.1.)177 319 y Fk(Separate)12 b(n)o(um)o(b)q(ering)e(for)j(macros)h(and)f(headings:)i Fn(One)e(idea)f(is)g (to)g(use)g(hierarc)o(hical)g(n)o(um)o(b)q(ering)f(for)177 369 y(the)i(sections,)h(but)f(to)f(n)o(um)o(b)q(er)g(the)h(macros)f(sequen)o (tially)m(.)k(This)d(could)f(b)q(e)h(a)g(little)f(confusing)g(in)g(do)q (cumen)o(ts)177 419 y(without)j(m)o(uc)o(h)g(structure,)i(but)f(w)o(ould)f(b) q(e)h(v)o(ery)g(m)o(uc)o(h)f(less)h(messy)f(than)h(cross)g(referencing)h (using)f(hierar-)177 469 y(c)o(hical)f(n)o(um)o(b)q(ering.)22 b(Also,)15 b(it)g(will)f(b)q(e)i(easier)g(to)g(\014nd)f(macros)g(indexed)h(b) o(y)f(a)g(sequen)o(tial)h(n)o(um)o(b)q(er)f(than)g(b)o(y)177 519 y(section,)g(whic)o(h)g(has)g(a)g(less)g(direct)h(relationship)e(with)h (page)g(bulk)f(and)h(n)o(um)o(b)q(er.)20 b(By)15 b(macro)e(n)o(um)o(b)q (ering)h(is)177 568 y(mean)o(t)f(the)h(sequen)o(tial)g(n)o(um)o(b)q(ering)f (of)g(eac)o(h)h(macro)f(b)q(o)q(dy)h(part)g(through)g(the)h(whole)e(do)q (cumen)o(t.)177 652 y Fk(Input)h(format)g(matters)f(more)i(than)f(output)f (format:)k Fn(A)o(t)c(this)h(p)q(oin)o(t)e(w)o(e)i(realize)g(that)f(a)g (distinction)177 702 y(should)f(b)q(e)g(made)e(b)q(et)o(w)o(een)j(the)f Fh(input)i(format)d Fn(and)g(the)h Fh(typ)n(eset)h(output)p Fn(.)18 b(The)12 b(critical)f(issue)h(here)h(is)f(not)f(ho)o(w)177 752 y(the)16 b(program)e(should)h(b)q(e)i(formatted)d(for)h(prin)o(ting,)g (but)g(rather)i(the)f(format)d(of)i(its)h Fi(.fw)f Fn(\014le.)22 b(The)16 b(t)o(yp)q(eset)177 802 y(output)e(can)h(alw)o(a)o(ys)e(b)q(e)h(c)o (hanged)h(simply)d(b)o(y)i(\014ddling)f(with)g(W)m(ea)o(v)o(e.)18 b(Ho)o(w)o(ev)o(er,)c(as)g(so)q(on)g(as)h(the)f(do)q(cumen)o(t)177 851 y(structuring)g(features)f(of)f(F)m(unnelW)m(eb)g(are)h(\014xed,)f(they)h (will)e(b)q(e)i(used)h(in)e(dozens)h(or)f(h)o(undreds)i(of)e(do)q(cumen)o(ts) 177 901 y(and)j(it)g(will)f(b)q(e)i(v)o(ery)g(di\016cult)f(indeed)h(to)f(c)o (hange)h(them.)21 b(Therefore,)c(the)f(imp)q(ortan)o(t)e(thing)g(is)i(to)f (pro)o(vide)177 951 y(as)f(sensible)h(and)f(expressiv)o(e)h(a)f Fi(.fw)f Fn(format)f(as)i(p)q(ossible.)177 1035 y(It)d(is)g(therefore)h(a)e (separate)i(decision)f(as)g(to)f(whether)i(w)o(e)f(should)g(n)o(um)o(b)q(er)f (macros)g(b)o(y)g(section)h(or)g(b)o(y)g(sequence)177 1085 y(n)o(um)o(b)q(er.)17 b(The)e(imp)q(ortan)o(t)d(thing)h(is)h(to)g(address)h (the)f(format)f(and)g(rules)i(for)e(the)i(expression)g(of)e(structure.)177 1168 y Fk(Naming)k(sections:)i Fn(The)d(naming)d(of)i(sections)h(requires)h (some)d(though)o(t.)22 b(In)16 b(man)o(y)d(cases)k(\(esp)q(ecially)e(in)177 1218 y(the)k(case)g(of)e(high-lev)o(el)g(sections\))i(the)f(writer)h(will)d (pro)o(vide)i(an)g(explicit)f(name)g(for)h(a)f(section.)31 b(In)18 b(other)177 1268 y(cases,)d(pro)o(vision)e(of)g(suc)o(h)h(a)g(name)e (will)h(merely)g(duplicate)g(the)i(name)d(of)h(the)i(macro)d(con)o(tained)i (within)f(the)177 1318 y(section.)23 b(It)15 b(therefore)i(mak)o(es)d(sense)j (to)e(allo)o(w)e(the)j(user)g(to)f(omit)f(the)h(name)f(from)g(a)h(section,)g (with)g(W)m(ea)o(v)o(e)177 1368 y(naming)10 b(the)k(section)f(after)g(the)g (\014rst)h(macro)d(de\014nition)h(in)g(the)i(section.)k(If)12 b(a)h(macro)e(is)h(unnamed)g(and)g(there)177 1417 y(is)i(no)g(macro)e(in)i (the)g(section,)g(an)g(error)h(can)f(b)q(e)g(generated.)177 1501 y(All)f(these)j(though)o(ts)e(lead)f(to)h(the)g(follo)o(wing)e(sc)o (heme:)239 1640 y Fm(\017)21 b Fn(Do)q(cumen)o(ts)13 b(will)g(b)q(e)h (hierarc)o(hically)g(structured)i(using)d Fi(@A)p Fn(,)g Fi(@B)h Fn(etc.)239 1741 y Fm(\017)21 b Fn(Eac)o(h)14 b(section)h(can)f(b)q(e)g(giv)o (en)g(a)f(name)g(delimited)f(b)o(y)i Fi(@<@>)p Fn(.)239 1842 y Fm(\017)21 b Fn(Sections)15 b(that)f(do)f(not)h(ha)o(v)o(e)g(names)f (inherit)h(the)g(name)f(of)g(their)h(\014rst)h(macro.)239 1943 y Fm(\017)21 b Fn(If)13 b(a)h(section)h(do)q(es)f(not)g(ha)o(v)o(e)g(a)f (name)g(or)h(a)g(macro,)e(it)h(is)h(erroneous.)239 2045 y Fm(\017)21 b Fn(Sections)15 b(will)d(b)q(e)j(n)o(um)o(b)q(ered)e(hierarc)o(hically)g (either)i(b)o(y)f(F)m(unnelW)m(eb)f(or)h(b)o(y)g(T)1551 2054 y(E)1574 2045 y(X.)239 2146 y Fm(\017)21 b Fn(Macro)12 b(b)q(o)q(dy)f(parts)h (will)e(b)q(e)i(n)o(um)o(b)q(ered)f(sequen)o(tially)g(b)o(y)g(F)m(unnelW)m (eb)g(and)h(cross)g(referenced)i(b)o(y)d(these)281 2196 y(n)o(um)o(b)q(ers.) 177 2334 y(All)i(this)h(results)h(in)f(a)f(system)h(whic)o(h:)239 2473 y Fm(\017)21 b Fn(Pro)o(vides)14 b(a)g(hierarc)o(hical)g(do)q(cumen)o(t) f(structuring)i(capabilit)o(y)m(.)239 2574 y Fm(\017)21 b Fn(Is)14 b(t)o(yp)q(esetter)i(indep)q(enden)o(t.)239 2676 y Fm(\017)21 b Fn(Do)q(es)14 b(not)g(require)h(duplication)e(b)q(et)o(w)o(een)i(heading)e (and)h(macro)f(names.)239 2777 y Fm(\017)21 b Fn(Separates)14 b(the)f(heading)f(and)h(macro)e(systems)i(so)f(that)h(W)m(ea)o(v)o(e)f(can)h (b)q(e)g(con\014gured)h(at)e(a)g(later)h(date)g(to)281 2827 y(cross)i(reference)h(in)e(di\013eren)o(t)h(w)o(a)o(ys)e(without)h(requiring) f(input)h(\014les)g(to)g(b)q(e)h(rew)o(ork)o(ed.)1042 2940 y(24)p eop %%Page: 25 26 25 25 bop 177 42 a Fe(1.11)70 b(Diagnostic)22 b(Messages)177 157 y Fn(In)14 b(F)m(unnelW)m(eb,)f(all)g(error)i(messages)f(commence)f(with) h(an)g(indicator)f(indicating)g(the)i(sev)o(erit)o(y)g(of)e(the)i(error)177 207 y(message.)j(Here)d(are)f(some)f(of)h(the)g(formats)e(that)i(I)g(in)o(v)o (estigated)g(b)q(efore)h(settling)e(on)h(the)h(\014nal)e(format:)177 323 y Fi(W--Error)20 b(creating)g(sloth.)177 373 y(E--Error)g(opening)h (output)f(file.)177 423 y(S--I'm)h(a)g(teapot.)177 473 y(F--Can't)f(open)h (output)g(file.)177 572 y(W-Error)g(creating)f(sloth.)177 622 y(E-Error)h(opening)f(output)g(file.)177 672 y(S-I'm)h(a)h(teapot.)177 722 y(F-Can't)f(open)f(output)h(file.)177 822 y(W:Error)g(creating)f(sloth.) 177 871 y(E:Error)h(opening)f(output)g(file.)177 921 y(S:I'm)h(a)h(teapot.) 177 971 y(F:Can't)f(open)f(output)h(file.)177 1071 y(W:)h(Error)e(creating)g (sloth.)152 b(--)21 b(Format)g(chosen.)177 1120 y(E:)h(Error)e(opening)h (output)f(file.)177 1170 y(S:)i(I'm)f(a)g(teapot.)177 1220 y(F:)h(Can't)e(open)h(output)g(file.)177 1320 y(War-Error)f(creating)g (sloth.)177 1369 y(Err-Error)g(opening)g(output)h(file.)177 1419 y(Sev-I'm)g(a)g(teapot.)177 1469 y(Fat-Can't)f(open)h(output)g(file.)177 1569 y(W-Old)g(fashioned)f(feature.)177 1668 y(W-Old)h(fashioned)f(feature.) 177 1768 y(W--Old)h(fashioned)f(feature.)177 1868 y(W:)i(Old)f(fashioned)f (feature.)177 1967 y(W:Old)h(fashioned)f(feature.)177 2129 y Fe(1.12)70 b(Summary)177 2245 y Fn(This)16 b(rather)i(unstructured)g(c)o (hapter)g(has)e(addressed)i(some)e(of)f(the)i(k)o(ey)g(design)f(decisions)h (of)f(F)m(unnelW)m(eb.)177 2295 y(In)e(man)o(y)e(cases,)j(the)g(alternativ)o (es)f(ha)o(v)o(e)g(b)q(een)h(unpleasan)o(t,)e(but)h(I)g(am)f(con\014den)o(t)h (that)g(in)g(all)f(cases,)h(a)g(fully)177 2345 y(w)o(ork)n(able)f(solution)g (has)h(b)q(een)h(found.)1042 2940 y(25)p eop %%Page: 26 27 26 26 bop 1042 2940 a Fn(26)p eop %%Page: 27 28 27 27 bop 177 375 a Ff(Chapter)34 b(2)177 606 y Fl(F)-10 b(unnelW)g(eb)41 b(Implemen)m(tation)177 869 y Fe(2.1)70 b(In)n(tro)r(duction)177 982 y Fn(This)13 b(c)o(hapter)g(con)o(tains)g(notes)g(on)g(the)g(actual)f(C)h (co)q(de)g(that)g(implemen)o(ts)d(F)m(unnelW)m(eb)i(V3.)18 b(This)12 b(c)o(hapter)i(is)177 1032 y(rather)h(patc)o(h)o(y)m(.)20 b(It)14 b(has)h(acted)g(mainly)d(as)i(a)h(dumping)d(ground)i(for)h(ideas)f (that)h(I)f(b)q(othered)i(to)e(write)h(ab)q(out)177 1082 y(during)f(dev)o (elopmen)o(t.)177 1241 y Fe(2.2)70 b(History)22 b(of)i(F)-6 b(unnelW)g(eb)22 b(Implemen)n(tati)o(ons)177 1354 y Fn(The)16 b(\014rst)h(implemen)o(tation)12 b(of)k(F)m(unnelW)m(eb)f(\(F)m(unnelW)m(eb)g (V1\))h(w)o(as)g(written)g(in)g(Ada)g(in)f(Decem)o(b)q(er)h(1986.)177 1404 y(The)f(pro)r(ject)h(w)o(as)e(initially)e(canned)j(as)g(requiring)f(to)q (o)g(m)o(uc)o(h)g(time,)f(but)h(w)o(as)h(resurrected)i(when)e(I)g(decided)177 1454 y(to)e(commit)d(to)k(Ada)p Fk([USDOD83])d Fn(and)i(realized)h(that)f(I)g (needed)i(a)e(program)f(to)h(write)g(to)g(help)g(me)g(to)g(learn)177 1504 y(Ada.)18 b(F)m(unnelW)m(eb)13 b(V1)h(w)o(as,)g(in)f(fact,)g(m)o(y)g (\014rst)h(Ada)g(program.)i(It)e(to)q(ok)g(ab)q(out)g(one)g(mon)o(th)e(to)i (write.)177 1576 y(F)m(unnelW)m(eb)21 b(V1)g(w)o(as)g(used)h(in)o(tensiv)o (ely)f(b)o(y)g(m)o(yself)e(to)j(write)f(Ada)g(programs)f(from)g(Jan)o(uary)h (1986)f(to)177 1626 y(July)e(1989)f(at)h(whic)o(h)g(time)f(I)h(\014nished)h (m)o(y)e(Ph.D.)g(and)h(lost)g(access)i(to)e(the)h(V)-5 b(AX.)18 b(During)g(this)g(time)f(at)177 1676 y(least)f(t)o(w)o(en)o(t)o(y)g(thousand) g(lines)f(of)g(co)q(de)h(w)o(ere)h(generated)g(using)e(F)m(unnelW)m(eb.)23 b(Hardly)15 b(an)o(y)o(one)h(but)f(m)o(yself)177 1726 y(used)g(F)m(unnelW)m (eb.)177 1798 y(After)f(losing)f(access)i(to)e(Ada)h(and)f(the)h(V)m(ax)f (\(and)g(hence)i(to)e(F)m(unnelW)m(eb\),)g(I)g(w)o(as)h(forced)g(bac)o(k)f (to)h(program-)177 1848 y(ming)9 b(the)i(non-literate)g(w)o(a)o(y)m(.)16 b(F)m(rom)9 b(time)g(to)i(time)e(I)i(found)g(that)f(I)h(needed)h(to)f(use)h (some)e(of)g(m)o(y)f(old)h(programs)177 1898 y(that)15 b(I)f(had)h(written)g (using)f(Ada)h(and)f(F)m(unnelW)m(eb.)19 b(I)c(knew)g(that)f(Ada)h(w)o(ould)f (b)q(ecome)g(a)o(v)n(ailable)e(on)j(more)177 1947 y(mac)o(hines,)e(but)h (certainly)g(F)m(unnelW)m(eb)g(w)o(ouldn't.)j(I)d(recognised)h(a)f(strong)g (need)h(for)e(a)h(p)q(ortable)g(v)o(ersion)g(of)177 1997 y(F)m(unnelW)m(eb)g (written)g(in)f(C)h(but)g(didn't)g(ha)o(v)o(e)f(the)i(time)d(or)i(energy)h (to)f(create)h(one.)177 2070 y(Ab)q(out)20 b(this)g(time)f(\(late)h(1989\),)g (Da)o(vid)f(Hulse,)i(at)f(the)g(time)f(a)g(studen)o(t)i(in)f(Computer)f (Science)i(at)f(the)177 2119 y(Univ)o(ersit)o(y)c(of)f(Adelaide,)h(v)o(olun)o (teered)h(to)e(translate)h(the)h(4000)e(line)g(Ada)h(v)o(ersion)g(of)f(F)m (unnelW)m(eb)g(in)o(to)g(C.)177 2169 y(T)m(o)e(m)o(y)e(kno)o(wledge)j(this)f (translation)g(pro)q(cess)i(to)q(ok)e(ab)q(out)g(three)i(w)o(eeks)f(\(in)f (Decem)o(b)q(er)h(1989\).)j(The)d(result)177 2219 y(w)o(as)g(called)g(F)m (unnelW)m(eb)f(V2)h(and)f(w)o(as)h(formally)d(signed)j(in)o(to)f(the)i (public)e(domain)f(on)i(5)f(Ma)o(y)h(1992.)177 2291 y(In)k(general,)h(Da)o (vid)d(Hulse)j(did)e(a)h(go)q(o)q(d)g(job.)29 b(Ho)o(w)o(ev)o(er,)19 b(the)g(resultan)o(t)f(co)q(de)h(su\013ered)h(from)c(one)i(or)g(few)177 2341 y(serious)d(defects,)g(the)f(most)f(serious)i(of)e(whic)o(h)h(w)o(as)f (a)h(lac)o(k)f(of)h(p)q(ortabilit)o(y)m(.)177 2414 y(Lac)o(k)c(of)g(p)q (ortabilit)o(y)f(of)g(the)i(C)f(co)q(de,)i(com)o(bined)c(with)i(the)h(need)g (for)f(a)g(rather)h(solid)f(design)g(review,)h(com)o(bined)177 2463 y(with)17 b(the)g(need)h(to)e(strengthen)j(the)e(program)e(to)i(bring)f (it)g(up)h(to)g(pro)q(duction)g(standard,)g(resulted)h(in)e(m)o(y)177 2513 y(p)q(erforming)10 b(a)i(complete)f(rew)o(orking)g(of)g(the)i(co)q(de.) 18 b(The)12 b(C)g(co)q(de)g(w)o(as)g(en)o(tirely)m(,)f(but)h(incremen)o (tally)m(,)e(replaced)177 2563 y(or)20 b(reformatted.)36 b(The)21 b(co)q(de)f(w)o(as)g(also)g(strengthened)i(and)e(new)g(features)h(w)o(ere)g (added.)37 b(This)20 b(pro)q(cess)177 2613 y(to)q(ok)d(ab)q(out)h(t)o(w)o(o)f (mon)o(ths)f(\(No)o(v)o(em)o(b)q(er)h(and)h(Decem)o(b)q(er)g(1991\).)28 b(A)17 b(further)i(t)o(w)o(o)e(mon)o(ths)f(\(appro)o(x\))i(w)o(ere)177 2663 y(sp)q(en)o(t)13 b(writing)f(do)q(cumen)o(tation,)f(constructing)i(a)f (regression)h(test)h(suite,)e(p)q(orting)g(the)h(program)e(to)h(di\013eren)o (t)177 2712 y(mac)o(hines,)h(and)g(sorting)h(out)g(the)g(legal)f(issues)i(in) o(v)o(olv)o(ed)e(in)g(its)h(release.)177 2785 y(I)g(w)o(ould)f(lik)o(e)h(to)g (tak)o(e)g(this)g(opp)q(ortunit)o(y)g(to)g(record)h(a)f(debt)g(of)g (gratitude)g(to)g(Da)o(vid)f(Hulse)h(who)g(translated)177 2835 y(F)m(unnelW)m(eb)f(from)e(Ada)i(to)f(C.)h(Although)f(m)o(y)f(rew)o(orking)i (of)f(his)h(C)g(co)q(de)h(obliterated)f(most)e(of)i(his)f(co)q(de,)i(his)1042 2940 y(27)p eop %%Page: 28 29 28 28 bop 177 42 a Fn(translation)14 b(w)o(as)g(piv)o(otal)e(to)i(the)h(dev)o (elopmen)o(t)e(pro)q(cess.)21 b(Without)14 b(his)g(e\013ort)h(in)e(mo)o(ving) f(from)g(Ada)i(to)g(C,)177 91 y(I'm)f(not)j(sure)g(that)f(I)g(w)o(ould)g(ha)o (v)o(e)g(m)o(ustered)g(the)h(energy)g(and)f(time)f(to)h(complete)g(the)h(pro) q(cess)h(and)e(bring)177 141 y(F)m(unnelW)m(eb)f(up)f(to)h(its)g(curren)o(t)h (standard.)177 308 y Fe(2.3)70 b(Wh)n(y)23 b(F)-6 b(unnelW)g(eb)23 b(W)-6 b(asn't)24 b(Used)e(to)h(W)-6 b(rite)22 b(Itself)177 426 y Fn(After)d(Kn)o(uth)g(created)g(the)g(W)m(eb)f(literate)h(prepro)q (cessing)h(system,)e(he)h(re-wrote)g(it)f(using)g(W)m(eb)g(and)g(dis-)177 476 y(tributed)13 b(the)g(source)g(co)q(de)g(in)f(W)m(eb)g(source)i(form.)h (T)m(o)d(allo)o(w)e(the)j(W)m(eb)f(source)h(co)q(de)h(to)e(b)q(e)g(tangled)g (b)o(y)g(users)177 526 y(not)i(y)o(et)g(ha)o(ving)f(a)g(cop)o(y)h(of)g(W)m (eb,)f(he)h(also)f(included)h(the)h(tangled)e(P)o(ascal)h(co)q(de)h(for)e (the)i(T)m(angler.)177 602 y(While)j(this)g(approac)o(h)h(is)f(heroic)h(and)g (serv)o(es)h(to)e(con)o(v)o(ey)h(a)f(commitm)o(en)o(t)e(and)i(a)g (con\014dence)i(in)f(literate)177 652 y(programming,)10 b(it)j(seemed)h(to)g (me)e(that)i(writing)f(F)m(unnelW)m(eb)g(in)g(F)m(unnelW)m(eb)g(w)o(ould)g (simply)f(b)q(e)i(asking)f(for)177 702 y(trouble.)18 b(F)m(or)11 b(a)g(start,)i(it)e(w)o(ould)g(b)q(e)h(v)o(ery)g(hard)g(to)g(mo)q(dify)d(an)o (y)i(feature)i(of)e(F)m(unnelW)m(eb)g(that)h(had)f(b)q(een)i(used)177 752 y(to)18 b(write)g(F)m(unnelW)m(eb,)f(and)h(the)g(though)o(t)g(of)f(what)g (w)o(ould)g(happ)q(en)h(if)f(the)h(w)o(orking)f(executable)i(b)q(ecame)177 801 y(inop)q(erativ)o(e)14 b(for)f(some)g(reason)i(do)q(es)g(not)e(b)q(ear)i (thinking)e(up)q(on.)177 878 y(One)18 b(million)c(billion)h(computer)i (programs)f(w)o(ere)j(written)f(in)e(the)i(non-literate)g(st)o(yle)f(b)q (efore)h(F)m(unnelW)m(eb)177 928 y(w)o(as)c(created.)20 b(Wh)o(y)13 b(not)h(one)g(more?)177 1095 y Fe(2.4)70 b(Co)r(ding)22 b(St)n(yle)177 1213 y Fn(Although)15 b(F)m(unnelW)m(eb)g(w)o(asn't)g(co)q(ded)h(under)g(an)o (y)f(particular)g(co)q(ding)g(standard,)h(it)f(w)o(as)g(co)q(ded)h(in)f (accor-)177 1263 y(dance)c(with)e(a)g(fairly)g(strict)h(p)q(ersonal)g(st)o (yle)g(of)f(C)g(whic)o(h)h(dev)o(elop)q(ed)g(during)g(the)g(dev)o(elopmen)o (t)f(of)g(F)m(unnelW)m(eb.)177 1312 y(This)17 b(st)o(yle)f(w)o(as)h (subsequen)o(tly)h(em)o(b)q(o)q(died)d(in)h(a)g(real)h(C)f(co)q(ding)h (standard)g(prepared)g(for)g(the)g(South)f(Aus-)177 1362 y(tralian)10 b(Go)o(v)o(ernmen)o(t)g(Departmen)o(t)h(of)f(Lands.)935 1347 y Fd(1)971 1362 y Fn(Unfortunately)m(,)h(F)m(unnelW)m(eb)g(w)o(as)g(not)g (formally)d(dev)o(elop)q(ed)177 1412 y(under)16 b(the)g(standard)g(and)f(so)g (some)g(holes)g(remain)f(in)h(F)m(unnelW)m(eb's)g(co)q(ding)g(st)o(yle.)22 b(This)15 b(section)h(aims)e(to)177 1462 y(describ)q(e)i(some)d(of)g(the)i (more)d(imp)q(ortan)o(t)h(asp)q(ects)i(of)e(the)i(co)q(ding)f(st)o(yle.)177 1538 y Fk(P)o(ortabili)o(t)n(y:)27 b Fn(This)19 b(w)o(as)g(a)g(ma)r(jor)e (goal)h(of)h(the)g(F)m(unnelW)m(eb)g(implemen)o(tatio)o(n.)31 b(Tw)o(o)19 b(excellen)o(t)h(b)q(o)q(oks)177 1588 y(guided)f(this)g(mo)o(v)o (e)e(to)i(p)q(ortabilit)o(y)m(.)31 b(They)19 b(w)o(ere)h Fk([Rabino)o (witz90])c Fn(\(whic)o(h)j(deals)g(with)f(C)h(co)q(de)h(itself)s(\))177 1638 y(and)15 b Fk([Horton90])g Fn(\(whic)o(h)g(deals)h(with)f(the)h(p)q (ortabilit)o(y)e(of)g(v)n(arious)h(library)g(calls\).)22 b(Other)16 b(w)o(orks)g(suc)o(h)g(as)177 1687 y Fk([Kernighan88])c Fn(and)i Fk([ANSI])g Fn(w)o(ere)h(also)e(helpful.)177 1764 y Fk(Iden)o(ti\014ers:)i ([Rabino)o(witz90])p Fn(length)10 b(sp)q(eci\014es)k(that)f(for)f(wide)g(p)q (ortabilit)o(y)m(,)f(iden)o(ti\014ers)i(of)f(blo)q(c)o(k)g(and)h(\014le)177 1814 y(scop)q(e)j(should)f(b)q(e)h(unique)f(to)g(eigh)o(t)f(c)o(haracters,)j (and)e(iden)o(ti\014ers)h(of)e(program)f(scop)q(e)j(should)f(b)q(e)h(unique)f (to)177 1863 y(six)d(c)o(haracters.)19 b(I)11 b(ha)o(v)o(e)h(gone)f(further)i (in)e(F)m(unnelW)m(eb)g(and)h(actually)e(made)h(these)i(restrictions)g (actual)e(limits)177 1913 y(on)j(iden)o(ti\014er)g(length.)177 1989 y(Because)k(names)d(m)o(ust)g(b)q(e)i(so)f(short,)g(a)g(system)g(of)f (abbreviations)h(w)o(as)g(dev)o(elop)q(ed)g(to)g(organize)g(the)h(iden-)177 2039 y(ti\014ers)f(used)h(within)d(F)m(unnelW)m(eb.)23 b(Eac)o(h)15 b(abbreviation)g(consists)i(of)d(a)i(letter)g(pair.)22 b(Here)17 b(are)f Fh(some)f Fn(of)g(the)177 2089 y(abbreviations)f(used:)177 2209 y Fi(bp)22 b(-)f(Body)g(Part.)177 2259 y(cm)h(-)f(Compare.)f(Used)h(to)h (prefix)e(comparison)g(routines)g(that)h(return)g([-1,0,1].)177 2309 y(dc)h(-)f(Document)f(component.)177 2359 y(dm)i(-)f(Dump)g(package.)177 2408 y(el)h(-)f(Element.)177 2458 y(eq)h(-)f(Equal.)g(Used)g(to)g(prefix)g (comparison)e(routines)h(that)h(return)g(a)h(boolean.)177 2508 y(ex)g(-)f(Expression.)177 2558 y(f)44 b(-)21 b(Global)g(files.)177 2608 y(ll)h(-)f(List)g(of)g(lists.)177 2658 y(ln)h(-)f(Line)g(record.)177 2707 y(ls)h(-)f(List)g(Package.)177 2757 y(lr)h(-)f(Lister)g(package.)p 177 2796 709 2 v 223 2823 a Fc(1)241 2835 y Fb(The)11 b(standard)e(is)j (curren)o(tly)d(una)o(v)n(ailable)o(,)g(but)i(is)g(lik)o(ely)f(to)h(b)q(e)g (released)f(or)h(published)e(ev)o(en)o(tually)m(.)1042 2940 y Fn(28)p eop %%Page: 29 30 29 29 bop 177 42 a Fi(ma)22 b(-)f(Macro.)177 91 y(mc)h(-)f(Macro)g(Call.)177 141 y(mn)h(-)f(Macro)g(Name.)177 191 y(op)h(-)f(Options)f(package.)177 241 y(pr)i(-)f(Parser.)177 291 y(ps)h(-)f(Position)f(record.)177 340 y(sc)i(-)f(Scrap)g(record.)177 390 y(sn)h(-)f(Section.)177 440 y(tb)h(-)f(Table)g(package.)177 490 y(ty)h(-)f(Typesetter)f(directive.) 177 540 y(wf)i(-)f(Write)g(file)g(package.)177 589 y(wl)h(-)f(Write)g(with)g (EOL)g(\(misc.c\).)177 639 y(wr)h(-)f(Write)217 b(\(misc.c\).)177 756 y Fk(P)o(oin)o(ters:)15 b Fn(V)m(ariables)f(or)g(t)o(yp)q(es)g(denoting)g (p)q(oin)o(ters)g(start)h(with)e(\\)p Fi(p)p 1292 756 14 2 v 16 w Fn(".)177 831 y Fk(T)o(yp)q(es:)18 b Fn(Names)13 b(denoting)g(t)o(yp)q (es)h(end)g(in)f(\\)p 898 831 V 15 w Fi(t)p Fn(".)18 b(Th)o(us,)13 b(a)g(t)o(yp)q(e)h(for)f(a)g(p)q(oin)o(ter)g(to)g(a)g(table)g(w)o(ould)g(b)q (e)h(named)177 881 y Fi(p)p 202 881 V 16 w(tb)p 262 881 V 15 w(t)p Fn(.)177 956 y Fk(File)j(names:)23 b Fn(All)16 b(\014les)h(used)g(in)f (F)m(unnelW)m(eb)g(ha)o(v)o(e)g(\014le)g(names)g(that)h(are)f(from)f(one)i (to)f(eigh)o(t)g(c)o(haracters)177 1005 y(long)d(and)g(\014le)g(extensions)i (that)e(are)h(from)e(one)h(to)h(three)g(c)o(haracters)i(long.)h(This)c (ensures)i(that)f(the)g(\014les)g(can)177 1055 y(b)q(e)h(p)q(ortably)e(mo)o (v)o(ed)f(to)i(all)f(kinds)h(of)f(mac)o(hines,)f(ev)o(en)j(MSDOS!)177 1218 y Fe(2.5)70 b(Use)22 b(of)h(Memory)177 1334 y Fn(F)m(unnelW)m(eb)15 b(is)h(not)g(a)g(memory-stressed)f(program.)23 b(Ho)o(w)o(ev)o(er,)16 b(during)f(its)h(dev)o(elopmen)o(t,)f(problems)g(with)177 1384 y(the)g(managemen)o(t)d(of)h(memory)f(seemed)j(to)f(crop)g(up)h(again)e(and)h (again.)k(This)c(section)h(do)q(cumen)o(ts)f(some)f(of)177 1434 y(these)i(problems)e(and)h(the)h(solutions)e(adopted.)177 1509 y(There)22 b(are)e(three)i(places)e(where)i(memory)17 b(can)k(b)q(e)g(obtained:)30 b(the)21 b(heap,)g(the)g(stac)o(k,)h(and)e(from) e(static)177 1558 y(v)n(ariables.)f(The)e(follo)o(wing)c(three)k(sections)g (deal)f(with)f(eac)o(h)i(of)e(these)i(areas.)177 1721 y Fe(2.6)70 b(The)22 b(Heap)177 1837 y Fn(One)17 b(of)f(the)h(great)g(frustrations)f(of)g (b)q(eing)h(a)f(user)h(is)f(to)h(\014nd)f(that)h(a)f(computer)g(program)e(is) j(complaining)177 1887 y(ab)q(out)d(lac)o(k)f(of)g(memory)f(when)i(one)g(kno) o(ws)g(full)e(w)o(ell)i(that)g(one)g(has)g(allo)q(cated)f(at)h(least)g(ten)g (times)f(as)h(m)o(uc)o(h)177 1937 y(memory)f(to)j(the)g(program)e(as)i(it)f (w)o(ould)g(ev)o(er)i(need)f(to)g(do)f(its)h(job.)23 b(The)16 b(reason)g(for)g(suc)o(h)g(error)h(messages)177 1987 y(usually)h(has)h(to)g (do)f(with)g(the)i(programmer)c(setting)j(a)g(\014xed)g(\\reasonable")g (limit)d(to)i(a)h(particular)f(data)177 2037 y(structure)f(and)d(then)h(lo)q (c)o(king)e(it)i(up)f(in)o(to)g(an)g(arra)o(y)g(whose)h(b)q(ound)g(is)f(sp)q (eci\014ed)i(b)o(y)e(a)g(constan)o(t.)21 b(While)13 b(the)177 2086 y(use)i(of)e(arra)o(ys)h(can)g(increase)h(the)f(sp)q(eed)h(of)e(a)h (program,)d(it)i(also)h(means)e(that)i(the)h(user)f(cannot)g(increase)h(the) 177 2136 y(capacit)o(y)f(of)g(the)h(program)e(without)h(obtaining)f(the)i (source)h(co)q(de)f(and)g(recompiling)d(it,)i(whic)o(h)g(is)g(usually)g(a)177 2186 y(daun)o(ting)f(option.)177 2261 y(The)g(alternativ)o(e)g(is)f(to)h(use) h(the)f(heap)g(for)f(all)g(data)g(structures)j(that)e(can)g(gro)o(w)f(in)h (prop)q(ortion)f(to)h(the)g(size)g(of)177 2311 y(the)f(user's)g(input.)17 b(This)11 b(rule)h(has)f(b)q(een)h(follo)o(w)o(ed)e(rigorously)g(in)h(F)m (unnelW)m(eb.)16 b(This)11 b(means)g(that)g(as)g(memory)177 2360 y(spaces)h(increase,)g(users)g(will)d(b)q(e)i(able)g(to)f(hand)h(their)f (v)o(ersion)h(of)f(F)m(unnelW)m(eb)g(more)g(memory)e(without)i(ha)o(ving)177 2410 y(to)k(recompile)f(it.)998 2510 y(|)h Fm(x)g Fn(|)177 2635 y(Some)i(problems)f(arose)j(early)e(on)h(the)g(Macin)o(tosh)g(in)f(the)h (use)h(of)e(the)h(heap.)27 b(It)17 b(seems)g(that)f(some)g(of)g(the)177 2685 y(allo)q(cations)i(I)i(w)o(as)f(attempting)f(to)h(mak)o(e)f(w)o(ere)i (failing)d(for)i(some)g(obscure)i(reason,)f(p)q(ossibly)f(m)o(y)f(fault.)177 2735 y(Whatev)o(er)c(it)f(w)o(as,)g(it)g(w)o(en)o(t)g(a)o(w)o(a)o(y)g(when)g (I)h(replaced)g(direct)g(calls)f(to)g Fi(malloc)f Fn(with)h(calls)g(to)g(a)g (mini)e(pac)o(k)n(age)177 2785 y(I)j(wrote)g(\(called)f Fi(memory)p Fn(\))f(that)i(allo)q(cated)f(large)g(c)o(h)o(unks)h(of)f(memory)e(and)j (then)g(doled)f(out)h(small)d(pieces)k(as)177 2835 y(required)g(b)o(y)f(the)g (rest)h(of)e(the)i(program.)1042 2940 y(29)p eop %%Page: 30 31 30 30 bop 177 42 a Fn(Ha)o(ving)13 b(a)h(pac)o(k)n(age)f(to)h(manage)e(all)h (the)h(memory)e(allo)q(cation)g(had)i(t)o(w)o(o)f(other)h(b)q(ene\014ts.)177 122 y(First,)k(only)f(one)h(c)o(hec)o(k)g(w)o(as)g(required)g(in)f(the)h(en)o (tire)g(program)e(to)h(see)i(if)e(memory)e(had)i(run)h(out)f(\(in)g(the)177 172 y(memory)f(pac)o(k)n(age\),)i(and)g(if)g(that)g(failed,)f(the)i(program)e (could)h(b)q(e)g(brough)o(t)g(to)g(a)g(screaming)g(halt.)30 b(This)177 222 y(organization)20 b(w)o(as)g(far)g(preferable)i(to)e(ha)o (ving)g(eac)o(h)h(piece)g(of)f(co)q(de)i(that)f(needed)h(to)e(allo)q(cate)g (memory)177 272 y(ha)o(ving)13 b(to)h(c)o(hec)o(k)h(to)e(see)i(if)e Fi(malloc)g Fn(had)h(failed.)177 352 y(Second,)21 b(the)f(decision)g(to)f (construct)i(a)f(mini-shell)c(within)j(F)m(unnelW)m(eb)g(to)g(supp)q(ort)i (regression)f(testing)177 402 y(mean)o(t)11 b(that)h(F)m(unnelW)m(eb)g(prop)q (er)h(could)f(b)q(e)g(run)h(man)o(y)d(times)h(in)h(an)o(y)f(giv)o(en)h(in)o (v)o(o)q(cation)f(of)g(F)m(unnelW)m(eb.)17 b(As)177 452 y(a)10 b(consequence)j(it)d(w)o(as)h(necessary)h(to)f(mak)o(e)e(sure)i(that)g(there) g(w)o(as)g(no)f(memory)e(leak)n(age)i(b)q(et)o(w)o(een)i(in)o(v)o(o)q (cations)177 502 y(of)18 b(F)m(unnelW)m(eb)h(prop)q(er.)33 b(This)19 b(w)o(as)g(accomplished)e(b)o(y)i(rew)o(orking)g(the)g(memory)d (pac)o(k)n(age)j(to)f(op)q(erate)i(a)177 551 y(w)o(atermark)12 b(system.)17 b(The)d(user)g(of)e(the)i(pac)o(k)n(age,)e(when)h(requesting)h (memory)m(,)c(could)i(request)j(\\temp)q(orary")177 601 y(or)g(\\p)q(ermanen) o(t".)22 b(If)15 b(p)q(ermanen)o(t,)g(the)h(memory)d(pac)o(k)n(age)i(forgot)f (that)i(it)f(had)g(allo)q(cated)g(the)h(memory)m(.)j(If)177 651 y(temp)q(orary)m(,)12 b(the)i(memory)c(pac)o(k)n(age)j(places)h(the)g (allo)q(cated)f(blo)q(c)o(k)g(on)g(a)g(list.)k(There)d(w)o(as)f(then)h(a)f (function)g(in)177 701 y(the)f(memory)d(pac)o(k)n(age)j(that)f(could)h(b)q(e) g(called)f(to)g(deallo)q(cate)h(all)e(the)i(temp)q(orary)f(memory)m(.)k(Th)o (us,)c(so)h(long)f(as)177 751 y(all)i(requests)j(for)e(memory)d(within)i(F)m (unnelW)m(eb)h(prop)q(er)h(w)o(ere)g(for)e(temp)q(orary)h(memory)m(,)c(and)k (that)g(memory)177 800 y(w)o(as)g(freed)h(at)e(the)i(end)f(of)g(ev)o(ery)g (run,)g(one)g(could)g(b)q(e)g(sure)h(that)f(there)h(w)o(as)f(no)g(memory)d (leak)n(age.)177 981 y Fe(2.7)70 b(The)22 b(Stac)n(k)177 1105 y Fn(F)m(or)13 b(a)f(while)g(during)h(the)g(dev)o(elopmen)o(t)f(of)g(F)m (unnelW)m(eb)g(a)h(particularly)f(nast)o(y)h(bug)f(pro)o(v)o(ed)h(extremely)g (hard)177 1155 y(to)j(\014nd.)26 b(The)17 b(symptom)c(w)o(as)j(that)h(F)m (unnelW)m(eb)f(w)o(ould)f(crash,)i(sometimes)e(at)h(random,)f(but)h(more)g (often)177 1205 y(up)q(on)h(en)o(tering)g(a)g(particular)f(function.)27 b(In)16 b(the)i(end)f(ab)q(out)g(a)f(da)o(y)h(of)f(sp)q(eci\014c)i(debugging) e(w)o(as)h(required)177 1255 y(b)q(efore)e(the)f(problem)e(w)o(as)i(trac)o(k) o(ed)h(do)o(wn)e(to)h(a)f(stac)o(k)h(problem.)j(It)d(turned)g(out)g(that)g (someho)o(w)e(\(either)j(the)177 1305 y(fault)f(of)g(the)i(Macin)o(tosh)e(or) h(the)g(THINK)h(C)e(language)g(system\),)h(only)f(6K)g(w)o(as)h(b)q(eing)g (allo)q(cated)f(for)g(stac)o(k)177 1354 y(space!!!!!!!)177 1435 y(This)f(exp)q(erience)h(led)f(me)e(immediately)e(to)k(go)f(through)g (the)i(en)o(tire)f(program)e(and)h(eliminate)f(\(or)h(remo)o(v)o(e)g(to)177 1485 y(the)j(heap\))f(an)o(y)f(automatic)f(v)n(ariable)h(declarations)h(that) g(used)h(more)e(than)h(one)g(h)o(undred)g(or)g(so)g(b)o(ytes.)177 1565 y(The)g(lesson)g(is)g(clearly)f(that)h(C)f(programs)g(that)g(use)i(more) d(than)i(a)f(few)h(thousand)f(b)o(ytes)i(of)e(stac)o(k)h(space)g(are)177 1615 y(risking)f(their)i(p)q(ortabilit)o(y)m(.)h(All)d(large)h(data)f (structures)j(should)e(b)q(e)h(placed)f(in)f(the)i(heap.)177 1796 y Fe(2.8)70 b(Static)21 b(V)-6 b(ariables)177 1920 y Fn(Static)11 b(v)n(ariables)e(also)h(pro)o(v)o(ed)g(a)g(problem)f(on)i(the)g(Macin)o (tosh.)16 b(It)11 b(turns)g(out)f(that)h(the)g(Macin)o(tosh)f(THINK)h(C)177 1970 y(compiler)g(do)q(es)h(not)g(allo)o(w)e(more)h(than)h(32K)f(of)g (statics)i Fh(in)g(the)g(entir)n(e)f(pr)n(o)n(gr)n(am)p Fn(.)17 b(F)m(or)11 b(a)h(while)f(this)h(restriction)177 2020 y(w)o(as)17 b(a)f(serious)i(threat)g(to)e(the)i(program)d(as)i(it)f(w)o(as)h(disco)o(v)o (ered)h(that)f(constan)o(t)g(strings)g(w)o(ere)h(included)f(in)177 2070 y(this)d(total!)k(Ho)o(w)o(ev)o(er,)c(some)f(searc)o(hing)h(rev)o(ealed) h(a)e(compiler)g(option)g(that)h(remo)o(v)o(ed)f(the)i(strings)f(from)e(the) 177 2119 y(static)i(category)m(.)177 2200 y(Nev)o(ertheless,)k(the)e(32K)g (limit)c(is)k(rather)g(sev)o(ere.)25 b(Again,)15 b(it)g(seems)h(that)f(for)h (p)q(ortabilit)o(y)e(reasons,)i(C)g(pro-)177 2250 y(grams)f(that)h(use)g(a)g (lot)f(of)h(static)g(v)n(ariables)f(are)h(risking)g(their)g(p)q(ortabilit)o (y)m(.)22 b(As)16 b(a)g(result,)h(the)f(F)m(unnelW)m(eb)177 2300 y(co)q(de)f(a)o(v)o(oids)e(static)h(v)n(ariables)f(where)i(p)q(ossible)f (in)g(fa)o(v)o(our)f(of)g(the)h(heap.)177 2480 y Fe(2.9)70 b(Implemen)n(ti)o(ng)20 b(T)-6 b(ext)23 b(Inden)n(tation)177 2605 y Fn(A)o(t)e(one)g(p)q(oin)o(t)f(during)g(the)h(dev)o(elopmen)o(t)f(of)g (F)m(unnelW)m(eb,)h(text)h(inden)o(tation)e(w)o(as)g(fully)g(implem)o(en)o (ted.)177 2654 y(Ho)o(w)o(ev)o(er,)12 b(it)g(w)o(as)g(subsequen)o(tly)h(remo) o(v)o(ed)e(b)q(ecause)i(it)f(w)o(as)g(considered)h(a)f(dangerous)g(feature.) 18 b(This)12 b(section)177 2704 y(records)17 b(the)f(w)o(a)o(y)f(in)g(whic)o (h)h(text)g(inden)o(tation)f(w)o(as)g(implemen)o(ted)e(so)j(that)g(if)e(the)i (feature)h(ev)o(er)f(has)g(to)f(b)q(e)177 2754 y(put)f(bac)o(k,)g(this)g(tec) o(hnique)g(can)h(b)q(e)f(used)h(again.)177 2835 y(1.)j(Create)d(a)e(new)i (\014eld)f(in)f(the)i Fi(sc)p 739 2835 14 2 v 15 w(t)e Fn(record)j(call)d Fi(sc)p 1037 2835 V 15 w(postn)p Fn(.)1042 2940 y(30)p eop %%Page: 31 32 31 31 bop 308 42 a Fi(char)21 b(*sc_postn;)f(/*)h(Pointer)f(in)i(the)f(range) g([sc_first,sc_las)o(t+1].)236 b(*/)657 91 y(/*)21 b(It)g(is)h(the)f(minimum) f(possible)g(value)h(of)h(sc_postn)e(for)108 b(*/)657 141 y(/*)21 b(which)g(EOL)g(does)g(not)g(appear)g(in)g(*sc_postn..*sc_la)o(st.)84 b(*/)657 191 y(/*)21 b(i.e.)g(Points)g(to)g(the)g(byte)g(following)f(the)h (first)g(EOL)g(in)65 b(*/)657 241 y(/*)21 b(the)g(scrap)g(or)g(sc_first)f(if) i(EOL)f(does)g(not)g(appear.)173 b(*/)177 342 y Fn(2.)17 b(Mo)q(dify)10 b(the)i(scanner)h(so)e(that)g(it)g(generates)i(this)e(\014eld.)18 b(Sendtext)12 b(should)f(b)q(e)h(mo)q(di\014ed)e(so)h(that)g(it)g(accepts)177 391 y(an)j(argumen)o(t)f(for)g(the)i Fi(p)p 581 391 14 2 v 15 w(postn)e Fn(v)n(alue.)177 492 y Fi(LOCAL)21 b(void)g(sendtext)f (P_\(\(p_ps_t,char)f(*,char)h(*,char)h(*,bool\)\);)177 542 y(LOCAL)g(void)g(sendtext\(p_tkps,p)o(_firs)o(t,p_l)o(ast,)o(p_pos)o(tn,is)o (_whit)o(e\))177 592 y(/*)h(Appends)e(a)h(text)g(token)g(to)h(the)f(end)g(of) g(the)g(token)g(list.)544 b(*/)177 642 y(/*)22 b(IN:)f(p_ps)g(is)g(a)h (pointer)e(to)h(a)h(position)e(structure)g(giving)h(the)g(position)f(of)h (the)65 b(*/)177 691 y(/*)109 b(first)20 b(character)g(of)i(the)f(token.)914 b(*/)177 741 y(/*)22 b(IN:)f(p_first)f(and)h(p_last)g(point)g(to)g(the)g (first)g(and)g(last)g(byte)g(of)g(the)h(text)e(scrap.)h(*/)177 791 y(/*)h(IN:)f(p_postn)f(has)h(the)g(same)g(definition)f(as)h(sc_postn)g (\(see)g(fwdata.h\).)259 b(*/)177 841 y(/*)22 b(IN:)f(is_white)f(should)g(be) i(set)f(to)g(TRUE)g(iff)g(scrap)g(is)h(entirely)e(whitespace.)150 b(*/)177 891 y(p_ps_t)21 b(p_tkps;)177 941 y(char)43 b(*p_first;)177 990 y(char)g(*p_last;)177 1040 y(char)g(*p_postn;)177 1090 y(bool)65 b(is_white;)177 1140 y({)199 1190 y(tk_t)21 b(token;)199 1289 y(/*)g(Empty)g(text)g(scraps)g(should)f(never)h(be)g(generated.)f(*/)199 1339 y(assert\(p_first<=p)o(_last)o(,"sen)o(dtext)o(:)f(Text)i(scrap)g (bounds)f(are)h(bad."\);)199 1439 y(/*)g(If)h(ch=EOL)e(then)h(we)h(should)e (be)i(scanning)e(more)h(text,)f(not)i(shipping)e(it!)h(*/)199 1488 y(assert\(ch!=EOL,"s)o(entte)o(xt:)e(Shipping)h(text)h(while)f(still)h (more)g(to)h(scan."\);)199 1588 y(/*)f(Check)g(that)g(p_postn)f(is)i(in)f (range.)g(See)g(definition)f(in)h(fwdata.h.)f(*/)199 1638 y (assert\(p_first<=p)o(_post)o(n)f(&&)i(p_postn<=p_last+1,)352 1688 y("sendtext:)e(p_postn)i(is)g(out)g(of)h(range."\);)199 1787 y(/*)f(Debug:)g(Check)g(the)g(p_postn)f(field)h(using)g(a)g(brute)g (force)g(check.)f(*/)199 1837 y({)221 1887 y(char)h(*i,*j;)221 1937 y(j=p_first;)221 1987 y(for)g(\(i=p_first;i<=p_l)o(ast;i)o(++\))286 2036 y(if)h(\(*i==EOL\))352 2086 y(j=i+1;)221 2136 y(assert\(j==p_post)o (n,"se)o(ndtex)o(t:)d(sc_postn)h(field)h(is)g(incorrect."\);)199 2186 y(})199 2286 y(/*)g(Load)g(the)g(text)g(token.)g(*/)199 2335 y(token.tk_kind)172 b(=)21 b(TK_TEXT;)199 2385 y(ASSIGN\(token.tk_p)o (s,*p_)o(tkps\))o(;)199 2435 y(token.tk_sc.sc_fi)o(rst)e(=)i(p_first;)199 2485 y(token.tk_sc.sc_la)o(st)41 b(=)21 b(p_last;)199 2535 y(token.tk_sc.sc_po)o(stn)e(=)i(p_postn;)199 2584 y(token.tk_white)150 b(=)21 b(is_white;)199 2634 y(token.tk_parno)150 b(=)21 b(0;)199 2684 y(ls_add\(token_list)o(,PV)e(&token\);)177 2734 y(})177 2835 y Fn(Then)c(all)d(the)j(calls)e(to)h(sendtext)h(ha)o(v)o(e)f(to)g(b)q(e) g(c)o(hanged:)1042 2940 y(31)p eop %%Page: 32 33 32 32 bop 177 42 a Fi(/*)22 b(@)f(instructs)f(FunnelWeb)g(to)h(replace)g(the) g(special)f(construct)g(with)h(the)g(*/)177 91 y(/*)h(special)e(character.)g (Luckily)g(one)h(appears)f(just)h(before)g(the)g(@)h(!!)108 b(*/)177 141 y(/*)22 b(Note:)e(FALSE)h(is)g(OK)h(because)e(space)h(is)g(not)g (a)h(legal)f(specialch.)150 b(*/)177 191 y(/*)22 b(Note:)e(Setting)h (parameter)f(p_postn)g(to)h(p_ch-1)g(is)g(OK)h(as)f(EOL)g(is)h(not)f(a)g(*/) 177 241 y(/*)152 b(legal)21 b(specialch.)913 b(*/)177 291 y (sendtext\(&ps_spec,)o(p_ch-)o(1,p_c)o(h-1,p)o(_ch-1)o(,FAL)o(SE\);)177 340 y(break;)177 440 y(/*)22 b(+)f(instructs)f(FunnelWeb)g(to)h(insert)g(an)g (EOL.)g(We)h(can't)e(look)h(to)h(the)f(end)g(of)g(*/)177 490 y(/*)h(the)f(previous)f(line)h(to)g(find)g(an)h(EOL)f(as)g(this)g(might)g(be) g(the)g(first)g(line.)64 b(*/)177 540 y(/*)22 b(Running)e(ahead)h(to)g(the)g (end)g(of)h(the)f(line)g(is)g(expensive,)f(and)h(having)g(the)64 b(*/)177 589 y(/*)22 b(liner)e(mini-package)g(maintain)g(a)h(variable)f(for)i (it)f(would)g(be)g(extra)173 b(*/)177 639 y(/*)22 b(housekeeping.)d(Instead)h (of)h(all)h(this,)e(we)i(just)f(point)f(to)i(a)f(static.)151 b(*/)177 689 y({CONST)21 b(static)f(char)h(stateol)g(=)g(EOL;)199 739 y(sendtext\(&ps_spec)o(,&sta)o(teol,)o(&stat)o(eol,\()o(&sta)o(teol\))o (+1,TR)o(UE\);})177 789 y(break;)177 888 y(/*)h(If)f(we)g(hit)g(something)f (that)h(ends)g(a)h(text)f(token)g(*/)177 938 y(/*)h(then)f(we)g(can)g (transmit)f(a)i(white)f(text)g(token.)64 b(*/)177 988 y(if)22 b(\(ch==specialch)c(||)k(ch==EOFCH\))243 1038 y({sendtext\(&ps_s)o(tart,)o (p_fir)o(st,p_)o(ch-1,)o(MAX\()o(p_sol)o(,p_fi)o(rst\),)o(TRUE\))o(;)d (return;})177 1137 y(/*)j(Otherwise)d(we)j(have)f(some)g(more)g (\(non-white\))e(text)i(to)h(scan.)e(*/)177 1187 y(/*)i(We)f(can)g(then)g (send)g(a)h(non-white)e(text)h(token.)303 b(*/)177 1237 y(while)21 b(\(ch!=specialch)e(&&)i(ch!=EOFCH\))243 1287 y(NEXTCH;)177 1337 y(sendtext\(&ps_start)o(,p_fi)o(rst,p)o(_ch-1)o(,MAX\()o(p_so)o(l,p_f)o (irst\))o(,FALS)o(E\);)177 1442 y Fn(The)14 b(dump)f(co)q(de)i(needs)g(to)f (b)q(e)g(c)o(hanged)h(to)q(o!)352 1548 y Fi(wf_str\(p_wf,"\\")o("\);)177 1597 y(assert\(token->tk_s)o(c.sc_)o(first)j(!=NULL,"dm_tkls:)h(NULL)i (ptr1."\);)177 1647 y(assert\(token->tk_s)o(c.sc_)o(last)40 b(!=NULL,"dm_tkls:)19 b(NULL)i(ptr2."\);)177 1697 y(for)g (\(i=token->tk_sc.sc_)o(first)o(;)e(i<=token->tk_sc.s)o(c_las)o(t;)g(i++\)) 221 1747 y({)243 1797 y(if)i(\(i==token->tk_sc.)o(sc_po)o(stn\))308 1846 y(wf_str\(p_wf,""\))o(;)243 1896 y(if)g(\(*i=='\\n'\))308 1946 y(wf_wl\(p_wf,""\);)243 1996 y(else)308 2046 y(dm_byte\(p_wf,*\(\(u)o (byte_)d(*\))k(i\)\);)221 2095 y(})177 2145 y(if)g(\(i==token->tk_s)o(c.sc_)o (postn)o(\))243 2195 y(wf_str\(p_wf,")o("\);)177 2245 y(wf_str\(p_wf,"\\""\);)177 2295 y(})177 2400 y Fn(3.)37 b(Ov)o(er)22 b(in)e(the)h(T)m(angle)e(mo)q(dule,)h(create)i(a)e(massiv)o(e)f (arra)o(y)h(of)g(p)q(oin)o(ters)h(to)f(scraps)i(to)e(b)q(e)h(used)h(as)e(a) 177 2450 y(stac)o(k.)f(Main)o(tain)13 b(p)q(oin)o(ters)h(in)o(to)g(the)g (stac)o(k)h(called)e Fi(current)g Fn(and)h Fh(b)n(ase)g Fn(\(similar)e(to)i (the)g(blank)f(inden)o(tation)177 2500 y(v)n(ariables\).)18 b(Implemen)o(t)11 b(the)k(follo)o(wing:)239 2605 y Fm(\017)21 b Fn(T)m(o)14 b(write)i(out)f(a)g(scrap,)h(scan)f(it)g(b)o(yte)h(b)o(y)f(b)o (yte.)22 b(Output)16 b(eac)o(h)g(b)o(yte.)22 b(When)15 b(y)o(ou)g(hit)g(an)g (EOL,)g(p)q(op)281 2655 y(the)g(stac)o(k)g(bac)o(k)g(to)f Fi(base)p Fn(.)20 b(Then)15 b(write)g(out)g(an)f(EOL)h(follo)o(w)o(ed)e(b)o(y)i(the)g (stac)o(k)g(con)o(ten)o(ts)h(but)f(writing)281 2705 y(eac)o(h)d(scrap)h(only) f(from)e Fi(postn)h Fn(to)h(end)g(end)h(of)e(eac)o(h)i(scrap.)18 b(When)12 b(y)o(ou)g(ha)o(v)o(e)g(\014nished)g(the)h(new)f(scrap,)281 2755 y(push)i(it)g(on)g(the)g(stac)o(k.)239 2835 y Fm(\017)21 b Fn(When)14 b(y)o(ou)f(hit)h(a)g(new)g(macro)f(to)g(expand,)h(sa)o(v)o(e)g Fi(base)p Fn(.)j(Restore)e(it)e(later.)1042 2940 y(32)p eop %%Page: 33 34 33 33 bop 177 42 a Fn(The)14 b Fi(postn)f Fn(\014eld)h(solv)o(es)g(the)h(big) e(problem)g(of)g(ho)o(w)g(to)h(cop)q(e)h(with)e(something)g(lik)o(e)g(this:) 177 158 y Fi(The)21 b(rain)g(in)h(Spain)177 208 y(falls)f(mainly)f(@)177 324 y Fn(The)f(trouble)g(is)f(that)h(w)o(e)g(w)o(an)o(t)f (to)g(text)h(inden)o(t)g(the)g(lines)g(in)f Fi(@)e Fn(with)h(just)h(\\)p Fi(falls)177 374 y(mainly)g Fn(".)31 b(Ho)o(w)o(ev)o(er,)20 b(this)f(string)f(is)g(only)g(part)h(of)f(a)g(scrap.) 33 b(The)19 b(solution)e(is)i(to)f(get)h(the)g(scanner)h(to)177 423 y(record,)c(in)e(the)i Fi(postn)e Fn(\014eld)h(of)f(eac)o(h)h(scrap,)h (the)f(p)q(osition)f(of)h(the)g(\014rst)h(b)o(yte)f(with)g(a)f(EOL-free)i (run)f(to)g(the)177 473 y(end)g(of)e(the)h(scrap.)177 548 y(This)i(sc)o(heme) g(is)g(v)o(ery)h(e\016cien)o(t)f(b)q(ecause)i(all)d(w)o(e)h(are)h(doing)e(is) h(pushing)g(and)g(p)q(opping)f(p)q(oin)o(ters)i(to)f(scraps)177 598 y(on)g(a)g(stac)o(k)h(arra)o(y)m(.)25 b(The)16 b(main)e(disadv)n(an)o (tage)i(is)g(that)g(the)h(arra)o(y)f(m)o(ust)g(necessarily)h(b)q(e)g (\014nite)f(and)h(w)o(ould)177 648 y(imp)q(ose)c(a)h(limit)d(on)i(the)i (depth)f(of)g(inden)o(tation)f(nesting)h(\(not)g(a)g(big)f(problem\).)1042 2940 y(33)p eop %%Page: 34 35 34 34 bop 1042 2940 a Fn(34)p eop %%Page: 35 36 35 35 bop 177 377 a Ff(Chapter)34 b(3)177 609 y Fl(F)-10 b(unnelW)g(eb)41 b(Mo)s(di\014cation)177 875 y Fe(3.1)70 b(In)n(tro)r(duction)177 990 y Fn(This)19 b(c)o(hapter)h(deals)f(with)g(mo)q(di\014cations)e(to)i(F)m (unnelW)m(eb.)33 b(Although)19 b(the)g(GNU)g(license)h(under)g(whic)o(h)177 1040 y(F)m(unnelW)m(eb)10 b(is)h(distributed)h(allo)o(ws)d(an)o(y)o(one)i(to) f(mo)q(dify)f(F)m(unnelW)m(eb)h(and)h(distribute)g(the)g(mo)q(di\014ed)f(v)o (ersions,)177 1090 y(there)15 b(are)f(a)f(n)o(um)o(b)q(er)f(of)h(dangers)h (in)f(doing)g(this.)k(This)d(c)o(hapter)g(explains)f(the)h(dangers)g(and)f (presen)o(ts)j(some)177 1140 y(issues)f(that)f(y)o(ou)g(should)f(think)h(ab)q (out)g(if)f(y)o(ou)g(in)o(tend)h(to)g(distribute)g(mo)q(di\014ed)f(v)o (ersions)h(of)f(F)m(unnelW)m(eb.)177 1301 y Fe(3.2)70 b(The)22 b(Danger)i(of)f(Mo)r(difying)g(Languages)177 1417 y Fn(Whenev)o(er)15 b(someone)e(mo)q(di\014es)g(a)h(computer)f(program)f(they)j(should)e(alw)o(a) o(ys)g(ask)h(themselv)o(es)g(\\what)f(is)h(the)177 1467 y(impact)c(of)h (these)h(c)o(hanges)g(going)f(to)g(b)q(e)h(on)f(users".)18 b(F)m(or)11 b(mature)g(pro)q(ducts,)h(the)g(degree)h(of)e(impact)e(is)j (largely)177 1516 y(determined)17 b(b)o(y)g(the)h(in)o(v)o(estmen)o(t)e(that) i(users)g(ha)o(v)o(e)f(made)f(in)h(particular)g(\014le)g(formats)f(supp)q (orted)i(b)o(y)f(the)177 1566 y(pro)q(duct.)177 1641 y(A)o(t)c(the)g(t)o(w)o (o)g(extremes,)g(there)h(are)f(the)g(video)g(game)e(and)i(the)g(compiler.)j (If)d(one)g(c)o(hanges)g(a)g(video)f(game,)f(the)177 1690 y(c)o(hange)h (a\013ects)g(only)e(the)i(future)g(games)e(pla)o(y)o(ed.)16 b(Ho)o(w)o(ev)o(er,)c(if)e(one)i(c)o(hanges)f(a)g(compiler)f(in)h(particular) g(w)o(a)o(ys,)177 1740 y(it)i(is)f(lik)o(ely)g(that)h(thousands)g(of)g(users) h(will)e(b)q(e)h(forced)h(to)e(c)o(hange)i(milli)o(ons)c(of)j(source)h (\014les)f(to)g(accommo)q(date)177 1790 y(the)f(new)g(v)o(ersion.)17 b(Th)o(us)11 b(the)h(impact)e(of)g(c)o(hanges)i(to)f(a)g(program)f(dep)q (ends)j(largely)d(on)h(the)h(in)o(v)o(estmen)o(t)e(made)177 1840 y(b)o(y)k(users,)h(in)e(source)i(\014les,)f(training,)f(and)g(ev)o(en)i (m)o(uscle)e(memory!)177 1914 y(F)m(unnelW)m(eb)h(lies)h(v)o(ery)g(m)o(uc)o (h)f(at)h(the)g(compiler)f(end)h(of)f(this)h(sp)q(ectrum.)22 b(In)14 b(fact)h(it)g(lies)f(ev)o(en)i(further.)22 b(Not)177 1964 y(only)15 b(do)q(es)h(it)e(implemen)o(t)f(a)i(language,)f(but)h(it)g(is) g(curren)o(tly)h(the)g Fh(only)g Fn(implem)o(en)o(tation)c(of)j(that)g (language!)177 2014 y(This)c(means)g(that,)g(although)g(they)h(shouldn't,)f (p)q(eople)g(will)f(b)q(e)i(tempted)f(to)h(treat)g(the)g(F)m(unnelW)m(eb)e (program)177 2064 y(as)16 b(the)h(de\014nition)e(of)g(its)h(input)g(language) f(instead)h(of)f(the)i(de\014nition)e(c)o(hapter)i(in)e(the)i Fh(F)m(unnelWeb)h(User's)177 2113 y(Manual)p Fn(,)c(whic)o(h)g(tak)o(es)g (precedence)q(.)177 2188 y(Because)f(F)m(unnelW)m(eb)d(de\014nes)i(an)e (input)h(language,)f(and)g(p)q(eople)h(will)f(write)h(programs)e(using)h (that)h(language,)177 2238 y(particular)j(kinds)f(of)h(c)o(hanges)g(in)f(the) i(language)e(will)f(impact)g(sev)o(erely)j(on)f(users.)19 b(Three)c (di\013eren)o(t)g(kinds)e(of)177 2287 y(c)o(hange)h(are)h(discussed)g(b)q (elo)o(w.)295 2362 y Fk(Remo)o(ving)e(features:)k Fn(Remo)o(v)n(al)10 b(of)i(features)i(\(featurectom)o(y\))f(is)g(extremely)g(di\016cult)f(once) 295 2412 y(the)k(user)h(base)f(has)g(started)g(using)g(them.)22 b(If)15 b(a)g(feature)h(is)g(remo)o(v)o(ed,)e(users)j(of)e(the)h(program)295 2461 y(will)11 b(ha)o(v)o(e)h(to)h(go)e(through)i(all)e(their)i(programs)e (and)h(\014nd)h(a)f(w)o(a)o(y)f(to)i(sim)o(ulate)d(the)j(e\013ect)h(of)e(the) 295 2511 y(remo)o(v)o(ed)h(feature)i(with)e(other)h(features.)19 b(Often)c(this)e(is)h(so)g(un)o(think)n(able,)e(that)i(bad)g(language)295 2561 y(constructs)i(are)e(tolerated)h(far)e(b)q(ey)o(ond)i(their)f(useful)g (lifetime.)295 2635 y Fk(Mo)q(difying)k(features:)23 b Fn(Mo)q(di\014cation) 17 b(of)f(features)i(has)g(less)g(direct)g(impact)d(than)i(the)h(re-)295 2685 y(mo)o(v)n(al)12 b(of)i(features,)h(but)g(can)f(cause)i(more)d(subtle)i (errors.)21 b(F)m(or)15 b(example,)d(consider)k(the)f(sorts)295 2735 y(of)d(subtle)i(errors)g(that)f(migh)o(t)d(arise)j(if)f(the)i(seman)o (tics)e(of)g(the)h(F)m(unnelW)m(eb)f(commen)o(t)f Fi(@!)18 b Fn(w)o(ere)295 2785 y(c)o(hanged)i(so)g(that)g(it)f(no)h(longer)f(includes) h(the)h(end)f(of)f(line)g(mark)o(er.)35 b(An)o(y)o(one)20 b(mo)q(difying)295 2835 y(features)15 b(should)f(b)q(e)g(sure)h(that)f(they)h(are)f(not)g(inadv) o(erten)o(tly)g(la)o(ying)e(traps.)1042 2940 y(35)p eop %%Page: 36 37 36 36 bop 295 42 a Fk(Adding)15 b(features:)20 b Fn(Although)14 b(the)i(addition)e(of)h(features)h(is)f(generally)g(the)h(most)e(painless)295 91 y(for)e(the)h(user)g(comm)o(unit)o(y)m(,)c(as)j(Hoare)h(p)q(oin)o(ts)f (out,)g(it)g(is)g(also)f(the)i(most)e(dangerous)i(in)f(the)h(long)295 141 y(run.)343 246 y(\\When)d(an)o(y)f(new)h(language)f(design)h(pro)r(ject)h (is)f(nearing)f(completion,)g(there)i(is)e(alw)o(a)o(ys)g(a)h(mad)281 295 y(rush)h(to)f(get)h(new)g(features)g(added)g(b)q(efore)g (standardization.)16 b(The)11 b(rush)g(is)f(mad)f(indeed,)i(b)q(ecause)281 345 y(it)f(leads)h(in)o(to)f(a)g(trap)h(from)e(whic)o(h)h(there)i(is)e(no)h (escap)q(e.)18 b(A)11 b(feature)g(whic)o(h)g(is)f(omitted)f(can)i(alw)o(a)o (ys)281 395 y(b)q(e)18 b(added)g(later,)g(when)g(its)f(design)h(and)f(its)g (implications)e(are)j(w)o(ell)f(understo)q(o)q(d.)30 b(A)17 b(feature)281 445 y(whic)o(h)c(is)g(included)h(b)q(efore)g(it)f(is)g(fully)f (understo)q(o)q(d)j(can)f(nev)o(er)g(b)q(e)g(remo)o(v)o(ed)e(later.")p Fk([Hoare80])177 549 y Fn(These)17 b(problems)d(exist)h(ev)o(en)h(when)f (there)i(is)e(a)f(cen)o(tral)i(authorit)o(y)m(.)21 b(If)14 b(w)o(e)i(consider)g(the)f(case)h(where)g(there)177 599 y(is)g(no)g(cen)o (tral)h(authorit)o(y)m(,)e(and)h(users)i(mo)q(dify)c(a)i(language)f(and)h (its)g(implemen)o(tations)d(and)j(distribute)h(the)177 649 y(mo)q(di\014ed)h(v)o(ersions,)i(the)g(result)g(is)f(ev)o(en)g(w)o(orse.)34 b(F)m(or)19 b(a)g(start,)h(the)g(structure)h(of)e(the)g(genealogy)g(of)f(the) 177 699 y(program)e(c)o(hanges)j(from)d(a)h(list)h(to)f(a)h(tree.)31 b(This)18 b(mak)o(es)e(it)i(imp)q(ossible)e(to)h(imp)q(ose)g(an)h(ordering)g (on)f(the)177 749 y(di\013eren)o(t)f(v)o(ersions)g(and)g(mak)o(es)e(it)h (di\016cult)f(to)i(merge)f(them)f(once)i(they)g(div)o(erge.)23 b(Second,)16 b(it)f(reduces)i(the)177 798 y(p)q(ortabilit)o(y)f(of)h(\014les) h(created)h(under)g(di\013eren)o(t)f(v)o(ersions.)30 b(Third,)18 b(it)f(mak)o(es)f(adding)h(features)i(hazardous.)177 848 y(If)c(a)g(feature)h (is)f(added)h(in)e(one)i(v)o(ersion,)f(\014les)h(will)e(b)q(e)h(created)i (that)f(use)g(it.)21 b(These)c(\014les)f(will)d(immediately)177 898 y(b)q(ecome)d(non-p)q(ortable.)17 b(F)m(urthermore,)11 b(t)o(w)o(o)f(programmers)e(ma)o(y)g(in)o(tro)q(duce)k(di\013eren)o(t)f (features)g(that)g(use)g(the)177 948 y(same)h(syn)o(tactical)h(constructs,)h (th)o(us)f(prev)o(en)o(ting)g(the)h(t)o(w)o(o)e(v)o(ersions)h(from)e(ev)o(er) j(b)q(eing)f(merged.)k(W)m(orse,)12 b(t)o(w)o(o)177 998 y(programmers)f (could)i(in)o(tro)q(duce)h Fh(similar)e Fn(features)i(that)g(use)g(the)f (same)g(syn)o(tactical)g(constructs,)i(pro)q(ducing)177 1048 y(ev)o(en)g(more)e(subtle)h(problems.)177 1119 y(The)c(only)f(w)o(a)o(y)f(to) i(a)o(v)o(oid)e(all)g(these)j(problems)e(is)g(to)g(create)i(some)e(sort)h(of) e(cen)o(tral)i(design)g(authorit)o(y)m(,)f(\(or,)h(at)f(the)177 1169 y(v)o(ery)j(least,)g(some)f(sort)h(of)g(design)g(sync)o(hronization\))f (that)h(con)o(trols)g(the)h(language)d(and)i(its)g(implemen)o(tati)o(on.)177 1240 y(The)i(b)q(ene\014ts)i(of)d(tigh)o(t)h(con)o(trol)f(o)o(v)o(er)h(the)h (language)e(are)h(enormous.)295 1311 y Fk(Univ)o(ersal)g(p)q(ortabilit)n(y:)k Fn(Source)e(\014les)f(can)g(b)q(e)g(treated)h(as)f(p)q(ortable.)21 b(If)15 b(all)e(the)j(language)295 1361 y(implemen)o(tations)g(in)i(the)h(w)o (orld)e(are)i(singing)f(the)h(same)e(tune,)j(then)f(someone)f(in)g(Sydney)295 1411 y(could)g(send)h(a)f(\014le)h(to)f(someone)f(in)h(New)h(Y)m(ork)f(and)g (b)q(e)g(sure)i(that)e(it)g(will)f(b)q(e)h(successfully)295 1461 y(pro)q(cessed.)295 1532 y Fk(Clear)e(seman)o(tics:)i Fn(Doubt)c(ab)q(out)g(the)h(seman)o(tics)f(of)g(the)h(language)e(will)g(b)q (e)i(greatly)f(mini-)295 1582 y(mized.)k(So)13 b(long)g(as)h(more)f(than)h (one)h(sligh)o(tly)d(di\013ering)i(v)o(ersion)g(of)f(a)h(language)f(exists,)h (there)295 1632 y(will)9 b(b)q(e)j(confusion)e(o)o(v)o(er)g(the)i(seman)o (tics)e(of)g(its)g(constructs.)19 b(A)11 b(go)q(o)q(d)f(example)f(is)i(the)g (confusion)295 1682 y(b)q(et)o(w)o(een)16 b(the)e(A)m(T&T)g(Unix)f(and)h (Berk)o(eley)h(Unix)f(shell)f(languages.)177 1753 y(While)20 b(c)o(hanges)h(to)g(the)g(language)f(supp)q(orted)i(b)o(y)e(a)g(piece)i(of)e (soft)o(w)o(are)h(is)f(the)h(most)f(serious)h(problem)177 1803 y(asso)q(ciated)16 b(with)e(m)o(ultiple)f(v)o(ersions)i(of)f(soft)o(w)o(are,) h(the)g(lesser)h(problem)e(of)g(k)o(eeping)h(trac)o(k)g(of)f(c)o(hanges)i (that)177 1853 y(don't)f(a\013ect)h(the)g(language)e(that)h(the)h(soft)o(w)o (are)g(implem)o(en)o(ts)d(can)j(also)e(cause)j(trouble.)22 b(Merging)15 b(di\013eren)o(t)177 1902 y(v)o(ersions)g(of)f(soft)o(w)o(are)g (is)h(extremely)f(tedious)h(as)f(an)o(y)o(one)g(who)g(has)h(tried)g(it)f (will)f(v)o(erify)m(.)19 b(Ho)o(w)o(ev)o(er,)14 b(c)o(hanges)177 1952 y(not)g(a\013ecting)g(the)g(language)f(are)h(far)f(less)h(serious)h(b)q (ecause)g(they)f(impact)e(only)h(on)h(the)g(program)e(itself,)h(not)177 2002 y(on)h(the)g(far)g(more)f(n)o(umerous)g(source)i(\014les)f(that)g(dep)q (end)i(on)d(it.)177 2159 y Fe(3.3)70 b(Authorit)n(y)23 b(vs)g(User)g(Securit) n(y)177 2272 y Fn(There)16 b(are)f(a)g(n)o(um)o(b)q(er)f(of)g(w)o(a)o(ys)h (of)f(pro)o(viding)f(the)j(strong)f(cen)o(tral)g(design)g(authorit)o(y)f (required)i(to)f(pro)q(duce)177 2322 y(the)g(p)q(ortabilit)o(y)d(and)i(seman) o(tic)f(securit)o(y)i(desired)g(b)o(y)e(users,)239 2426 y Fm(\017)21 b Fn(T)m(rade)d(mark)e(the)i(name)f(of)g(the)i(language.)28 b(Publish)18 b(a)g(sp)q(eci\014cation)g(of)f(the)i(language)e(under)h(the)281 2476 y(trade)c(name.)i(W)m(arn)d(all)f(users)j(not)e(to)g(trust)h(an)o(y)f (implemen)o(tatio)o(n)e(that)i(do)q(es)h(not)f(guaran)o(tee)h(that)f(it)281 2526 y(implemen)o(ts)d(the)j(language.)k(Then)c(con)o(trol)f(implemen)o (tations)d(b)o(y)k(only)e(licensing)i(the)g(trade)g(mark)e(to)281 2576 y(conforming)h(implem)o(en)o(tations.)239 2655 y Fm(\017)21 b Fn(Create)g(a)f(single)g(implemen)o(tation)d(of)j(the)h(language.)36 b(Do)20 b(not)g(release)h(the)g(source)h(co)q(de)f(to)f(the)281 2705 y(implemen)o(tatio)o(n.)15 b(Release)g(only)e(binary)g(executables.)239 2785 y Fm(\017)21 b Fn(Release)14 b(the)f(source)i(co)q(de)f(to)f(the)g (implemen)o(tation,)c(but)14 b(under)g(a)f(license)g(that)h(prohibits)e(the)i (distri-)281 2835 y(bution)f(of)h(mo)q(di\014ed)e(v)o(ersions.)1042 2940 y(36)p eop %%Page: 37 38 37 37 bop 177 42 a Fn(Man)o(y)11 b(other)h(v)n(ariations)e(on)h(these)i (themes)e(are)h(p)q(ossible,)f(but)h(they)f(are)h(all)e(based)i(on)f(the)h (idea)f(of)g(regulating)177 91 y(either)k(the)f(\\o\016cial")e(de\014nition)i (of)f(the)i(language)e(or)g(all)g(of)g(its)h(existing)g(implemen)o(tatio)o (ns.)177 168 y(A)o(t)h(ab)q(out)f(this)h(stage,)g(a)f(con\015ict)h(arises.)21 b(While)14 b(users)i(w)o(an)o(t)f(the)g(language)f(they)h(are)g(using)f(to)h (b)q(e)g(tigh)o(tly)177 217 y(con)o(trolled,)e(they)h(also)f(w)o(an)o(t)g(to) h(feel)f(secure)j(ab)q(out)d(the)h(a)o(v)n(ailabilit)o(y)c(of)j(its)h(implem) o(en)o(tations.)h(If)f(h)o(undreds)177 267 y(of)19 b(source)i(\014les)e(are)h (to)g(b)q(e)g(created)h(in)e(the)h(language,)f(there)i(had)e(b)q(etter)i(b)q (e)f(one)g(or)f(more)f(translators)177 317 y(a)o(v)n(ailable)12 b(when)i(the)h(time)d(comes)i(to)f(use)i(them.)177 393 y(In)g(the)g(case)h (of)e(widely-used)h(programmi)o(ng)d(languages)i(suc)o(h)h(as)g(C,)f(the)i (problem)d(of)h(securing)i(implem)o(en-)177 443 y(tations)c(do)q(es)i(not)e (arise.)18 b(If)12 b(y)o(ou)g(don't)g(get)h(y)o(our)f(compiler)f(from)g (Borland,)h(y)o(ou)g(can)h(get)f(it)h(from)d(Microsoft.)177 493 y(Ho)o(w)o(ev)o(er,)16 b(in)f(the)h(case)g(of)f(a)g(newly)h(in)o(tro)q (duced)g(language)e(suc)o(h)i(as)g(F)m(unnelW)m(eb,)f(there)h(ma)o(y)e(b)q(e) i(v)o(ery)g(few)177 543 y(implemen)o(tations,)g(or)i(ev)o(en)h(just)f(one)h (implemen)o(tatio)o(n,)d(and)i(this)h(p)q(oses)g(a)f(danger)h(to)f(the)h (user)g(who)f(is)177 593 y(committing)10 b(to)j(that)g(format.)j(Despite)d (the)h(b)q(est)g(in)o(ten)o(tions)f(of)f(the)i(cop)o(yrigh)o(t)f(o)o(wner,)g (there)h(are)g(a)e(v)n(ariet)o(y)177 642 y(of)h(w)o(a)o(ys)g(in)f(whic)o(h)h (a)g(computer)g(program)f(can)h(suddenly)h(b)q(ecome)f(una)o(v)n(ailable.)j (Here)e(are)g(some)e(examples:)239 762 y Fm(\017)21 b Fn(If)12 b(the)h(program)e(is)i(o)o(wned)g(b)o(y)f(a)g(compan)o(y)f(and)i(the)g (compan)o(y)e(go)q(es)i(brok)o(e,)g(the)g(liquidators)e(ma)o(y)g(not)281 812 y(b)q(other)k(to)e(place)h(the)h(soft)o(w)o(are)f(in)f(the)i(public)e (domain.)239 898 y Fm(\017)21 b Fn(If)13 b(the)g(program)f(is)h(o)o(wned)g(b) o(y)g(a)g(kindly)f(individual)f(who)i(issues)h(licenses)h(for)e(free,)g(and)g (that)g(individ-)281 948 y(ual)h(suddenly)h(dies,)g(users)i(migh)o(t)12 b(suddenly)k(\014nd)f(themselv)o(es)g(negotiating)f(with)g(hard-nosed)i (estate)281 998 y(executors)g(for)d(the)i(righ)o(ts)e(to)h(con)o(tin)o(ue)g (using)g(the)g(program.)239 1084 y Fm(\017)21 b Fn(If)c(who)q(ev)o(er)h(o)o (wns)g(the)g(program)e(do)q(es)i(not)f(upgrade)h(the)g(program)e(ev)o(ery)i (so)f(often,)h(it)f(is)h(actually)281 1134 y(p)q(ossible)10 b(for)g(the)h(released)g(executables)h(to)e(\\expire")h(when)f(new)h(op)q (erating)f(system)g(upgrades)h(app)q(ear.)177 1254 y(These)16 b(p)q(ossibilities)d(mean)g(that)i(users)g(ab)q(out)g(to)f(in)o(v)o(est)g(in) g(a)g(newly)g(in)o(tro)q(duced)h(programmi)o(ng)c(to)q(ol)j(suc)o(h)177 1304 y(as)j(F)m(unnelW)m(eb)f(ha)o(v)o(e)h(legitimate)d(concerns)19 b(when)e(they)h(w)o(orry)e(ab)q(out)h(the)g(to)q(ol's)f(a)o(v)n(ailabilit)o (y)l(.)24 b(F)m(or)16 b(non-)177 1354 y(commercially)8 b(distributed)k(to)q (ols)f(suc)o(h)g(as)h(F)m(unnelW)m(eb,)e(the)i(simplest)e(solution)g(to)h (this)h(problem)d(is)i(to)g(mak)o(e)177 1404 y(the)i(source)g(co)q(de)g(a)o (v)n(ailable,)c(either)k(b)o(y)f(placing)f(it)g(in)o(to)g(the)i(public)e (domain,)f(or)i(b)o(y)f(releasing)h(it)g(under)h(some)177 1453 y(kind)i(of)f(public)h(license,)g(suc)o(h)h(as)f(a)g(GNU)g(license.)22 b(The)15 b(trouble)g(with)g(releasing)g(the)h(source)g(co)q(de)g(is)f(that) 177 1503 y(it)f(remo)o(v)o(es)g(con)o(trol)g(from)f(the)i(design)g(authorit)o (y)m(.)j(Once)e(the)f(co)q(de)g(is)g(\\out")f(there)h(is)g(no)f(stopping)g (an)o(y)o(one)177 1553 y(from)e(mo)q(difying)f(the)k(program)d(and)i (distributing)f(mo)q(di\014ed)g(v)o(ersions.)18 b(All)13 b(c)o(haos)h(can)g (ensue.)177 1629 y(One)j(solution)d(to)i(this)g(con\015ict)g(is)f(to)h(tak)o (e)f(the)h(trade)h(mark)d(approac)o(h.)23 b(This)16 b(separates)h(the)f(righ) o(t)f(of)g(the)177 1679 y(design)e(authorit)o(y)f(to)h(con)o(trol)f(the)h (language)f(and)g(its)h(implemen)o(tatio)o(ns,)d(and)j(the)g(righ)o(t)f(of)g (the)h(users)h(to)f(use)177 1729 y(the)g(source)i(co)q(de)e(in)f(an)o(y)h(w)o (a)o(y)f(they)h(lik)o(e)f(\(but)h(they)g(ma)o(y)e(ha)o(v)o(e)h(to)h(c)o (hange)g(its)g(name!\).)j(Ho)o(w)o(ev)o(er,)d(the)g(trade)177 1779 y(mark)g(approac)o(h)g(is)h(exp)q(ensiv)o(e.)177 1855 y(The)e(solution)g(that)f(I)h(\(Ross)g(William)o(s)e(\()p Fi (ross@spam.adelaid)o(e.ed)o(u.au)p Fn(\)\))f(ha)o(v)o(e)i(adopted)i(is)e(to)h (release)h(the)177 1905 y(F)m(unnelW)m(eb)k(source)i(co)q(de)f(under)h(a)e (GNU)g(license)i(and)e(then)h(to)f(write)h(this)g(c)o(hapter)g(in)f(the)i Fh(F)m(unnelWeb)177 1955 y(Hacker's)c(Manual)h Fn(to)e(dissuade)h(p)q (ossible)g(hac)o(k)o(ers)h(from)d(releasing)h(mo)q(di\014ed)f(v)o(ersions)j (under)f(the)g(F)m(unnel-)177 2004 y(W)m(eb)e(name.)k(This)d(is)f(ab)q(out)h (as)g(close)g(to)f(the)i(GNU/trademark)d(approac)o(h)i(I)f(can)h(get)g (without)f(forking)g(out)177 2054 y(ab)q(out)e($1200)g(for)g(a)g(US)g (trademark)g(or)g(pa)o(ying)f(ev)o(en)i(more)f(to)g(get)h(a)f(la)o(wy)o(er)g (to)g(attempt)f(to)i(draft)f(a)g(con)o(tract)177 2104 y(stating)j(\\thou)f (shalt)h(not)g(mo)q(dify)d(the)k(F)m(unnelW)m(eb)e(language".)177 2271 y Fe(3.4)70 b(What)23 b(I)g(W)-6 b(an)n(t)24 b(to)f(Protect)177 2389 y Fn(The)13 b(concerns)i(expressed)g(in)d(the)h(previous)g(section)h(ab) q(out)e(mo)q(di\014cations)f(to)i(the)g(F)m(unnelW)m(eb)f(program)f(do)177 2439 y(not)j(preclude)i(mo)q(di\014cations.)i(They)c(merely)g(imply)e(that)i (some)f(conditions)h(b)q(e)h(observ)o(ed)h(when)f(mo)q(di\014ca-)177 2489 y(tions)g(are)g(made.)k(In)c(fact,)g(ha)o(ving)e(formally)f(released)k (the)f(sources)i(under)e(GNU,)f(there)i(is)f(nothing)f(that)h(I)177 2539 y(can)h(do)f(to)h(stop)g(p)q(eople)g(distributing)f(mo)q(di\014ed)f(v)o (ersions)i(and)g(the)g(conditions)f(to)h(b)q(e)g(describ)q(ed)i(m)o(ust)c(b)q (e)177 2588 y(imp)q(osed)f(v)o(olun)o(tarily)m(.)177 2665 y(In)h(the)h(end)f (there)h(are)f(t)o(w)o(o)g(things)g(that)g(I)f(w)o(an)o(t)h(to)g (protect/main)o(tain:)228 2785 y(1.)20 b(Restriction)d(of)g(the)g(name)f(\\F) m(unnelW)m(eb")g(only)g(to)h(computer)g(programs)e(that)i(exactly)h(implem)o (en)o(t)281 2835 y(m)o(y)12 b(\\o\016cial")g(de\014nition)i(of)f(the)h (language.)1042 2940 y(37)p eop %%Page: 38 39 38 38 bop 228 42 a Fn(2.)20 b(Restriction)15 b(of)f(the)h(F)m(unnelW)m(eb)f (source)i(\014le)f(extensions)h(\\)p Fi(.fw)p Fn(")d(\(input)i(\014les\))g (and)f(\\)p Fi(.fwi)p Fn(")g(\(include)281 91 y(\014les\))g(only)f(to)h (source)h(\014les)g(that)f(conform)e(to)i(m)o(y)e(\\o\016cial")g (de\014nition)h(of)h(the)g(language.)177 214 y(So)f(long)e(as)i(these)h (conditions)e(hold,)g(source)i(\014les)f(created)h(under)g(\\F)m(unnelW)m (eb")e(will)f(b)q(e)i(p)q(ortable,)g(and)f(the)177 264 y(language)g(will)g (ha)o(v)o(e)g(the)i(p)q(oten)o(tial)e(to)h(b)q(e)h(stable)f(and)g(w)o (ell-de\014ned.)18 b(Here)c(are)f(m)o(y)e(suggestions)j(for)e(ho)o(w)h(to)177 314 y(ob)q(ey)i(these)i(rules.)22 b(These)16 b(suggestions)g(are)f(in)g (addition)e(to)i(the)h(GNU)f(license)g(rules)h(ab)q(out)f(do)q(cumen)o(ting) 177 363 y(an)o(y)f(c)o(hanges)g(that)g(y)o(ou)g(mak)o(e)e(in)h(the)i(source)g (\014les.)295 441 y Fk(Mo)q(di\014cations)h(that)i(do)g(not)f(a\013ect)i (functional)o(i)o(t)o(y:)h Fn(If)c(y)o(ou)g(c)o(hange)g(the)h(F)m(unnelW)m (eb)295 491 y(program)f(in)i(a)f(manner)g(that)h(do)q(es)g(not)g(a\013ect)h (the)f(functionalit)o(y)e(of)h(the)i(program)d(in)h(an)o(y)295 540 y(w)o(a)o(y)d(\(e.g.)f(p)q(ort)h(it)g(to)g(a)g(new)g(mac)o(hine,)f(or)h (just)g(sp)q(eed)i(it)d(up\),)h(then)h(y)o(ou)e(should)h(mo)q(dify)e(the)295 590 y(program)g(to)h(write)g(out)g(a)g(message)g(when)g(it)g(starts)h(up)f (sa)o(ying)f(that)h(it)g(is)g(a)g(mo)q(di\014ed)f(v)o(ersion)295 640 y(of)i(F)m(unnelW)m(eb.)j(No)d(other)g(actions)g(need)h(b)q(e)g(tak)o (en.)295 717 y Fk(Mo)q(di\014cations)d(that)h(a\013ect)h(functional)o(i)o(t)o (y:)h Fn(If)d(y)o(ou)g(mak)o(e)e(c)o(hanges)k(to)e(F)m(unnelW)m(eb)g(that)295 767 y(a\013ect)g(its)f(functionalit)o(y)f(\(e.g.)g(c)o(hanges)i(to)f(command) e(line)h(options,)h(the)h(command)c(language,)295 817 y(or)13 b(the)h(input)f(language\))g(y)o(ou)f(should)h(c)o(hange)h(the)g(name)e(of)g (the)i(program)e(so)h(that)g(the)h(name)295 867 y(no)h(longer)g(con)o(tains)h (the)g(w)o(ord)f(\\F)m(unnelW)m(eb",)f(and)h(should)g(c)o(ho)q(ose)i (alternativ)o(e)e(input)g(and)295 917 y(include-\014le)d(\014le)g(extensions) g(\(the)h(curren)o(t)g(ones)f(are)g(\\)p Fi(.fw)p Fn(")f(and)g(\\)p Fi(.fwi)p Fn("\).)16 b(F)m(or)c(example,)e(y)o(ou)295 966 y(migh)o(t)g(call)h (y)o(our)g(program)f(\\BananaW)m(eb")h(and)g(use)i(the)f(\014le)g(extensions) g(\\)p Fi(.bw)p Fn(")f(and)g(\\)p Fi(.bwi)p Fn(".)177 1044 y(These)k(rules)f(are)g(not)g(v)o(ery)g(restrictiv)o(e.)19 b(Basically)13 b(y)o(ou)g(can)h(do)f(what)h(y)o(ou)f(lik)o(e)g(so)h(long)e (as)i(y)o(ou)f(c)o(hange)h(the)177 1094 y(name)d(of)g(the)h(resulting)g (program.)k(I)c(do)f(not)h(wish)g(to)g(restrict)h(an)o(y)o(one)e(who)h(migh)o (t)e(w)o(an)o(t)h(to)h(use)g(F)m(unnelW)m(eb)177 1143 y(as)18 b(a)g(foundation)f(for)g(a)h(more)f(sophisticated)h(literate)g(programming)d (system.)30 b(My)17 b(sole)h(aim)e(here)j(is)f(to)177 1193 y(protect)d(the)g(in)o(tegrit)o(y)e(of)g(what)h(already)g(exists.)177 1364 y Fe(3.5)70 b(Mo)r(difying)22 b(the)h(Man)n(uals)177 1483 y Fn(While)15 b(it)h(is)f(p)q(ermitted)h(to)f(mo)q(dify)f(the)i(F)m(unnelW)m (eb)f(program,)g(no)g(license)i(has)f(b)q(een)g(gran)o(ted)h(to)e(mo)q(dify) 177 1533 y(its)h(do)q(cumen)o(tation)f(\()p Fh(The)i(F)m(unnelWeb)h(User's)e (Manual)g Fn(and)g Fh(The)h(F)m(unnelWeb)h(Hacker's)e(Manual)p Fn(\).)25 b(The)177 1583 y(only)12 b(op)q(eration)h(that)f(can)h(b)q(e)h(p)q (erformed)e(on)g(the)i(F)m(unnelW)m(eb)e(do)q(cumen)o(tation)f(is)i(a)f(v)o (erbatim)f(cop)o(y)i(in)f(an)o(y)177 1633 y(medium.)177 1710 y(If)j(y)o(ou)g(ha)o(v)o(e)g(created)i(a)f(mo)q(di\014ed)e(v)o(ersion)h(of)g (F)m(unnelW)m(eb)g(and)g(wish)h(to)f(do)q(cumen)o(t)g(it,)g(either)h(write)g (y)o(our)177 1760 y(o)o(wn)h(man)o(ual)e(from)g(scratc)o(h,)k(or)e(write)g(a) g(man)o(ual)e(that)i(can)g(b)q(e)h(used)g(in)e(conjunction)i(with)e(the)i (existing)177 1809 y(man)o(uals.)177 1980 y Fe(3.6)70 b(Ho)n(w)23 b(Cop)n(yrigh)n(t)g(La)n(w)g(W)-6 b(orks)177 2099 y Fn(In)17 b(order)h(to)f(understand)i(the)f(next)f(section,)i(some)d(understanding)i (of)e(cop)o(yrigh)o(t)h(la)o(w)f(is)h(required.)29 b(The)177 2149 y(assertions)15 b(made)e(in)h(this)h(section)f(are)h(not)f(legal)f (opinions;)g(they)i(are)g(merely)e(appro)o(ximations)f(of)h(the)i(la)o(w,)177 2199 y(based)g(on)e(m)o(y)g(understanding)h(of)f(it.)177 2276 y(By)k(default,)g(who)q(ev)o(er)g(creates)h(a)f Fk(w)o(ork)f Fn(o)o(wns)h Fk(cop)o(yrigh)o(t)c Fn(o)o(v)o(er)k(it.)26 b(This)16 b(means)g(that)h(b)o(y)f(default,)h(that)177 2326 y(p)q(erson)e(is)f(the)g (only)f(p)q(erson)i(in)f(the)g(w)o(orld)g(who)f(has)h(the)h(legal)e(righ)o(t) g(to)h(mak)o(e)e(copies)j(of)e(the)h(w)o(ork.)177 2403 y(Cop)o(yrigh)o(t)g(o) o(v)o(er)h(a)f(w)o(ork)g(usually)g(co)o(v)o(ers)i(all)d(direct)j(deriv)n (ations)e(of)g(this)h(w)o(ork.)20 b(F)m(or)14 b(example,)g(if)f(someone)177 2453 y(o)o(wns)f(the)h(source)h(co)q(de)f(to)f(a)f(computer)h(program)f(then) i(they)f(also)g(o)o(wn)g(an)o(y)f(direct)i(deriv)n(ations)f(suc)o(h)h(as)f (the)177 2503 y(binary)i(executable.)177 2580 y(More)i(than)g(one)f(p)q (erson)i(ma)o(y)c(o)o(wn)i(cop)o(yrigh)o(t)g(o)o(v)o(er)h(a)f(w)o(ork.)23 b(If)15 b(this)g(is)h(the)g(case,)g(then)g(the)g(w)o(ork)g(cannot)177 2630 y(b)q(e)f(copied)f(without)f(the)i(p)q(ermission)e(of)g(all)g(of)g(the)h (p)q(eople)h(o)o(wning)e(the)h(cop)o(yrigh)o(t.)177 2708 y(A)k(p)q(erson)g (\(or)f(group\))g(o)o(wning)g(cop)o(yrigh)o(t)f(o)o(v)o(er)i(a)f(w)o(ork)g (can)g Fk(license)e Fn(the)j(righ)o(t)f(to)g(mak)o(e)f(copies)i(of)e(the)177 2757 y(w)o(ork)e(to)f(an)o(y)o(one)h(he)g(lik)o(es)g(under)h(an)o(y)e (conditions)h(he)g(lik)o(es.)177 2835 y(If)g(a)f(w)o(ork)h(is)g(mo)q (di\014ed,)e(the)i(result)h(is)f(called)f(a)h Fk(deriv)o(ed)f(w)o(ork)p Fn(.)1042 2940 y(38)p eop %%Page: 39 40 39 39 bop 177 42 a Fn(If)13 b(cop)o(yrigh)o(t)g(on)h(a)f(w)o(ork)g(is)g(o)o (wned)h(b)o(y)f Fj(A)h Fn(is)f(the)h(w)o(ork)f(is)h(mo)q(di\014ed)e(b)o(y)h Fj(B)r Fn(,)h(cop)o(yrigh)o(t)f(on)g(the)h(deriv)o(ed)g(w)o(ork)177 91 y(is)g(o)o(wned)g(b)o(y)g(b)q(oth)g Fj(A)g Fn(and)f Fj(B)r Fn(.)177 159 y(Cop)o(yrigh)o(t)j(is)g(not)g(o)o(wnership)h(o)o(v)o(er)f (particular)g(con\014gurations)h(of)f(information,)d(but)k(rather)g(is)f(the) h(righ)o(t)177 209 y(to)d(restrict)i(the)f(cop)o(ying)e(of)h(information)d (deriv)o(ed)k(from)d(particular)i(sources.)21 b(F)m(or)14 b(example,)e(if)i (t)o(w)o(o)f(p)q(eople)177 259 y(p)q(oin)o(t)k(their)g(cameras)g(out)g(a)g (windo)o(w)f(and)h(tak)o(e)g(iden)o(tical)f(photographs,)i(eac)o(h)f(p)q (erson)h(has)g(the)f(righ)o(t)g(to)177 309 y(restrict)e(the)g(cop)o(ying)e (of)g Fh(their)g Fn(photograph)h(regardless)h(of)e(the)h(fact)g(that)g(the)g (other)g(p)q(erson)h(has)f(cop)o(yrigh)o(t)177 359 y(o)o(v)o(er)h(an)f(iden)o (tical)g(photograph.)20 b(In)14 b(the)h(unlik)o(ely)f(ev)o(en)o(t)h(that)f(t) o(w)o(o)g(p)q(eople)h(wrote)g(no)o(v)o(els)g(that)f(w)o(ere)i(letter)177 408 y(for)d(letter)h(iden)o(tical)f(and)g(it)g(could)g(b)q(e)h(pro)o(v)o(en)g (that)f(there)i(w)o(as)e(no)g(con)o(tact)h(b)q(et)o(w)o(een)h(the)f(t)o(w)o (o)f(p)q(eople)g(when)177 458 y(they)e(wrote)h(the)f(no)o(v)o(els,)g(then)g (cop)o(yrigh)o(t)g(la)o(w)f(w)o(ould)g(eac)o(h)h(protect)h(the)f(righ)o(t)g (of)f(eac)o(h)h(p)q(erson)h(to)f(restrict)h(the)177 508 y(cop)o(ying)g(of)h (the)g(no)o(v)o(el)f(originating)f(from)g Fh(them)p Fn(.)18 b(In)13 b(practice,)g(the)h(probabilit)o(y)d(of)h(suc)o(h)i(an)f(ev)o(en)o(t) g(o)q(ccurring)177 558 y(is)i(so)h(lo)o(w)e(that)h(the)h(la)o(w)f(assumes)g (that)g(if)g(t)o(w)o(o)f(w)o(orks)i(are)f(close)h(or)f(iden)o(tical,)g(that)g (there)i(has)e(b)q(een)i(some)177 608 y(information)11 b(in)o(terc)o(hange)k (at)e(some)g(p)q(oin)o(t.)177 676 y(Th)o(us,)f(if)f(I)h(o)o(wn)g(cop)o(yrigh) o(t)f(on)h(computer)f(program)g Fj(X)s Fn(,)h(and)g(I)f(create)j(an)d(iden)o (tical)h(cop)o(y)f(of)h Fj(X)j Fn(called)d Fj(Y)21 b Fn(and)177 726 y(distribute)c(it)f(under)h(the)f(terms)g(of)g(a)g(license)h(agreemen)o (t,)f(then)g(that)h(license)g(agreemen)o(t)e(do)q(es)i(not)f(co)o(v)o(er)177 775 y(the)e(cop)o(y)e Fj(X)s Fn(.)19 b(Once)14 b(the)f(license)h(agreemen)o (t)e(is)h(signed,)g(there)h(is)f(nothing)f(I)h(can)g(do)f(to)h(undo)g(the)g (license;)g Fj(Y)177 825 y Fn(has)h(gone.)k(Ho)o(w)o(ev)o(er,)c(I)g(still)f (ha)o(v)o(e)h(total)f(con)o(trol)g(o)o(v)o(er)h Fj(X)s Fn(.)177 893 y(V)m(ersion)g(2)g(of)f(the)h(GNU)g(General)g(Public)g(License)h(\(under) g(whic)o(h)e(F)m(unnelW)m(eb)h(is)f(released\))j(sp)q(eci\014es)g(\(in)d(a) 177 943 y(n)o(utshell\))e(that)h(soft)o(w)o(are)f(can)g(b)q(e)h(copied)f (freely)g(so)h(long)e(as)h(it)g(is)g(not)g(sold,)f(and)h(that)g(it)g(can)h(b) q(e)f(mo)q(di\014ed)f(and)177 993 y(copied)15 b(freely)h(so)f(long)f(as)h (the)h(mo)q(di\014cations)d(are)i(logged)g(and)g(it)f(is)h(not)g(sold.)21 b(In)15 b(b)q(oth)h(cases,)g(it)f(requires)177 1043 y(that)h(the)h(result)g (of)e(the)i(cop)o(y)f(or)g(mo)q(di\014cation)e(op)q(eration)h(b)q(e)i(copied) f(only)g(under)g(the)h(conditions)f(of)f(the)177 1092 y(license.)177 1160 y(Once)g(a)e(declaration)g(is)g(issued)h(licensing)f(a)g(cop)o(y)g(of)g (a)g(program)e(under)j(GNU)f(license,)h(that)g(license)g(cannot)177 1210 y(b)q(e)h(retracted.)177 1363 y Fe(3.7)70 b(Managemen)n(t)23 b(of)g(the)f(O\016cial)f(F)-6 b(unnelW)g(eb)177 1472 y Fn(I)14 b(in)o(tend)f(to)h(main)o(tain)d(an)i(o\016cial)f(cop)o(y)i(of)f(F)m(unnelW)m (eb)g(and)g(release)i(it)f(under)g(GNU)f(license)i(from)d(time)g(to)177 1522 y(time)h(so)h(that)g(ev)o(ery)o(one)g(can)h(use)f(it.)k(Unfortunately)c (its)g(going)e(to)i(b)q(e)g(a)g(little)f(messy)m(.)177 1590 y(F)m(or)j(a)h(v)n(ariet)o(y)f(of)f(reasons,)j(I)f(w)o(an)o(t)f(to)g(main)o (tain)e(total)i(con)o(trol)g(o)o(v)o(er)g Fh(my)h Fn(cop)o(y)g(of)e(the)j (o\016cial)d(v)o(ersion)h(of)177 1640 y(F)m(unnelW)m(eb.)i(Some)12 b(of)i(the)g(reasons)h(are:)239 1732 y Fm(\017)21 b Fn(If)15 b(it)h(turns)h(out)f(that)g(there)h(is)e(an)h(enormous)f(demand)g(for)h(F)m (unnelW)m(eb)f(\(unlik)o(ely\))g(then)i(I)e(w)o(an)o(t)h(to)281 1782 y(b)q(e)e(able)e(to)h(create)i(a)d(business)j(based)e(on)g(it,)f(or)h (at)g(least)h(b)q(e)f(able)g(to)g(bundle)g(it)g(with)f(other)i(pro)q(ducts.) 281 1832 y(This)g(w)o(ould)g(b)q(e)i(di\016cult)e(if)f(the)j(only)d (up-to-date)i(cop)o(y)g(a)o(v)n(ailable)d(w)o(as)j(a)f(GNU)h(cop)o(y)m(.)k (Note:)h(If)15 b(this)281 1882 y(happ)q(ens,)f(all)f(the)h(GNU)g(releases)i (of)d(F)m(unnelW)m(eb)g(will)g(remain)f(v)n(alid.)239 1958 y Fm(\017)21 b Fn(I)d(w)o(an)o(t)g(to)g(b)q(e)h(able)f(to)g(cop)o(y)g(co)q (de)h(from)d(m)o(y)h(v)o(ersion)h(of)g(F)m(unnelW)m(eb)f(in)o(to)h (commercial)d(pro)q(ducts)281 2008 y(without)e(ha)o(ving)g(to)h(w)o(orry)g (ab)q(out)g(the)g(GNU)g(license.)177 2101 y(The)i(trouble)f(is)h(that)f(\(in) g(m)o(y)f(understanding)h(of)g(cop)o(yrigh)o(t)g(la)o(w\),)f(once)i(a)f(cop)o (y)h(of)e(F)m(unnelW)m(eb)h(has)h(b)q(een)177 2151 y(released)i(under)g(GNU)f (license,)g(then)h(it)e(and)h(an)o(y)f(w)o(orks)h(deriv)o(ed)h(from)d(it)h (fall)g(under)h(GNU)g(license)g(to)q(o.)177 2200 y(This)c(means)g(that)g(if)g (y)o(ou)g(mo)q(dify)e(a)i(GNU)g(release)h(of)f(F)m(unnelW)m(eb)g(and)g(send)h (me)f(y)o(our)g(mo)q(di\014cations,)e(and)177 2250 y(I)18 b(incorp)q(orate)h (them)e(in)o(to)h(m)o(y)e(v)o(ersion,)j(then)g(I)f(no)g(longer)f(o)o(wn)h (cop)o(yrigh)o(t)g(on)g(the)g(v)o(ersion)h(I)f(mo)q(di\014ed.)177 2300 y(Basically)m(,)12 b(if)h(GNU)h(touc)o(hes)h(a)f(w)o(ork,)f(then)h(that) g(cop)o(y)g(is)g(gone)g(forev)o(er.)177 2368 y(My)k(solution)e(to)i(the)g (problem)e(is)h(to)g(k)o(eep)i(a)e(cop)o(y)g(of)g(F)m(unnelW)m(eb)g(that)h (is)f(GNU-clean)g(and)h(only)e(mak)o(e)177 2418 y(mo)q(di\014cations)9 b(to)h(it)h(that)f(are)h(GNU-clean.)17 b(So)11 b(long)e(as)i(m)o(y)e (o\016cial)g(cop)o(y)i(is)f(GNU)g(clean,)h(an)o(y)g(mo)q(di\014cations)177 2468 y(that)j(I)g(mak)o(e)e(m)o(yself)g(will)h(b)q(e)h(GNU)g(clean.)k(The)c (problem)e(comes)i(when)g(someone)f(else)i(mo)q(di\014es)e(the)h(GNU)177 2518 y(v)o(ersion)c(and)f(then)h(w)o(an)o(ts)g(me)e(to)i(incorp)q(orate)g (the)g(mo)q(di\014cations)e(in)o(to)g(m)o(y)g(o\016cial)g(v)o(ersion.)17 b(As)10 b(I)g(understand)177 2567 y(the)h(la)o(w,)f(b)o(y)g(default,)g(the)h (programmer)d(o)o(wns)j(the)g(mo)q(di\014cations)d(\(b)q(ecause)k(he)f(made)e (them\),)h(but)h(the)g(result)177 2617 y(of)h(making)e(the)j(mo)q (di\014cations)d(falls)i(under)h(GNU)f(license.)18 b(What)12 b(I)g(prop)q(ose)i(is)e(that)g(those)h(who)f(w)o(an)o(t)g(their)177 2667 y(mo)q(di\014cations)g(included)i(in)g(the)g(o\016cial)f(cop)o(y)g(of)h (F)m(unnelW)m(eb)f(sign)h(an)f(agreemen)o(t)h(transferring)g(cop)o(yrigh)o(t) 177 2717 y(of)f(the)g(mo)q(di\014cations)f(o)o(v)o(er)h(to)g(me)f(on)h (condition)f(that)h(the)h(result)g(b)q(e)f(released)i(under)f(GNU)f(license)h (within)177 2767 y(a)g(certain)g(time)f(p)q(erio)q(d.)18 b Fk(Figure)c(1)g Fn(demonstrates)g(the)h(pro)q(cess.)177 2835 y(There)g(are)g(t)o(w)o(o)e(main)f(disadv)n(an)o(tages)h(to)h(this)g(sc)o (heme:)1042 2940 y(39)p eop %%Page: 40 41 40 40 bop 221 91 a Fi(+---------->----)o(-----)o(-+---)o(-----)o(-----)o (-<--)o(-----)o(-----)o(-+)221 141 y(|\(modifications)18 b(by)87 b(|)610 b(|)221 191 y(|)21 b(me\))370 b(V)610 b(|)221 241 y(|)109 b(+--------------)o(-----)o(-----)o(-----)o(----)o(-+)193 b(|)221 291 y(+--<--|)42 b(My)21 b(Official)f(Copy)h(of)h(FunnelWeb)63 b(|)196 b(|)352 340 y(|)65 b(Copyright)20 b(\(C\))h(Ross)g(Williams)85 b(|)196 b(|)352 390 y(+--------------)o(-----)o(-----)o(-----)o(----)o(-+)d (|)700 440 y(|)22 b(\(Periodic)e(releases\))150 b(/)22 b(\\)700 490 y(V)567 b(/)65 b(\\)43 b(Programmers)482 540 y(+------------------)o(+) 346 b(/Legal\\)20 b(sign)h(away)482 589 y(|)h(GNU)f(Release)f(Copy)h(|)349 b(\\Filte/)20 b(copyright)g(on)482 639 y(+------------------)o(+)368 b(\\)21 b(r)h(/)43 b(modifications)700 689 y(|)588 b(\\)22 b(/)700 739 y(|)g(\(Modifications)d(made)i(by)108 b(|)700 789 y(V)44 b(random)20 b(programmers\))f(--->--+)460 839 y(+-------------------)o (----+)460 888 y(|)j(Modified)e(GNU)h(Version)43 b(|)460 938 y(+-------------------)o(----+)343 1079 y Fb(Once)13 b(a)f(w)o(ork)h(is)g (released)e(under)g(GNU)i(license,)f(all)g(deriv)o(ed)f(w)o(orks)h(fall)g (under)g(GNU)h(license.)18 b(Ho)o(w)o(ev)o(er,)281 1129 y(this)9 b(diagram)f(sho)o(ws)i(ho)o(w)g(cop)o(yrigh)o(t)d(can)i(b)q(e)h(main)o (tained)d(o)o(v)o(er)i(a)h(w)o(ork,)g(while)f(still)g(making)f(it)i(a)o(v)n (ailable)e(under)281 1179 y(GNU)14 b(license.)19 b(Unfortunately)m(,)11 b(this)i(sc)o(heme)e(requires)h(that)g(cop)o(yrigh)o(t)f(on)i(mo)q (di\014cati)o(ons)d(to)j(F)m(unnelW)m(eb)f(b)q(e)281 1229 y(signed)e(o\013)h (b)o(y)g(the)g(p)q(eople)e(who)j(mak)o(e)e(the)h(mo)q(di\014catio)o(ns.)453 1320 y Fk(Figure)j(1)p Fn(:)k(Ho)o(w)13 b(I)h(am)e(going)h(to)h(main)o(tain)d (cop)o(yrigh)o(t)i(o)o(v)o(er)h(F)m(unnelW)m(eb.)228 1453 y(1.)20 b(Getting)15 b(eac)o(h)i(p)q(erson)g(who)e(con)o(tributes)i(mo)q (di\014cations)d(to)i(F)m(unnelW)m(eb)g(to)f(sign)h(and)g(send)g(a)g(piece) 281 1503 y(of)d(pap)q(er)i(signing)e(a)o(w)o(a)o(y)f(cop)o(yrigh)o(t)i(will)e (b)q(e)j(tedious.)228 1580 y(2.)20 b(Programmers)14 b(ma)o(y)g(b)q(e)j (reluctan)o(t)f(to)g(sign)g(a)o(w)o(a)o(y)e(cop)o(yrigh)o(t)i(on)g(mo)q (di\014cations)e(b)q(ecause)j(the)g(result)281 1630 y(could)e(b)q(e)h(used)g (b)o(y)f(me)f(for)h(commercial)d(purp)q(oses)17 b(b)o(y)e(me)f(at)h(a)g (later)h(date)f(\(Note:)21 b(But)16 b(it)f(m)o(ust)f(b)q(e)281 1679 y(released)h(under)g(GNU)f(as)f(w)o(ell\).)177 1774 y(These)18 b(disadv)n(an)o(tages)d(are)i(regrettable)g(consequences)i(of)c(m)o(y)g (decision)h(to)g(retain)g(total)f(con)o(trol)h(o)o(v)o(er)g(the)177 1824 y(\\o\016cial")c(v)o(ersion)i(of)f(F)m(unnelW)m(eb.)177 1893 y(The)h(upshot)h(of)e(all)g(this)h(is)f(that:)239 1988 y Fm(\017)21 b Fn(I)12 b(will)e(nev)o(er)i(allo)o(w)f(an)o(y)g(co)q(de)h (from)e(a)i(GNU)f(release)i(of)e(F)m(unnelW)m(eb)g(to)h(touc)o(h)g(m)o(y)e (o\016cial)g(cop)o(y)m(.)17 b(Only)281 2038 y(mo)q(di\014cations)12 b(will)g(b)q(e)j(acceptable.)239 2115 y Fm(\017)21 b Fn(If)e(y)o(ou)g(mak)o (e)f(a)h(mo)q(di\014cation)e(to)j(F)m(unnelW)m(eb)f(and)g(send)h(it)f(to)h (me)e(for)h(inclusion)g(in)g(the)h(o\016cial)281 2165 y(v)o(ersion,)d(I)f (will)g(not)g(incorp)q(orate)h(y)o(our)g(mo)q(di\014cation)d(un)o(til)i(I)h (ha)o(v)o(e)f(receiv)o(ed)i(a)e(signed)h(declaration)281 2214 y(transferring)11 b(cop)o(yrigh)o(t.)17 b(I)11 b(will)e(prepare)k(suc)o(h)e (a)g(con)o(tract)h(when)f(the)h(\014rst)f(p)q(erson)h(sends)g(me)e(a)h(w)o (orth)o(y)281 2264 y(mo)q(di\014cation!)239 2341 y Fm(\017)21 b Fn(If)12 b(y)o(ou)g(in)o(tend)h(to)f(mak)o(e)f(c)o(hanges)i(to)g(F)m (unnelW)m(eb)f(that)g(are)h(so)g(massiv)o(e)e(that)i(they)g(will)e(in)o(v)o (olv)o(e)g(wide-)281 2391 y(scale)i(mo)q(di\014cation)e(of)h(the)i(source)g (\014les,)f(and)g(y)o(ou)f(w)o(an)o(t)h(the)g(mo)q(di\014cation)e(to)i(b)q(e) g(part)g(of)g(the)g(o\016cial)281 2441 y(v)o(ersion,)j(it)g(migh)o(t)e(b)q(e) j(a)f(go)q(o)q(d)f(idea)h(to)g(con)o(tact)h(me)e(b)q(efore)i(doing)e(so.)25 b(There)17 b(are)f(t)o(w)o(o)g(reasons)h(for)281 2491 y(doing)11 b(this.)18 b(First,)12 b(it)g(allo)o(ws)f(me)h(a)g(c)o(hance)h(to)f(commen)o (t)e(on)i(y)o(our)h(prop)q(osed)g(mo)q(di\014cations)d(and)i(giv)o(e)281 2540 y(m)o(y)i(opinion)g(on)i(whether)h(they)f(are)g(lik)o(ely)e(to)i(b)q(e)g (incorp)q(orated)g(in)o(to)f(the)i(o\016cial)d(v)o(ersion.)23 b(Second,)281 2590 y(I)16 b(can)f(send)i(y)o(ou)e(a)g(cop)o(y)h(\(under)h(sp) q(ecial)e(license\))i(of)e(the)h(GNU-clean)g(o\016cial)e(v)o(ersion)i(to)f(w) o(ork)g(on.)281 2640 y(This)f(will)e(allo)o(w)g(y)o(ou)i(to)g(ship)f(bac)o(k) h(y)o(our)g(c)o(hanges)h(as)e(\014les)i(rather)f(than)g(as)g(c)o(hange)h (sections.)177 2735 y(As)h(a)g(separate)h(p)q(oin)o(t)e(from)f(the)i(legal)f (issues,)h(I)g(am)e(lik)o(ely)g(to)i(turn)g(out)g(to)f(b)q(e)i(prett)o(y)f (pic)o(ky)f(ab)q(out)h(what)177 2785 y(mo)q(di\014cations)10 b(I)j(will)d(incorp)q(orate)j(in)o(to)e(the)i(o\016cial)e(cop)o(y)m(.)17 b(Whether)c(a)f(mo)q(di\014cation)e(will)h(b)q(e)h(accepted)i(will)177 2835 y(dep)q(end,)h(amongst)d(other)j(things,)e(on)h(the)g(follo)o(wing)d (criteria.)1042 2940 y(40)p eop %%Page: 41 42 41 41 bop 239 42 a Fm(\017)21 b Fn(Do)q(es)11 b(the)g(mo)q(di\014cation)e (\014t)i(in)f(with)h(the)g(design)g(goals)f(of)g(F)m(unnelW)m(eb,)h(or)f(is)h (it)f(just)h(a)g(case)h(of)e(creeping)281 91 y(featurism?)239 174 y Fm(\017)21 b Fn(Ho)o(w)13 b(w)o(ell)h(co)q(ded)g(is)g(the)h(mo)q (di\014cation?)h(W)m(ould)c(it)i(reduce)h(the)g(qualit)o(y)d(of)h(the)i(co)q (de?)239 257 y Fm(\017)21 b Fn(If)14 b(the)i(mo)q(di\014cation)d(c)o(hanges)i (F)m(unnelW)m(eb's)g(functionalit)o(y)m(,)d(is)j(this)g(a)g(desirable)g(c)o (hange?)22 b(Ho)o(w)14 b(will)281 307 y(it)f(impact)g(on)g(existing)h(users?) 239 390 y Fm(\017)21 b Fn(W)m(ould)13 b(it)g(b)q(e)i(quic)o(k)o(er)f(for)g (me)f(to)h(mak)o(e)f(the)h(mo)q(di\014cation)e(m)o(yself)h(than)h(to)g(w)o (ork)f(out)h(ho)o(w)g(to)g(incor-)281 440 y(p)q(orate)g(the)h(submitted)e(mo) q(di\014cation?)177 556 y(It)g(is)f(m)o(y)f(goal)h(to)g(guard)h(the)g(in)o (tegrit)o(y)f(of)g(the)h(design)g(and)f(co)q(de)i(of)e(the)h(o\016cial)e(v)o (ersion)i(of)f(F)m(unnelW)m(eb)g(and)177 606 y(so)h(I)g(will)e(probably)h(b)q (e)h(rather)h(fussy)f(ab)q(out)f(what)h(I)f(regard)i(as)e(a)h(w)o(orth)o (while)f(mo)q(di\014cation.)j(I)e(do)f(not)h(wish)177 656 y(to)h(lose)g(con)o (trol)f(of)h(the)g(co)q(de,)g(either)h(tec)o(hnically)f(or)g(legally)m(.)177 818 y Fe(3.8)70 b(A)23 b(GNU)f(V)-6 b(ersion?)177 934 y Fn(The)18 b(con)o(trols)f(on)f(the)i(o\016cial)d(v)o(ersion)i(of)g(F)m(unnelW)m(eb)f (describ)q(ed)j(in)d(the)i(previous)f(section)h(will)d(ha)o(v)o(e)i(at)177 984 y(most)d(a)h(minor)e(impact)h(on)h(F)m(unnelW)m(eb)g(dev)o(elopmen)o(t)f (if)h(F)m(unnelW)m(eb)f(already)h(serv)o(es)i(the)f(needs)g(of)f(most)177 1034 y(of)k(its)h(users.)36 b(Ho)o(w)o(ev)o(er,)21 b(if)e(it)g(turns)h(out)g (that)f(F)m(unnelW)m(eb)g(is)h(b)q(oth)g(p)q(opular,)g Fh(and)g Fn(needs)h(widespread)177 1083 y(mo)q(di\014cations)13 b(and)h(enhancemen)o (ts,)h(then)g(the)g(o\016cial)e(feedbac)o(k)i(lo)q(op)e(describ)q(ed)j(in)e (the)h(previous)g(section)177 1133 y(will)e(b)q(ecome)g(un)o(w)o(ork)n(able,) g(and)h(there)h(will)d(b)q(e)j(a)e(GNU)h(break)o(out.)177 1208 y(A)g Fk(GNU)i(break)o(out)c Fn(will)g(o)q(ccur)j(if)e(F)m(unnelW)m(eb)g (users)j(b)q(ecome)d(organized)h(enough)g(and)g(anno)o(y)o(ed)g(enough)177 1258 y(\(at)20 b(the)h(o\016cial)d(dev)o(elopmen)o(t)h(cycle\))i(to)f(start)g (main)o(taining)d(a)j(coheren)o(t)h(v)o(ersion)f(of)f(F)m(unnelW)m(eb)h(that) 177 1307 y(div)o(erges)f(from)d(the)j(o\016cial)e(v)o(ersion.)31 b(If)18 b(a)g(GNU)g(break)o(out)g(o)q(ccurs,)i(I)e(w)o(ould)g(appreciate,)h (as)g(requested)177 1357 y(earlier,)14 b(that)g(a)f(di\013eren)o(t)i(name)e (and)h(\014le)f(extensions)i(b)q(e)g(c)o(hosen)g(for)e(the)i(div)o(erging)e (v)o(ersion.)177 1519 y Fe(3.9)70 b(Summary)177 1635 y Fn(Decen)o(tralized)21 b(mo)q(di\014cations)d(to)i(a)f(programming)d(language)j(and)h(its)g (implemen)o(tatio)o(ns)e(can)i(seriously)177 1685 y(damage)12 b(the)i(language's)f(p)q(ortabilit)o(y)f(and)i(seman)o(tic)e(clarit)o(y)m(.) 17 b(Unfortunately)m(,)c(there)i(is)e(a)g(tension)h(b)q(et)o(w)o(een)177 1735 y(cen)o(tralizing)c(con)o(trol)g(of)f(a)h(programmi)o(ng)d(language)i (and)h(pro)o(viding)f(source)i(co)q(de)g(securit)o(y)g(to)f(nerv)o(ous)h (users.)177 1785 y(In)k(F)m(unnelW)m(eb,)e(this)i(trade-o\013)g(has)g(b)q (een)g(resolv)o(ed)g(to)g(some)e(exten)o(t)j(b)o(y)e(releasing)h(the)g (source)h(co)q(de)f(along)177 1835 y(with)h(a)g(request)i(that)e(if)g(the)g (functionalit)o(y)f(of)h(the)h(program)d(is)i(mo)q(di\014ed,)f(that)i(the)g (program's)d(name)h(b)q(e)177 1884 y(c)o(hanged)d(and)g(a)f(di\013eren)o(t)i (\014le)e(extension)i(b)q(e)f(c)o(hosen)h(for)e(input)h(\014les)g(created)h (under)f(the)h(mo)q(di\014ed)d(program.)177 1934 y(The)k(author)g(of)f(F)m (unnelW)m(eb)g(has)g(decided)i(to)e(main)o(tain)e(an)i(o\016cial)g(v)o (ersion)g(of)g(F)m(unnelW)m(eb)g(o)o(v)o(er)h(whic)o(h)f(he)177 1984 y(will)h(o)o(wn)h(cop)o(yrigh)o(t,)g(but)h(whic)o(h)f(he)h(will)e (release)j(under)f(GNU)f(license)i(from)c(time)h(to)i(time.)21 b(This)16 b(means)177 2034 y(that)g(cop)o(yrigh)o(t)f(on)h(all)e(c)o(hanges)j (to)e(F)m(unnelW)m(eb)h(m)o(ust)e(b)q(e)j(signed)f(o)o(v)o(er)f(to)h(the)g (author)g(b)q(efore)h(they)f(ha)o(v)o(e)177 2084 y(a)g(c)o(hance)i(of)e(b)q (eing)h(incorp)q(orated)g(in)f(the)h(o\016cial)e(v)o(ersion.)27 b(Finally)m(,)14 b(it)j(is)f(p)q(ossible)h(that)g(this)f(reluctance)177 2133 y(of)e(the)h(author)f(to)g(remo)o(v)o(e)f(his)h(cop)o(yrigh)o(ted)h(v)o (ersion)f(from)e(the)j(dev)o(elopmen)o(t)e(cycle)i(of)f(the)h(o\016cial)e(v)o (ersion)177 2183 y(will)e(result)j(in)e(a)g(GNU)h(break)o(out)g(in)f(whic)o (h)g(a)h(div)o(erging)e(GNU)i(v)o(ersion)f(of)h(F)m(unnelW)m(eb)f(will)f(b)q (e)i(main)o(tained)177 2233 y(b)o(y)h(the)g(GNU)g(comm)o(unit)o(y)m(.)h(The)f (author)g(hop)q(es)h(this)f(w)o(on't)f(b)q(e)i(necessary)h(and)e(requests,)h (if)e(this)h(happ)q(ens,)177 2283 y(that)g(the)h(div)o(erging)e(GNU)g(v)o (ersion)h(b)q(e)h(renamed.)1042 2940 y(41)p eop %%Page: 42 43 42 42 bop 1042 2940 a Fn(42)p eop %%Page: 43 44 43 43 bop 177 376 a Ff(Chapter)34 b(4)177 607 y Fl(F)-10 b(unnelW)g(eb)41 b(F)-10 b(uture)177 847 y Fn(Previous)13 b(c)o(hapters)h(ha)o(v)o(e)f (explained)f(the)h(design)g(of)f(F)m(unnelW)m(eb)g(and)h(giv)o(en)f(reasons)i (for)e(wh)o(y)g(it)h(is)f(the)h(w)o(a)o(y)177 897 y(it)i(is.)24 b(This)15 b(c)o(hapter)i(go)q(es)f(through)g(eac)o(h)g(of)f(the)i(asp)q(ects) g(of)e(F)m(unnelW)m(eb,)g(and)h(explores)g(their)g(problems,)177 946 y(ho)o(w)e(they)g(can)g(b)q(e)h(solv)o(ed,)e(and)h(lists)f(opp)q (ortunities)i(for)e(impro)o(v)o(emen)o(t.)177 1107 y Fe(4.1)70 b(Do)r(cumen)n(tation)177 1221 y Fk(An)12 b(o\016cial)f(example:)16 b Fn(A)11 b(o\016cial)e(example)h(program)f(written)j(using)e(F)m(unnelW)m (eb)h(should)f(b)q(e)i(constructed)177 1271 y(and)i(made)f(a)o(v)n(ailable.) 177 1344 y Fk(Index)20 b(program:)26 b Fn(In)19 b(order)f(to)h(t)o(yp)q(eset) g(the)g(do)q(cumen)o(tation,)f(a)g(p)q(ortable)g(index)g(sorting)g(program)f (is)177 1394 y(required.)31 b(One)19 b(should)e(b)q(e)i(written)f(and)g (added)g(to)g(the)g(distribution)g(kit.)29 b(P)o(erhaps)19 b(this)f(could)g(b)q(e)g(the)177 1444 y(o\016cial)13 b(example!)177 1604 y Fe(4.2)70 b(Command)22 b(Line)g(In)n(terface)177 1719 y Fk(Bu\013er)14 b(length:)i Fn(Curren)o(tly)d(the)h(F)m(unnelW)m(eb)e(shell) h(uses)i(the)e Fi(COMLINE)p 1368 1719 14 2 v 15 w(MAX)f Fn(constan)o(t)h(to)g (size)h(its)f(in)o(ternal)177 1768 y(command)h(line)h(bu\013ers.)27 b(This)16 b(is)g(un)o(tenable.)25 b(The)17 b(maxim)n(um)12 b(length)k(of)g(a)g(shell)g(command)d(line)j(should)177 1818 y(not)e(b)q(e)g(mac)o(hine)f(dep)q(enden)o(t.)177 1892 y Fk(An)o(tiquated)h (F)l(eatures:)k Fn(As)d(the)g(F)m(unnelW)m(eb)e(language)h(dev)o(elops,)g(it) g(is)g(lik)o(ely)f(that)i(some)e(c)o(hanges)i(will)177 1941 y(ha)o(v)o(e)g(to)g(b)q(e)h(made)d(that)i(will)f(render)j(one)e(or)g(more)f (language)g(constructs)j(obsolete.)22 b(When)15 b(this)g(happ)q(ens,)177 1991 y(it)e(ma)o(y)d(b)q(e)k(necessary)h(to)d(add)h(a)g(command)d(line)i (option)g(that)h(has)g(the)g(p)q(o)o(w)o(er)g(to)g(turn)g(on)g(and)f(o\013)h (w)o(arnings)177 2041 y(or)h(errors)h(\015agging)e(an)o(tiquated)g(features.) 177 2201 y Fe(4.3)70 b(Shell)21 b(In)n(terpreter)177 2316 y Fk(SET)l(ALL)f(command:)25 b Fn(When)17 b(writing)g(F)m(unnelW)m(eb)g (scripts,)i(it)e(is)h(sometimes)e(desirable)i(to)f(set)h Fh(al)r(l)f Fn(of)177 2366 y(F)m(unnelW)m(eb's)f(options)h(to)f(some)g(particular)h(v)n (alue)f(so)h(that)f(the)i(script)f(is)g(not)f(vulnerable)h(to)g(c)o(hanges)g (in)177 2415 y(F)m(unnelW)m(eb's)e(default)h(v)n(alues)f(whic)o(h)h(migh)o(t) e(o)q(ccur)i(from)e(time)h(to)h(time.)22 b(T)m(o)15 b(this)h(end,)g(it)g(ma)o (y)d(b)q(e)k(w)o(orth)177 2465 y(creating)c(a)f(\\)p Fi(SETALL)p Fn(")f(command)f(that)i(is)h(iden)o(tical)e(to)i(the)g(\\)p Fi(SET)p Fn(")e(command)f(except)k(that)e(it)g(will)f(generate)177 2515 y(an)j(error)h(if)e(the)h(v)n(alue)f(of)h(an)f(option)g(is)h(not)g(sp)q (eci\014ed)h(explicitly)m(.)177 2588 y Fk(Recursion)f(test:)j Fn(A)d(test)h(should)f(b)q(e)g(added)h(to)e(test)i(for)f(recursiv)o(e)h(in)o (v)o(o)q(cation)e(in)g(a)h(shellscript.)177 2662 y Fk(Diagnostic)e(coun)o (ting:)j Fn(The)e(co)q(de)g(for)f(coun)o(ting)g(diagnostics)h(in)f(the)h (script)g(in)o(terpreter)h(is)f(rather)g(messy)177 2711 y(and)h(p)q(erhaps)h (ev)o(en)f(buggy)m(.)k(It)13 b(should)h(b)q(e)h(cleaned)f(up)g(and)g(commen)o (ted.)177 2785 y Fk(Argumen)o(t)i(coun)o(ting:)j Fn(In)c(the)h Fi(command.c)e Fn(mo)q(dule,)g(there)j(is)e(a)g(v)n(ariable)g(that)g(coun)o (ts)h(the)h(argumen)o(ts)177 2835 y(to)d(a)g(command.)j(Curren)o(tly)d(it)g (tak)o(es)h(the)g(v)n(alue)e(of)h(the)h(n)o(um)o(b)q(er)e(of)h(parameters)g (including)g(the)h(command)1042 2940 y(43)p eop %%Page: 44 45 44 44 bop 177 42 a Fn(v)o(erb.)19 b(This)13 b(has)g(turned)i(out)e(to)g(mak)o (e)f(the)i(co)q(de)g(less)h(readable.)j(It)13 b(should)g(b)q(e)h(c)o(hanged)g (to)f(b)q(e)h(the)g(n)o(um)o(b)q(er)177 91 y(of)f(argumen)o(ts)h(to)f(the)i (command)c(v)o(erb.)177 168 y Fk(Mak)o(e)k(facilit)o(y:)h Fn(It)d(ma)o(y)e(b) q(e)i(w)o(orth)g(building)f(some)g(sort)h(of)f(mak)o(e)g(facilit)o(y)f(in)o (to)h(the)i(script)g(language)e(so)h(as)177 218 y(to)h(supp)q(ort)h(mac)o (hines)e(suc)o(h)h(as)g(the)h(Macin)o(tosh)f(that)f(do)h(not)g(already)f(ha)o (v)o(e)h(this)g(facilit)o(y)m(.)177 295 y Fk(Signature)d(\014le:)17 b Fn(One)c(problem)f(with)g(using)g(F)m(unnelW)m(eb)g(in)g(conjunction)g (with)h(an)f(external)h Fi(Make)e Fn(facilit)o(y)177 345 y(is)k(that)h(a)f (user)h(migh)o(t)d(c)o(hange)j(a)f(F)m(unnelW)m(eb)g(source)h(\014le)g (without)f(making)e(c)o(hanges)j(that)f(will)f(a\013ect)i(the)177 395 y(\014les)g(that)f(it)f(generates.)24 b(If)14 b(F)m(unnelW)m(eb)h(is)g (then)h(run)f(and)g(the)h(\\)p Fi(+D)p Fn(")e(option)g(is)h(on,)g(then)g(the) h(output)f(\014les)177 445 y(will)g(b)q(e)i(deleted)h(\(to)f(a)o(v)o(oid)e (further)i Fi(Make)f Fn(propagations\).)25 b(If)17 b Fi(Make)e Fn(then)i(has)g(a)f(pro)q(duction)h(linking)e(the)177 495 y Fi(.fw)d Fn(\014le)h(to)g(its)g(output)g(\014les,)g(then)g(it)g(ma)o(y)e (conclude)i(that)g(the)g(output)g(\014les)h(are)f(still)f(out)h(of)f(date.)18 b(T)m(o)12 b(solv)o(e)177 544 y(the)17 b(problem,)e(F)m(unnelW)m(eb)h(could)h (b)q(e)g(c)o(hanged)f(to)h(write)f(a)g Fi(.sig)g Fn(\014le)g(whenev)o(er)i (it)e(pro)q(cesses)j(a)e Fi(.fw)e Fn(\014le.)177 594 y(The)g Fi(Make)e Fn(pro)q(duction)h(could)f(then)i(b)q(e)f(wired)h(up)f(to)f(link)g (the)i Fi(.fw)e Fn(\014le)h(to)g(the)g Fi(.sig)f Fn(\014le)h(instead)g(of)f (to)h(the)177 644 y(output)g(\014les.)177 814 y Fe(4.4)70 b(Language)24 b(Design)177 933 y Fn(Some)13 b(prop)q(osed)i(c)o(hanges)g(to)f(F)m(unnelW)m (eb)f(do)h(not)g(corresp)q(ond)i(to)e(an)o(y)f(particular)h(comp)q(onen)o(t)g (of)f(F)m(unnel-)177 983 y(W)m(eb)h(and)f(are)i(really)e(to)h(do)f(with)h (the)g(design)h(of)e(the)h(input)g(language.)177 1060 y Fk(Output)c(or)h (\014le?:)16 b Fn(The)11 b(\\)p Fi(@O)p Fn(")e(sp)q(ecial)i(sequence)i(for)d (de\014ning)h(an)f(output)h(\014le)g(is)f(somewhat)g(non-mnemoni)o(c)177 1110 y(and)k(can)g(b)q(e)g(confused)h(with)f(zero)h(\(\\)p Fi(0)p Fn("\).)i(P)o(erhaps)e(it)e(should)h(b)q(e)h(replaced)g(b)o(y)e(the)i (\\)p Fi(@F)p Fn(")e(sequence.)177 1187 y Fk(Syn)o(tax)j(of)h(section)f (names:)k Fn(Curren)o(tly)15 b(section)h(names)e(use)i(the)g(same)e(syn)o (tax)h(as)g(macro)f(names.)21 b(F)m(or)177 1236 y(example)16 b(\\)p Fi(@)p Fn(".)25 b(It)17 b(can)h(b)q(e)f(argued)h(that)f(angle) f(brac)o(k)o(ets)i(should)f(b)q(e)h(reserv)o(ed)h(only)d(for)h(macro)177 1286 y(names)f(and)h(that)f(some)g(other)i(syn)o(tax)e(should)h(b)q(e)g (found)g(for)f(delimiting)e(section)j(names.)26 b(This)17 b(is)f(not)h(a)177 1336 y(clear)12 b(issue.)18 b(It)11 b(could)h(also)e(b)q(e)j(argued)e(that)h (they)g(are)g(b)q(oth)f(names,)g(and)g(that)g(b)q(ecause)j(sections)e(can)g (inherit)177 1386 y(their)i(names)g(from)e(the)i(macros)f(they)i(con)o(tain,) e(that)g(the)i(names)e(are)h(of)g(the)g(same)f(\\t)o(yp)q(e".)177 1463 y Fk(One)i(macro)f(p)q(er)h(section:)i Fn(One)d(particular)f(st)o(yle)g (of)g(using)g(F)m(unnelW)m(eb)f(is)h(to)g(ha)o(v)o(e)g(at)h(most)e(one)h (macro)177 1513 y(de\014nition)f(p)q(er)h(section.)19 b(It)12 b(ma)o(y)f(b)q(e)i(w)o(orth)f(adding)g(a)g(pragma)e(that)j(instructs)h(F)m (unnelW)m(eb)d(to)i(enforce)g(this.)177 1590 y Fk(Should)i(@)p Fm(f)i Fk(suppress)e(EOL?:)20 b Fn(When)15 b(de\014ning)g(a)g(macro)f(in)h(F) m(unnelW)m(eb,)f(it)h(seems)g(to)g(b)q(e)h(rule)f(rather)177 1640 y(than)f(the)h(exception)f(that)g(the)h(\\)p Fi(@)p Fm(f)p Fn(")e(b)q(e)h(follo)o(w)o(ed)f(b)o(y)g(\\)p Fi(@-)p Fn(".)18 b(This)13 b(suppresses)k(the)e(EOL)f(on)g(the)g(de\014nition)177 1690 y(line,)e(allo)o(wing)f(the)i(\014rst)h(line)e(of)h(the)g(macro)f(to)g (b)q(e)i(placed)f(immedia)o(tely)d(ab)q(o)o(v)o(e)j(and)f(in)h(line)f(with)h (the)g(other)177 1739 y(lines)k(without)g(in)o(tro)q(ducing)g(an)f(EOL)i(at)f (the)g(start)h(of)f(the)g(macro)f(text.)28 b(One)18 b(option)e(is)h(to)g(in)o (tro)q(duce)h(a)177 1789 y(pragma)12 b(to)i(determine)g(whether)h(to)f (suppress)i(EOLs)e(follo)o(wing)e(\\)p Fi(@)p Fm(f)p Fn(".)177 1866 y Fk(Pragma)20 b(syn)o(tax:)26 b Fn(It)18 b(is)g(not)g(clear)g(ho)o(w)g (\\lo)q(ose")f(the)i(syn)o(tax)f(of)f(pragmas)g(should)g(b)q(e.)31 b(P)o(erhaps)19 b(they)177 1916 y(should)14 b(b)q(e)g(case)h(insensitiv)o(e.) 177 1993 y Fk(Conditional)o(s:)23 b Fn(Dep)q(ending)17 b(on)g(demand,)g(it)g (ma)o(y)e(b)q(e)j(w)o(orth)g(rein)o(tro)q(ducing)f(some)g(sort)g(of)g (conditional)177 2043 y(feature)g(in)o(to)f(F)m(unnelW)m(eb.)24 b(Ho)o(w)o(ev)o(er,)17 b(it)e(w)o(ould)h(ha)o(v)o(e)g(to)g(b)q(e)h(v)o(ery)f (simple)f(to)h(comp)q(ete)g(with)g(the)g(v)n(arious)177 2093 y(w)o(a)o(ys)e(in)f(whic)o(h)h(conditionals)f(can)h(already)f(b)q(e)i(fudged) f(within)f(F)m(unnelW)m(eb)g(as)h(it)g(stands.)177 2170 y Fk(File)h(mark)o (ers:)20 b Fn(It)14 b(migh)o(t)f(b)q(e)i(w)o(orth)g(mo)q(difying)d(the)j (language)f(so)h(that)f(a)h(sp)q(ecial)g(syn)o(tactical)f(mark)o(er)g(is)177 2220 y(required)d(at)f(the)h(start)g(and)f(end)g(of)g(\014les.)17 b(This)10 b(will)f(assist)h(in)g(detecting)h(truncations)g(and)f(other)h (corruptions.)177 2297 y Fk(F)l(ormal)i(parameter)g(lists:)j Fn(It)d(migh)o(t)d(b)q(e)j(w)o(orth)g(c)o(hanging)f(o)o(v)o(er)g(to)h(a)f (syn)o(tax)g(for)h(formal)d(parameter)i(lists)177 2347 y(that)k(do)q(es)h (not)g(require)g(the)f Fi(@\()g Fn(and)g Fi(@\))p Fn(.)25 b(Ho)o(w)o(ev)o (er,)17 b(they)f(could)g(b)q(e)h(retained)g(as)f(optional)f(for)h(bac)o(kw)o (ard)177 2396 y(compatibilit)o(y)m(.)177 2566 y Fe(4.5)70 b(Scanner/Mapp)r (er)177 2685 y Fk(All)17 b(non-con)o(tiguo)o(us)e(mappings:)21 b Fn(Curren)o(tly)c(F)m(unnelW)m(eb)e(requires)i(that)g(all)e(input)g (\014les)i(b)q(e)g(mapp)q(ed)177 2735 y(in)o(to)e(a)g(con)o(tiguous)g(lump)f (of)h(memory)m(.)20 b(This)15 b(caused)i(problems)e(for)g(t)o(w)o(o)g (reasons.)24 b(First,)15 b(to)h(do)f(this,)h(one)177 2785 y(has)c(to)g(allo)q (cate)f(the)h(memory)d(\014rst,)k(and)e(to)h(do)f(that,)h(y)o(ou)f(ha)o(v)o (e)h(to)f(kno)o(w)g(ho)o(w)h(long)f(the)h(\014le)g(is,)f(and)h(it)f(turns)177 2835 y(out)j(that)g(\014nding)g(out)g(the)g(length)g(of)f(a)h(\014le)g(in)g (a)f(p)q(ortable)i(manner)e(is)h(v)o(ery)g(ine\016cien)o(t.)k(Second,)d (although)1042 2940 y(44)p eop %%Page: 45 46 45 45 bop 177 42 a Fn(IBM)14 b(PC)f(compatibles)f(ma)o(y)f(ha)o(v)o(e)i (megab)o(ytes)g(of)g(memory)m(,)d(it)i(is)i(segmen)o(ted)f(in)o(to)f(blo)q(c) o(ks)i(of)e(at)h(most)f(64K.)177 91 y(This)i(means)f(that)h(F)m(unnelW)m(eb)f (curren)o(tly)i(cannot)f(read)h(a)e(\014le)h(longer)g(than)g(64K)f(on)h(a)f (PC.)177 168 y(These)j(problems)d(could)i(b)q(e)g(a)o(v)o(oided)e(if)h(the)h (mapp)q(er)f(and)g(scanner)i(w)o(ere)f(reorganized)g(to)f(allo)o(w)f(input)h (\014les)177 218 y(to)g(b)q(e)g(read)h(in)e(and)h(stored)h(as)f(a)f(link)o (ed)h(list)f(of)g(c)o(h)o(unks)i(of)e(text)h(rather)h(than)f(a)g(con)o (tiguous)f(blo)q(c)o(k.)177 295 y Fk(EOL)h(is)g(unsp)q(eci\014abl)o(e:)h Fn(F)m(unnelW)m(eb)d(uses)h(ASCI)q(I)g(c)o(haracter)h(decimal)d(ten)i(\(10\)) f(in)o(ternally)f(to)h(represen)o(t)177 345 y(logical)g(end-of-line)g(and)h (is)g(curren)o(tly)h(organized)f(so)g(that)g(if)g(one)g(of)g(these)h(is)f (inserted)h(in)o(to)f(the)h(text)f(b)o(y)g(the)177 395 y(user)g(using)e(a)h (\\)p Fi(@^D\(10\))p Fn(",)d(it)j(will)e(b)q(e)i(written)h(out)e(as)h(a)f (logical)f(end)i(of)g(line,)f(rather)h(than)g(as)g(a)f(single)h(ASCI)q(I)177 445 y(c)o(haracter)j(10.)j(This)c(should)f(b)q(e)i(\014xed.)177 522 y Fk(Allo)o(w)g(mnemonics)f(for)i(unprin)n(tabl)o(es:)g Fn(F)m(unnelW)m(eb)e(allo)o(ws)f(users)j(to)e(insert)h(unprin)o(table)f(c)o (haracters)177 572 y(in)o(to)i(the)h(output)f(using)g(the)h(\\)p Fi(@^D\(ddd\))p Fn(")d(sp)q(ecial)i(sequence.)28 b(P)o(erhaps)17 b(it)f(w)o(ould)f(b)q(e)i(c)o(hanged)g(so)f(that)g(it)177 622 y(understands)g(ASCI)q(I)e(standard)g(mnemonics)e(suc)o(h)i(as)g(\\)p Fi(LF)p Fn(")f(as)h(w)o(ell)f(as)h(ASCI)q(I)h(n)o(um)o(b)q(ers.)177 699 y Fk(V)l(ersion)h(pragma:)22 b Fn(A)16 b(\\)p Fi(version)p Fn(")e(pragma)g(should)h(b)q(e)i(added)f(that)g(allo)o(ws)e(the)j(user)g(to)e (sp)q(ecify)i(in)e(the)177 749 y(input)g(\014le)h(the)g(v)o(ersion)g(of)e(F)m (unnelW)m(eb)h(that)h(w)o(as)f(around)h(when)g(the)g(input)f(\014le)g(w)o(as) h(created.)24 b(A)o(t)16 b(a)f(later)177 799 y(date,)g(suc)o(h)h(a)e (construct)j(w)o(ould)d(b)q(e)i(v)o(ery)f(useful)g(for)f(determining)g(ho)o (w)h(an)f(input)h(\014le)g(should)g(b)q(e)g(up)q(dated)177 848 y(if)e(the)i(F)m(unnelW)m(eb)e(language)g(has)h(c)o(hanged)g(b)q(et)o(w)o (een)i(v)o(ersions.)177 1018 y Fe(4.6)70 b(P)n(arser)177 1138 y Fn(There)15 b(are)g(no)e(prop)q(osals)h(to)g(c)o(hange)g(the)h(parser)g (except)g(as)f(a)f(consequence)k(of)c(other)h(prop)q(osals.)177 1308 y Fe(4.7)70 b(Analyser)177 1427 y Fk(Recursion)11 b(detection:)k Fn(Curren)o(tly)d(the)h(F)m(unnelW)m(eb)e(analyser)h(\015ags,)f(with)h(an)f (error,)i(all)e(macros)g(with)g(an)177 1477 y(in\014nite)g(expansion.)17 b(This)12 b(w)o(ould)e(b)q(e)i(b)q(est)g(c)o(hanged)g(to)f(\015agging)f(all)g (macros)h(that)g(are)h(directly)g(or)f(indirectly)177 1526 y(recursiv)o(e.)19 b(T)m(o)11 b(do)g(this,)g(T)m(arjan's)g(algorithm)p Fk([T)l(arjan72])d Fn(for)k(the)g(detection)g(of)f(strong)h(comp)q(onen)o(ts) f(should)177 1576 y(b)q(e)k(installed.)177 1653 y Fk(Once)h(only)g(macros:)k Fn(By)15 b(default)f(F)m(unnelW)m(eb)g(prev)o(en)o(ts)i(a)f(macro)e(from)g(b) q(eing)h(called)h(more)e(than)i(once)177 1703 y(unless)g(it)e(has)h(a)f(\\)p Fi(@M)p Fn(")g(asso)q(ciated)h(with)g(it.)j(Ho)o(w)o(ev)o(er,)d(F)m(unnelW)m (eb)f(do)q(es)i(allo)o(w)d(a)h(macro)g(that)g(calls)h(suc)o(h)g(a)177 1753 y(macro)f(to)h(b)q(e)g(called)g(more)f(than)g(once.)19 b(P)o(erhaps)c(this)f(\\lo)q(ophole")e(should)i(b)q(e)h(plugged)e(someho)o (w.)177 1923 y Fe(4.8)70 b(T)-6 b(angle)177 2042 y Fn(The)12 b(T)m(angler)f(is)h(one)g(of)f(the)i(cleanest)g(comp)q(onen)o(ts)e(of)g(F)m (unnelW)m(eb,)g(as)h(basically)f(all)f(it)i(has)g(to)f(do)h(is)g(expand)177 2092 y(some)h(v)o(ery)h(w)o(ell-de\014ned)h(macros.)177 2169 y Fk(T)l(ext)23 b(inden)o(tati)o(on)o(:)28 b Fn(Curren)o(tly)21 b(F)m(unnelW)m(eb)e(supp)q(orts)j Fh(no)f(indentation)g Fn(and)f Fh(blank)g(indentation)p Fn(.)38 b(A)177 2219 y(third)17 b(form)d(could)j(b)q (e)g(added)g(if)e(it)h(w)o(as)h(considered)g(necessary)m(.)28 b Fh(T)m(ext)17 b(indentation)g Fn(is)f(the)h(same)f(as)g Fh(blank)177 2269 y(indentation)g Fn(except)h(that)e(instead)g(of)g(inden)o(ting)f(with)h (blanks,)g(F)m(unnelW)m(eb)f(w)o(ould)g(inden)o(t)i(with)e(the)i(text)177 2319 y(to)g(the)h(left)f(of)g(the)h(called)f(macro.)24 b(This)16 b(facilit)o(y)f(could)h(b)q(e)h(useful)f(for)g(commen)o(ting)d(out)k(large)f (b)q(o)q(dies)g(of)177 2369 y(text)f(in)f(languages)h(that)f(do)h(not)f(ha)o (v)o(e)g(m)o(ulti-line)e(commen)o(ts)h(\(e.g.)20 b(Ada\).)g(A)15 b(discussion)g(of)f(the)h(pros)g(and)177 2418 y(cons)g(of)e(this)h(form)e(of) h(inden)o(tation)h(app)q(ears)g(earlier.)177 2588 y Fe(4.9)70 b(W)-6 b(ea)n(v)n(e)177 2708 y Fn(P)o(erhaps)15 b(F)m(unnelW)m(eb's)e(w)o (eak)o(est)i(asp)q(ect)g(is)f(its)g(t)o(yp)q(esetting)h(facilit)o(y)m(.)177 2785 y Fk(Align)g(table)h(of)h(con)o(ten)o(ts:)i Fn(When)c(F)m(unnelW)m(eb)f (generates)j(a)e(table)g(of)g(con)o(ten)o(ts,)h(the)f(section)h(n)o(um)o(b)q (ers)177 2835 y(are)e(not)g(quite)g(aligned)f(with)h(the)g(start)h(of)e(the)h (con)o(trolling)f(heading)h(ab)q(o)o(v)o(e)f(them.)1042 2940 y(45)p eop %%Page: 46 47 46 46 bop 177 42 a Fk(T)o(yp)q(esetting)20 b(strength:)27 b Fn(It)20 b(should)g(b)q(e)g(p)q(ossible)g(to)f(sp)q(ecify)h(the)g(lev)o(el)g (of)f(t)o(yp)q(esetting)h(strength)h(for)177 91 y(headings)16 b(so)g(that)h(short)f(do)q(cumen)o(ts)g(do)g(not)g(lo)q(ok)f(o)o(v)o(erdone)h (when)h(t)o(yp)q(eset.)26 b(A)16 b(new)h(pragma)d(w)o(ould)h(b)q(e)177 141 y(go)q(o)q(d)f(for)f(this.)177 222 y Fk(T)o(yp)q(eset)f(a)h(p)q(ortion:)i Fn(Sometimes)9 b(it)i(is)g(desirable)g(to)g(t)o(yp)q(eset)i(just)e(a)g(p)q (ortion)g(of)f(a)h(program.)k(A)d(command)177 272 y(line)g(option)f(could)h (b)q(e)g(added)g(to)g(do)g(this.)17 b(The)c(option)e(could)g(accept)j(as)e (its)g(argumen)o(t,)e(a)i(string)g(con)o(taining)177 322 y(a)i(list)f(of)g (section)i(n)o(um)o(b)q(ers)f(or)f(heading)h(names.)177 403 y Fk(Generic)g(t)o(yp)q(esetter)f(option:)j Fn(In)e(addition)e(to)i(building) e(in)h(a)g(n)o(um)o(b)q(er)g(of)g(di\013eren)o(t)i(v)o(ersions)f(of)f(W)m(ea) o(v)o(e,)177 453 y(one)k(for)g(eac)o(h)g(p)q(opular)g(t)o(yp)q(esetter,)i(it) e(w)o(ould)f(b)q(e)h(p)q(ossible)g(to)g(add)g(a)f(sp)q(ecial)h(generic)h (format)d(where)j(the)177 503 y(t)o(yp)q(eset)h(output)e(is)g(expressed)i(in) e(terms)g(of)f Fh(F)m(unnelWeb)j(macr)n(os)p Fn(.)27 b(The)18 b(user)g(could)f(then)g(sp)q(ecify)h(macro)177 552 y(de\014nitions)13 b(for)g(a)f(non-supp)q(orted)i(t)o(yp)q(esetter)i(and)d(run)g(the)g(output)h (through)f(F)m(unnelW)m(eb)f(T)m(angle)g(to)h(get)g(a)177 602 y(t)o(yp)q(eset)j(\014le)d(in)h(a)f(format)f(suitable)i(for)g(the)g(unsupp)q (orted)i(t)o(yp)q(esetter.)177 683 y Fk(Suppression)e(of)k(include)d (\014les:)21 b Fn(It)16 b(should)g(b)q(e)g(p)q(ossible)h(to)e(sp)q(ecify)i (in)e(the)i(input)e(\014le)h(that)g(particular)177 733 y(included)e(\014les)g (not)f(app)q(ear)h(in)f(the)h(t)o(yp)q(eset)h(output.)j(Curren)o(tly)m(,)13 b(the)h(fact)f(that)g(an)h(inclusion)e(has)i(o)q(ccurred)177 783 y(is)h(not)h(ev)o(en)g(represen)o(ted)i(in)d(the)h(t)o(yp)q(eset)g (output.)23 b(Suppression)16 b(of)f(inclusions)g(is)g(particularly)g (necessary)177 833 y(where)g(a)f(library)f(of)g(macros)g(has)h(b)q(een)h (included)f(at)g(the)h(top)e(of)h(eac)o(h)g(of)f(a)h(group)g(of)f(source)i (\014les.)177 914 y Fk(Cross)f(reference)e(of)i(iden)o(ti)o(\014ers)o(:)h Fn(WEB)e(pro)o(vides)f(a)g(list)g(of)g(iden)o(ti\014ers)h(and)f(a)g(list)g (of)g(all)f(the)i(de\014nitions)177 964 y(in)h(whic)o(h)f(they)i(are)f(used.) 19 b(A)14 b(similar)d(feature)k(could)f(b)q(e)g(added)g(to)g(F)m(unnelW)m (eb.)177 1045 y Fk(Supp)q(ort)k(for)h(non-prin)n(tab)o(les)o(:)k Fn(Curren)o(tly)18 b(F)m(unnelW)m(eb)f(do)q(es)h(not)f(pro)o(vide)h(supp)q (ort)g(for)f(t)o(yp)q(esetting)177 1095 y(the)e(sp)q(ecial)f(\\)p Fi(@^\(num\))p Fn(")e(sequences.)20 b(This)14 b(should)g(b)q(e)g(added.)177 1176 y Fk(Supp)q(ort)g(for)i(@+)h(sequences:)i Fn(Curren)o(tly)c(W)m(ea)o(v)o (e)f(do)q(es)h(not)f(see)i(\\)p Fi(@+)p Fn(")e(sequences)j(as)d(suc)o(h.)21 b(Instead)15 b(it)177 1225 y(p)q(erceiv)o(es)h(them)d(as)h(ordinary)f(EOLs.) 19 b(Ho)o(w)o(ev)o(er,)14 b(there)h(are)g(argumen)o(ts)e(for)g(t)o(yp)q (esetting)i(them)e(sp)q(ecially)m(.)177 1306 y Fk(T)o(yp)q(eset)e(text)h(in)f (macro)h(b)q(o)q(dies:)j Fn(One)d(of)e(the)h(m)o(uc)o(h-lo)o(v)o(ed)e (features)i(of)f(WEB)h(is)g(the)g(w)o(a)o(y)f(that)h(it)f(allo)o(ws)177 1356 y(the)j(user)h(to)e(switc)o(h)h(recursiv)o(ely)g(b)q(et)o(w)o(een)h(do)q (cumen)o(t)e(and)g(program)f(formats.)16 b(F)m(unnelW)m(eb)c(do)q(es)h(not)f (allo)o(w)177 1406 y(this,)18 b(but)g(should.)29 b(In)17 b(F)m(unnelW)m(eb,)h (the)g(delimiters)f(\\)p Fi(@)p Fm(f)p Fn(")f(and)i(\\)p Fi(@)p Fm(g)p Fn(")e(are)i(already)f(used)i(consisten)o(tly)f(to)177 1456 y(delimit)g(macro)g(text.)37 b(The)20 b(\\)p Fi(@[)p Fn(")f(and)g(\\)p Fi(@])p Fn(")g(sequences)j(ha)o(v)o(e)e(b)q(een)h(reserv)o(ed)h(for)d(the)i (delimitation)16 b(of)177 1506 y(do)q(cumen)o(tation)d(text.)177 1587 y Fk(Non-tt)h(t)o(yp)q(esetting:)i Fn(The)d(curren)o(t)i(v)o(ersion)f (of)f(F)m(unnelW)m(eb)g(sets)i(all)d(its)h(macro)f(text)i(in)f Fi(tt)22 b(font)p Fn(.)17 b(This)177 1637 y(is)d(b)q(oth)g(a)f(blessing)h (and)g(a)g(curse.)19 b(It)14 b(is)g(a)f(blessing)h(b)q(ecause)i(it)d (connects)j(the)e(reader)h(directly)f(to)g(the)g(co)q(de,)177 1686 y(with)g(no)g(complicated)f(in)o(termediary)m(.)k(It)d(is)g(a)g(curse)i (b)q(ecause)g(it)e(lo)q(oks)f(ugly)h(compared)f(to)h(the)h(b)q(eautifully)177 1736 y(t)o(yp)q(eset)h(programs)c(pro)q(duced)j(b)o(y)f(other)g(literate)h (programmi)o(ng)c(to)q(ols.)177 1817 y(The)20 b(di\016cult)o(y)e(with)g (adding)g(suc)o(h)i(b)q(eautiful)e(t)o(yp)q(esetting)i(is)f(that)g(it)g(is)g (necessarily)h(language-sp)q(eci\014c.)177 1867 y(Keyw)o(ords)15 b(and)f(syn)o(tax)g(di\013er)g(from)e(language)i(to)f(language)g(and)h(it)g (w)o(ould)f(not)h(b)q(e)h(easy)f(to)g(come)f(up)h(with)177 1917 y(a)g(set)h(of)e(language)g(indep)q(enden)o(t)i(rules.)177 1998 y(One)k(approac)o(h)g(is)f(to)g(write)g(a)h(set)g(of)e(W)m(ea)o(v)o(e)h (bac)o(k-ends,)i(one)e(for)g(eac)o(h)h(language.)31 b(Another)19 b(approac)o(h)177 2048 y(is)e(to)g Fh(gener)n(ate)f Fn(bac)o(k)h(ends.)28 b(This)17 b(is)g(the)g(approac)o(h)g(tak)o(en)g(in)f(the)i Fh(Spider)f Fn(system)p Fk([Ramsey89])p Fn(.)26 b(In)17 b(the)177 2098 y Fh(Spider)f Fn(system,)g(the)h(programmer)d(writes)i(pro)q(duction)h (rules)f(for)g(con)o(v)o(erting)g(lexical)f(comp)q(onen)o(ts)h(of)f(the)177 2148 y(program)f(text)h(in)o(to)g(t)o(yp)q(esetter)i(instructions.)22 b(The)16 b Fh(Spider)f Fn(program)e(reads)j(these)h(rules)e(and)g(generates)i (a)177 2197 y(new)d(v)o(ersion)h(of)e(WEB)h(suited)g(for)g(the)g(target)h (language.)177 2278 y(F)m(or)j(F)m(unnelW)m(eb)g(a)g(sligh)o(tly)f (di\013eren)o(t)j(system)e(is)g(prop)q(osed)i(in)e(whic)o(h)g(Spider-lik)o(e) g(rules)h(app)q(ear)g(in)f(the)177 2328 y(input)e(\014le)h(and)f(are)h(used)h (directly)e(b)o(y)h(W)m(ea)o(v)o(e)f(to)g(p)q(erform)g(the)h(t)o(yp)q (esetting.)27 b(An)16 b(in)o(termediate)g(abstract)177 2378 y(t)o(yp)q(esetting)d(language)e(could)h(b)q(e)h(used)g(so)f(that)g(the)h (pro)q(ductions)f(can)h(b)q(e)f(made)f(language)g(sp)q(eci\014c,)j(but)e(not) 177 2428 y(t)o(yp)q(esetter)k(sp)q(eci\014c.)177 2610 y Fe(4.10)70 b(Lister)177 2735 y Fk(Glue)17 b(factor:)23 b Fn(A)16 b(glue)g(factor)g (could)g(b)q(e)h(added)g(that)f(determines)h(ho)o(w)f(man)o(y)e(lines)i(can)h (b)q(e)g(in)e(b)q(et)o(w)o(een)177 2785 y(t)o(w)o(o)f(diagnostics)g(in)f(the) i(listing)e(b)q(efore)i(the)f(t)o(w)o(o)g(groups)g(of)g(lines)g(are)g(joined) g(together)h(in)e(the)i(listing)e(with)177 2835 y(no)h(in)o(terv)o(ening)g (ellipsis.)1042 2940 y(46)p eop %%Page: 47 48 47 47 bop 177 42 a Fe(4.11)70 b(Diagnostics)177 157 y Fk(Advisory)16 b(information)o(:)j Fn(Some)13 b(of)i(F)m(unnelW)m(eb's)g(diagnostics)f(pro)o (vide)h(a)g(detailed)g(explanatory)g(para-)177 207 y(graph.)i(While)11 b(this)h(information)c(migh)o(t)i(b)q(e)i(useful)g(the)g(\014rst)g(time,)f (it)g(has)h(the)g(capacit)o(y)f(to)h(clog)f(up)h(a)f(listing)177 257 y(\014le)k(if)f(the)h(user)h(has)f(made)f(the)h(same)f(error)i(man)o(y)d (times.)20 b(T)m(o)14 b(solv)o(e)g(this)h(problem,)e(F)m(unnelW)m(eb)i(could) f(b)q(e)177 307 y(mo)q(di\014ed)f(so)h(that)g(suc)o(h)g(explanations)f(are)i (only)e(displa)o(y)o(ed)g(the)i(\014rst)f(time)f(the)h(error)h(o)q(ccurs.)177 382 y Fk(Ab)q(ort)g(after)f(n)h(errors:)i Fn(A)d(facilit)o(y)e(could)h(b)q(e) h(added)g(to)f(prev)o(en)o(t)i(F)m(unnelW)m(eb's)e(scanning,)g(parsing,)g (and)177 431 y(analysing)g(phases)i(from)d(con)o(tin)o(uing)h(if)g(a)g (certain)i(n)o(um)o(b)q(er)e(of)g(errors)i(ha)o(v)o(e)f(already)g(b)q(een)h (issued.)177 594 y Fe(4.12)70 b(Sp)r(eed)177 709 y Fk(Measuremen)o(t)11 b(of)i(sp)q(eed:)k Fn(Although)11 b(F)m(unnelW)m(eb)g(can)h(generate)h(a)e (breakdo)o(wn)h(of)f(where)i(it)e(is)g(sp)q(ending)177 759 y(its)j(time,)e(it)i(do)q(es)g(not)g(giv)o(e)f(a)h(\014nal)f(rating)h(in)f (lines)h(p)q(er)h(min)o(ute.)h(This)e(should)g(b)q(e)g(added.)177 834 y Fk(Find)19 b(the)h(hot)f(sp)q(ots:)26 b Fn(Although)17 b(F)m(unnelW)m(eb)h(has)g(b)q(een)h(designed)g(to)e(allo)o(w)g(high)g(sp)q (eed,)j(not)e(m)o(uc)o(h)177 884 y(e\013ort)d(has)f(so)g(far)f(b)q(een)i (made)e(to)h(mak)o(e)e(it)i(fast.)k(This)13 b(should)h(b)q(e)h(done.)177 958 y Fk(Change)i(some)f(declarations:)i Fn(F)m(unnelW)m(eb)c(is)g(full)g(of) g(v)n(ariable)g(declarations)h(where)h(the)f(v)n(ariables)f(are)177 1008 y(wider)g(than)g(they)h(need)f(b)q(e.)19 b(Replacing)13 b(these)i(migh)o(t)d(sp)q(eed)k(it)d(up.)177 1170 y Fe(4.13)70 b(Correctness)177 1286 y Fk(Bounds)17 b(analysis:)23 b Fn(Not)16 b(m)o(uc)o(h)f(e\013ort)j(has)e(gone)h(in)o(to)f(the)h(design)g(of)f(F)m (unnelW)m(eb's)f(input)i(b)q(oundaries.)177 1336 y(An)12 b(analysis)f(should) g(b)q(e)h(made)f(of)g(F)m(unnelW)m(eb's)g(b)q(eha)o(viour)g(when)h(the)h (follo)o(wing)c(quan)o(tities)i(are)h(stretc)o(hed:)239 1452 y Fm(\017)21 b Fn(Input)14 b(line)g(length.)239 1535 y Fm(\017)21 b Fn(Input)14 b(\014le)g(size.)239 1618 y Fm(\017)21 b Fn(Num)o(b)q(er)13 b(of)h(macros.)239 1701 y Fm(\017)21 b Fn(Length)14 b(of)f(macro.)177 1818 y(In)h(particular,)f(F)m(unnelW)m(eb's)g(b)q(eha)o(viour)h(at)g(32K)g (and)f(64K)h(b)q(oundaries)g(should)g(b)q(e)g(observ)o(ed.)177 1892 y Fk(Stac)o(k)k(detection:)i Fn(Macin)o(tosh)c(THINK-C)g(pro)o(vides)g (just)h(6K)f(of)f(memory)e(for)j(the)h(stac)o(k.)24 b(It)16 b(migh)o(t)e(b)q(e)177 1942 y(w)o(orth)g(adding)f(c)o(hec)o(ks)i(to)f(mak)o (e)e(sure)j(that)f(the)h(stac)o(k)f(is)g(not)g(b)q(eing)g(blo)o(wn.)177 2104 y Fe(4.14)70 b(T)-6 b(est)22 b(Suite)177 2220 y Fn(The)14 b(follo)o(wing)e(tests)j(should)f(b)q(e)g(added)g(to)g(the)h(test)g(suite:) 177 2337 y Fi(Lister)177 2386 y(------)243 2436 y(LR01:)20 b(Test)h(with)g(a)h(full)f(listing)f(with)h(no)g(diagnostics.)243 2486 y(LR02:)f(Test)h(with)g(a)h(full)f(listing)f(with)h(diagnostics.)243 2536 y(LR03:)f(Test)h(with)g(an)h(abbreviated)d(listing)h(with)h(no)h (diagnostics.)243 2586 y(LR04:)e(Test)h(with)g(an)h(abbreviated)d(listing)h (with)h(diagnostics.)243 2635 y(LR05:)f(Test)h(error)g(context)f(system)h (with)g(nearby)f(diagnostics.)177 2735 y(Boundary)g(Cases)177 2785 y(--------------)177 2835 y(Static)h(analysis)f(might)h(preclude)f(the)h (need)g(for)g(most)g(of)g(these)g(tests.)1042 2940 y Fn(47)p eop %%Page: 48 49 48 48 bop 243 42 a Fi(BC01:)20 b(Test)h(what)g(happens)g(when)g(memory)f (runs)h(out.)243 91 y(BC02:)f(Test)h(on)h(a)f(file)g(with)g(a)h(single)e (line)h(of)h(a)f(megabyte.)243 141 y(BC03:)f(Test)h(on)h(a)f(file)g(of)h(a)f (megabyte)f(of)i(EOLs.)243 191 y(BC04:)e(Generate)g(an)i(output)e(file)h (with)g(an)h(extremely)e(long)h(line.)243 241 y(BC05:)f(Generate)g(an)i (output)e(file)h(with)g(one)g(million)g(lines.)243 291 y(BC06:)f(Test)h(on)h (a)f(file)g(with)g(very)g(many)g(macros.)177 390 y(General)177 440 y(-------)243 490 y(GN01:)f(A)i(large)f(legal)f(input)h(file)g (exercising)f(as)h(many)g(features)f(as)i(possible.)373 540 y(1.)g(Test)f(listing)f(file.)373 589 y(2.)i(Test)f(output)f(files.)373 639 y(3.)i(Test)f(typeset)f(file.)243 689 y(GN...)g(A)i(selection)e(of)h(ten) g(real-life)f(FunnelWeb)g(files.)177 851 y Fe(4.15)70 b(Mac)n(hine-Sp)r (eci\014c)20 b(Changes)177 967 y Fk(Icon)14 b(for)g(the)f(Macin)o(tosh:)j Fn(Curren)o(tly)d(no)g(icon)f(is)g(supplied)h(for)f(the)i(Macin)o(tosh)e(v)o (ersion)h(of)f(F)m(unnelW)m(eb.)177 1017 y(An)i(icon)g(depicting)g(a)f (spider)i(or)f(a)f(funnelled)h(w)o(eb)g(of)g(some)f(kind)g(w)o(ould)g(seem)h (appropriate.)177 1179 y Fe(4.16)70 b(Summary)177 1295 y Fn(This)15 b(c)o(hapter)i(has)e(describ)q(es)i(some)e(of)f(the)i(problems)f(with)g(F)m (unnelW)m(eb)f(and)i(some)e(of)h(the)g(opp)q(ortunities)177 1345 y(that)e(exist)h(for)f(impro)o(ving)e(it.)17 b(The)d(direction)f(and)g (sp)q(eed)i(in)e(whic)o(h)g(F)m(unnelW)m(eb)g(will)e(dev)o(elop)j(will)e(dep) q(end)177 1395 y(largely)j(on)h(user)h(feedbac)o(k.)25 b(If)15 b(y)o(ou)h(ha)o(v)o(e)f(an)o(y)h(strong)g(feelings)g(on)g(where)h(F)m(unnelW) m(eb)e(should)h(go,)f(please)177 1444 y(email)d(them)h(to)h(Ross)g(William)o (s)d(\()p Fi(ross@spam.adelaide)o(.edu.)o(au)p Fn(\).)1042 2940 y(48)p eop %%Page: 49 50 49 49 bop 177 380 a Ff(App)s(endix)34 b(A)177 615 y Fl(GNU)40 b(General)i(Public)f(License)177 739 y(V)-10 b(ersion)41 b(2)177 983 y Fn(This)16 b(app)q(endix)h(con)o(tains)f(a)g(v)o(erbatim)e(cop)o(y)j (of)e(V)m(ersion)i(2)f(of)f(the)i(GNU)f(General)g(Public)g(License)i(under) 177 1032 y(whic)o(h)g(the)g(F)m(unnelW)m(eb)g(computer)f(program)f(is)i (released.)31 b(Note)18 b(that)g(the)h Fh(F)m(unnelWeb)g(User's)f(Manual)177 1082 y Fn(and)e Fh(F)m(unnelWeb)j(Hacker's)e(Manual)g Fn(are)g(released)g (under)h(a)e(m)o(uc)o(h)f(simpler)g(license)i(that)g(do)q(es)g(not)f(allo)o (w)177 1132 y(mo)q(di\014cations.)p 177 1188 1772 2 v 264 1340 a Fi(GNU)22 b(GENERAL)e(PUBLIC)g(LICENSE)330 1390 y(Version)g(2,)h(June)g (1991)199 1490 y(Copyright)f(\(C\))h(1989,)g(1991)g(Free)g(Software)f (Foundation,)f(Inc.)744 1540 y(675)i(Mass)g(Ave,)g(Cambridge,)f(MA)h(02139,)g (USA)199 1589 y(Everyone)f(is)h(permitted)f(to)i(copy)f(and)g(distribute)f (verbatim)g(copies)199 1639 y(of)h(this)g(license)g(document,)f(but)h (changing)f(it)h(is)h(not)f(allowed.)264 1739 y(Preamble)221 1838 y(The)g(licenses)f(for)h(most)g(software)f(are)i(designed)e(to)h(take)g (away)g(your)177 1888 y(freedom)g(to)g(share)g(and)g(change)f(it.)43 b(By)22 b(contrast,)e(the)h(GNU)g(General)f(Public)177 1938 y(License)h(is)g(intended)f(to)h(guarantee)f(your)h(freedom)g(to)g(share)g (and)g(change)g(free)177 1988 y(software--to)e(make)i(sure)g(the)h(software)e (is)h(free)g(for)g(all)g(its)h(users.)42 b(This)177 2038 y(General)21 b(Public)f(License)g(applies)h(to)g(most)g(of)g(the)h(Free)f(Software)177 2087 y(Foundation's)e(software)i(and)g(to)g(any)g(other)g(program)f(whose)h (authors)g(commit)f(to)177 2137 y(using)h(it.)43 b(\(Some)21 b(other)f(Free)h(Software)g(Foundation)e(software)h(is)i(covered)e(by)177 2187 y(the)h(GNU)h(Library)e(General)g(Public)h(License)f(instead.\))42 b(You)21 b(can)g(apply)g(it)g(to)177 2237 y(your)g(programs,)f(too.)221 2337 y(When)h(we)g(speak)g(of)g(free)g(software,)f(we)i(are)f(referring)f(to) h(freedom,)f(not)177 2386 y(price.)43 b(Our)21 b(General)f(Public)h(Licenses) f(are)h(designed)f(to)h(make)g(sure)g(that)g(you)177 2436 y(have)g(the)g (freedom)g(to)g(distribute)f(copies)g(of)i(free)f(software)f(\(and)h(charge)f (for)177 2486 y(this)h(service)f(if)i(you)f(wish\),)g(that)g(you)g(receive)f (source)h(code)g(or)g(can)g(get)g(it)177 2536 y(if)h(you)f(want)g(it,)g(that) g(you)g(can)g(change)g(the)g(software)f(or)h(use)h(pieces)e(of)i(it)177 2586 y(in)g(new)f(free)g(programs;)f(and)h(that)g(you)g(know)g(you)g(can)g (do)h(these)e(things.)221 2685 y(To)h(protect)f(your)h(rights,)g(we)g(need)g (to)h(make)e(restrictions)g(that)h(forbid)177 2735 y(anyone)g(to)g(deny)g (you)g(these)g(rights)g(or)g(to)g(ask)g(you)h(to)f(surrender)f(the)h(rights.) 177 2785 y(These)g(restrictions)e(translate)h(to)i(certain)e (responsibilities)e(for)k(you)f(if)g(you)177 2835 y(distribute)f(copies)g(of) i(the)f(software,)f(or)h(if)h(you)f(modify)f(it.)1042 2940 y Fn(49)p eop %%Page: 50 51 50 50 bop 221 91 a Fi(For)21 b(example,)f(if)h(you)h(distribute)d(copies)i (of)g(such)g(a)h(program,)e(whether)177 141 y(gratis)h(or)g(for)g(a)h(fee,)f (you)g(must)g(give)g(the)g(recipients)f(all)h(the)g(rights)g(that)177 191 y(you)g(have.)43 b(You)21 b(must)g(make)g(sure)g(that)g(they,)g(too,)g (receive)f(or)h(can)h(get)f(the)177 241 y(source)g(code.)42 b(And)21 b(you)h(must)f(show)g(them)g(these)f(terms)h(so)g(they)g(know)g (their)177 291 y(rights.)221 390 y(We)g(protect)f(your)h(rights)g(with)g(two) g(steps:)g(\(1\))g(copyright)f(the)h(software,)f(and)177 440 y(\(2\))h(offer)g(you)g(this)g(license)g(which)f(gives)h(you)g(legal)g (permission)f(to)h(copy,)177 490 y(distribute)f(and/or)g(modify)h(the)g (software.)221 589 y(Also,)g(for)g(each)g(author's)f(protection)g(and)h (ours,)f(we)i(want)f(to)g(make)g(certain)177 639 y(that)g(everyone)f (understands)g(that)h(there)g(is)g(no)g(warranty)f(for)i(this)f(free)177 689 y(software.)42 b(If)21 b(the)g(software)g(is)g(modified)f(by)h(someone)g (else)g(and)g(passed)g(on,)g(we)177 739 y(want)g(its)g(recipients)f(to)h (know)g(that)g(what)g(they)g(have)g(is)h(not)f(the)g(original,)f(so)177 789 y(that)h(any)g(problems)f(introduced)g(by)i(others)e(will)h(not)g (reflect)g(on)g(the)g(original)177 839 y(authors')f(reputations.)221 938 y(Finally,)g(any)h(free)g(program)f(is)i(threatened)d(constantly)h(by)i (software)177 988 y(patents.)42 b(We)21 b(wish)g(to)h(avoid)f(the)g(danger)f (that)h(redistributors)e(of)j(a)f(free)177 1038 y(program)g(will)f (individually)g(obtain)g(patent)h(licenses,)f(in)h(effect)g(making)f(the)177 1088 y(program)h(proprietary.)41 b(To)21 b(prevent)f(this,)h(we)g(have)g (made)g(it)h(clear)f(that)g(any)177 1137 y(patent)g(must)g(be)g(licensed)f (for)h(everyone's)f(free)h(use)g(or)h(not)f(licensed)f(at)h(all.)221 1237 y(The)g(precise)f(terms)h(and)g(conditions)f(for)h(copying,)f (distribution)g(and)177 1287 y(modification)f(follow.)264 1386 y(GNU)j(GENERAL)e(PUBLIC)g(LICENSE)243 1436 y(TERMS)g(AND)h(CONDITIONS)f(FOR) h(COPYING,)g(DISTRIBUTION)e(AND)i(MODIFICATION)221 1536 y(0.)g(This)g (License)f(applies)h(to)g(any)g(program)g(or)g(other)g(work)g(which)g (contains)177 1586 y(a)h(notice)e(placed)h(by)g(the)g(copyright)f(holder)h (saying)f(it)i(may)f(be)g(distributed)177 1636 y(under)g(the)g(terms)g(of)g (this)g(General)g(Public)f(License.)42 b(The)21 b("Program",)f(below,)177 1685 y(refers)h(to)g(any)g(such)g(program)g(or)g(work,)g(and)g(a)g("work)g (based)g(on)g(the)h(Program")177 1735 y(means)f(either)f(the)i(Program)e(or)h (any)h(derivative)d(work)i(under)g(copyright)f(law:)177 1785 y(that)h(is)h(to)f(say,)g(a)g(work)g(containing)f(the)h(Program)g(or)g(a)h (portion)e(of)h(it,)177 1835 y(either)g(verbatim)f(or)h(with)g(modifications) e(and/or)i(translated)f(into)h(another)177 1885 y(language.)42 b(\(Hereinafter,)19 b(translation)h(is)h(included)f(without)g(limitation)g (in)177 1934 y(the)h(term)g("modification".\))41 b(Each)21 b(licensee)f(is)h(addressed)f(as)h("you".)177 2034 y(Activities)f(other)h (than)g(copying,)f(distribution)f(and)i(modification)f(are)h(not)177 2084 y(covered)g(by)g(this)g(License;)f(they)h(are)g(outside)f(its)i(scope.) 42 b(The)21 b(act)g(of)177 2134 y(running)g(the)g(Program)f(is)h(not)h (restricted,)d(and)i(the)g(output)g(from)g(the)g(Program)177 2183 y(is)h(covered)e(only)h(if)g(its)g(contents)g(constitute)e(a)j(work)f (based)g(on)g(the)177 2233 y(Program)g(\(independent)e(of)i(having)g(been)g (made)g(by)g(running)f(the)i(Program\).)177 2283 y(Whether)f(that)f(is)i (true)f(depends)f(on)i(what)f(the)g(Program)f(does.)221 2383 y(1.)h(You)g(may)g(copy)g(and)h(distribute)d(verbatim)h(copies)h(of)g(the)h (Program's)177 2433 y(source)f(code)g(as)g(you)g(receive)g(it,)g(in)g(any)g (medium,)g(provided)f(that)h(you)177 2482 y(conspicuously)e(and)i (appropriately)f(publish)g(on)h(each)g(copy)g(an)h(appropriate)177 2532 y(copyright)e(notice)h(and)g(disclaimer)f(of)h(warranty;)f(keep)h (intact)f(all)i(the)177 2582 y(notices)f(that)f(refer)h(to)h(this)f(License)f (and)h(to)g(the)h(absence)e(of)h(any)h(warranty;)177 2632 y(and)f(give)g(any) g(other)g(recipients)f(of)h(the)h(Program)e(a)h(copy)g(of)h(this)f(License) 177 2682 y(along)g(with)g(the)g(Program.)177 2781 y(You)g(may)h(charge)e(a)i (fee)f(for)g(the)g(physical)f(act)h(of)h(transferring)d(a)j(copy,)f(and)177 2831 y(you)g(may)h(at)f(your)g(option)f(offer)h(warranty)f(protection)g(in)h (exchange)g(for)g(a)g(fee.)1042 2940 y Fn(50)p eop %%Page: 51 52 51 51 bop 221 91 a Fi(2.)21 b(You)g(may)g(modify)g(your)g(copy)g(or)g(copies) g(of)g(the)g(Program)g(or)g(any)g(portion)177 141 y(of)h(it,)f(thus)g (forming)f(a)i(work)f(based)f(on)i(the)f(Program,)f(and)h(copy)g(and)177 191 y(distribute)f(such)h(modifications)e(or)i(work)g(under)g(the)g(terms)g (of)g(Section)g(1)177 241 y(above,)g(provided)f(that)h(you)g(also)g(meet)g (all)g(of)g(these)g(conditions:)264 340 y(a\))h(You)f(must)g(cause)g(the)g (modified)f(files)h(to)g(carry)g(prominent)f(notices)264 390 y(stating)h(that)g(you)g(changed)f(the)h(files)g(and)g(the)g(date)g(of)h(any) f(change.)264 490 y(b\))h(You)f(must)g(cause)g(any)g(work)g(that)g(you)g (distribute)f(or)h(publish,)f(that)h(in)264 540 y(whole)g(or)g(in)h(part)f (contains)f(or)h(is)h(derived)e(from)h(the)g(Program)g(or)g(any)264 589 y(part)g(thereof,)f(to)i(be)f(licensed)f(as)i(a)f(whole)g(at)g(no)h (charge)e(to)i(all)f(third)264 639 y(parties)g(under)f(the)i(terms)e(of)i (this)f(License.)264 739 y(c\))h(If)f(the)g(modified)f(program)h(normally)f (reads)h(commands)f(interactively)264 789 y(when)h(run,)g(you)g(must)g(cause) g(it,)g(when)g(started)g(running)f(for)h(such)264 839 y(interactive)f(use)h (in)g(the)h(most)f(ordinary)f(way,)h(to)g(print)g(or)g(display)g(an)264 888 y(announcement)f(including)g(an)h(appropriate)e(copyright)h(notice)h(and) g(a)264 938 y(notice)g(that)g(there)g(is)g(no)g(warranty)g(\(or)g(else,)f (saying)h(that)g(you)g(provide)264 988 y(a)h(warranty\))e(and)h(that)g(users) g(may)g(redistribute)e(the)i(program)g(under)264 1038 y(these)g(conditions,)f (and)h(telling)f(the)h(user)g(how)g(to)h(view)f(a)g(copy)g(of)h(this)264 1088 y(License.)42 b(\(Exception:)20 b(if)h(the)g(Program)g(itself)f(is)i (interactive)d(but)264 1137 y(does)i(not)g(normally)g(print)f(such)h(an)h (announcement,)d(your)i(work)g(based)g(on)264 1187 y(the)h(Program)e(is)h (not)g(required)g(to)g(print)g(an)g(announcement.\))177 1287 y(These)g(requirements)e(apply)i(to)g(the)h(modified)e(work)h(as)g(a)h (whole.)42 b(If)177 1337 y(identifiable)19 b(sections)i(of)g(that)g(work)g (are)g(not)g(derived)g(from)g(the)g(Program,)177 1386 y(and)g(can)h(be)f (reasonably)f(considered)f(independent)h(and)h(separate)f(works)h(in)177 1436 y(themselves,)f(then)h(this)g(License,)f(and)h(its)g(terms,)g(do)g(not)g (apply)g(to)g(those)177 1486 y(sections)f(when)h(you)g(distribute)f(them)h (as)h(separate)e(works.)42 b(But)21 b(when)g(you)177 1536 y(distribute)f(the) h(same)g(sections)f(as)i(part)f(of)g(a)g(whole)g(which)g(is)g(a)h(work)f (based)177 1586 y(on)h(the)f(Program,)f(the)h(distribution)e(of)j(the)f (whole)g(must)g(be)g(on)g(the)h(terms)e(of)177 1636 y(this)h(License,)f (whose)h(permissions)f(for)h(other)f(licensees)g(extend)h(to)g(the)177 1685 y(entire)g(whole,)f(and)h(thus)g(to)h(each)f(and)g(every)g(part)g (regardless)e(of)j(who)f(wrote)g(it.)177 1785 y(Thus,)g(it)g(is)h(not)f(the)g (intent)g(of)g(this)g(section)f(to)i(claim)e(rights)h(or)g(contest)177 1835 y(your)g(rights)g(to)g(work)g(written)f(entirely)h(by)g(you;)g(rather,)f (the)h(intent)g(is)g(to)177 1885 y(exercise)f(the)h(right)g(to)h(control)e (the)h(distribution)e(of)j(derivative)e(or)177 1934 y(collective)g(works)h (based)f(on)i(the)f(Program.)177 2034 y(In)h(addition,)d(mere)i(aggregation)f (of)h(another)g(work)g(not)g(based)g(on)g(the)g(Program)177 2084 y(with)g(the)g(Program)g(\(or)g(with)g(a)g(work)g(based)g(on)g(the)h (Program\))e(on)h(a)h(volume)e(of)177 2134 y(a)i(storage)e(or)h(distribution) f(medium)g(does)h(not)g(bring)g(the)g(other)g(work)g(under)177 2183 y(the)g(scope)g(of)g(this)g(License.)221 2283 y(3.)g(You)g(may)g(copy)g (and)h(distribute)d(the)j(Program)e(\(or)h(a)h(work)f(based)f(on)i(it,)177 2333 y(under)f(Section)f(2\))i(in)f(object)g(code)g(or)g(executable)f(form)h (under)f(the)i(terms)e(of)177 2383 y(Sections)g(1)i(and)f(2)h(above)e (provided)h(that)g(you)g(also)g(do)g(one)g(of)h(the)f(following:)264 2482 y(a\))h(Accompany)e(it)h(with)g(the)g(complete)f(corresponding)f (machine-readable)264 2532 y(source)i(code,)g(which)f(must)h(be)h (distributed)d(under)i(the)g(terms)g(of)g(Sections)264 2582 y(1)h(and)f(2)h(above)e(on)i(a)f(medium)g(customarily)e(used)i(for)h (software)e(interchange;)f(or,)264 2682 y(b\))j(Accompany)e(it)h(with)g(a)h (written)e(offer,)g(valid)h(for)g(at)h(least)f(three)264 2731 y(years,)g(to)g(give)g(any)g(third)g(party,)g(for)g(a)g(charge)g(no)g(more)g (than)g(your)264 2781 y(cost)g(of)h(physically)d(performing)h(source)h (distribution,)e(a)i(complete)264 2831 y(machine-readable)e(copy)i(of)g(the)g (corresponding)e(source)i(code,)g(to)g(be)1042 2940 y Fn(51)p eop %%Page: 52 53 52 52 bop 264 42 a Fi(distributed)20 b(under)h(the)g(terms)g(of)g(Sections)f (1)i(and)f(2)g(above)g(on)h(a)f(medium)264 91 y(customarily)f(used)h(for)g (software)f(interchange;)f(or,)264 191 y(c\))j(Accompany)e(it)h(with)g(the)g (information)f(you)h(received)f(as)h(to)h(the)f(offer)264 241 y(to)h(distribute)d(corresponding)h(source)g(code.)43 b(\(This)20 b(alternative)g(is)264 291 y(allowed)h(only)g(for)g(noncommercial)e (distribution)g(and)i(only)g(if)h(you)264 340 y(received)e(the)i(program)e (in)h(object)g(code)g(or)g(executable)f(form)h(with)g(such)264 390 y(an)h(offer,)e(in)i(accord)e(with)h(Subsection)f(b)h(above.\))177 490 y(The)g(source)g(code)g(for)g(a)h(work)f(means)f(the)i(preferred)d(form)i (of)h(the)f(work)g(for)177 540 y(making)g(modifications)e(to)i(it.)43 b(For)21 b(an)h(executable)d(work,)i(complete)f(source)177 589 y(code)h(means)g(all)g(the)g(source)g(code)g(for)g(all)g(modules)f(it)i (contains,)e(plus)h(any)177 639 y(associated)f(interface)g(definition)g (files,)g(plus)h(the)g(scripts)g(used)g(to)177 689 y(control)g(compilation)e (and)i(installation)f(of)h(the)g(executable.)41 b(However,)21 b(as)g(a)177 739 y(special)g(exception,)e(the)i(source)g(code)g(distributed)e (need)i(not)h(include)177 789 y(anything)e(that)h(is)h(normally)e (distributed)f(\(in)i(either)g(source)g(or)g(binary)177 839 y(form\))g(with)g(the)g(major)g(components)f(\(compiler,)f(kernel,)i(and)g (so)g(on\))g(of)h(the)177 888 y(operating)e(system)h(on)g(which)g(the)g (executable)f(runs,)g(unless)h(that)g(component)177 938 y(itself)g (accompanies)e(the)i(executable.)177 1038 y(If)h(distribution)d(of)i (executable)f(or)h(object)g(code)g(is)g(made)g(by)h(offering)177 1088 y(access)f(to)g(copy)g(from)g(a)h(designated)d(place,)i(then)g(offering) f(equivalent)177 1137 y(access)h(to)g(copy)g(the)g(source)g(code)g(from)g (the)g(same)g(place)g(counts)f(as)177 1187 y(distribution)f(of)j(the)f (source)g(code,)f(even)h(though)g(third)g(parties)f(are)h(not)177 1237 y(compelled)f(to)h(copy)g(the)h(source)e(along)h(with)g(the)g(object)g (code.)221 1337 y(4.)g(You)g(may)g(not)h(copy,)e(modify,)h(sublicense,)e(or)j (distribute)d(the)j(Program)177 1386 y(except)f(as)g(expressly)f(provided)g (under)h(this)g(License.)42 b(Any)21 b(attempt)177 1436 y(otherwise)f(to)h (copy,)g(modify,)g(sublicense)e(or)j(distribute)d(the)j(Program)e(is)177 1486 y(void,)h(and)g(will)g(automatically)e(terminate)h(your)h(rights)g (under)f(this)h(License.)177 1536 y(However,)f(parties)h(who)g(have)g (received)f(copies,)g(or)i(rights,)e(from)h(you)g(under)177 1586 y(this)g(License)f(will)h(not)h(have)f(their)f(licenses)g(terminated)g (so)i(long)f(as)g(such)177 1636 y(parties)g(remain)f(in)h(full)g(compliance.) 221 1735 y(5.)g(You)g(are)g(not)h(required)e(to)h(accept)g(this)g(License,)f (since)h(you)g(have)g(not)177 1785 y(signed)g(it.)43 b(However,)20 b(nothing)g(else)h(grants)g(you)g(permission)f(to)h(modify)g(or)177 1835 y(distribute)f(the)h(Program)f(or)i(its)f(derivative)f(works.)42 b(These)21 b(actions)f(are)177 1885 y(prohibited)g(by)h(law)g(if)h(you)f(do)g (not)h(accept)e(this)h(License.)42 b(Therefore,)20 b(by)177 1934 y(modifying)g(or)h(distributing)f(the)h(Program)f(\(or)h(any)h(work)f (based)f(on)i(the)177 1984 y(Program\),)e(you)h(indicate)f(your)h(acceptance) f(of)h(this)g(License)g(to)g(do)h(so,)f(and)177 2034 y(all)g(its)h(terms)e (and)h(conditions)f(for)h(copying,)f(distributing)g(or)h(modifying)177 2084 y(the)g(Program)g(or)g(works)g(based)g(on)g(it.)221 2183 y(6.)g(Each)g(time)g(you)g(redistribute)f(the)h(Program)f(\(or)h(any)g(work)g (based)g(on)h(the)177 2233 y(Program\),)e(the)h(recipient)f(automatically)f (receives)h(a)i(license)e(from)h(the)177 2283 y(original)f(licensor)g(to)i (copy,)f(distribute)e(or)j(modify)e(the)h(Program)g(subject)f(to)177 2333 y(these)h(terms)g(and)g(conditions.)41 b(You)21 b(may)h(not)f(impose)f (any)h(further)177 2383 y(restrictions)e(on)j(the)f(recipients')f(exercise)g (of)h(the)g(rights)g(granted)f(herein.)177 2433 y(You)h(are)h(not)f (responsible)e(for)i(enforcing)f(compliance)g(by)h(third)g(parties)g(to)177 2482 y(this)g(License.)221 2582 y(7.)g(If,)g(as)h(a)f(consequence)f(of)h(a)h (court)f(judgment)f(or)h(allegation)f(of)h(patent)177 2632 y(infringement)e(or)j(for)f(any)g(other)g(reason)g(\(not)f(limited)h(to)g (patent)g(issues\),)177 2682 y(conditions)f(are)h(imposed)f(on)i(you)f (\(whether)f(by)h(court)g(order,)g(agreement)f(or)177 2731 y(otherwise\))g(that)h(contradict)f(the)h(conditions)e(of)j(this)f(License,)f (they)h(do)g(not)177 2781 y(excuse)g(you)g(from)g(the)g(conditions)f(of)h (this)g(License.)42 b(If)21 b(you)h(cannot)177 2831 y(distribute)e(so)h(as)h (to)f(satisfy)f(simultaneously)f(your)i(obligations)f(under)h(this)1042 2940 y Fn(52)p eop %%Page: 53 54 53 53 bop 177 42 a Fi(License)21 b(and)g(any)g(other)g(pertinent)f (obligations,)f(then)i(as)g(a)h(consequence)d(you)177 91 y(may)i(not)h (distribute)d(the)i(Program)g(at)g(all.)43 b(For)21 b(example,)f(if)i(a)f (patent)177 141 y(license)g(would)f(not)h(permit)g(royalty-free)e (redistribution)g(of)j(the)f(Program)f(by)177 191 y(all)h(those)g(who)g (receive)g(copies)f(directly)g(or)i(indirectly)d(through)i(you,)g(then)177 241 y(the)g(only)g(way)g(you)h(could)e(satisfy)h(both)g(it)g(and)g(this)g (License)g(would)f(be)i(to)177 291 y(refrain)f(entirely)f(from)h (distribution)e(of)i(the)g(Program.)177 390 y(If)h(any)f(portion)f(of)h(this) g(section)g(is)g(held)g(invalid)f(or)i(unenforceable)d(under)177 440 y(any)i(particular)f(circumstance,)f(the)i(balance)g(of)g(the)g(section)g (is)g(intended)f(to)177 490 y(apply)h(and)g(the)g(section)g(as)g(a)h(whole)e (is)i(intended)e(to)h(apply)g(in)g(other)177 540 y(circumstances.)177 639 y(It)h(is)f(not)g(the)g(purpose)g(of)g(this)g(section)f(to)i(induce)e (you)h(to)h(infringe)e(any)177 689 y(patents)h(or)g(other)g(property)f(right) h(claims)f(or)h(to)h(contest)e(validity)g(of)i(any)177 739 y(such)f(claims;)f(this)h(section)g(has)g(the)g(sole)g(purpose)f(of)i (protecting)e(the)177 789 y(integrity)g(of)h(the)h(free)f(software)f (distribution)f(system,)h(which)h(is)177 839 y(implemented)f(by)h(public)g (license)f(practices.)41 b(Many)21 b(people)g(have)g(made)177 888 y(generous)f(contributions)f(to)j(the)f(wide)g(range)g(of)g(software)f (distributed)177 938 y(through)h(that)f(system)h(in)g(reliance)g(on)g (consistent)f(application)f(of)j(that)177 988 y(system;)f(it)g(is)g(up)h(to)f (the)g(author/donor)f(to)h(decide)f(if)i(he)f(or)h(she)f(is)g(willing)177 1038 y(to)h(distribute)d(software)h(through)h(any)g(other)g(system)f(and)h(a) h(licensee)e(cannot)177 1088 y(impose)h(that)g(choice.)177 1187 y(This)g(section)f(is)i(intended)e(to)h(make)g(thoroughly)f(clear)h (what)g(is)g(believed)f(to)177 1237 y(be)i(a)f(consequence)f(of)h(the)g(rest) g(of)h(this)f(License.)221 1337 y(8.)g(If)h(the)f(distribution)e(and/or)i (use)g(of)g(the)g(Program)g(is)g(restricted)f(in)177 1386 y(certain)h (countries)e(either)i(by)g(patents)g(or)g(by)g(copyrighted)f(interfaces,)g (the)177 1436 y(original)g(copyright)g(holder)h(who)g(places)g(the)g(Program) f(under)h(this)g(License)177 1486 y(may)g(add)h(an)f(explicit)f(geographical) f(distribution)h(limitation)f(excluding)177 1536 y(those)i(countries,)f(so)h (that)g(distribution)e(is)j(permitted)e(only)h(in)g(or)g(among)177 1586 y(countries)f(not)h(thus)g(excluded.)42 b(In)21 b(such)g(case,)g(this)g (License)f(incorporates)177 1636 y(the)h(limitation)f(as)h(if)h(written)e(in) i(the)f(body)g(of)g(this)g(License.)221 1735 y(9.)g(The)g(Free)g(Software)f (Foundation)g(may)h(publish)g(revised)f(and/or)h(new)g(versions)177 1785 y(of)h(the)f(General)f(Public)h(License)f(from)h(time)g(to)g(time.)43 b(Such)21 b(new)g(versions)f(will)177 1835 y(be)i(similar)e(in)h(spirit)g(to) g(the)g(present)g(version,)f(but)h(may)g(differ)g(in)g(detail)g(to)177 1885 y(address)g(new)g(problems)f(or)h(concerns.)177 1984 y(Each)g(version)f (is)i(given)f(a)g(distinguishing)e(version)h(number.)43 b(If)21 b(the)g(Program)177 2034 y(specifies)f(a)i(version)e(number)h(of)g(this)g (License)f(which)h(applies)f(to)i(it)f(and)g("any)177 2084 y(later)g(version",)f(you)h(have)g(the)g(option)g(of)g(following)f(the)h (terms)g(and)g(conditions)177 2134 y(either)g(of)g(that)g(version)f(or)i(of)f (any)g(later)g(version)f(published)g(by)i(the)f(Free)177 2183 y(Software)f(Foundation.)42 b(If)21 b(the)g(Program)g(does)f(not)i(specify)e (a)i(version)e(number)g(of)177 2233 y(this)h(License,)f(you)h(may)h(choose)e (any)h(version)g(ever)g(published)f(by)h(the)g(Free)g(Software)177 2283 y(Foundation.)221 2383 y(10.)g(If)g(you)g(wish)g(to)h(incorporate)d (parts)i(of)g(the)h(Program)e(into)h(other)g(free)177 2433 y(programs)f(whose)h(distribution)e(conditions)h(are)h(different,)f(write)h (to)g(the)g(author)177 2482 y(to)h(ask)f(for)g(permission.)41 b(For)21 b(software)g(which)f(is)i(copyrighted)d(by)j(the)f(Free)177 2532 y(Software)f(Foundation,)g(write)h(to)g(the)g(Free)g(Software)f (Foundation;)g(we)h(sometimes)177 2582 y(make)g(exceptions)f(for)h(this.)43 b(Our)21 b(decision)f(will)h(be)g(guided)g(by)g(the)g(two)h(goals)177 2632 y(of)g(preserving)d(the)i(free)g(status)g(of)g(all)h(derivatives)d(of)i (our)h(free)f(software)f(and)177 2682 y(of)i(promoting)d(the)j(sharing)e(and) h(reuse)g(of)g(software)f(generally.)264 2781 y(NO)i(WARRANTY)1042 2940 y Fn(53)p eop %%Page: 54 55 54 54 bop 221 42 a Fi(11.)21 b(BECAUSE)f(THE)h(PROGRAM)g(IS)g(LICENSED)f (FREE)h(OF)h(CHARGE,)e(THERE)h(IS)g(NO)h(WARRANTY)177 91 y(FOR)f(THE)h (PROGRAM,)e(TO)h(THE)g(EXTENT)g(PERMITTED)f(BY)h(APPLICABLE)f(LAW.)43 b(EXCEPT)20 b(WHEN)177 141 y(OTHERWISE)g(STATED)h(IN)g(WRITING)f(THE)i (COPYRIGHT)d(HOLDERS)i(AND/OR)f(OTHER)h(PARTIES)177 191 y(PROVIDE)g(THE)g (PROGRAM)f("AS)h(IS")g(WITHOUT)g(WARRANTY)f(OF)h(ANY)g(KIND,)g(EITHER)g (EXPRESSED)177 241 y(OR)h(IMPLIED,)e(INCLUDING,)f(BUT)j(NOT)f(LIMITED)f(TO,)h (THE)g(IMPLIED)g(WARRANTIES)f(OF)177 291 y(MERCHANTABILITY)f(AND)i(FITNESS)f (FOR)i(A)f(PARTICULAR)f(PURPOSE.)42 b(THE)21 b(ENTIRE)g(RISK)f(AS)177 340 y(TO)i(THE)f(QUALITY)f(AND)h(PERFORMANCE)f(OF)h(THE)g(PROGRAM)g(IS)g (WITH)g(YOU.)43 b(SHOULD)20 b(THE)177 390 y(PROGRAM)h(PROVE)f(DEFECTIVE,)g (YOU)h(ASSUME)g(THE)g(COST)g(OF)g(ALL)g(NECESSARY)f(SERVICING,)177 440 y(REPAIR)h(OR)g(CORRECTION.)221 540 y(12.)g(IN)g(NO)h(EVENT)e(UNLESS)h (REQUIRED)f(BY)i(APPLICABLE)d(LAW)i(OR)h(AGREED)e(TO)i(IN)f(WRITING)177 589 y(WILL)g(ANY)g(COPYRIGHT)f(HOLDER,)h(OR)g(ANY)g(OTHER)g(PARTY)g(WHO)g (MAY)g(MODIFY)g(AND/OR)177 639 y(REDISTRIBUTE)e(THE)j(PROGRAM)e(AS)h (PERMITTED)f(ABOVE,)h(BE)g(LIABLE)g(TO)g(YOU)g(FOR)h(DAMAGES,)177 689 y(INCLUDING)e(ANY)h(GENERAL,)f(SPECIAL,)h(INCIDENTAL)e(OR)j (CONSEQUENTIAL)d(DAMAGES)h(ARISING)177 739 y(OUT)h(OF)h(THE)f(USE)g(OR)g (INABILITY)f(TO)i(USE)f(THE)g(PROGRAM)f(\(INCLUDING)g(BUT)h(NOT)h(LIMITED)177 789 y(TO)g(LOSS)f(OF)g(DATA)g(OR)g(DATA)g(BEING)g(RENDERED)f(INACCURATE)g(OR) h(LOSSES)g(SUSTAINED)f(BY)177 839 y(YOU)h(OR)h(THIRD)e(PARTIES)h(OR)g(A)h (FAILURE)e(OF)i(THE)f(PROGRAM)f(TO)h(OPERATE)g(WITH)g(ANY)g(OTHER)177 888 y(PROGRAMS\),)f(EVEN)h(IF)g(SUCH)g(HOLDER)g(OR)g(OTHER)g(PARTY)g(HAS)g (BEEN)g(ADVISED)f(OF)i(THE)177 938 y(POSSIBILITY)e(OF)h(SUCH)g(DAMAGES.)286 1038 y(END)g(OF)h(TERMS)e(AND)i(CONDITIONS)177 1137 y(Appendix:)e(How)h(to)h (Apply)e(These)h(Terms)g(to)g(Your)g(New)g(Programs)221 1237 y(If)g(you)g(develop)g(a)g(new)g(program,)g(and)g(you)g(want)g(it)g(to)h(be)f (of)g(the)h(greatest)177 1287 y(possible)e(use)h(to)h(the)f(public,)f(the)i (best)f(way)g(to)g(achieve)f(this)h(is)h(to)f(make)g(it)177 1337 y(free)g(software)f(which)h(everyone)f(can)h(redistribute)f(and)h (change)f(under)h(these)g(terms.)221 1436 y(To)g(do)h(so,)f(attach)f(the)h (following)f(notices)h(to)g(the)g(program.)42 b(It)22 b(is)f(safest)177 1486 y(to)h(attach)e(them)h(to)g(the)h(start)e(of)i(each)f(source)f(file)h (to)h(most)f(effectively)177 1536 y(convey)g(the)g(exclusion)f(of)h (warranty;)f(and)h(each)g(file)g(should)g(have)g(at)g(least)177 1586 y(the)g("copyright")f(line)h(and)g(a)h(pointer)e(to)h(where)g(the)g (full)g(notice)g(is)g(found.)264 1685 y()264 1735 y(Copyright)f(\(C\))h(19yy)43 b()264 1835 y(This)g(program)g(is)g(free)g(software;)f(you)h(can)g(redistribute)f (it)h(and/or)g(modify)264 1885 y(it)h(under)e(the)i(terms)e(of)i(the)f(GNU)g (General)f(Public)h(License)f(as)i(published)e(by)264 1934 y(the)i(Free)e(Software)h(Foundation;)e(either)i(version)f(2)i(of)f(the)g (License,)f(or)264 1984 y(\(at)i(your)e(option\))h(any)g(later)g(version.)264 2084 y(This)g(program)g(is)g(distributed)f(in)h(the)g(hope)g(that)g(it)g (will)g(be)h(useful,)264 2134 y(but)g(WITHOUT)e(ANY)h(WARRANTY;)f(without)g (even)h(the)g(implied)g(warranty)f(of)264 2183 y(MERCHANTABILITY)f(or)i (FITNESS)g(FOR)g(A)h(PARTICULAR)d(PURPOSE.)42 b(See)21 b(the)264 2233 y(GNU)h(General)e(Public)g(License)h(for)g(more)g(details.)264 2333 y(You)h(should)e(have)h(received)f(a)i(copy)f(of)g(the)g(GNU)g(General)g (Public)f(License)264 2383 y(along)h(with)g(this)g(program;)f(if)i(not,)f (write)f(to)i(the)f(Free)g(Software)264 2433 y(Foundation,)f(Inc.,)h(675)g (Mass)g(Ave,)g(Cambridge,)e(MA)j(02139,)e(USA.)177 2532 y(Also)h(add)g (information)f(on)h(how)g(to)h(contact)e(you)h(by)h(electronic)d(and)j(paper) e(mail.)177 2632 y(If)i(the)f(program)f(is)h(interactive,)f(make)h(it)g (output)g(a)g(short)g(notice)g(like)g(this)177 2682 y(when)g(it)h(starts)e (in)h(an)h(interactive)d(mode:)264 2781 y(Gnomovision)h(version)g(69,)h (Copyright)f(\(C\))h(19yy)g(name)g(of)h(author)264 2831 y(Gnomovision)e (comes)h(with)g(ABSOLUTELY)e(NO)j(WARRANTY;)e(for)h(details)1042 2940 y Fn(54)p eop %%Page: 55 56 55 55 bop 264 42 a Fi(type)21 b(`show)g(w'.)264 91 y(This)g(is)h(free)f (software,)f(and)h(you)g(are)g(welcome)f(to)i(redistribute)d(it)264 141 y(under)i(certain)f(conditions;)g(type)h(`show)g(c')g(for)g(details.)177 241 y(The)g(hypothetical)f(commands)g(`show)h(w')g(and)g(`show)g(c')g(should) g(show)g(the)g(appropriate)177 291 y(parts)g(of)g(the)g(General)g(Public)f (License.)42 b(Of)22 b(course,)e(the)h(commands)f(you)i(use)f(may)177 340 y(be)h(called)e(something)g(other)h(than)g(`show)g(w')g(and)g(`show)g (c';)g(they)g(could)g(even)g(be)177 390 y(mouse-clicks)e(or)j(menu)f (items--whatever)e(suits)h(your)h(program.)177 490 y(You)g(should)g(also)g (get)g(your)g(employer)f(\(if)h(you)g(work)g(as)h(a)f(programmer\))f(or)h (your)177 540 y(school,)g(if)g(any,)g(to)g(sign)g(a)h("copyright)e (disclaimer")f(for)i(the)g(program,)g(if)177 589 y(necessary.)42 b(Here)21 b(is)g(a)h(sample;)e(alter)h(the)g(names:)221 689 y(Yoyodyne,)f(Inc.,)g(hereby)h(disclaims)f(all)h(copyright)f(interest)g(in)i (the)f(program)221 739 y(`Gnomovision')e(\(which)h(makes)h(passes)g(at)g (compilers\))f(written)g(by)i(James)e(Hacker.)221 839 y(,)g(1)g(April)g(1989)221 888 y(Ty)g(Coon,)g(President)f(of)h(Vice)177 988 y(This)g(General)f(Public)h(License)f(does)h(not)h(permit)e (incorporating)f(your)i(program)f(into)177 1038 y(proprietary)g(programs.)41 b(If)22 b(your)f(program)f(is)h(a)h(subroutine)e(library,)g(you)h(may)177 1088 y(consider)f(it)i(more)f(useful)f(to)i(permit)e(linking)g(proprietary)g (applications)f(with)i(the)177 1137 y(library.)42 b(If)21 b(this)g(is)h(what) f(you)g(want)g(to)g(do,)g(use)h(the)f(GNU)g(Library)f(General)177 1187 y(Public)h(License)f(instead)g(of)i(this)f(License.)p 177 1280 1772 2 v 1042 2940 a Fn(55)p eop %%Page: 56 57 56 56 bop 1042 2940 a Fn(56)p eop %%Page: 57 58 57 57 bop 177 378 a Ff(App)s(endix)34 b(B)177 610 y Fl(References)177 851 y Fk([ANSI])21 b Fn(Australian)f(Standard)h(AS)f(3955-1991,)f (\\Programming)e(Languages)j(|)g(C",)g(\(ISBN:)g(0-7262-)177 901 y(6970-0\),)c(12)h(July)g(1991.)27 b(Iden)o(tical)17 b(to:)24 b(In)o(ternational)17 b(Standard)g(ISO/IEC)h(9899:)23 b(1990)16 b(Programming)177 951 y(Languages)e(|)f(C.)177 1025 y Fk([Ben)o(tley86])h Fn(Ben)o(tley)i(J.,)g(\\Programmi)o(ng)d(P)o(earls:)22 b(Literate)16 b(Programming",)c Fh(Communic)n(ations)17 b(of)g(the)177 1075 y(A)o(CM)p Fn(,)c(V)m(ol.)g(29,)f(No.)i(5,)f(pp.)g(364{369,)f(1986.)177 1150 y Fk([Hoare80])f Fn(Hoare)f(C.A.R.,)f(\\The)h(Emp)q(eror's)g(Old)g (Clothes",)g(T)m(uring)g(Aw)o(ard)g(Lecture,)i(1980,)e(from)e(\\A)o(CM)177 1200 y(T)m(uring)15 b(Aw)o(ard)g(Lectures:)24 b(The)16 b(First)f(Tw)o(en)o(t) o(y)h(Y)m(ears)g(1966{1985",)d(A)o(CM)i(Press,)i(New)g(Y)m(ork,)e(\(ISBN:)g (0-)177 1249 y(201-07794-9\),)c(1987)i(\(see)i(p.)f(155\).)177 1324 y Fk([Horton90])f Fn(Horton)h(M.R.,)e(\\P)o(ortable)i(C)g(Soft)o(w)o (are",)e(Pren)o(tice)k(Hall,)c(\(ISBN:)i(0-13-868050-7\),)d(1990.)177 1399 y Fk([Kernighan88])k Fn(Kernighan)i(B.W.,)g(Ritc)o(hie)f(D.M.,)g(\\The)h (C)g(Programming)c(Language",)k(\(second)h(edi-)177 1449 y(tion,\\ANSI)13 b(C"\),)g(Pren)o(tice)j(Hall,)c(\(ISBN:)i(0-13-110362-8\),)d(1988.)177 1523 y Fk([Kn)o(uth83])j Fn(Kn)o(uth)h(D.E.,)f(\\The)h(WEB)g(System)f(of)h (Structured)h(Do)q(cumen)o(tation",)d(\(W)m(eb)i(User)h(Man)o(ual,)177 1573 y(V)m(ersion)e(2.5,)f(No)o(v)o(em)o(b)q(er,)f(1983\),)h(Stanford)g(Univ) o(ersit)o(y)m(,)g(1983.)177 1648 y Fk([Kn)o(uth84])f Fn(Kn)o(uth)j(D.E.,)d (\\The)i(T)767 1657 y(E)790 1648 y(Xb)q(o)q(ok",)f(Addison-W)m(esley)m(,)g (\(ISBN:)h(0-201-13448-9\),)d(1984.)177 1723 y Fk([Lamp)q(ort86])k Fn(Lamp)q(ort)h(L.,)g(\\L)723 1718 y Fg(a)742 1723 y Fn(T)765 1735 y(E)788 1723 y(X:)g(A)g(Do)q(cumen)o(t)g(Preparation)h(System",)f (Addison-W)m(esley)m(,)g(\(ISBN:)177 1773 y(0-201-15790-X\),)11 b(1986.)177 1847 y Fk([Rabino)o(witz90])k Fn(Rabino)o(witz)h(H.,)h(Sc)o(haap) g(C.,)h(\\P)o(ortable)f(C",)f(Pren)o(tice)j(Hall,)d(\(ISBN:0-13-685967-4\)) 177 1897 y(1990.)177 1972 y Fk([Ramsey89])22 b Fn(Ramsey)f(N.,)j(\\W)m(ea)o (ving)d(a)h(Language-Indep)q(enden)o(t)h(WEB",)f Fh(Communic)n(ations)h(of)g (the)177 2022 y(A)o(CM)p Fn(,)13 b(V)m(ol.)g(32,)f(No.)i(9,)f(pp.)g (1051{1055,)e(1989.)177 2096 y Fk([T)l(arjan72])16 b Fn(T)m(arjan)f(R.E.,)h (\\Depth-First)g(Searc)o(h)i(and)e(Linear)g(Graph)g(Algorithms",)e Fh(SIAM)k(Journal)f(of)177 2146 y(Computing)p Fn(,)d(V)m(ol.)e(1,)h(No.)h(2,) f(pp.)g(146{160,)f(June)j(1972.)177 2221 y Fk([USDOD83])i Fn(\\The)i (Programming)c(Language)j(Ada)g(Reference)i(Man)o(ual",)e(American)g (National)f(Stan-)177 2271 y(dards)e(Institute)f(Inc,)g (ANSI/MIL-STD-1815A-1983,)d(1983.)1042 2940 y(57)p eop %%Page: 58 59 58 58 bop 177 279 a Fl(Index)177 487 y Fn(.cld)14 b(\014le)f(18)177 537 y(==)i(14)177 587 y(@M)f(23)177 637 y(@Z)h(23)177 687 y(abbreviations)f (iden)o(ti\014er)g(28)177 737 y(ac)o(kno)o(wledgemen)o(ts)f(7)177 787 y(Ada)h(18)177 837 y(Ada)g(27)177 886 y(Ada)g(7)177 936 y(adding)f(features)i(36)177 986 y(Adelaide)f(Univ)o(ersit)o(y)g(27)177 1036 y(analyser)g(45)177 1086 y(Andrew)h(T)m(rev)o(orro)o(w)f(9)177 1136 y(ANSI)g(28)177 1186 y(ANSI)g(57)177 1236 y(an)o(tiquated)g(features)h (43)177 1286 y(ASCI)q(I)f(mnemonics)e(45)177 1336 y(asking)h(for)h(trouble)g (28)177 1386 y(authorit)o(y)f(design)i(36)177 1436 y(authorit)o(y)e(securit)o (y)i(36)177 1486 y(a)o(v)n(ailabilit)o(y)10 b(program)j(37)177 1536 y(bac)o(kw)o(ards)h(compatibilit)o(y)d(11)177 1586 y(Barry)k(Dwy)o(er)f (7)177 1636 y(Begg)g(Jerem)o(y)g(7)177 1686 y(Ben)o(tley)h(Jon)f(11)177 1736 y(Ben)o(tley86)g(11)177 1786 y(Ben)o(tley86)g(57)177 1836 y(blank)f(inden)o(tation)h(12)177 1886 y(blank)f(inden)o(tation)h(12)177 1935 y(break)o(out,)g(GNU)f(41)177 1985 y(Brissenden)j(Roger)e(7)177 2035 y(c)o(hanges)h(dangers)f(35)177 2085 y(co)q(ding)g(st)o(yle)g(28)177 2135 y(command)d(in)o(terface)k(43)177 2185 y(command)c(in)o(terpreter)16 b(43)177 2235 y(command)11 b(line)j(in)o(terface)g(design)g(goals)f(19)177 2285 y(command)e(line)j(in)o(terface)g(18)177 2335 y(command)d(setall)j(43) 177 2385 y(commen)o(t)e(duplication)h(18)177 2435 y(Comm)o(unicati)o(ons)e (of)j(the)g(A)o(CM)g(11)177 2485 y(compatibilit)o(y)d(bac)o(kw)o(ards)j(11) 177 2535 y(compiler)f(ThinkC)g(30)177 2585 y(compiler)g(35)177 2635 y(conditionals)g(44)177 2685 y(con)o(tiguous)h(memory)d(45)177 2735 y(cop)o(yrigh)o(t)j(la)o(w)f(38)177 2785 y(cop)o(yrigh)o(t)h(notice)g(1) 177 2835 y(cop)o(yrigh)o(t)g(38)1136 487 y(correctness)i(47)1136 537 y(coun)o(ting)d(diagnostic)g(43)1136 587 y(cross)i(references)h(46)1136 637 y(dangers)e(c)o(hanges)h(35)1136 687 y(dangers)f(inden)o(tation)f(13)1136 737 y(dangers)h(languages)g(35)1136 787 y(Da)o(vid)e(Hulse)j(27)1136 837 y(Da)o(vid)d(Hulse)j(7)1136 886 y(DCL)e(13)1136 936 y(deriv)o(ed)h(w)o (ork)g(38)1136 986 y(design)g(authorit)o(y)f(36)1136 1036 y(design)h(F)m (unnelW)m(eb)f(11)1136 1086 y(design)h(goals)f(command)e(line)i(in)o(terface) i(19)1136 1136 y(design)f(language)f(44)1136 1186 y(detection)i(recursion)g (45)1136 1236 y(diagnostic)e(coun)o(ting)g(43)1136 1286 y(diagnostic)g (messages)h(25)1136 1336 y(diagnostics)f(47)1136 1386 y(do)q(cumen)o(t)g (structure)j(macro)d(structure)j(23)1136 1436 y(do)q(cumen)o(t)d(structure)j (16)1136 1486 y(do)q(cumen)o(t)d(structure)j(23)1136 1536 y(do)q(cumen)o (tation)c(out)i(of)f(date)i(18)1136 1586 y(do)q(cumen)o(tation)d(43)1136 1636 y(Donald)g(Kn)o(uth)j(11)1136 1686 y(Donald)d(Kn)o(uth)j(7)1136 1736 y(duplication)d(commen)o(t)g(18)1136 1786 y(Dwy)o(er)i(Barry)g(7)1136 1836 y(e\016ciency)g(47)1136 1886 y(EOL)g(represen)o(tation)h(45)1136 1935 y(example)d(o\016cial)h(43)1136 1985 y(extensions)i(\014lename)d(20)1136 2035 y(factor)i(glue)f(46)1136 2085 y(features)i(adding)e(36)1136 2135 y(features)i(an)o(tiquated)e(43)1136 2185 y(features)i(mo)q (di\014cation)c(35)1136 2235 y(features)k(remo)o(ving)d(35)1136 2285 y(\014le)i(.cld)f(18)1136 2335 y(\014le)h(extension)g(protection)h(37) 1136 2385 y(\014le)f(mark)o(ers)f(44)1136 2435 y(\014le)h(names)f(19)1136 2485 y(\014le)h(names)f(21)1136 2535 y(\014le)h(signature)g(44)1136 2585 y(\014lename)e(extensions)j(20)1136 2635 y(\014lename)d(inheritance)j (20)1136 2685 y(\014lenames)e(length)h(29)1136 2735 y(\014lenames)f(p)q (ortable)h(21)1136 2785 y(formal)d(parameter)j(list)f(44)1136 2835 y(F)m(unnelW)m(eb)g(design)h(11)1042 2940 y(58)p eop %%Page: 59 60 59 59 bop 177 42 a Fn(F)m(unnelW)m(eb)14 b(future)g(43)177 91 y(F)m(unnelW)m(eb)g(history)f(27)177 141 y(F)m(unnelW)m(eb)h(implem)o(en)o (tation)d(27)177 191 y(F)m(unnelW)m(eb)j(managem)o(en)o(t)e(39)177 241 y(F)m(unnelW)m(eb)i(mo)q(di\014cation)d(35)177 291 y(F)m(unnelW)m(eb)j (motiv)n(atio)o(n)d(11)177 341 y(F)m(unnelW)m(eb)j(o\016cial)e(39)177 391 y(F)m(unnelW)m(eb)i(past)g(use)g(27)177 441 y(F)m(unnelW)m(eb)g (protection)g(37)177 490 y(F)m(unnelW)m(eb)g(syn)o(tax)f(14)177 540 y(F)m(unnelW)m(eb)h(V1)f(11)177 590 y(F)m(unnelW)m(eb)h(v)o(ersion)g(1)f (27)177 640 y(F)m(unnelW)m(eb)h(v)o(ersion)g(2)f(27)177 690 y(F)m(unnelW)m(eb)h(v)o(ersion)g(3)f(27)177 740 y(F)m(unnelW)m(eb)h(writing)f (itself)g(28)177 790 y(future)i(F)m(unnelW)m(eb)e(43)177 840 y(genealogy)g(program)g(36)177 889 y(generic)i(t)o(yp)q(esetter)h(46)177 939 y(glue)e(factor)g(46)177 989 y(GNU)g(break)o(out)g(41)177 1039 y(GNU)g(license)h(35)177 1089 y(GNU)f(license)h(39)177 1139 y(GNU)f(License)h(49)177 1189 y(GNU)f(v)o(ersion)g(41)177 1239 y(Hac)o(k)o(ett)h(Simon)d(7)177 1288 y(headings)i(16)177 1338 y(heap)g(memory)e(29)177 1388 y(hierarc)o(hical)i(structure)i(23)177 1438 y(history)e(F)m(unnelW)m(eb)f(27)177 1488 y(Hoare80)h(36)177 1538 y(Hoare80)g(57)177 1588 y(Horton90)g(28)177 1638 y(Horton90)g(57)177 1687 y(Hulse)h(Da)o(vid)d(27)177 1737 y(Hulse)j(Da)o(vid)d(7)177 1787 y(iden)o(ti\014er)i(abbreviations)g(28)177 1837 y(iden)o(ti\014er)g(28) 177 1887 y(implemen)o(tation)d(F)m(unnelW)m(eb)i(27)177 1937 y(include)h(\014le)g(suppression)h(46)177 1987 y(inden)o(tation)e(blank)h(12) 177 2037 y(inden)o(tation)f(dangers)i(13)177 2086 y(inden)o(tation)e(no)h(12) 177 2136 y(inden)o(tation)f(text)i(12)177 2186 y(inden)o(tation)e(text)i(30) 177 2236 y(inden)o(tation)e(text)i(45)177 2286 y(inden)o(tation)e(12)177 2336 y(inden)o(tation)g(12)177 2386 y(inden)o(ted)i(macro)d(call)h(12)177 2436 y(index)h(program)e(43)177 2486 y(inheritance)j(\014lename)d(20)177 2535 y(in)o(terface)j(command)c(line)i(18)177 2585 y(in)o(terface)i(command)c (43)177 2635 y(in)o(terpreter)16 b(command)11 b(43)177 2685 y(in)o(terpreter)16 b(shell)e(43)177 2735 y(in)o(v)o(o)q(cations)f(n)o(um)o (b)q(er)g(22)177 2785 y(issues)i(miscellaneous)e(18)177 2835 y(Jerem)o(y)h(Begg)g(7)1136 42 y(Jon)g(Ben)o(tley)g(11)1136 91 y(Kernighan88)f(28)1136 141 y(Kernighan88)g(57)1136 191 y(Kn)o(uth)h(Donald)f(11)1136 241 y(Kn)o(uth)h(Donald)f(7)1136 291 y(Kn)o(uth83)g(11)1136 341 y(Kn)o(uth83)g(57)1136 391 y(Kn)o(uth84)g(57) 1136 441 y(Kn)o(uth84)g(9)1136 490 y(Lamp)q(ort86)f(57)1136 540 y(Lamp)q(ort86)g(9)1136 590 y(language)h(design)h(44)1136 640 y(languages)f(dangers)i(35)1136 690 y(LaT)m(eX)e(9)1136 740 y(LaT)m(eX)g(9)1136 790 y(la)o(w)g(cop)o(yrigh)o(t)g(38)1136 840 y(leak)n(age)g(memory)e(30)1136 889 y(length)i(\014lenames)h(29)1136 939 y(license)g(GNU)g(35)1136 989 y(license)g(GNU)g(39)1136 1039 y(License)h(GNU)e(49)1136 1089 y(license)h(38)1136 1139 y(lister)g(46)1136 1189 y(Macin)o(tosh)g(29)1136 1239 y(Macin)o(tosh)g(30) 1136 1288 y(Macin)o(tosh)g(9)1136 1338 y(macro)e(call)h(syn)o(tax)h(16)1136 1388 y(macro)e(de\014nition)i(syn)o(tax)g(14)1136 1438 y(macro)e(structure)k (do)q(cumen)o(t)e(structure)i(23)1136 1488 y(macro)c(structure)k(23)1136 1538 y(mak)o(e)c(44)1136 1588 y(mallo)q(c)f(29)1136 1638 y(managemen)o(t)g(F) m(unnelW)m(eb)i(39)1136 1687 y(man)o(uals)e(mo)q(difying)g(38)1136 1737 y(mapp)q(er)i(44)1136 1787 y(mark)o(ers)g(\014le)h(44)1136 1837 y(memory)d(con)o(tiguous)j(45)1136 1887 y(memory)d(heap)j(29)1136 1937 y(memory)d(leak)n(age)i(30)1136 1987 y(memory)e(pac)o(k)n(age)j(29)1136 2037 y(memory)d(stac)o(k)j(30)1136 2086 y(memory)d(static)j(30)1136 2136 y(memory)d(use)k(of)e(29)1136 2186 y(messages)h(diagnostic)f(25)1136 2236 y(miscellaneous)f(issues)j(18)1136 2286 y(mnemonics)c(ASCI)q(I)j(45)1136 2336 y(mo)q(di\014cation)d(features)k(35)1136 2386 y(mo)q(di\014cation)c(F)m (unnelW)m(eb)j(35)1136 2436 y(mo)q(difying)d(man)o(uals)g(38)1136 2486 y(motiv)n(atio)o(n)g(F)m(unnelW)m(eb)j(11)1136 2535 y(MSDOS)g(29)1136 2585 y(names)f(\014le)h(19)1136 2635 y(names)f(\014le)h(21)1136 2685 y(naming)d(p)q(oin)o(ters)k(29)1136 2735 y(naming)c(t)o(yp)q(es)k(29) 1136 2785 y(no)e(inden)o(tation)h(12)1136 2835 y(no)f(inden)o(tation)h(12) 1042 2940 y(59)p eop %%Page: 60 61 60 60 bop 177 42 a Fn(notice)14 b(cop)o(yrigh)o(t)g(1)177 91 y(n)o(um)o(b)q(er)f(in)o(v)o(o)q(cations)g(22)177 141 y(n)o(um)o(b)q(er)g (output)h(\014les)h(12)177 191 y(n)o(um)o(b)q(ering)e(section)h(23)177 241 y(Occam's)f(razor)i(12)177 291 y(o\016cial)e(example)f(43)177 341 y(o\016cial)h(F)m(unnelW)m(eb)g(39)177 391 y(options)h(43)177 441 y(out)g(of)f(date)h(do)q(cumen)o(tation)f(18)177 490 y(output)h(\014les)g (n)o(um)o(b)q(er)g(12)177 540 y(OzT)m(eX)h(9)177 590 y(pac)o(k)n(age)f (memory)d(29)177 640 y(parameter)j(list)f(formal)f(44)177 690 y(parameterized)i(macro)f(call)g(syn)o(tax)h(16)177 740 y(parameterized)g (macro)f(de\014nitions)h(syn)o(tax)g(15)177 790 y(parser)h(45)177 840 y(P)o(ascal)f(12)177 889 y(past)g(use)h(F)m(unnelW)m(eb)e(27)177 939 y(Ph.D.)g(27)177 989 y(p)q(oin)o(ters)i(naming)c(29)177 1039 y(p)q(ortabilit)o(y)i(28)177 1089 y(p)q(ortable)h(\014lenames)f(21)177 1139 y(pragma)f(syn)o(tax)i(44)177 1189 y(pragma)e(v)o(ersion)i(45)177 1239 y(preface)h(5)177 1288 y(presen)o(tation)g(notes)g(9)177 1338 y(program)d(a)o(v)n(ailabilit)o(y)f(37)177 1388 y(program)h(genealogy)i (36)177 1438 y(program)e(index)i(43)177 1488 y(programming)c(p)q(earls)15 b(11)177 1538 y(protection)g(\014le)e(extension)i(37)177 1588 y(protection)g(F)m(unnelW)m(eb)e(37)177 1638 y(Rabino)o(witz90)f(28)177 1687 y(Rabino)o(witz90)g(28)177 1737 y(Rabino)o(witz90)g(57)177 1787 y(Ramsey89)g(46)177 1837 y(Ramsey89)g(57)177 1887 y(recursion)j (detection)g(45)177 1937 y(recursion)g(test)g(43)177 1987 y(references)i (cross)e(46)177 2037 y(references)i(57)177 2086 y(regression)e(testing)g(18) 177 2136 y(remo)o(ving)d(features)j(35)177 2186 y(represen)o(tation)h(EOL)e (45)177 2236 y(Rob)q(ert)g(Endre)h(T)m(arjan)e(45)177 2286 y(Roger)h(Brissenden)i(7)177 2336 y(Ross)e(William)o(s)d(1)177 2386 y(scanner)k(44)177 2436 y(section)g(n)o(um)o(b)q(ering)d(23)177 2486 y(section)j(syn)o(tax)f(44)177 2535 y(sections)h(16)177 2585 y(securit)o(y)g(authorit)o(y)e(36)177 2635 y(setall)h(command)d(43)177 2685 y(shell)j(in)o(terpreter)i(43)177 2735 y(signature)e(\014le)g(44)177 2785 y(Simon)e(Hac)o(k)o(ett)j(7)177 2835 y(size)g(stac)o(k)f(30)1136 42 y(South)d(Australian)f(Go)o(v)o(ernmen)o(t)g(Departmen)o(t)g(of)1302 91 y(Lands)k(28)1136 141 y(sp)q(eed)h(47)1136 191 y(spider)f(46)1136 241 y(stac)o(k)g(memory)d(30)1136 291 y(stac)o(k)j(size)h(30)1136 341 y(static)f(memory)d(30)1136 391 y(static)j(v)n(ariables)f(30)1136 440 y(strength)i(t)o(yp)q(esetting)g(46)1136 490 y(structure)h(do)q(cumen)o (t)d(16)1136 540 y(structure)j(do)q(cumen)o(t)d(23)1136 590 y(structure)j(hierarc)o(hical)d(23)1136 640 y(structure)j(macro)c(23)1136 690 y(st)o(yle)i(co)q(ding)f(28)1136 740 y(suite)h(test)h(47)1136 790 y(suppression)g(include)f(\014le)g(46)1136 840 y(syn)o(tax)f(F)m(unnelW)m (eb)h(14)1136 889 y(syn)o(tax)f(macro)g(call)g(16)1136 939 y(syn)o(tax)g(macro)g(de\014nition)h(14)1136 989 y(syn)o(tax)f(parameterized) i(macro)d(call)h(16)1136 1039 y(syn)o(tax)g(parameterized)i(macro)d (de\014nitions)i(15)1136 1089 y(syn)o(tax)f(pragma)f(44)1136 1139 y(syn)o(tax)h(section)i(44)1136 1189 y(table)e(of)h(con)o(ten)o(ts)h(45) 1136 1239 y(tangle)e(45)1136 1288 y(T)m(arjan)g(Rob)q(ert)h(Endre)h(45)1136 1338 y(T)m(arjan72)d(45)1136 1388 y(T)m(arjan72)g(57)1136 1438 y(test)j(recursion)g(43)1136 1488 y(test)g(suite)f(47)1136 1538 y(testing)g(regression)h(18)1136 1588 y(text)f(inden)o(tation)f(12)1136 1638 y(text)h(inden)o(tation)f(12)1136 1687 y(text)h(inden)o(tation)f(30)1136 1737 y(text)h(inden)o(tation)f(45)1136 1787 y(T)m(eX)h(23)1136 1837 y(T)m(eX)g(9)1136 1887 y(ThinkC)f(compiler)f(30)1136 1937 y(trademark)h(36)1136 1987 y(T)m(rev)o(orro)o(w)g(Andrew)i(9)1136 2037 y(trouble)f(asking)f(for)g(28)1136 2086 y(t)o(yp)q(es)h(naming)e(29)1136 2136 y(t)o(yp)q(esetter)k(generic)f(46)1136 2186 y(t)o(yp)q(esetting)f (strength)i(46)1136 2236 y(t)o(yp)q(esetting)e(9)1136 2286 y(Univ)o(ersit)o(y)f(Adelaide)h(27)1136 2336 y(Unix)f(36)1136 2386 y(USDOD83)g(27)1136 2436 y(USDOD83)g(57)1136 2485 y(use)h(of)g(memory)d (29)1136 2535 y(v)n(ariables)i(static)h(30)1136 2585 y(v)n(ax)f(vms)f(18)1136 2635 y(v)o(ersion)i(GNU)f(41)1136 2685 y(v)o(ersion)h(pragma)e(45)1136 2735 y(video)h(game)g(35)1136 2785 y(vms)f(v)n(ax)h(18)1136 2835 y(w)o(ea)o(v)o(e)h(45)1042 2940 y(60)p eop %%Page: 61 62 61 61 bop 177 42 a Fn(William)o(s)12 b(Ross)h(1)177 91 y(w)o(ork)h(38)177 141 y(writing)f(itself)h(F)m(unnelW)m(eb)f(28)1042 2940 y(61)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF