ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/host/c++/socket++-1.10/socket++.ps
Revision: 1.1
Committed: Mon Feb 26 15:01:39 2001 UTC (23 years, 9 months ago) by ab11
Content type: application/postscript
Branch: MAIN
CVS Tags: PROJECT_COMPLETION
Log Message:
Networking class. Assumed to be bug free.

File Contents

# User Rev Content
1 ab11 1.1 %!PS-Adobe-2.0
2     %%Creator: dvips, version 5.41 (C) 1986-90 Radical Eye Software
3     %%Title: socket++.dvi
4     %%Pages: 56 1
5     %%BoundingBox: 0 0 612 792
6     %%EndComments
7     %%BeginProcSet: tex.pro
8     /TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
9     load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
10     isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
11     Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
12     round 4 exch put dup dup 5 get round 5 exch put setmatrix}B /@letter{/vsize 10
13     N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
14     /vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
15     statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
16     /FBB[0 0 0 0]N /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0
17     0 sf neg 0 0]N df-tail}B /df-tail{/nn 8 dict N nn begin /FontType 3 N
18     /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar
19     {CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0
20     nn put /ctr 0 N[}B /E{pop nn dup definefont setfont}B /ch-image{ch-data dup
21     type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /ch-width{ch-data dup length
22     5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup
23     length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{
24     ch-data dup length 1 sub get}B /ctr 0 N /CharBuilder{save 3 1 roll S dup /base
25     get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff
26     ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width
27     ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask
28     restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn
29     /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put
30     }if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook known{
31     bop-hook}if /SI save N @rigin 0 0 moveto}B /eop{clear SI restore showpage
32     userdict /eop-hook known{eop-hook}if}B /@start{userdict /start-hook known{
33     start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N
34     0 1 255{IE S 1 string dup 0 3 index put cvn put}for}B /p /show load N /RMat[1
35     0 0 -1 0 0]N /BDot 260 string N /v{/ruley X /rulex X V}B /V{gsave TR -.1 -.1
36     TR 1 ruley scale rulex 1 false RMat{BDot}imagemask grestore}B /a{moveto}B
37     /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}
38     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
39     /k{4 M}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}
40     B /s{p 3 w}B /t{p 4 w}B /w{0 rmoveto}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos
41     {/SS save N}B /eos{clear SS restore}B end
42     %%EndProcSet
43     TeXDict begin 1000 300 300 @start /Fa 1 59 df<70F8F8F87005057C840D>58
44     D E /Fb 1 59 df<78FCFCFCFC7806067B8510>58 D E /Fc 8 118 df<000C0000001E000000
45     1E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00007FFFFF80
46     FFFFFFC0FFFFFFC07FFFFF80001E0000001E0000001E0000001E0000001E0000001E0000001E00
47     00001E0000001E0000001E0000000C00001A1A7E9E1F>43 D<7F800000FF8000007F8000000780
48     0000078000000780000007800000078000000780000007800000078000000787C000079FF80007
49     FFFC0007F83E0007E00F0007C0078007C00780078003C0078003C0078001E0078001E0078001E0
50     078001E0078001E0078001E0078001E0078001E0078003C007C003C007C0078007E00F8007E01F
51     0007F83E0007FFFC00079FF000038FC0001B257FA41F>98 D<007FC001FFF007FFF80F80F81F00
52     F83E00703C0000780000780000F00000F00000F00000F00000F00000F00000F00000F000007800
53     007800003C00783E00781F00F80F81F007FFE001FFC0007F00151A7B991F>I<0003F0000FFC00
54     1FFE003E3E003C3E00781C0078000078000078000078000078007FFFFCFFFFFCFFFFFC00780000
55     780000780000780000780000780000780000780000780000780000780000780000780000780000
56     78000078000078000078000078000078007FFFF87FFFF87FFFF817257EA41F>102
57     D<FF800000FF800000FF8000000780000007800000078000000780000007800000078000000780
58     0000078000000787FFE0078FFFE00787FFE007807E000780FC000781F8000783F0000787E00007
59     8FC000079F800007BF000007FF000007FF800007FFC00007F3C00007E3E00007C1F0000780F000
60     0780F80007807C0007803C0007801E0007801F00FFF87FF0FFFCFFF0FFF87FF01C257FA41F>
61     107 D<00FC0003FF0007FF801F87E01E01E03C00F07C00F8780078780078F0003CF0003CF0003C
62     F0003CF0003CF0003CF0003CF8007C7800787800787C00F83C00F01E01E01F87E007FF8003FF00
63     00FC00161A7C991F>111 D<03FC700FFFF03FFFF07C03F07001F0E000F0E000F0E000F0F000F0
64     7C00003FE0001FFF0007FFC000FFF00003F800007870003CF0001CF0001CF8001CF8001CFC0038
65     FF00F0FFFFF0E7FFC0E1FE00161A7C991F>115 D<7F81FE00FF83FE007F81FE0007801E000780
66     1E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007
67     801E0007801E0007801E0007801E0007801E0007801E0007803E0007807E0003C0FE0003FFFFE0
68     01FFDFF0007F1FE01C1A7F991F>117 D E /Fd 35 127 df<00C001C0030006000C001C003800
69     3000700070006000E000E000E000E000E000E000E000600070007000300038001C000C00060003
70     0001C000C00A1D7A9914>40 D<8000C0006000300018001C000E00060007000700030003800380
71     0380038003800380038003000700070006000E001C00180030006000C0008000091D7C9914>I<
72     038003800380638CF39EFFFE3FF80FE00FE03FF8FFFEF39E638C0380038003800F107E9214>I<
73     01C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF8001C00001C00001C000
74     01C00001C00001C00001C00011117F9314>I<FFFEFFFEFFFE0F037E8C14>45
75     D<70F8F8F87000000000000070F8F8F8700510798F14>58 D<FFFF80FFFF807FFF800000000000
76     000000007FFF80FFFF80FFFF8011097F8F14>61 D<4000E000F8007C001E000F8007C001F000F8
77     003E001E003E00F801F007C00F801E007C00F800E00040000F157E9514>I<01C00003E00003E0
78     000360000360000770000770000770000770000630000E38000E38000E38000E38000E38001FFC
79     001FFC001C1C001C1C003C1E00380E00FE3F80FE3F8011177F9614>65 D<FFFFFFFF3807380738
80     07380738003800387038703FF03FF0387038703800380038003800380038003800FF00FF001017
81     7E9614>70 D<1FC0007FF000707800201800001C00001C0007FC001FFC003C1C00701C00E01C00
82     E01C00E01C00707C003FFF800F8F8011107E8F14>97 D<FC0000FC00001C00001C00001C00001C
83     00001C00001CF8001DFE001F07001E03001C03801C01C01C01C01C01C01C01C01C01C01C01C01C
84     03801E03001F0E001DFC000CF8001217809614>I<03F80FFC1C1C380870006000E000E000E000
85     E00060007000380E1C1E0FFC03F00F107E8F14>I<007E00007E00000E00000E00000E00000E00
86     000E0007CE000FFE001C3E00301E00700E00E00E00E00E00E00E00E00E00E00E00E00E00700E00
87     301E00383E001FEFC007CFC012177F9614>I<07E00FF01C38301C700CE00EE00EFFFEFFFEE000
88     60007000380E1C1E0FFC03F00F107E8F14>I<007C00FE01CE03840380038003807FFEFFFE0380
89     038003800380038003800380038003800380038003807FFC7FFC0F177F9614>I<07CF001FFF80
90     383B80301800701C00701C00701C003018003838003FF00037C0007000007000003FF8001FFC00
91     3FFE00700F00E00380E00380E00380E003807007003C1E001FFC0007F00011197F8F14>I<FC00
92     00FC00001C00001C00001C00001C00001C00001C78001DFE001F86001E07001C07001C07001C07
93     001C07001C07001C07001C07001C07001C07001C0700FF8FE0FF8FE01317809614>I<03000780
94     0780030000000000000000007F807F800380038003800380038003800380038003800380038003
95     80FFFCFFFC0E187D9714>I<FC0000FC00001C00001C00001C00001C00001C00001DFF801DFF80
96     1C3C001C78001CF0001DE0001FC0001FC0001FE0001EF0001C70001C38001C38001C1C00FE3F80
97     FE3F8011177F9614>107 D<FF80FF800380038003800380038003800380038003800380038003
98     800380038003800380038003800380FFFEFFFE0F177E9614>I<FB8E00FFDF003CF3803CF38038
99     E38038E38038E38038E38038E38038E38038E38038E38038E38038E380FEFBE0FE79E01310808F
100     14>I<FC7800FDFE001F86001E07001C07001C07001C07001C07001C07001C07001C07001C0700
101     1C07001C0700FF8FE0FF8FE01310808F14>I<07C01FF03C78701C701CE00EE00EE00EE00EE00E
102     E00E701C783C3C781FF007C00F107E8F14>I<FCF800FDFE001F07001E03001C03801C01C01C01
103     C01C01C01C01C01C01C01C01C01C03801E03001F0E001DFC001CF8001C00001C00001C00001C00
104     001C00001C0000FF8000FF80001218808F14>I<FE1F00FE7F800EE3800F81000F00000F00000E
105     00000E00000E00000E00000E00000E00000E00000E0000FFF000FFF00011107F8F14>114
106     D<0FD83FF86038C038C038F0007F803FF007F8001C6006E006F006F81CFFF8CFE00F107E8F14>
107     I<030007000700070007007FFCFFFC07000700070007000700070007000700070E070E070E070C
108     03FC00F00F157F9414>I<FC3F00FC3F001C07001C07001C07001C07001C07001C07001C07001C
109     07001C07001C07001C07001C1F000FFFE003E7E01310808F14>I<FE3F80FE3F801C1C001C1C00
110     1C1C001C1C000E38000E38000E380006300007700007700007700003E00003E00003E00011107F
111     8F14>I<FF7F80FF7F80380E00380E00380E00380E0039CE0039CE0019CC001B6C001B6C001A6C
112     001A6C001E7C000E78000E780011107F8F14>I<7E3F007E3F001E38000E780007700007E00003
113     E00001C00003C00003E0000770000E78000E38001C1C00FE3F80FE3F8011107F8F14>I<FE3F80
114     FE3F801C1C001C1C001C1C000E1C000E38000E380007380007300007300003700003700001E000
115     01E00001E00001C00001C00001C0000380007380007700007E00003C000011187F8F14>I<3FFF
116     7FFF700E701C7038007000E001C0038007000E001C0738077007FFFFFFFF10107F8F14>I<1C10
117     3F38E7E041C00D047D9614>126 D E /Fe 1 59 df<60F0F06004047D830B>58
118     D E /Ff 38 122 df<00FC7C0183C607078E0607040E07000E07000E07000E07000E07000E0700
119     FFFFF00E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E0700
120     0E07000E07007F0FF0171A809916>11 D<00FF000387000707000607000E07000E07000E07000E
121     07000E07000E0700FFFF000E07000E07000E07000E07000E07000E07000E07000E07000E07000E
122     07000E07000E07000E07000E07007F9FE0131A809915>13 D<60F0F07010101020204080040B7D
123     830B>44 D<078018603030303060186018E01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01C
124     E01C6018601870383030186007800E187E9713>48 D<03000700FF000700070007000700070007
125     0007000700070007000700070007000700070007000700070007000700FFF00C187D9713>I<0F
126     80106020304038803CC01CE01C401C003C003800380070006000C0018001000200040408041004
127     30083FF87FF8FFF80E187E9713>I<0F8010E02070607870382038007800700070006000C00F80
128     00E000700038003C003CE03CE03CC03C4038407030E00F800E187E9713>I<00300030007000F0
129     00F001700370027004700C7008701070307020704070C070FFFF00700070007000700070007007
130     FF10187F9713>I<30183FF03FE03FC02000200020002000200027C03860203000380018001C00
131     1C401CE01CE01C80184038403030E00F800E187E9713>I<01E006100C18183830383000700060
132     00E000E7C0E860F030F018E018E01CE01CE01C601C601C701830183030186007C00E187E9713>
133     I<40007FFE7FFC7FFC400880108010802000400040008001800180010003000300030003000700
134     0700070007000700070002000F197E9813>I<078018603030201860186018601870103C303E60
135     0F8007C019F030F86038401CC00CC00CC00CC00C6008201018600FC00E187E9713>I<07801860
136     303070306018E018E018E01CE01CE01C601C603C303C185C0F9C001C0018001800387030706060
137     4021801F000E187E9713>I<000C0000000C0000000C0000001E0000001E0000003F0000002700
138     00002700000043800000438000004380000081C0000081C0000081C0000100E0000100E00001FF
139     E000020070000200700006007800040038000400380008001C0008001C001C001E00FF00FFC01A
140     1A7F991D>65 D<003F0201C0C603002E0E001E1C000E1C0006380006780002700002700002F000
141     00F00000F00000F00000F00000F000007000027000027800023800041C00041C00080E00080300
142     3001C0C0003F00171A7E991C>67 D<3F8070C070E020700070007007F01C7030707070E070E071
143     E071E0F171FB1E3C10107E8F13>97 D<FC00001C00001C00001C00001C00001C00001C00001C00
144     001C00001C00001CF8001F0E001E07001C03801C01801C01C01C01C01C01C01C01C01C01C01C01
145     C01C03801C03001E07001B0C0010F000121A7F9915>I<07F80C1C381C30087000E000E000E000
146     E000E000E0007000300438080C1807E00E107F8F11>I<007E00000E00000E00000E00000E0000
147     0E00000E00000E00000E00000E0003CE000C3E00380E00300E00700E00E00E00E00E00E00E00E0
148     0E00E00E00E00E00600E00700E00381E001C2E0007CFC0121A7F9915>I<07C01C303018701860
149     0CE00CFFFCE000E000E000E0006000300438080C1807E00E107F8F11>I<01F0031807380E100E
150     000E000E000E000E000E00FFC00E000E000E000E000E000E000E000E000E000E000E000E000E00
151     0E007FE00D1A80990C>I<0FCE187330307038703870387038303018602FC02000600070003FF0
152     3FFC1FFE600FC003C003C003C0036006381C07E010187F8F13>I<FC00001C00001C00001C0000
153     1C00001C00001C00001C00001C00001C00001CF8001D0C001E0E001E0E001C0E001C0E001C0E00
154     1C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E00FF9FC0121A7F9915>I<18003C003C
155     001800000000000000000000000000FC001C001C001C001C001C001C001C001C001C001C001C00
156     1C001C001C00FF80091A80990A>I<FC00001C00001C00001C00001C00001C00001C00001C0000
157     1C00001C00001C3F801C1E001C18001C10001C20001C40001DC0001FE0001CE0001C70001C7800
158     1C38001C1C001C1E001C1F00FF3FC0121A7F9914>107 D<FC001C001C001C001C001C001C001C
159     001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091A
160     80990A>I<FC7C1F001D8E63801E0781C01E0781C01C0701C01C0701C01C0701C01C0701C01C07
161     01C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7F81D107F8F20>I<FCF8
162     001D0C001E0E001E0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E
163     001C0E00FF9FC012107F8F15>I<07E01C38300C700E6006E007E007E007E007E007E007600670
164     0E381C1C3807E010107F8F13>I<FCF8001F0E001E07001C03801C03801C01C01C01C01C01C01C
165     01C01C01C01C01C01C03801C03001E07001F0C001CF0001C00001C00001C00001C00001C00001C
166     0000FF800012177F8F15>I<FCE01D701E701E201C001C001C001C001C001C001C001C001C001C
167     001C00FFC00C107F8F0F>114 D<1F2060E04020C020C020F0007F003FC01FE000F080708030C0
168     30C020F0408F800C107F8F0F>I<0400040004000C000C001C003C00FFC01C001C001C001C001C
169     001C001C001C001C201C201C201C201C200E4003800B177F960F>I<FC7E001C0E001C0E001C0E
170     001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C1E000C2E0007CFC01210
171     7F8F15>I<FF1F803C06001C04001C04001E0C000E08000E080007100007100007900003A00003
172     A00001C00001C00001C00000800011107F8F14>I<FF3F9F803C0E0700380E06001C1604001C17
173     04001E170C000E2308000E2388000F239800074190000741D00003C1E0000380E0000380E00001
174     80C0000100400019107F8F1C>I<FF3F803C1C001C18000E100007200007600003C00001C00001
175     E00003E000027000043800083800181C00381E00FC3FC012107F8F14>I<FF1F803C06001C0400
176     1C04001E0C000E08000E080007100007100007900003A00003A00001C00001C00001C000008000
177     008000010000010000E10000E20000E4000078000011177F8F14>I E /Fg
178     25 121 df<3C7EFFFFFFFF7E3C08087C8711>46 D<007F800003FFF00007E1F8000F807C001F00
179     3E003F003F003E001F007E001F807E001F807E001F807E001F80FE001FC0FE001FC0FE001FC0FE
180     001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0
181     7E001F807E001F807E001F807E001F803F003F003F003F001F003E000F807C0007E1F80003FFF0
182     00007F80001A237EA21F>48 D<001C00003C0000FC00FFFC00FFFC0000FC0000FC0000FC0000FC
183     0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC
184     0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC007FFFFC7FFF
185     FC16237CA21F>I<01FF0007FFC01E07F03803F86001FC7C00FEFE00FEFE00FFFE007FFE007F7C
186     007F3800FF0000FF0000FE0000FE0001FC0001F80003F00007E0000780000F00001E00003C0000
187     700000E00301C0030380070700060600060FFFFE1FFFFE3FFFFE7FFFFCFFFFFCFFFFFC18237DA2
188     1F>I<01FF0007FFE01E03F03801F83C01FC7E00FE7E00FE7E00FE3E00FE1C01FE0001FC0001FC
189     0003F80007F0000FC001FF0001FF000007E00001F00001F80000FC0000FE0000FF0000FF1000FF
190     7C00FFFE00FFFE00FFFE00FEFE00FE7C01FC7001F83E07F00FFFC001FF0018237DA21F>I<00FF
191     8003FFE00F01F81C007C38003C38001E78001E78001E7C001E7E001E7F803C7FE03C3FF8781FFC
192     F01FFFC00FFFC003FFE003FFF80FFFFC1E1FFC3C07FE7801FE7800FFF0003FF0001FF0000FF000
193     0FF0000FF0000E78000E78001C3E00381F80F007FFE000FF0018237DA21F>56
194     D<0000FF8008000FFFF018003FC03C7800FE0006F801F80003F803F00001F807E00000F80FC000
195     00781FC00000783F800000383F800000387F800000187F000000187F00000018FF00000000FF00
196     000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000007F
197     000000007F000000187F800000183F800000183F800000181FC00000300FC000003007E0000060
198     03F00000C001F800018000FE000700003FC01E00000FFFF8000000FFC00025257DA42C>67
199     D<07FF00001FFFC0003E03E0003F01F0003F01F8003F00FC001E00FC000000FC000000FC000000
200     FC00003FFC0003FCFC000FC0FC003F00FC007E00FC007E00FC00FC00FC00FC00FC00FC00FC00FC
201     017C007E017C003F067C001FFC3FE007F01FE01B187E971E>97 D<007FE003FFF807C07C1F80FC
202     1F00FC3F00FC7E00787E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00007E0000
203     7F00003F000C1F800C1FC01807E07003FFE0007F0016187E971B>99 D<0001FF800001FF800000
204     1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000
205     001F8000001F80007F1F8003FFDF8007E0FF801F803F803F001F803F001F807E001F807E001F80
206     FE001F80FE001F80FE001F80FE001F80FE001F80FE001F80FE001F80FE001F807E001F807E001F
207     803F001F803F003F801F807F800FC0FF8003FF9FF800FE1FF81D267EA522>I<007F0003FFC007
208     C1F00F80F81F00F83F007C7E007C7E007EFE007EFE007EFFFFFEFFFFFEFE0000FE0000FE00007E
209     00007E00007E00063F00061F000C0F801807E07003FFE0007F8017187E971C>I<FFC00000FFC0
210     00000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000F
211     C000000FC000000FC000000FC1F8000FC7FE000FCC3F000FD01F000FF01F800FE01F800FE01F80
212     0FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F
213     800FC01F800FC01F800FC01F800FC01F800FC01F80FFFCFFF8FFFCFFF81D267DA522>104
214     D<0F001F803FC03FC03FC03FC01F800F000000000000000000000000000000FFC0FFC00FC00FC0
215     0FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0FFF8FF
216     F80D277EA611>I<FFC00000FFC000000FC000000FC000000FC000000FC000000FC000000FC000
217     000FC000000FC000000FC000000FC000000FC000000FC000000FC07FC00FC07FC00FC01E000FC0
218     18000FC030000FC060000FC0C0000FC380000FC700000FCF00000FDF80000FFFC0000FE7C0000F
219     C7E0000F83F0000F81F0000F80F8000F80FC000F807E000F803E000F803F000F801F80FFF8FFF0
220     FFF8FFF01C267EA520>107 D<FFC0FFC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0
221     0FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00F
222     C00FC00FC00FC0FFFCFFFC0E267EA511>I<FF81FC01FC00FF87FF07FF000F8C1F8C1F800F980F
223     980F800FB00FF00FC00FA00FE00FC00FA00FE00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0
224     0FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00F
225     C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0FFFCFFFCFFFC
226     FFFCFFFCFFFC2E187D9733>I<FF81F800FF87FE000F8C3F000F901F000FB01F800FA01F800FA0
227     1F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800F
228     C01F800FC01F800FC01F800FC01F800FC01F800FC01F80FFFCFFF8FFFCFFF81D187D9722>I<00
229     7F800003FFF00007C0F8001F807E003F003F003F003F007E001F807E001F80FE001FC0FE001FC0
230     FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC07E001F807E001F803F003F003F003F
231     001F807E000FC0FC0003FFF000007F80001A187E971F>I<FFC3F800FFCFFE000FF83F800FE00F
232     C00FC00FE00FC007E00FC007F00FC003F00FC003F80FC003F80FC003F80FC003F80FC003F80FC0
233     03F80FC003F80FC003F80FC007F00FC007F00FC007E00FC00FC00FE01FC00FF83F000FDFFE000F
234     C7F0000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000
235     FFFC0000FFFC00001D237E9722>I<FF87C0FF8FF00F98F80FB1F80FA1F80FA1F80FE0F00FC000
236     0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000
237     0FC000FFFE00FFFE0015187E9719>114 D<07F9801FFF803C0F80700380F00180F00180F00180
238     FC0000FF80007FFC007FFE003FFF800FFFC003FFC0001FE00003E0C001E0C001E0E001E0E001C0
239     F003C0FC0780EFFF00C3FC0013187E9718>I<00600000600000600000600000E00000E00001E0
240     0001E00003E00007E0001FE000FFFFC0FFFFC007E00007E00007E00007E00007E00007E00007E0
241     0007E00007E00007E00007E00007E00007E06007E06007E06007E06007E06007E06003E0C003F0
242     C001FF80007E0013237FA218>I<FFC1FF80FFC1FF800FC01F800FC01F800FC01F800FC01F800F
243     C01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F80
244     0FC01F800FC01F800FC03F800FC03F8007C07F8007E0DF8003FF9FF800FE1FF81D187D9722>I<
245     FFF9FFE0FF80FFF9FFE0FF801FC03F001C000FC01F0018000FC01F80180007E01F80300007E01F
246     80300007F01FC0700003F037C0600003F037C0600001F877E0C00001F863E0C00001FC63F1C000
247     00FCC1F1800000FCC1F18000007FC1FB0000007F80FB0000007F80FF0000003F007E0000003F00
248     7E0000001F007C0000001E003C0000001E003C0000000C0018000029187F972C>119
249     D<FFF83FF0FFF83FF00FC00F0007E00C0003F01C0003F8380001FC700000FCE000007EC000003F
250     8000003F8000001F8000000FC000001FE000001FF0000033F8000071F80000E0FC0001C07E0003
251     807F0003003F000F001F80FFC07FF8FFC07FF81D187F9720>I E /Fh 6
252     121 df<003F8000E0E001C0700780700F00780E00381E003C3C003C3C003C7C003C7C007CFFFF
253     F8F80000F80000F80000F80000F80000F80000F800007800107800103800201C00400C00800707
254     0001F800161A7C991A>101 D<0038007C00FC00FC007C00780000000000000000000000000000
255     0000000000F00FF00FF001F001F001E001E001E001E001E001E003C003C003C003C003C003C007
256     80078007800780078007800F80FFF0FFF00E297EA811>105 D<00F07F000FF183801FF201C001
257     F401E001F801E001F001E001F001E001E001E001E001E001E001E001E001E003C003C003C003C0
258     03C003C003C003C003C003C003C003C00780078007800780078007800780078007800780078007
259     800F800F80FFF8FFF8FFF8FFF81D1A7E9921>110 D<00200000200000200000600000400000C0
260     0000C00001C00001C00003C0000780001FFF80FFFF800780000780000780000F00000F00000F00
261     000F00000F00000F00001E00001E00001E00001E00001E01001E01003C02003C02003C02003C02
262     003C04001C04001C08000E100003E00011257BA417>116 D<078007807F807F80FF80FF800F80
263     0F800F800F800F000F000F000F000F000F000F000F000F000F000F000F001E001E001E001E001E
264     001E001E001E001E001E001E001E003C003C003C003C003C003C003C007C003C007C003C00BC00
265     1C017C000E067FC003F87FC01A1A7B9921>I<0FFF03FF0FFF07FF00FC01F0007801C0003C0100
266     003C0200001E0400001E0800000F1000000FB0000007E0000007C0000003C0000003E0000003E0
267     000004F0000008F000001078000020780000403C0000803E0001801E0003001F001F801F80FFC0
268     7FF8FFC07FF8201A7F991F>120 D E /Fi 37 121 df<1C3E7E7E3A0202040408081020C0070E
269     7D840D>44 D<FFC0FFC00A027D8A0F>I<0E1F1F1E0C000000000000000000003078F878700814
270     7C930D>58 D<0000100000001800000038000000380000007800000078000000FC000001BC0000
271     013C0000033C0000023C0000063C0000043E0000081E0000081E0000101E0000101E0000201E00
272     00200F0000400F0000400F0000FFFF0000800F0001000F80010007800200078002000780040007
273     80040007800C0007C03E0007C0FF807FFC1E207E9F22>65 D<07FFFF00007C01E0003C00F0003C
274     00780078003C0078003C0078001E0078001E0078001E0078001F00F0001F00F0001F00F0001F00
275     F0001F00F0001F00F0001F01E0001E01E0003E01E0003E01E0003E01E0003C01E0007C03C00078
276     03C000F003C000F003C001E003C003C003C0078007800F0007803C00FFFFE000201F7E9E23>68
277     D<07FFFFF8007C0078003C0038003C001800780018007800080078000800780008007800080078
278     080800F0100000F0100000F0100000F0300000FFF00000F0700001E0200001E0200001E0200001
279     E0200001E0000801E0001003C0001003C0001003C0002003C0002003C0006003C000C0078001C0
280     078007C0FFFFFF801D1F7E9E1F>I<07FFFFF8007C0078003C0038003C00180078001800780008
281     0078000800780008007800080078000800F0100000F0100000F0100000F0300000F0700000FFF0
282     0001E0600001E0200001E0200001E0200001E0200001E0000003C0000003C0000003C0000003C0
283     000003C0000003C000000780000007C00000FFFE00001D1F7E9E1E>I<0001FC04000F030C003C
284     009C0070007C00E0003C01C0003803800018078000180F0000181F0000181E0000183E0000103C
285     0000007C0000007C0000007C0000007C000000F8000000F8000000F8007FFCF80003E0780001E0
286     780001E0780003C0780003C03C0003C03C0003C01C0003C00E0007C007000B800380118001E060
287     80003F80001E217B9F24>I<07FFE0007C00003C00003C00007800007800007800007800007800
288     00780000F00000F00000F00000F00000F00000F00001E00001E00001E00001E00001E00001E000
289     03C00003C00003C00003C00003C00003C00007800007C000FFFC00131F7F9E10>73
290     D<07FC0000FFC0007C0000F800003C00017800003C00017800004E0002F000004E0002F000004E
291     0004F000004E0004F000004E0008F000004E0008F00000870011E00000870011E00000870021E0
292     0000870021E00000870041E00000838041E00001038083C00001038083C00001038103C0000103
293     8203C0000101C203C0000101C403C0000201C40780000201C80780000201C80780000201D00780
294     000200F00780000600E00780000600E00F00000F00C00F8000FFE0C1FFF8002A1F7E9E2A>77
295     D<07FC01FFC0003E003E00003E001800003E001800004F001000004F0010000047801000004780
296     10000043C010000043C010000083C020000081E020000081E020000080F020000080F020000080
297     782000010078400001007C400001003C400001003C400001001E400001001E400002000F800002
298     000F800002000F800002000780000200078000060003800006000300000F00010000FFE0010000
299     221F7E9E22>I<0003F800001E0E000038070000E0038001C001C003C001E0078000E00F0000F0
300     0F0000F01E0000F01E0000F83E0000F83C0000F87C0000F87C0000F87C0000F87C0000F8F80001
301     F0F80001F0F80001F0F80001F0F80003E0780003E0780003C0780007C07C0007803C000F003C00
302     1E001E001C000E0038000700F00003C3C00000FE00001D217B9F23>I<07FFFF00007C03C0003C
303     01E0003C00F0007800F0007800F8007800F8007800F8007800F8007800F000F001F000F001E000
304     F003C000F0078000F00F0000FFF80001E0000001E0000001E0000001E0000001E0000001E00000
305     03C0000003C0000003C0000003C0000003C0000003C000000780000007C00000FFFC00001D1F7E
306     9E1F>I<07FFFC00007C0700003C03C0003C01E0007801E0007801F0007801F0007801F0007801
307     F0007801E000F003E000F003C000F0078000F00F0000F03C0000FFF00001E0300001E0380001E0
308     1C0001E01C0001E01C0001E01E0003C03E0003C03E0003C03E0003C03E0003C03E0003C03E0207
309     803E0407C01F04FFFC0F18000003E01F207E9E21>82 D<003F040060CC01803C03801C03001C07
310     00180600080E00080E00080E00080E00000F00000F80000FE00007FE0003FF8001FFC0007FE000
311     07E00001E00000E00000F00000F04000E04000E04000E04000E06000C0600180E00380F80300C6
312     0C0081F80016217D9F19>I<3FFFFFF03C0780F03007803060078030400F0010400F0010C00F00
313     10800F0010800F0010800F0010001E0000001E0000001E0000001E0000001E0000001E0000003C
314     0000003C0000003C0000003C0000003C0000003C00000078000000780000007800000078000000
315     7800000078000000F0000001F800007FFFE0001C1F7A9E21>I<FFFC3FF80F8007C00780030007
316     8003000F0002000F0002000F0002000F0002000F0002000F0002001E0004001E0004001E000400
317     1E0004001E0004001E0004003C0008003C0008003C0008003C0008003C0008003C000800380010
318     003800100038001000380020003C0040001C0040001C0080000E0100000706000001F800001D20
319     799E22>I<03FFC0FFC0007F007E00003E003800001E003000001E002000000F004000000F0080
320     00000F81000000078200000007C600000003C400000003E800000001F000000001F000000000F0
321     00000000F800000000F8000000017C000000023C000000043C0000000C1E000000081E00000010
322     1F000000200F000000400F800000C0078000008007C000010003C000070003E0001F8007E000FF
323     E01FFE00221F7F9E22>88 D<FFF003FF1F8000F80F0000600F8000400780008007C0018003C001
324     0003E0020001E0040001F00C0001F0080000F0100000F8200000786000007C4000003C8000003F
325     0000001F0000001E0000001E0000001E0000001C0000003C0000003C0000003C0000003C000000
326     3C00000038000000780000007C00000FFFC000201F7A9E22>I<07F8000C0C001E06001E07001C
327     070000070000070000070000FF0007C7001E07003C0E00780E00F00E10F00E10F00E10F01E10F0
328     2E20784F401F878014147D9317>97 D<0700003F00000F00000700000700000E00000E00000E00
329     000E00000E00000E00001C00001C7C001D87001E03801C01C01C01C03801C03801E03801E03801
330     E03801E03801E07003C07003C0700380700780700700700E00E81C00C4380083E00013207B9F19
331     >I<01FC07060E0F1C0F380E78007000F000F000F000F000E000E000E000E000F0027004300818
332     300FC010147C9314>I<0000700003F00000F00000700000700000E00000E00000E00000E00000
333     E00000E00001C000F9C00305C00E03C01C03C03801C0780380700380F00380F00380F00380F003
334     80E00700E00700E00700E00700E00700700F00301E00186F000F8FE014207C9F19>I<00F80007
335     0E000E07001C0700380380780380700380F00380F00380FFFF80F00000E00000E00000E00000E0
336     0000F001007002003004001C180007E00011147D9314>I<0007800018C00031E00061E000E1C0
337     00C00001C00001C00001C00001C00001C0000380007FF800038000038000038000038000070000
338     0700000700000700000700000700000E00000E00000E00000E00000E00000E00001C00001E0000
339     FFE00013207E9F0E>I<00E00007E00001E00000E00000E00001C00001C00001C00001C00001C0
340     0001C000038000038F800390E003A0E003C0600380600780E00700E00700E00700E00700E00700
341     E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FFCFF815207E9F19>104
342     D<01C003E003E003C0018000000000000000000000000003801F80078003800380070007000700
343     0700070007000E000E000E000E000E000E001C001E00FF800B1F7F9E0C>I<00E007E001E000E0
344     00E001C001C001C001C001C001C00380038003800380038003800700070007000700070007000E
345     000E000E000E000E000E001C001E00FFC00B207F9F0C>108 D<0387C07C001F9861860007A072
346     070003C03403000380380300078078070007007007000700700700070070070007007007000700
347     7007000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E001C01C01C001E
348     01E01E00FFCFFCFFC022147E9326>I<038F801F90E007A0E003C0600380600780E00700E00700
349     E00700E00700E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FFCFF81514
350     7E9319>I<00FC000387000E01801C00C03800E03800E07000F0F000F0F000F0F000F0F000F0E0
351     01E0E001E0E001C0E003C0F00380700700380E001C1C0007E00014147D9317>I<00E3E007EC38
352     00F01C00E01E00E00E01C00E01C00F01C00F01C00F01C00F01C00F03801E03801E03801C03803C
353     0380380380700740E00721C0071F000700000700000700000E00000E00000E00000E00001E0000
354     FFC000181D809319>I<038E001FB38007C78003C7800383000780000700000700000700000700
355     000700000E00000E00000E00000E00000E00000E00001C00001E0000FFE00011147E9312>114
356     D<01F2060E080618061802380438001E001FE00FF003F8003C401C400C400C600C6018E010D060
357     8FC00F147E9312>I<0080010001000100030007000F001E00FFF80E000E000E000E001C001C00
358     1C001C001C001C00380038203820382038203840384018800F000D1C7C9B12>I<1C0380FC1F80
359     3C07801C03801C0380380700380700380700380700380700380700700E00700E00700E00700E00
360     701E00701E00703C00305E001F9FC012147B9319>I<1FF0FF03C07801C06001C04000E08000E1
361     80007300007600003C00003C00001C00002E00004E000087000107000203800603800C01C03E03
362     E0FF07FC18147F9318>120 D E /Fj 8 118 df<000380000007C0000007C0000007C0000007C0
363     000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0007FFF
364     FFF8FFFFFFFCFFFFFFFCFFFFFFFC7FFFFFF80007C0000007C0000007C0000007C0000007C00000
365     07C0000007C0000007C0000007C0000007C0000007C0000007C0000007C000000380001E217DA5
366     25>43 D<7FC0000000FFE0000000FFE00000007FE000000003E000000003E000000003E0000000
367     03E000000003E000000003E000000003E000000003E000000003E000000003E1FE000003E7FF80
368     0003EFFFC00003FFFFF00003FF07F80003FC01F80003F8007C0003F0003E0003F0003F0003E000
369     1F0003E0001F0003E0001F8003E0000F8003E0000F8003E0000F8003E0000F8003E0000F8003E0
370     000F8003E0000F8003E0001F8003E0001F0003F0001F0003F0003E0003F8007E0003F800FC0003
371     FC01F80003FF07F00003FFFFE00003EFFFC00003E7FF800001C1FC0000212C7FAB25>98
372     D<001FFC00007FFF0001FFFF8003FFFFC007F00FC00FC00FC01F8007803F0003003E0000007C00
373     00007C000000FC000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000FC
374     0000007C0000007C0000003E0001C03F0003E01F8003E00FC007E007F03FC003FFFF8001FFFF00
375     007FFE00001FF0001B1F7B9E25>I<00003FC00000FFE00003FFF00007FFF8000FE1F8000F81F8
376     001F80F0001F0000001F0000001F0000001F0000001F0000001F00007FFFFFC0FFFFFFE0FFFFFF
377     E07FFFFFC0001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F
378     0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F000000
379     1F0000001F0000001F0000001F0000001F00003FFFFF807FFFFFC07FFFFFC03FFFFF801D2C7EAB
380     25>102 D<7F80000000FFC0000000FFC00000007FC000000003C000000003C000000003C00000
381     0003C000000003C000000003C000000003C000000003C000000003C000000003C0FFFE0003C1FF
382     FF0003C1FFFF0003C0FFFE0003C007C00003C00F800003C01F000003C03E000003C07C000003C0
383     F8000003C1F0000003C3E0000003C7C0000003CFC0000003DFE0000003FFF0000003FCF8000003
384     F878000003F07C000003E03E000003C01E000003C01F000003C00F800003C007800003C007C000
385     03C003E00003C001F0007FFE0FFF00FFFF1FFF80FFFF1FFF807FFE0FFF00212C7EAB25>107
386     D<003FC00000FFF00003FFFC0007FFFE000FE07F001F801F801F000F803E0007C03E0007C07C00
387     03E07C0003E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0FC
388     0003F07C0003E07C0003E03E0007C03F000FC01F801F801FC03F800FE07F0007FFFE0003FFFC00
389     00FFF000003FC0001C1F7C9E25>111 D<01FFC60007FFFF001FFFFF003FFFFF007F00FF007C00
390     3F00F0001F00F0001F00F0001F00F0000E00FC0000007F8000003FFC00001FFFE0000FFFF80003
391     FFFC00001FFE000000FF0000001F80700007C0F80003C0F80003C0FC0003C0FC0003C0FE0007C0
392     FF000F80FFC07F00FFFFFE00FFFFFC00F3FFF800607FC0001A1F7B9E25>115
393     D<7FC03FE000FFE07FF000FFE07FF0007FE03FF00003E001F00003E001F00003E001F00003E001
394     F00003E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003E0
395     01F00003E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003
396     E003F00003E003F00003F007F00001F81FF00001FFFFFF8000FFFFFFC0007FFDFFC0001FF0FF80
397     221F7F9E25>117 D E /Fk 46 122 df<000FF80000007FFF000001FC1FC00003F007E00007E0
398     03F0000FE003F8001FC001FC001FC001FC003FC001FE003F8000FE003F8000FE007F8000FF007F
399     8000FF007F8000FF007F8000FF00FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80
400     FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF
401     80FF8000FF80FF8000FF80FF8000FF807F8000FF007F8000FF007F8000FF007F8000FF007F8000
402     FF003F8000FE003FC001FE001FC001FC001FC001FC000FE003F80007E003F00003F007E00001FC
403     1FC000007FFF0000000FF80000212E7DAD28>48 D<0001C0000003C000000FC000007FC0001FFF
404     C000FFFFC000FFBFC000E03FC000003FC000003FC000003FC000003FC000003FC000003FC00000
405     3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000
406     003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0
407     00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0007FFF
408     FFE07FFFFFE07FFFFFE01B2E7AAD28>I<003FE00001FFFE0007FFFF800F80FFC01E003FE03800
409     1FF07C000FF87E0007FCFF0007FCFF8007FEFF8007FEFF8003FEFF8003FE7F0003FE3E0007FE00
410     0007FE000007FC000007FC00000FF800000FF800000FF000001FE000001FC000003F8000007F00
411     00007E000000F8000001F0000003E0000007C000000F0000001E000E003C000E0038000E007000
412     1E00E0001C01C0001C0300003C07FFFFFC0FFFFFFC1FFFFFFC3FFFFFFC7FFFFFF8FFFFFFF8FFFF
413     FFF8FFFFFFF81F2E7CAD28>I<001FF80000007FFF000001FFFFC00003E03FE00007800FF0000F
414     C00FF8001FE007F8001FE007FC001FE007FC001FE007FC001FE007FC000FC007FC00078007FC00
415     00000FF80000000FF80000000FF00000001FE00000001FC00000003F80000000FE0000003FF800
416     00003FFF800000001FE000000007F000000007F800000003FC00000003FE00000001FF00000001
417     FF00000001FF80000001FF80000001FF801C0001FF803E0001FF807F0001FF80FF8001FF80FF80
418     01FF00FF8001FF00FF8003FE007F0003FE007E0007FC003C0007F8001FC01FF0000FFFFFC00003
419     FFFF0000003FF80000212E7DAD28>I<0000007000000000F000000001F000000003F000000007
420     F00000000FF00000000FF00000001FF00000003FF000000077F0000000F7F0000000E7F0000001
421     C7F000000387F000000707F000000F07F000000E07F000001C07F000003807F000007007F00000
422     F007F00000E007F00001C007F000038007F000070007F0000F0007F0000E0007F0001C0007F000
423     380007F000700007F000E00007F000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE000000FF00000000FF0
424     0000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000FFF
425     FFE0000FFFFFE0000FFFFFE0232E7EAD28>I<0C0000300FC003F00FFFFFE00FFFFFC00FFFFF80
426     0FFFFF000FFFFE000FFFF8000FFFF0000FFF80000E0000000E0000000E0000000E0000000E0000
427     000E0000000E0000000E0000000E1FF0000E7FFE000FE03F800F800FC00E0007E00C0007F00000
428     07F8000003FC000003FC000003FC000003FE000003FE180003FE3E0003FE7F0003FEFF0003FEFF
429     0003FEFF0003FCFF0003FCFE0003FC780007F8780007F03C000FE01E001FC00FC07F8007FFFF00
430     01FFFC00003FE0001F2E7CAD28>I<0000FF80000007FFE000001FFFF000007F80F80000FE003C
431     0001F8007C0003F000FE0007F001FE000FE001FE000FE001FE001FC001FE003FC000FC003FC000
432     78003FC00000007F800000007F800000007F80000000FF83FC0000FF8FFF8000FF9C0FC000FFB0
433     03F000FFB001F800FFE001FC00FFC001FE00FFC000FE00FFC000FF00FFC000FF00FF8000FF80FF
434     8000FF80FF8000FF80FF8000FF807F8000FF807F8000FF807F8000FF807F8000FF803F8000FF00
435     3FC000FF001FC000FF001FC000FE000FC001FC0007E001FC0003F003F80001FC0FE00000FFFFC0
436     00003FFF0000000FFC0000212E7DAD28>I<38000000003E000000003FFFFFFFC03FFFFFFFC03F
437     FFFFFFC03FFFFFFF807FFFFFFF007FFFFFFE007FFFFFFC007FFFFFF80078000038007000007000
438     700000E000F00001C000E000038000E000070000E00007000000000E000000001C000000003800
439     00000038000000007800000000F000000000F000000001F000000001E000000003E000000003E0
440     00000007E000000007E00000000FC00000000FC00000000FC00000001FC00000001FC00000001F
441     C00000001FC00000001FC00000003FC00000003FC00000003FC00000003FC00000003FC0000000
442     3FC00000003FC00000003FC00000001F800000000F00000022307CAF28>I<000FF80000003FFF
443     000000FFFFC00001F80FE00003E003F00007C001F8000F8001F8000F8000FC000F8000FC001F80
444     00FC001F8000FC001FC000FC001FC000FC001FF000F8001FFC01F8000FFE01F0000FFF83E00007
445     FFE7C00007FFFF800003FFFE000001FFFF000000FFFFC000003FFFE00001FFFFF00003E3FFF800
446     07C1FFFC001F807FFE003F001FFF003E0007FF007E0003FF807E0000FF80FC00007F80FC00003F
447     80FC00001F80FC00001F80FC00001F80FC00001F007E00001F007E00001F007F00003E003F0000
448     7C001FC000F8000FF007F00003FFFFE00000FFFF8000001FF80000212E7DAD28>I<000FF80000
449     007FFF000001FFFF800003F80FC00007E007E0000FC003F0001FC001F8003FC001FC007F8001FC
450     007F8001FE007F8000FE00FF8000FF00FF8000FF00FF8000FF00FF8000FF00FF8000FF80FF8000
451     FF80FF8000FF80FF8000FF807F8001FF807F8001FF803F8001FF803FC001FF801FC003FF800FC0
452     06FF8007E006FF8001F81CFF8000FFF8FF80001FE0FF80000000FF00000000FF00000000FF0000
453     0000FF000F0001FE001F8001FE003FC001FC003FC001FC003FC003F8003FC003F0003F8007E000
454     1F000FC0001E001F80000F80FF000007FFFE000001FFF80000007FC00000212E7DAD28>I<0000
455     007800000000000078000000000000FC000000000000FC000000000000FC000000000001FE0000
456     00000001FE000000000003FF000000000003FF000000000007FF800000000007FF800000000007
457     FF80000000000FFFC0000000000E7FC0000000001E7FE0000000001C3FE0000000001C3FE00000
458     0000383FF000000000381FF000000000781FF800000000700FF800000000700FF800000000E00F
459     FC00000000E007FC00000001E007FE00000001C003FE00000001C003FE000000038003FF000000
460     038001FF000000078001FF800000070000FF800000070000FF8000000FFFFFFFC000000FFFFFFF
461     C000001FFFFFFFE000001C00003FE000003C00003FF000003800001FF000003800001FF0000070
462     00001FF800007000000FF80000F000000FFC0000E0000007FC0000E0000007FC0001C0000007FE
463     0003E0000003FE00FFFF8001FFFFFCFFFF8001FFFFFCFFFF8001FFFFFC36317DB03D>65
464     D<000003FF80018000003FFFF003800001FFFFFC07800007FF003F0F80001FF800079F80003FC0
465     0001FF8000FF800000FF8001FE0000007F8003FC0000003F8007FC0000001F8007F80000000F80
466     0FF00000000F801FF000000007801FF000000007803FE000000007803FE000000003807FE00000
467     0003807FE000000003807FC000000000007FC00000000000FFC00000000000FFC00000000000FF
468     C00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0000000
469     0000FFC000000000007FC000000000007FC000000000007FE000000000007FE000000003803FE0
470     00000003803FE000000003801FF000000003801FF000000007800FF0000000070007F800000007
471     0007FC0000000E0003FC0000001E0001FE0000001C0000FF8000007800003FC00000F000001FF8
472     0003E0000007FF003F80000001FFFFFE000000003FFFF80000000003FF80000031317CB03A>67
473     D<FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF000FF80003FF000FF800007F800FF800003F800FF
474     800000F800FF800000F800FF8000007800FF8000007800FF8000003800FF8000003800FF800000
475     3800FF8000001C00FF8007001C00FF8007001C00FF8007001C00FF8007000000FF8007000000FF
476     800F000000FF801F000000FF803F000000FFFFFF000000FFFFFF000000FFFFFF000000FF803F00
477     0000FF801F000000FF800F000000FF8007000000FF8007000000FF8007000700FF8007000700FF
478     8007000700FF8000000E00FF8000000E00FF8000000E00FF8000000E00FF8000001E00FF800000
479     1E00FF8000003C00FF8000003C00FF8000007C00FF800000FC00FF800001FC00FF800007FC00FF
480     80003FFCFFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF830317EB035>69 D<FFFFFFFFFFE0FFFFFF
481     FFFFE0FFFFFFFFFFE000FF80007FE000FF80000FF000FF800003F000FF800001F000FF800001F0
482     00FF800000F000FF800000F000FF8000007000FF8000007000FF8000007000FF8000003800FF80
483     00003800FF8007003800FF8007003800FF8007000000FF8007000000FF8007000000FF800F0000
484     00FF801F000000FF803F000000FFFFFF000000FFFFFF000000FFFFFF000000FF803F000000FF80
485     1F000000FF800F000000FF8007000000FF8007000000FF8007000000FF8007000000FF80070000
486     00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80
487     00000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000FFFFFFE00000
488     FFFFFFE00000FFFFFFE000002D317EB033>I<FFFFFF807FFFFFC0FFFFFF807FFFFFC0FFFFFF80
489     7FFFFFC000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF80
490     00007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF
491     8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000
492     FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC000
493     00FFFFFFFFFFC00000FFFFFFFFFFC00000FFFFFFFFFFC00000FF8000007FC00000FF8000007FC0
494     0000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007F
495     C00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF800000
496     7FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000
497     007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC000FFFFFF
498     807FFFFFC0FFFFFF807FFFFFC0FFFFFF807FFFFFC03A317EB03F>72 D<FFFFFF80FFFFFF80FFFF
499     FF8000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000
500     FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF8000
501     00FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF80
502     0000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF
503     800000FF800000FF800000FF800000FF8000FFFFFF80FFFFFF80FFFFFF8019317EB01E>I<FFFF
504     FFE00000FFFFFFE00000FFFFFFE0000000FF8000000000FF8000000000FF8000000000FF800000
505     0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
506     8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
507     0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
508     8000000000FF8000000000FF8000000000FF8000000000FF800001C000FF800001C000FF800001
509     C000FF800001C000FF800003C000FF8000038000FF8000038000FF8000078000FF8000078000FF
510     8000078000FF80000F8000FF80001F8000FF80003F8000FF80007F8000FF8000FF0000FF8007FF
511     00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF002A317EB030>76 D<FFFFC000000003FFFFFFFFC0
512     00000003FFFFFFFFE000000007FFFF00FFE000000007FF0000EFF00000000EFF0000EFF0000000
513     0EFF0000EFF00000000EFF0000E7F80000001CFF0000E7F80000001CFF0000E3FC00000038FF00
514     00E3FC00000038FF0000E1FE00000070FF0000E1FE00000070FF0000E0FF000000E0FF0000E0FF
515     000000E0FF0000E07F800001C0FF0000E07F800001C0FF0000E03FC0000380FF0000E03FC00003
516     80FF0000E03FC0000380FF0000E01FE0000700FF0000E01FE0000700FF0000E00FF0000E00FF00
517     00E00FF0000E00FF0000E007F8001C00FF0000E007F8001C00FF0000E003FC003800FF0000E003
518     FC003800FF0000E001FE007000FF0000E001FE007000FF0000E000FF00E000FF0000E000FF00E0
519     00FF0000E000FF00E000FF0000E0007F81C000FF0000E0007F81C000FF0000E0003FC38000FF00
520     00E0003FC38000FF0000E0001FE70000FF0000E0001FE70000FF0000E0000FFE0000FF0000E000
521     0FFE0000FF0000E00007FC0000FF0000E00007FC0000FF0000E00007FC0000FF0000E00003F800
522     00FF0001F00003F80000FF00FFFFE001F000FFFFFFFFFFE001F000FFFFFFFFFFE000E000FFFFFF
523     48317EB04D>I<FFFF800001FFFFC0FFFFC00001FFFFC0FFFFE00001FFFFC000FFF0000003E000
524     00FFF8000001C00000EFFC000001C00000E7FC000001C00000E7FE000001C00000E3FF000001C0
525     0000E1FF800001C00000E0FFC00001C00000E07FE00001C00000E03FE00001C00000E03FF00001
526     C00000E01FF80001C00000E00FFC0001C00000E007FE0001C00000E003FE0001C00000E001FF00
527     01C00000E001FF8001C00000E000FFC001C00000E0007FE001C00000E0003FF001C00000E0001F
528     F001C00000E0001FF801C00000E0000FFC01C00000E00007FE01C00000E00003FF01C00000E000
529     01FF81C00000E00000FF81C00000E00000FFC1C00000E000007FE1C00000E000003FF1C00000E0
530     00001FF9C00000E000000FFDC00000E0000007FDC00000E0000007FFC00000E0000003FFC00000
531     E0000001FFC00000E0000000FFC00000E00000007FC00000E00000003FC00000E00000003FC000
532     00E00000001FC00000E00000000FC00001F000000007C000FFFFE0000003C000FFFFE0000001C0
533     00FFFFE0000001C0003A317EB03F>I<00000FFF0000000000FFFFF000000007FC03FE0000001F
534     E0007F8000003F80001FC000007F00000FE00001FE000007F80003FC000003FC0007F8000001FE
535     0007F8000001FE000FF0000000FF001FF0000000FF801FE00000007F803FE00000007FC03FE000
536     00007FC03FE00000007FC07FC00000003FE07FC00000003FE07FC00000003FE0FFC00000003FF0
537     FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC00000
538     003FF0FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC00000003FF07FC00000003FE07F
539     E00000007FE07FE00000007FE07FE00000007FE03FE00000007FC03FE00000007FC01FF0000000
540     FF801FF0000000FF800FF8000001FF0007F8000001FE0007FC000003FE0003FC000003FC0001FE
541     000007F80000FF00000FF000003FC0003FC000001FE0007F80000007FC03FE00000000FFFFF000
542     0000000FFF00000034317CB03D>I<FFFFFFFFE000FFFFFFFFFE00FFFFFFFFFF8000FF8000FFE0
543     00FF80003FF000FF80000FF800FF800007FC00FF800007FC00FF800003FE00FF800003FE00FF80
544     0003FF00FF800003FF00FF800003FF00FF800003FF00FF800003FF00FF800003FF00FF800003FF
545     00FF800003FE00FF800003FE00FF800007FC00FF800007F800FF80000FF800FF80003FE000FF80
546     00FFC000FFFFFFFF0000FFFFFFF80000FF8000000000FF8000000000FF8000000000FF80000000
547     00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80
548     00000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
549     00FF8000000000FF8000000000FF80000000FFFFFF800000FFFFFF800000FFFFFF80000030317E
550     B037>I<001FF8018000FFFF038003FFFFC78007F007EF800F8000FF801F00007F803E00001F80
551     3E00000F807C00000F807C00000780FC00000780FC00000780FC00000380FE00000380FE000003
552     80FF00000000FFC00000007FF00000007FFF8000003FFFF800003FFFFF80001FFFFFF0000FFFFF
553     F80007FFFFFE0003FFFFFF0000FFFFFF80003FFFFF800001FFFFC000001FFFE0000000FFE00000
554     003FE00000001FF00000000FF000000007F060000007F0E0000003F0E0000003F0E0000003F0E0
555     000003E0F0000003E0F0000003E0F8000007C0FC000007C0FF00000F80FFC0001F00FBFC00FE00
556     F1FFFFF800E03FFFF000C003FF800024317CB02D>83 D<7FFFFFFFFFFF007FFFFFFFFFFF007FFF
557     FFFFFFFF007FC00FF801FF007E000FF8003F007C000FF8001F0078000FF8000F0078000FF8000F
558     0070000FF8000700F0000FF8000780F0000FF8000780F0000FF8000780E0000FF8000380E0000F
559     F8000380E0000FF8000380E0000FF8000380E0000FF800038000000FF800000000000FF8000000
560     00000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF8
561     00000000000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000
562     000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF800
563     000000000FF800000000000FF800000000000FF800000000000FF800000000000FF80000000000
564     0FF800000000000FF800000000000FF800000000000FF8000000007FFFFFFF0000007FFFFFFF00
565     00007FFFFFFF000031307DAF38>I<00FFF0000003FFFE00000F803F80000FC00FE0001FE007F0
566     001FE007F0001FE003F8000FC003FC00078003FC00000003FC00000003FC00000003FC00000003
567     FC000000FFFC00001FFFFC0000FFE3FC0003FC03FC000FF003FC001FC003FC003FC003FC007F80
568     03FC007F8003FC00FF0003FC00FF0003FC00FF0003FC00FF0007FC00FF0007FC007F800DFC003F
569     C019FE001FE070FFF007FFE07FF000FF803FF024207E9F27>97 D<01F8000000FFF8000000FFF8
570     000000FFF80000000FF800000007F800000007F800000007F800000007F800000007F800000007
571     F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8000000
572     07F83FE00007F8FFFC0007FBE07F0007FF001F8007FE000FC007FC000FE007F80007F007F80007
573     F807F80007F807F80003FC07F80003FC07F80003FC07F80003FE07F80003FE07F80003FE07F800
574     03FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FC07F80003FC07F80003FC07F8
575     0007F807F80007F807F80007F007FC000FE007FE000FC007E7003F8007C3C0FE000780FFF80007
576     003FC00027327EB12D>I<000FFF00007FFFC001FC01F003F003F007E007F80FE007F81FC007F8
577     3FC003F03FC001E07F8000007F8000007F800000FF800000FF800000FF800000FF800000FF8000
578     00FF800000FF800000FF8000007F8000007F8000007F8000003FC0001C3FC0001C1FC000380FE0
579     003807E0007003F001E001FC07C0007FFF00000FF8001E207D9F24>I<0000000FC0000007FFC0
580     000007FFC0000007FFC00000007FC00000003FC00000003FC00000003FC00000003FC00000003F
581     C00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000000
582     3FC00007F83FC0003FFF3FC000FE07BFC003F801FFC007E0007FC00FE0007FC01FC0003FC03FC0
583     003FC03FC0003FC07F80003FC07F80003FC07F80003FC0FF80003FC0FF80003FC0FF80003FC0FF
584     80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC07F80003FC07F80003FC07F80003FC0
585     3FC0003FC03FC0003FC01FC0003FC00FE0007FC007E000FFC003F003FFE001FC0F3FFE007FFE3F
586     FE000FF03FFE27327DB12D>I<000FFC00007FFF8001FC0FC003F003E007E001F00FE001F81FC0
587     00FC3FC000FE3FC000FE7F80007E7F80007F7F80007FFF80007FFF80007FFFFFFFFFFFFFFFFFFF
588     800000FF800000FF800000FF8000007F8000007F8000007F8000003FC000071FC000071FC0000E
589     0FE0000E07F0001C03F8007800FE03E0003FFFC00007FE0020207E9F25>I<0001FE00000FFF80
590     001FC3C0007F07E000FE0FF001FE0FF001FC0FF003FC0FF003FC07E003FC018003FC000003FC00
591     0003FC000003FC000003FC000003FC000003FC000003FC0000FFFFFC00FFFFFC00FFFFFC0003FC
592     000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003
593     FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0000
594     03FC000003FC000003FC000003FC000003FC000003FC00007FFFF0007FFFF0007FFFF0001C327E
595     B119>I<001FF007C000FFFE3FE001F83F79F007E00FC3F00FE00FE1F00FC007E0E01FC007F000
596     1FC007F0003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8001FC007F0001FC007F0
597     000FC007E0000FE00FE00007E00FC00003F83F000006FFFE00000E1FF000000E000000001E0000
598     00001E000000001F000000001F800000001FFFFF80000FFFFFF0000FFFFFFC0007FFFFFE0003FF
599     FFFF0003FFFFFF800FFFFFFFC01F00007FC07E00001FE07C00000FE0FC000007E0FC000007E0FC
600     000007E0FC000007E07E00000FC03E00000F803F00001F800FC0007E0007F803FC0001FFFFF000
601     001FFF0000242F7E9F28>I<01F8000000FFF8000000FFF8000000FFF80000000FF800000007F8
602     00000007F800000007F800000007F800000007F800000007F800000007F800000007F800000007
603     F800000007F800000007F800000007F800000007F800000007F807F80007F83FFE0007F8783F00
604     07F8C03F8007F9801FC007FB001FC007FE001FE007FC001FE007FC001FE007FC001FE007F8001F
605     E007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F800
606     1FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8
607     001FE007F8001FE007F8001FE0FFFFC3FFFFFFFFC3FFFFFFFFC3FFFF28327DB12D>I<03C00007
608     E0000FF0001FF8001FF8001FF8001FF8000FF00007E00003C00000000000000000000000000000
609     000000000000000000000000000001F800FFF800FFF800FFF8000FF80007F80007F80007F80007
610     F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007
611     F80007F80007F80007F80007F80007F80007F80007F800FFFF80FFFF80FFFF8011337DB217>I<
612     01F8000000FFF8000000FFF8000000FFF80000000FF800000007F800000007F800000007F80000
613     0007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F800
614     000007F800000007F800000007F801FFF807F801FFF807F801FFF807F8003F0007F8003C0007F8
615     00780007F800F00007F803C00007F807800007F80F000007F81E000007F878000007F8FC000007
616     F9FE000007FBFE000007FFFF000007FE7F800007FC7FC00007F83FC00007F01FE00007F00FF000
617     07F00FF80007F007FC0007F003FC0007F001FE0007F000FF0007F000FF8007F0007F8007F0007F
618     C0FFFF81FFFEFFFF81FFFEFFFF81FFFE27327EB12B>107 D<01F800FFF800FFF800FFF8000FF8
619     0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
620     0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
621     0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
622     0007F80007F80007F800FFFFC0FFFFC0FFFFC012327DB117>I<03F007F8001FE000FFF03FFE00
623     FFF800FFF0783F01E0FC00FFF0C03F8300FE000FF1801FC6007F0007F3001FCC007F0007F6001F
624     F8007F8007FC001FF0007F8007FC001FF0007F8007FC001FF0007F8007F8001FE0007F8007F800
625     1FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8
626     001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007
627     F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F80
628     07F8001FE0007F8007F8001FE0007F8007F8001FE0007F80FFFFC3FFFF0FFFFCFFFFC3FFFF0FFF
629     FCFFFFC3FFFF0FFFFC3E207D9F43>I<03F007F800FFF03FFE00FFF0783F00FFF0C03F800FF180
630     1FC007F3001FC007F6001FE007FC001FE007FC001FE007FC001FE007F8001FE007F8001FE007F8
631     001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007
632     F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0
633     07F8001FE0FFFFC3FFFFFFFFC3FFFFFFFFC3FFFF28207D9F2D>I<0007FC0000007FFFC00001FC
634     07F00003F001F80007E000FC000FC0007E001FC0007F003FC0007F803F80003F807F80003FC07F
635     80003FC07F80003FC0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE0
636     FF80003FE0FF80003FE07F80003FC07F80003FC07F80003FC03FC0007F803FC0007F801FC0007F
637     000FE000FE0007E000FC0003F803F80001FE0FF000007FFFC0000007FC000023207E9F28>I<01
638     F83FE000FFF8FFFC00FFFBE07F00FFFF003F8007FE001FC007FC000FE007F8000FF007F80007F8
639     07F80007F807F80007FC07F80003FC07F80003FC07F80003FE07F80003FE07F80003FE07F80003
640     FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FC07F80007FC07F80007FC07F800
641     07F807F80007F807F8000FF007FC000FE007FE001FC007FF003F8007FBC0FE0007F8FFF80007F8
642     3FC00007F800000007F800000007F800000007F800000007F800000007F800000007F800000007
643     F800000007F800000007F800000007F8000000FFFFC00000FFFFC00000FFFFC00000272E7E9F2D
644     >I<03F03F00FFF07FC0FFF1C3E0FFF187E00FF30FF007F60FF007F60FF007FC07E007FC03C007
645     FC000007FC000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80000
646     07F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F800
647     00FFFFE000FFFFE000FFFFE0001C207E9F21>114 D<01FF860007FFFE001F00FE003C003E0078
648     001E0078000E00F8000E00F8000E00F8000E00FC000000FF800000FFFC00007FFFC0007FFFF000
649     3FFFF8001FFFFC0007FFFE0001FFFF00003FFF000000FF8000003F8060001F80E0000F80E0000F
650     80F0000F80F0000F00F8000F00FC001E00FE001C00FF807800F3FFF000C07F800019207D9F20>
651     I<001C0000001C0000001C0000001C0000001C0000003C0000003C0000003C0000007C0000007C
652     000000FC000001FC000003FC000007FC00001FFFFE00FFFFFE00FFFFFE0003FC000003FC000003
653     FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0000
654     03FC000003FC000003FC000003FC000003FC038003FC038003FC038003FC038003FC038003FC03
655     8003FC038001FC038001FC070000FE0700007F0E00003FFC000007F000192E7FAD1F>I<01F800
656     07E0FFF803FFE0FFF803FFE0FFF803FFE00FF8003FE007F8001FE007F8001FE007F8001FE007F8
657     001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007
658     F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0
659     07F8003FE007F8003FE003F8007FE003F8007FE001FC00DFF000FE039FFF007FFF1FFF000FFC1F
660     FF28207D9F2D>I<FFFF801FFCFFFF801FFCFFFF801FFC0FF80003C007F800038007FC00078003
661     FC00070003FE000F0001FE000E0001FF000E0000FF001C0000FF001C00007F803800007F803800
662     007FC07800003FC07000003FE0F000001FE0E000001FF1E000000FF1C000000FF9C0000007FB80
663     000007FB80000003FF00000003FF00000003FF00000001FE00000001FE00000000FC00000000FC
664     00000000780000000078000026207E9F2B>I<FFFF1FFFE07FF8FFFF1FFFE07FF8FFFF1FFFE07F
665     F80FF000FE0007800FF800FE00078007F800FE00070007F8007F00070003FC007F000E0003FC00
666     FF800E0003FE00FF801E0001FE00FF801C0001FE01DFC01C0001FF01DFC03C0000FF03DFE03800
667     00FF838FE07800007F838FE07000007F8707F07000007FC707F0F000003FCF07F8E000003FCE03
668     F8E000001FEE03F9C000001FFC01FDC000001FFC01FFC000000FFC01FF8000000FF800FF800000
669     07F800FF00000007F0007F00000007F0007F00000003F0007E00000003E0003E00000001E0003C
670     00000001C0001C000035207E9F3A>I<7FFF807FFC7FFF807FFC7FFF807FFC03FE000F0001FE00
671     1E0000FF003C0000FF807800007FC07800003FE0F000001FE1E000000FF3C000000FFF80000007
672     FF00000003FE00000001FE00000000FF00000000FF80000000FFC0000001FFC0000003DFE00000
673     078FF00000078FF800000F07FC00001E03FC00003C01FE00007800FF0000F000FF8000E0007FC0
674     01E0003FC0FFFC01FFFFFFFC01FFFFFFFC01FFFF28207F9F2B>I<FFFF801FFCFFFF801FFCFFFF
675     801FFC0FF80003C007F800038007FC00078003FC00070003FE000F0001FE000E0001FF000E0000
676     FF001C0000FF001C00007F803800007F803800007FC07800003FC07000003FE0F000001FE0E000
677     001FF1E000000FF1C000000FF9C0000007FB80000007FB80000003FF00000003FF00000003FF00
678     000001FE00000001FE00000000FC00000000FC0000000078000000007800000000700000000070
679     00000000F000000000E000000001E000007C01C00000FE03C00000FE03800000FE07800000FE0F
680     000000FC1E000000787C0000003FF00000000FC0000000262E7E9F2B>I
681     E /Fl 3 16 df<FFFFFFC0FFFFFFC01A027C8B23>0 D<0001FE00000007FF8000001E01E00000
682     7800780000E0001C000180000600030000030006000001800C000000C00C000000C01800000060
683     300000003030000000303000000030600000001860000000186000000018C00000000CC0000000
684     0CC00000000CC00000000CC00000000CC00000000CC00000000CC00000000CC00000000C600000
685     00186000000018600000001830000000303000000030300000003018000000600C000000C00C00
686     0000C006000001800300000300018000060000E0001C000078007800001E01E0000007FF800000
687     01FE0000262B7DA02D>13 D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7F
688     FE3FFC1FF80FF003C010127D9317>15 D E /Fm 54 122 df<1C007F007F00FF80FF80FF807F00
689     7F001C0009097B8813>46 D<003F800001FFF00007E0FC000FC07E001F803F001F001F003F001F
690     803E000F807E000FC07E000FC07E000FC07E000FC0FE000FE0FE000FE0FE000FE0FE000FE0FE00
691     0FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE
692     000FE07E000FC07E000FC07E000FC07E000FC03F001F803F001F801F001F001F803F000FC07E00
693     07E0FC0001FFF000003F80001B277DA622>48 D<000E00001E00007E0007FE00FFFE00FFFE00F8
694     FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000
695     FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000
696     FE0000FE0000FE0000FE007FFFFE7FFFFE7FFFFE17277BA622>I<00FF800007FFF0000FFFFC00
697     1E03FE003800FF807C003F80FE003FC0FF001FC0FF001FE0FF000FE0FF000FE07E000FE03C001F
698     E000001FE000001FC000001FC000003F8000003F0000007E000000FC000000F8000001F0000003
699     E00000078000000F0000001E0000003C00E0007000E000E000E001C001C0038001C0060001C00F
700     FFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800003
701     FFF00007FFFC000F80FE001F007F003F807F003F803F803F803F803F803F801F803F801F003F80
702     00007F0000007F0000007E000000FC000001F8000007F00000FFC00000FFC0000001F80000007E
703     0000003F0000003F8000001FC000001FC000001FE000001FE03C001FE07E001FE0FF001FE0FF00
704     1FE0FF001FC0FF003FC0FE003F807C007F003F00FE001FFFFC0007FFF00000FF80001B277DA622
705     >I<00000E0000001E0000003E0000007E000000FE000000FE000001FE000003FE0000077E0000
706     0E7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E0001C07E0003807E0007007E00
707     0E007E000E007E001C007E0038007E0070007E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE
708     000000FE000000FE000000FE000000FE000000FE000000FE000000FE00007FFFF8007FFFF8007F
709     FFF81D277EA622>I<180003001F801F001FFFFE001FFFFC001FFFF8001FFFF0001FFFC0001FFF
710     00001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C7FC0001DFFF8001F
711     80FC001E003F0008003F0000001F8000001FC000001FC000001FE000001FE018001FE07C001FE0
712     FE001FE0FE001FE0FE001FE0FE001FC0FC001FC078003F8078003F803C007F001F01FE000FFFFC
713     0003FFF00000FF80001B277DA622>I<0007F800003FFE0000FFFF0001FC078003F00FC007C01F
714     C00F801FC01F801FC01F001FC03F000F803F0000007E0000007E0000007E000000FE020000FE1F
715     F000FE3FFC00FE603E00FE801F00FF801F80FF000FC0FF000FC0FE000FE0FE000FE0FE000FE0FE
716     000FE07E000FE07E000FE07E000FE07E000FE03E000FE03F000FC01F000FC01F001F800F801F00
717     07E07E0003FFFC0001FFF800003FC0001B277DA622>I<380000003E0000003FFFFFF03FFFFFF0
718     3FFFFFF07FFFFFE07FFFFFC07FFFFF807FFFFF0070000E0070000E0070001C00E0003800E00070
719     00E000E0000001E0000001C000000380000007800000070000000F0000001F0000001E0000003E
720     0000003E0000007E0000007C0000007C000000FC000000FC000000FC000000FC000001FC000001
721     FC000001FC000001FC000001FC000001FC000001FC000000F80000007000001C297CA822>I<00
722     3FC00001FFF00003FFFC0007C07E000F003F001E001F001E000F803E000F803E000F803F000F80
723     3F800F803FC00F803FF01F001FFC1E001FFE3C000FFFF8000FFFE00007FFF80001FFFC0001FFFE
724     0007FFFF000F0FFF801E03FFC03E01FFC07C007FE07C001FE0F8000FE0F80007E0F80003E0F800
725     03E0F80003E0F80003C07C0003C07E0007803F000F001FC03F000FFFFC0003FFF800007FC0001B
726     277DA622>I<007F800001FFF00007FFF8000FC0FC001F803E003F001F007E001F807E001F807E
727     000F80FE000FC0FE000FC0FE000FC0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE07E001FE0
728     7E001FE03F003FE01F002FE00F80CFE007FF8FE001FF0FE000080FE000000FC000000FC000000F
729     C000001F803E001F807F001F807F003F007F003E007F007E007E00FC003E03F8001FFFE0000FFF
730     800001FE00001B277DA622>I<1C007F007F00FF80FF80FF807F007F001C000000000000000000
731     000000000000000000001C007F007F00FF80FF80FF807F007F001C00091B7B9A13>I<00000780
732     000000000780000000000FC0000000000FC0000000000FC0000000001FE0000000001FE0000000
733     003FF0000000003FF0000000003FF00000000077F80000000077F800000000F7FC00000000E3FC
734     00000000E3FC00000001C1FE00000001C1FE00000003C1FF0000000380FF0000000380FF000000
735     07007F80000007007F8000000F007FC000000E003FC000000E003FC000001C001FE000001C001F
736     E000003FFFFFF000003FFFFFF000003FFFFFF00000700007F80000700007F80000F00007FC0000
737     E00003FC0000E00003FC0001C00001FE0001C00001FE0003C00001FF00FFFE003FFFFCFFFE003F
738     FFFCFFFE003FFFFC2E297EA833>65 D<FFFFFFF800FFFFFFFF00FFFFFFFFC003F8001FE003F800
739     0FF003F80007F803F80003F803F80003FC03F80003FC03F80001FC03F80001FC03F80001FC03F8
740     0003FC03F80003F803F80003F803F80007F003F8000FF003F8001FC003F800FF8003FFFFFE0003
741     FFFFFFC003F8000FF003F80003F803F80001FC03F80001FE03F80000FE03F80000FE03F80000FF
742     03F80000FF03F80000FF03F80000FF03F80000FF03F80000FF03F80000FE03F80001FE03F80003
743     FC03F80007FC03F8001FF8FFFFFFFFE0FFFFFFFFC0FFFFFFFE0028297DA830>I<00007FE00300
744     07FFFC07001FFFFF0F007FF00F9F00FF0001FF01FC0000FF03F800007F07F000003F0FE000001F
745     1FC000001F1FC000000F3F8000000F3F800000077F800000077F800000077F00000000FF000000
746     00FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF0000
747     00007F000000007F800000007F800000073F800000073F800000071FC00000071FC000000E0FE0
748     00000E07F000001C03F800003C01FC00007800FF0001F0007FF007C0001FFFFF800007FFFE0000
749     007FF00028297CA831>I<FFFFFFFC0000FFFFFFFF8000FFFFFFFFE00003FC001FF80003FC0003
750     FC0003FC0000FE0003FC00007F0003FC00003F8003FC00001FC003FC00001FC003FC00000FE003
751     FC00000FE003FC000007F003FC000007F003FC000007F003FC000007F003FC000007F803FC0000
752     07F803FC000007F803FC000007F803FC000007F803FC000007F803FC000007F803FC000007F803
753     FC000007F803FC000007F803FC000007F003FC000007F003FC000007F003FC00000FE003FC0000
754     0FE003FC00000FC003FC00001FC003FC00003F8003FC00007F0003FC0000FF0003FC0003FC0003
755     FC001FF800FFFFFFFFF000FFFFFFFF8000FFFFFFFC00002D297EA834>I<FFFFFFFFE0FFFFFFFF
756     E0FFFFFFFFE003FC001FE003FC0007F003FC0001F003FC0001F003FC0000F003FC00007003FC00
757     007003FC00007003FC01C07803FC01C03803FC01C03803FC01C03803FC03C00003FC03C00003FC
758     0FC00003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C00003FC03C00003FC01C00E03
759     FC01C00E03FC01C00E03FC01C01C03FC00001C03FC00001C03FC00001C03FC00003C03FC000038
760     03FC00007803FC0000F803FC0001F803FC0003F803FC001FF8FFFFFFFFF0FFFFFFFFF0FFFFFFFF
761     F027297EA82C>I<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC003FC003FC000FE003FC0003E003
762     FC0001E003FC0001E003FC0000E003FC0000E003FC0000E003FC0000F003FC01C07003FC01C070
763     03FC01C07003FC01C00003FC03C00003FC03C00003FC0FC00003FFFFC00003FFFFC00003FFFFC0
764     0003FC0FC00003FC03C00003FC03C00003FC01C00003FC01C00003FC01C00003FC01C00003FC00
765     000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
766     000000FFFFFC0000FFFFFC0000FFFFFC000024297EA82A>I<00007FE003000007FFFC0700001F
767     FFFF0F00007FF00F9F0000FF0001FF0001FC0000FF0003F800007F0007F000003F000FE000001F
768     001FC000001F001FC000000F003F8000000F003F80000007007F80000007007F80000007007F00
769     00000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000000
770     00FF0000000000FF0000000000FF0000FFFFF87F0000FFFFF87F8000FFFFF87F800000FF003F80
771     0000FF003F800000FF001FC00000FF001FC00000FF000FE00000FF0007F00000FF0003F80000FF
772     0001FC0000FF0000FF0001FF00007FF007FF00001FFFFF9F000007FFFE0F0000007FF003002D29
773     7CA835>I<FFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFF03FC00003FC003FC00003FC003FC0000
774     3FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003
775     FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FFFFFF
776     FFC003FFFFFFFFC003FFFFFFFFC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003
777     FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC0000
778     3FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC0FF
779     FFF00FFFFFFFFFF00FFFFFFFFFF00FFFFF30297EA835>I<FFFFFCFFFFFCFFFFFC01FE0001FE00
780     01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00
781     01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00
782     01FE0001FE0001FE0001FE0001FE0001FE0001FE00FFFFFCFFFFFCFFFFFC16297FA819>I<FFFF
783     FC0000FFFFFC0000FFFFFC000003FC00000003FC00000003FC00000003FC00000003FC00000003
784     FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
785     03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
786     0003FC0001C003FC0001C003FC0001C003FC0001C003FC0003C003FC00038003FC00038003FC00
787     078003FC00078003FC000F8003FC000F8003FC001F8003FC007F8003FC01FF00FFFFFFFF00FFFF
788     FFFF00FFFFFFFF0022297EA828>76 D<FFFE0000003FFF80FFFE0000003FFF80FFFF0000007FFF
789     8003FF0000007FE00003FF0000007FE00003BF800000EFE00003BF800000EFE000039FC00001CF
790     E000039FC00001CFE000038FE000038FE000038FE000038FE000038FE000038FE0000387F00007
791     0FE0000387F000070FE0000383F8000E0FE0000383F8000E0FE0000381FC001C0FE0000381FC00
792     1C0FE0000381FC001C0FE0000380FE00380FE0000380FE00380FE00003807F00700FE00003807F
793     00700FE00003803F80E00FE00003803F80E00FE00003803F80E00FE00003801FC1C00FE0000380
794     1FC1C00FE00003800FE3800FE00003800FE3800FE000038007F7000FE000038007F7000FE00003
795     8007F7000FE000038003FE000FE000038003FE000FE000038001FC000FE000038001FC000FE000
796     038000F8000FE000FFFE00F803FFFF80FFFE00F803FFFF80FFFE007003FFFF8039297DA840>I<
797     FFFC00007FFFFFFE00007FFFFFFF00007FFF03FF800001C003FFC00001C003BFE00001C0039FE0
798     0001C0039FF00001C0038FF80001C00387FC0001C00383FE0001C00381FF0001C00380FF8001C0
799     03807F8001C003807FC001C003803FE001C003801FF001C003800FF801C0038007FC01C0038003
800     FC01C0038003FE01C0038001FF01C0038000FF81C00380007FC1C00380003FE1C00380001FF1C0
801     0380000FF1C00380000FF9C003800007FDC003800003FFC003800001FFC003800000FFC0038000
802     007FC0038000007FC0038000003FC0038000001FC0038000000FC00380000007C0FFFE000003C0
803     FFFE000001C0FFFE000001C030297EA835>I<0000FFC00000000FFFFC0000003F807F000000FE
804     001FC00001F80007E00003F00003F00007E00001F8000FE00001FC001FC00000FE001FC00000FE
805     003F8000007F003F8000007F007F8000007F807F0000003F807F0000003F807F0000003F80FF00
806     00003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003F
807     C0FF0000003FC0FF0000003FC0FF0000003FC07F0000003F807F8000007F807F8000007F803F80
808     00007F003F8000007F001FC00000FE001FC00000FE000FE00001FC0007F00003F80003F80007F0
809     0001FC000FE00000FE001FC000003FC0FF0000000FFFFC00000000FFC000002A297CA833>I<FF
810     FFFFF800FFFFFFFF00FFFFFFFFC003FC003FE003FC0007F003FC0003F803FC0003FC03FC0001FC
811     03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001
812     FC03FC0003FC03FC0003F803FC0007F003FC003FE003FFFFFF8003FFFFFE0003FC00000003FC00
813     000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
814     00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000FFFFF00000FF
815     FFF00000FFFFF0000027297EA82E>I<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC003FE0
816     0003FC000FF00003FC0007F80003FC0003FC0003FC0001FC0003FC0001FE0003FC0001FE0003FC
817     0001FE0003FC0001FE0003FC0001FE0003FC0001FE0003FC0001FC0003FC0003F80003FC0007F8
818     0003FC000FE00003FC003FC00003FFFFFE000003FFFFFE000003FC00FF800003FC003FC00003FC
819     001FE00003FC000FF00003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F8
820     0003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80E03FC0007F80E03FC
821     0003F80E03FC0001FC1CFFFFF000FE1CFFFFF0007FF8FFFFF0000FE02F297EA832>82
822     D<00FF00C003FFE1C00FFFF9C01F80FFC03F003FC03E000FC07C0007C07C0007C0FC0003C0FC00
823     03C0FC0001C0FE0001C0FE0001C0FF000000FFC000007FFC00007FFFE0003FFFF8001FFFFE001F
824     FFFF0007FFFF8003FFFFC000FFFFC0000FFFE000007FE000001FF000000FF0000007F0E00003F0
825     E00003F0E00003F0E00003F0F00003E0F00003E0F80007E0FC0007C0FF000F80FFE01F80E3FFFF
826     00E1FFFC00C01FF0001C297CA825>I<7FFFFFFFFF807FFFFFFFFF807FFFFFFFFF807F807F807F
827     807C007F800F8078007F80078078007F80078070007F800380F0007F8003C0F0007F8003C0E000
828     7F8001C0E0007F8001C0E0007F8001C0E0007F8001C0E0007F8001C000007F80000000007F8000
829     0000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000000000
830     7F80000000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000
831     0000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000000000
832     7F80000000FFFFFFC00000FFFFFFC00000FFFFFFC0002A287EA72F>I<FFFFF000FFFEFFFFF000
833     FFFEFFFFF000FFFE03FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003
834     FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000
835     038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003
836     FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000
837     038003FC0000038003FC0000038003FC0000038001FC0000070001FE0000070000FE00000E0000
838     7F00000E00003F00003C00001FC0007800000FF003F0000007FFFFE0000000FFFF800000001FFC
839     00002F297EA834>I<FFFFE0FFFFE01FFFC0FFFFE0FFFFE01FFFC0FFFFE0FFFFE01FFFC003FC00
840     03FC0000700003FC0003FC0000700003FE0003FE0000F00001FE0001FE0000E00001FE0001FE00
841     00E00001FF0001FF0001E00000FF0001FF0001C00000FF0001FF0001C000007F8003FF80038000
842     007F8003FF80038000007FC007FFC0078000003FC0073FC0070000003FC0073FC0070000003FE0
843     0F3FE00F0000001FE00E1FE00E0000001FE00E1FE00E0000000FF01C0FF01C0000000FF01C0FF0
844     1C0000000FF01C0FF81C00000007F83807F83800000007F83807F83800000007FC7807FC780000
845     0003FC7003FC7000000003FC7003FC7000000003FEF003FEF000000001FEE001FEE000000001FE
846     E001FEE000000000FFC000FFC000000000FFC000FFC000000000FFC000FFC0000000007F80007F
847     80000000007F80007F80000000007F80007F80000000003F00003F00000000003F00003F000000
848     00003F00003F00000000001E00001E00000000001E00001E00000042297FA845>87
849     D<03FF80000FFFF0001F01FC003F80FE003F807F003F803F003F803F801F003F8000003F800000
850     3F8000003F8000003F80003FFF8001FC3F800FE03F801F803F803F003F807E003F80FC003F80FC
851     003F80FC003F80FC003F80FC005F807E00DF803F839FFC1FFE0FFC03F803FC1E1B7E9A21>97
852     D<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0
853     00000FE000000FE000000FE000000FE000000FE000000FE1FE000FE7FF800FFE07E00FF803F00F
854     F001F80FE000FC0FE000FC0FE0007E0FE0007E0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F
855     0FE0007F0FE0007F0FE0007F0FE0007E0FE0007E0FE0007E0FE000FC0FE000FC0FF001F80FF803
856     F00F9C0FE00F0FFF800E01FC00202A7EA925>I<003FF00001FFFC0003F03E000FC07F001F807F
857     003F007F003F007F007F003E007E0000007E000000FE000000FE000000FE000000FE000000FE00
858     0000FE000000FE0000007E0000007E0000007F0000003F0003803F8003801F8007000FE00E0003
859     F83C0001FFF800003FC000191B7E9A1E>I<00007FF000007FF000007FF0000007F0000007F000
860     0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
861     003F87F001FFF7F007F03FF00FC00FF01F8007F03F0007F03F0007F07E0007F07E0007F07E0007
862     F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F07E0007F07E00
863     07F03F0007F03F0007F01F800FF00FC01FF007E07FFF01FFE7FF007F87FF202A7EA925>I<003F
864     C00001FFF00003E07C000F803E001F801F001F001F003F000F807E000F807E000FC07E000FC0FE
865     0007C0FE0007C0FFFFFFC0FFFFFFC0FE000000FE000000FE0000007E0000007E0000007F000000
866     3F0001C01F0001C00F80038007C0070003F01E0000FFFC00003FE0001A1B7E9A1F>I<0007F800
867     3FFC007E3E01FC7F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007
868     F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007
869     F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF807F
870     FF807FFF80182A7EA915>I<007F80F001FFE3F807C0FE1C0F807C7C1F003E7C1F003E103F003F
871     003F003F003F003F003F003F003F003F003F003F001F003E001F003E000F807C0007C0F80005FF
872     E0000C7F8000180000001C0000001C0000001E0000001FFFF8001FFFFF000FFFFFC007FFFFE003
873     FFFFF00FFFFFF03E0007F07C0001F8F80000F8F80000F8F80000F8F80000F87C0001F07C0001F0
874     3F0007E00FC01F8007FFFF00007FF0001E287E9A22>I<FFE00000FFE00000FFE000000FE00000
875     0FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000
876     000FE000000FE07E000FE1FF800FE30FC00FE40FE00FE807E00FF807F00FF007F00FF007F00FE0
877     07F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
878     E007F00FE007F00FE007F00FE007F00FE007F00FE007F0FFFE3FFFFFFE3FFFFFFE3FFF202A7DA9
879     25>I<07000F801FC03FE03FE03FE01FC00F8007000000000000000000000000000000FFE0FFE0
880     FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
881     E00FE00FE0FFFEFFFEFFFE0F2B7EAA12>I<FFE00000FFE00000FFE000000FE000000FE000000F
882     E000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000
883     0FE03FF80FE03FF80FE03FF80FE007000FE00E000FE03C000FE078000FE0F0000FE1E0000FE3C0
884     000FE780000FEFC0000FFFE0000FFFE0000FF7F0000FE3F8000FC1FC000FC1FC000FC0FE000FC0
885     7F000FC07F000FC03F800FC01FC00FC01FC0FFFC7FFCFFFC7FFCFFFC7FFC1E2A7EA923>107
886     D<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
887     0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
888     E0FFFEFFFEFFFE0F2A7EA912>I<FFC07F001FC000FFC1FFC07FF000FFC307E0C1F8000FC407F1
889     01FC000FC803F200FC000FD803FE00FE000FD003FC00FE000FD003FC00FE000FE003F800FE000F
890     E003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800
891     FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE0
892     03F800FE000FE003F800FE000FE003F800FE000FE003F800FE00FFFE3FFF8FFFE0FFFE3FFF8FFF
893     E0FFFE3FFF8FFFE0331B7D9A38>I<FFC07E00FFC1FF80FFC30FC00FC40FE00FC807E00FD807F0
894     0FD007F00FD007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007
895     F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0FFFE3FFFFFFE
896     3FFFFFFE3FFF201B7D9A25>I<003FE00001FFFC0003F07E000FC01F801F800FC03F0007E03F00
897     07E07E0003F07E0003F07E0003F0FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE
898     0003F8FE0003F87E0003F07E0003F03F0007E03F0007E01F800FC00FC01F8007F07F0001FFFC00
899     003FE0001D1B7E9A22>I<FFE1FE00FFE7FF80FFFE0FE00FF803F00FF001F80FE001FC0FE000FC
900     0FE000FE0FE000FE0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE000
901     7F0FE0007E0FE000FE0FE000FE0FE000FC0FE001FC0FF001F80FF803F00FFC0FE00FEFFF800FE1
902     FC000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000FF
903     FE0000FFFE0000FFFE000020277E9A25>I<FFC3E0FFC7F8FFCC7C0FD8FE0FD0FE0FD0FE0FF0FE
904     0FE07C0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000
905     0FE0000FE0000FE0000FE000FFFF00FFFF00FFFF00171B7E9A1B>114 D<03FE300FFFF03E03F0
906     7800F07000F0F00070F00070F80070FE0000FFE0007FFF007FFFC03FFFE01FFFF007FFF800FFF8
907     0007FC0000FCE0007CE0003CF0003CF00038F80038FC0070FF01E0E7FFC0C1FF00161B7E9A1B>
908     I<00700000700000700000700000F00000F00000F00001F00003F00003F00007F0001FFFE0FFFF
909     E0FFFFE007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
910     0007F00007F07007F07007F07007F07007F07007F07007F07003F0E001F8C000FFC0003F001426
911     7FA51A>I<FFE07FF0FFE07FF0FFE07FF00FE007F00FE007F00FE007F00FE007F00FE007F00FE0
912     07F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
913     E007F00FE007F00FE007F00FE00FF00FE00FF007E017F003F067FF01FFC7FF007F87FF201B7D9A
914     25>I<FFFE07FFFFFE07FFFFFE07FF07F000E007F000E007F801E003F801C003F801C001FC0380
915     01FC038001FE078000FE070000FF0F00007F0E00007F0E00003F9C00003F9C00003FFC00001FF8
916     00001FF800000FF000000FF000000FF0000007E0000007E0000003C0000003C000201B7F9A23>
917     I<FFFC7FFC1FFCFFFC7FFC1FFCFFFC7FFC1FFC0FE00FE001C007F007E0038007F007E0038007F8
918     07F0078003F807F0070003F807F8070001FC0FF80E0001FC0FF80E0001FE1FFC1E0000FE1CFC1C
919     0000FE1CFE1C0000FF387E3C00007F387E3800007F787F3800003FF03F7000003FF03F7000003F
920     E01FF000001FE01FE000001FE01FE000000FC00FC000000FC00FC000000FC00FC0000007800780
921     000007800780002E1B7F9A31>I<FFFC1FFEFFFC1FFEFFFC1FFE07F0078003F8070001FC0F0001
922     FE1E0000FE3C00007F7800003FF800003FF000001FE000000FE0000007F0000007F800000FF800
923     001FFC00003DFE000038FF0000787F0000F03F8001E03FC003C01FE003800FE0FFF03FFFFFF03F
924     FFFFF03FFF201B7F9A23>I<FFFE07FFFFFE07FFFFFE07FF07F000E007F000E007F801E003F801
925     C003F801C001FC038001FC038001FE078000FE070000FF0F00007F0E00007F0E00003F9C00003F
926     9C00003FFC00001FF800001FF800000FF000000FF0000007F0000007E0000007E0000003C00000
927     03C000000380000003800000078000380700007C070000FE0E0000FE0E0000FE1C0000FE380000
928     7C7000003FE000000F80000020277F9A23>I E /Fn 79 125 df<001F83E000F06E3001C07878
929     0380F8780300F03007007000070070000700700007007000070070000700700007007000FFFFFF
930     800700700007007000070070000700700007007000070070000700700007007000070070000700
931     700007007000070070000700700007007000070070000700700007007000070070007FE3FF001D
932     20809F1B>11 D<003F0000E0C001C0C00381E00701E00701E00700000700000700000700000700
933     00070000FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
934     E00700E00700E00700E00700E00700E00700E00700E07FC3FE1720809F19>I<003FE000E0E001
935     C1E00381E00700E00700E00700E00700E00700E00700E00700E00700E0FFFFE00700E00700E007
936     00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007
937     00E00700E00700E07FE7FE1720809F19>I<70F8F8F8F8F8F8F870707070707070707070202020
938     2020000000000070F8F8F87005217CA00D>33 D<00780000008400000184000003020000070200
939     00070200000702000007020000070400000704000007080000070800000310000003A00FFC03C0
940     03E0038001C001C0008001C0010003E0010004E0020008F0020018700400307808007038080070
941     1C1000F01E1000F00E2000F0074000F003C0087003C0087801C010380670301C18386007E00F80
942     1E227EA023>38 D<70F8FCFC74040404080810102040060E7C9F0D>I<00200040008001000200
943     06000C000C00180018003000300030007000600060006000E000E000E000E000E000E000E000E0
944     00E000E000E000E0006000600060007000300030003000180018000C000C000600020001000080
945     004000200B2E7DA112>I<800040002000100008000C00060006000300030001800180018001C0
946     00C000C000C000E000E000E000E000E000E000E000E000E000E000E000E000C000C000C001C001
947     800180018003000300060006000C00080010002000400080000B2E7DA112>I<01800180018001
948     800180C183F18F399C0FF003C003C00FF0399CF18FC1830180018001800180018010147DA117>
949     I<70F8FCFC74040404080810102040060E7C840D>44 D<FFC0FFC00A027F8A0F>I<70F8F8F870
950     05057C840D>I<000100030003000600060006000C000C000C0018001800180030003000300060
951     0060006000C000C000C00180018001800300030003000600060006000C000C000C001800180018
952     00300030003000600060006000C000C000C000102D7DA117>I<03F0000E1C001C0E0018060038
953     0700700380700380700380700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F0
954     03C0F003C0F003C0F003C0F003C07003807003807003807807803807001806001C0E000E1C0003
955     F000121F7E9D17>I<018003800F80F38003800380038003800380038003800380038003800380
956     038003800380038003800380038003800380038003800380038007C0FFFE0F1E7C9D17>I<03F0
957     000C1C00100E00200700400780800780F007C0F803C0F803C0F803C02007C00007C00007800007
958     80000F00000E00001C0000380000700000600000C0000180000300000600400C00401800401000
959     803FFF807FFF80FFFF80121E7E9D17>I<03F0000C1C00100E00200F00780F8078078078078038
960     0F80000F80000F00000F00000E00001C0000380003F000003C00000E00000F0000078000078000
961     07C02007C0F807C0F807C0F807C0F00780400780400F00200E001C3C0003F000121F7E9D17>I<
962     000600000600000E00000E00001E00002E00002E00004E00008E00008E00010E00020E00020E00
963     040E00080E00080E00100E00200E00200E00400E00C00E00FFFFF0000E00000E00000E00000E00
964     000E00000E00000E0000FFE0141E7F9D17>I<1803001FFE001FFC001FF8001FE0001000001000
965     0010000010000010000010000011F000161C00180E001007001007800003800003800003C00003
966     C00003C07003C0F003C0F003C0E00380400380400700200600100E000C380003E000121F7E9D17
967     >I<007C000182000701000E03800C07801C0780380300380000780000700000700000F1F000F2
968     1C00F40600F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C070038038
969     03803807001807000C0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF807FFF80400100
970     80020080020080040000080000080000100000200000200000400000400000C00000C00001C000
971     018000038000038000038000038000078000078000078000078000078000078000078000030000
972     121F7D9D17>I<03F0000C0C001006003003002001806001806001806001807001807803003E03
973     003F06001FC8000FF00003F80007FC000C7E00103F00300F806003804001C0C001C0C000C0C000
974     C0C000C0C000806001802001001002000C0C0003F000121F7E9D17>I<03F0000E18001C0C0038
975     0600380700700700700380F00380F00380F003C0F003C0F003C0F003C0F003C07007C07007C038
976     07C0180BC00E13C003E3C0000380000380000380000700300700780600780E00700C0020180010
977     70000FC000121F7E9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D>I<70
978     F8F8F8700000000000000000000070F0F8F878080808101010202040051D7C930D>I<0FC03070
979     40384038E03CF03CF03C603C0038007000E000C001800180010003000200020002000200020002
980     000000000000000000000007000F800F800F8007000E207D9F15>63 D<00010000000380000003
981     8000000380000007C0000007C0000007C0000009E0000009E0000009E0000010F0000010F00000
982     10F00000207800002078000020780000403C0000403C0000403C0000801E0000801E0000FFFE00
983     01000F0001000F0001000F00020007800200078002000780040003C00E0003C01F0007E0FFC03F
984     FE1F207F9F22>65 D<FFFFE0000F80380007801E0007801F0007800F0007800F8007800F800780
985     0F8007800F8007800F8007800F0007801F0007801E0007803C0007FFF00007803C0007801E0007
986     800F0007800F8007800780078007C0078007C0078007C0078007C0078007C00780078007800F80
987     07800F0007801F000F803C00FFFFF0001A1F7E9E20>I<000FC040007030C001C009C0038005C0
988     070003C00E0001C01E0000C01C0000C03C0000C07C0000407C00004078000040F8000000F80000
989     00F8000000F8000000F8000000F8000000F8000000F8000000F8000000780000007C0000407C00
990     00403C0000401C0000401E0000800E000080070001000380020001C0040000703800000FC0001A
991     217D9F21>I<FFFFE0000F803C0007801E000780070007800380078003C0078001E0078001E007
992     8001F0078000F0078000F0078000F8078000F8078000F8078000F8078000F8078000F8078000F8
993     078000F8078000F8078000F0078000F0078000F0078001E0078001E0078003C007800380078007
994     0007800E000F803C00FFFFE0001D1F7E9E23>I<FFFFFF000F800F000780030007800300078001
995     0007800180078000800780008007800080078080800780800007808000078080000781800007FF
996     800007818000078080000780800007808000078080000780002007800020078000200780004007
997     80004007800040078000C0078000C0078001800F800F80FFFFFF801B1F7E9E1F>I<FFFFFF000F
998     800F00078003000780030007800100078001800780008007800080078000800780008007808000
999     0780800007808000078080000781800007FF800007818000078080000780800007808000078080
1000     0007800000078000000780000007800000078000000780000007800000078000000FC00000FFFE
1001     0000191F7E9E1E>I<000FE0200078186000E004E0038002E0070001E00F0000E01E0000601E00
1002     00603C0000603C0000207C00002078000020F8000000F8000000F8000000F8000000F8000000F8
1003     000000F8000000F8007FFCF80003E0780001E07C0001E03C0001E03C0001E01E0001E01E0001E0
1004     0F0001E0070001E0038002E000E0046000781820000FE0001E217D9F24>I<FFF8FFF80F800F80
1005     07800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F
1006     0007800F0007800F0007FFFF0007800F0007800F0007800F0007800F0007800F0007800F000780
1007     0F0007800F0007800F0007800F0007800F0007800F0007800F0007800F000F800F80FFF8FFF81D
1008     1F7E9E22>I<FFFC0FC00780078007800780078007800780078007800780078007800780078007
1009     800780078007800780078007800780078007800780078007800FC0FFFC0E1F7F9E10>I<0FFFC0
1010     007C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00
1011     003C00003C00003C00003C00003C00003C00003C00003C00003C00203C00F83C00F83C00F83C00
1012     F0380040780040700030E0000F800012207E9E17>I<FFFE000FC0000780000780000780000780
1013     000780000780000780000780000780000780000780000780000780000780000780000780000780
1014     0007800007800207800207800207800207800607800407800407800C07801C0F807CFFFFFC171F
1015     7E9E1C>76 D<FF80001FF80F80001F800780001F0005C0002F0005C0002F0005C0002F0004E000
1016     4F0004E0004F000470008F000470008F000470008F000438010F000438010F000438010F00041C
1017     020F00041C020F00041C020F00040E040F00040E040F00040E040F000407080F000407080F0004
1018     07080F000403900F000403900F000401E00F000401E00F000401E00F000E00C00F001F00C01F80
1019     FFE0C1FFF8251F7E9E2A>I<FF803FF807C007C007C0038005E0010005E0010004F00100047801
1020     0004780100043C0100043C0100041E0100040F0100040F010004078100040781000403C1000401
1021     E1000401E1000400F1000400F1000400790004003D0004003D0004001F0004001F0004000F0004
1022     000700040007000E0003001F000300FFE001001D1F7E9E22>I<001F800000F0F00001C0380007
1023     801E000F000F000E0007001E0007803C0003C03C0003C07C0003E0780001E0780001E0F80001F0
1024     F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E07C0003
1025     E07C0003E03C0003C03C0003C01E0007800E0007000F000F0007801E0001C0380000F0F000001F
1026     80001C217D9F23>I<FFFFE0000F80780007801C0007801E0007800F0007800F8007800F800780
1027     0F8007800F8007800F8007800F8007800F0007801E0007801C000780780007FFE0000780000007
1028     800000078000000780000007800000078000000780000007800000078000000780000007800000
1029     07800000078000000FC00000FFFC0000191F7E9E1F>I<001F800000F0F00001C0380007801E00
1030     0F000F000E0007001E0007803C0003C03C0003C07C0003E07C0003E0780001E0F80001F0F80001
1031     F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E0780001E07C00
1032     03E03C0003C03C0F03C01E1087800E2047000F204F0007A03E0001E0380000F0F010001FB01000
1033     003010000038300000387000003FF000001FE000001FE000000FC0000007801C297D9F23>I<FF
1034     FF80000F80F0000780780007803C0007801E0007801E0007801F0007801F0007801F0007801F00
1035     07801E0007801E0007803C00078078000780F00007FF80000781C0000780E0000780F000078070
1036     0007807800078078000780780007807C0007807C0007807C0007807C0407807E0407803E040FC0
1037     1E08FFFC0F10000003E01E207E9E21>I<07E0800C1980100780300380600180600180E00180E0
1038     0080E00080E00080F00000F000007800007F00003FF0001FFC000FFE0003FF00001F8000078000
1039     03C00003C00001C08001C08001C08001C08001C0C00180C00380E00300F00600CE0C0081F80012
1040     217D9F19>I<7FFFFFE0780F01E0600F0060400F0020400F0020C00F0030800F0010800F001080
1041     0F0010800F0010000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
1042     000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
1043     00000F0000001F800007FFFE001C1F7E9E21>I<FFFC3FF80FC007C00780038007800100078001
1044     000780010007800100078001000780010007800100078001000780010007800100078001000780
1045     010007800100078001000780010007800100078001000780010007800100078001000780010003
1046     8002000380020001C0020001C0040000E008000070180000382000000FC0001D207E9E22>I<FF
1047     F003FE1F8000F80F0000600F800060078000400780004003C0008003C0008003C0008001E00100
1048     01E0010001F0010000F0020000F0020000F806000078040000780400003C0800003C0800003C08
1049     00001E1000001E1000001F3000000F2000000F20000007C0000007C0000007C000000380000003
1050     800000038000000100001F207F9E22>I<FFF07FF81FF01F800FC007C00F00078003800F000780
1051     01000F0007C00100078007C00200078007C00200078007C0020003C009E0040003C009E0040003
1052     C009E0040003E010F00C0001E010F0080001E010F0080001F02078080000F02078100000F02078
1053     100000F0403C10000078403C20000078403C20000078C03E2000003C801E4000003C801E400000
1054     3C801E4000001F000F8000001F000F8000001F000F8000001E00078000000E00070000000E0007
1055     0000000C000300000004000200002C207F9E2F>I<FFF003FF1F8000F80F8000600780004007C0
1056     004003E0008001E0008001F0010000F0030000F80200007C0400003C0400003E0800001E080000
1057     1F1000000FB0000007A0000007C0000003C0000003C0000003C0000003C0000003C0000003C000
1058     0003C0000003C0000003C0000003C0000003C0000007C000007FFE00201F7F9E22>89
1059     D<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
1060     C0C0C0C0C0FEFE072D7CA10D>91 D<FEFE06060606060606060606060606060606060606060606
1061     06060606060606060606060606060606060606FEFE072D7FA10D>93 D<081020204040808080B8
1062     FCFC7C38060E7D9F0D>96 D<1FE000303000781800781C00300E00000E00000E00000E0000FE00
1063     078E001E0E00380E00780E00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>
1064     I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E
1065     000EC3800F01C00F00E00E00E00E00700E00700E00780E00780E00780E00780E00780E00780E00
1066     700E00700E00E00F00E00D01C00CC300083E0015207F9F19>I<03F80E0C1C1E381E380C700070
1067     00F000F000F000F000F000F00070007000380138011C020E0C03F010147E9314>I<000380003F
1068     8000038000038000038000038000038000038000038000038000038000038003E380061B801C07
1069     80380380380380700380700380F00380F00380F00380F00380F00380F003807003807003803803
1070     803807801C07800E1B8003E3F815207E9F19>I<03F0000E1C001C0E0038070038070070070070
1071     0380F00380F00380FFFF80F00000F00000F000007000007000003800801800800C010007060001
1072     F80011147F9314>I<007C00C6018F038F07060700070007000700070007000700FFF007000700
1073     07000700070007000700070007000700070007000700070007000700070007007FF01020809F0E
1074     >I<0000E003E3300E3C301C1C30380E00780F00780F00780F00780F00780F00380E001C1C001E
1075     380033E0002000002000003000003000003FFE001FFF800FFFC03001E0600070C00030C00030C0
1076     0030C000306000603000C01C038003FC00141F7F9417>I<0E0000FE00000E00000E00000E0000
1077     0E00000E00000E00000E00000E00000E00000E00000E3E000E43000E81800F01C00F01C00E01C0
1078     0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
1079     FFE7FC16207F9F19>I<1C001E003E001E001C000000000000000000000000000E007E000E000E
1080     000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC00A1F809E0C>
1081     I<00E001F001F001F000E0000000000000000000000000007007F000F000700070007000700070
1082     00700070007000700070007000700070007000700070007000700070007000706070F060F0C061
1083     803F000C28829E0E>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00
1084     000E00000E00000E0FF00E03C00E03000E02000E04000E08000E10000E30000E70000EF8000F38
1085     000E1C000E1E000E0E000E07000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE00
1086     0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
1087     000E000E000E000E000E000E000E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618000E
1088     81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00
1089     0E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E
1090     000E00E00E00FFE7FE7FE023147F9326>I<0E3E00FE43000E81800F01C00F01C00E01C00E01C0
1091     0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC
1092     16147F9319>I<01F800070E001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000
1093     F0F000F0F000F07000E07000E03801C03801C01C0380070E0001F80014147F9317>I<0E3E00FE
1094     C3800F01C00F00E00E00E00E00F00E00700E00780E00780E00780E00780E00780E00780E00700E
1095     00F00E00E00F01E00F01C00EC3000E3E000E00000E00000E00000E00000E00000E00000E00000E
1096     0000FFE000151D7F9319>I<03E0800619801C05803C0780380380780380700380F00380F00380
1097     F00380F00380F00380F003807003807803803803803807801C0B800E138003E380000380000380
1098     000380000380000380000380000380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E
1099     000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00F147F9312>I<1F9030
1100     704030C010C010C010E00078007F803FE00FF00070803880188018C018C018E030D0608F800D14
1101     7E9312>I<020002000200060006000E000E003E00FFF80E000E000E000E000E000E000E000E00
1102     0E000E000E000E080E080E080E080E080610031001E00D1C7F9B12>I<0E01C0FE1FC00E01C00E
1103     01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
1104     03C00603C0030DC001F1FC16147F9319>I<FF83F81E01E01C00C00E00800E00800E0080070100
1105     07010003820003820003820001C40001C40001EC0000E80000E800007000007000007000002000
1106     15147F9318>I<FF9FE1FC3C0780701C0300601C0380200E0380400E0380400E03C0400707C080
1107     0704C0800704E080038861000388710003C8730001D0320001D03A0000F03C0000E01C0000E01C
1108     0000601800004008001E147F9321>I<7FC3FC0F01E00701C007018003810001C20000E40000EC
1109     00007800003800003C00007C00004E000087000107000303800201C00601E01E01E0FF07FE1714
1110     809318>I<FF83F81E01E01C00C00E00800E00800E008007010007010003820003820003820001
1111     C40001C40001EC0000E80000E800007000007000007000002000002000004000004000004000F0
1112     8000F08000F100006200003C0000151D7F9318>I<3FFF380E200E201C40384078407000E001E0
1113     01C00380078007010E011E011C0338027006700EFFFE10147F9314>I<FFFFFFFFFFF02C01808C
1114     2D>124 D E /Fo 82 127 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070F8F8
1115     F870051C779B18>33 D<4010E038F078E038E038E038E038E038E038E038E038E038E03860300D
1116     0E7B9C18>I<030600078F00078F00078F00078F00078F00078F007FFFC0FFFFE0FFFFE07FFFC0
1117     0F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFFE07FFFC01E3C001E3C001E3C00
1118     1E3C001E3C001E3C000C1800131C7E9B18>I<01C00007E0000FF0000E70001C38001C38001C38
1119     001C38001C73F01C73F01CE3F00FE3800FC7000F87000F07001F0E003F0E007B8E0073DC00E1DC
1120     00E0F800E0F800E07070E0787070FC707FFFE03FCFE00F03C0141C7F9B18>38
1121     D<387C7C7E3E0E0E0E1C1C38F8F0C0070E789B18>I<007000F001E003C007800F001E001C0038
1122     0038007000700070007000E000E000E000E000E000E000E000E000700070007000700038003800
1123     1C001E000F00078003C001F000F000700C24799F18>I<6000F00078003C001E000F0007800380
1124     01C001C000E000E000E000E00070007000700070007000700070007000E000E000E000E001C001
1125     C0038007800F001E003C007800F00060000C247C9F18>I<01C00001C00001C00001C000C1C180
1126     F1C780F9CF807FFF001FFC0007F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C000
1127     01C00001C00011147D9718>I<00600000F00000F00000F00000F00000F00000F00000F0007FFF
1128     C0FFFFE0FFFFE07FFFC000F00000F00000F00000F00000F00000F00000F00000600013147E9718
1129     >I<1C3E7E7F3F1F070E1E7CF860080C788518>I<7FFF00FFFF80FFFF807FFF0011047D8F18>I<
1130     3078FCFC78300606778518>I<000300000780000780000F80000F00001F00001E00001E00003E
1131     00003C00007C0000780000780000F80000F00001F00001E00003E00003C00003C00007C0000780
1132     000F80000F00000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F000
1133     0060000011247D9F18>I<01F00007FC000FFE001F1F001C07003803807803C07001C07001C0E0
1134     00E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C038
1135     03801C07001F1F000FFE0007FC0001F000131C7E9B18>I<01800380038007800F803F80FF80FB
1136     80438003800380038003800380038003800380038003800380038003800380038003807FFCFFFE
1137     7FFC0F1C7B9B18>I<03F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000E0
1138     0000E00001C00001C00003C0000780000F00001E00003C0000780000F00001E00007C0000F8000
1139     1E00E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>I<07F8001FFE003FFF007807807803C07801
1140     C03001C00001C00003C0000380000F0003FF0003FE0003FF000007800003C00001C00000E00000
1141     E00000E0F000E0F000E0F001C0F003C07C07803FFF001FFE0003F800131C7E9B18>I<001F0000
1142     3F0000770000770000E70001E70001C7000387000787000707000E07001E07003C070038070078
1143     0700F00700FFFFF8FFFFF8FFFFF8000700000700000700000700000700000700007FF000FFF800
1144     7FF0151C7F9B18>I<1FFF803FFF803FFF80380000380000380000380000380000380000380000
1145     3800003BF8003FFE003FFF003C07801803C00001C00000E00000E06000E0F000E0F000E0E001C0
1146     7003C07C0F803FFF001FFC0003F000131C7E9B18>I<007E0001FF0007FF800F83C01E03C01C03
1147     C0380180380000700000700000E1F800E7FE00FFFF00FE0780F803C0F001C0F000E0E000E0F000
1148     E07000E07000E07000E03801C03C03C01E07800FFF0007FE0001F800131C7E9B18>I<E00000FF
1149     FFE0FFFFE0FFFFE0E003C0E00780000700000E00001E00001C0000380000380000700000700000
1150     E00000E00000E00001C00001C00001C00001C00003C00003800003800003800003800003800003
1151     8000038000131D7E9C18>I<03F8000FFE001FFF003E0F803803807001C07001C07001C07001C0
1152     3803803C07801FFF0007FC000FFE001F1F003C07807001C0F001E0E000E0E000E0E000E0E000E0
1153     7001C07803C03E0F801FFF000FFE0003F800131C7E9B18>I<3078FCFC78300000000000000000
1154     3078FCFC78300614779318>58 D<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F0
1155     60071A789318>I<000300000780001F80003F00007E0001FC0003F00007E0001FC0003F00007E
1156     0000FC0000FC00007E00003F00001FC00007E00003F00001FC00007E00003F00001F8000078000
1157     030011187D9918>I<7FFFC0FFFFE0FFFFE0FFFFE0000000000000000000000000FFFFE0FFFFE0
1158     FFFFE07FFFC0130C7E9318>I<600000F00000FC00007E00003F00001FC00007E00003F00001FC
1159     00007E00003F00001F80001F80003F00007E0001FC0003F00007E0001FC0003F00007E0000FC00
1160     00F0000060000011187D9918>I<007C0001FE0007FF000F87801E03C03C1DC0387FC070FFE071
1161     E3E071C1E0E1C1E0E380E0E380E0E380E0E380E0E380E0E380E0E1C1C071C1C071E3C070FF8038
1162     7F003C1C001E00E00F83E007FFC001FF80007E00131C7E9B18>64 D<00700000F80000F80000D8
1163     0000D80001DC0001DC0001DC00018C00038E00038E00038E00038E000306000707000707000707
1164     000707000FFF800FFF800FFF800E03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18
1165     >I<FFFC00FFFF00FFFF801C03C01C01C01C00E01C00E01C00E01C00E01C01E01C01C01C07C01F
1166     FF801FFF001FFFC01C03C01C00E01C00F01C00701C00701C00701C00701C00F01C00E01C03E0FF
1167     FFC0FFFF80FFFE00141C7F9B18>I<00F8E003FEE007FFE00F07E01E03E03C01E03800E07000E0
1168     7000E0700000E00000E00000E00000E00000E00000E00000E00000E000007000007000E07000E0
1169     3800E03C00E01E01C00F07C007FF8003FE0000F800131C7E9B18>I<FFFFF0FFFFF0FFFFF01C00
1170     701C00701C00701C00701C00001C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E
1171     001C0E001C00001C00001C00381C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C7F9B18
1172     >69 D<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001C1C00
1173     1FFC001FFC001FFC001C1C001C1C001C1C001C00001C00001C00001C00001C00001C00001C0000
1174     FFC000FFC000FFC000131C7E9B18>I<01F1C003FDC00FFFC01F0FC01C03C03803C03801C07001
1175     C07001C0700000E00000E00000E00000E00000E00000E00FF0E01FF0E00FF07001C07001C07003
1176     C03803C03803C01C07C01F0FC00FFFC003FDC001F1C0141C7E9B18>I<7F07F0FF8FF87F07F01C
1177     01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C
1178     01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B
1179     18>I<7FFF00FFFF807FFF0001C00001C00001C00001C00001C00001C00001C00001C00001C000
1180     01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
1181     7FFF00FFFF807FFF00111C7D9B18>I<7FE000FFE0007FE0000E00000E00000E00000E00000E00
1182     000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
1183     700E00700E00700E00700E00707FFFF0FFFFF07FFFF0141C7F9B18>76 D<FC01F8FE03F8FE03F8
1184     3B06E03B06E03B06E03B06E03B8EE03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E0
1185     38F8E03870E03870E03800E03800E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F
1186     9B18>I<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1
1187     C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0D
1188     C07F07C0FF87C07F03C0151C7F9B18>I<0FF8003FFE007FFF00780F00700700F00780E00380E0
1189     0380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E0
1190     0380E00380F00780700700780F007FFF003FFE000FF800111C7D9B18>I<FFFE00FFFF80FFFFC0
1191     1C03C01C01E01C00E01C00701C00701C00701C00701C00701C00E01C01E01C03C01FFFC01FFF80
1192     1FFE001C00001C00001C00001C00001C00001C00001C00001C0000FF8000FF8000FF8000141C7F
1193     9B18>I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E003
1194     80E00380E00380E00380E00380E00380E00380E00380E00380E1E380E1E380F0E78070F700787F
1195     007FFF003FFE000FFC00001C00001E00000E00000F0000070000070011227D9B18>I<7FF800FF
1196     FE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001F
1197     FE001C0F001C07001C03801C03801C03801C03801C03801C039C1C039C1C039C7F01F8FF81F87F
1198     00F0161C7F9B18>I<03F3801FFF803FFF807C0F80700780E00380E00380E00380E00000700000
1199     7800003F00001FF00007FE0000FF00000F800003C00001C00000E00000E06000E0E000E0E001E0
1200     F001C0F80780FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8FFFFF8E07038E07038E070
1201     38E070380070000070000070000070000070000070000070000070000070000070000070000070
1202     0000700000700000700000700000700000700007FF0007FF0007FF00151C7F9B18>I<FF83FEFF
1203     83FEFF83FE1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C
1204     00701C00701C00701C00701C00701C00701C00701C00700E00E00F01E00783C003FF8001FF0000
1205     7C00171C809B18>I<FE03F8FE03F8FE03F87000707000707000703800E03800E03800E03800E0
1206     3800E038F8E038F8E039DCE039DCE019DCC019DCC019DCC0198CC01D8DC01D8DC01D8DC01D8DC0
1207     0D8D800D05800F07800F07800E0380151C7F9B18>87 D<FFF8FFF8FFF8E000E000E000E000E000
1208     E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
1209     00E000E000E000E000E000FFF8FFF8FFF80D24779F18>91 D<600000F00000F00000F800007800
1210     007C00003C00003C00003E00001E00001F00000F00000F00000F800007800007C00003C00003C0
1211     0003E00001E00001F00000F00000F800007800007800007C00003C00003E00001E00001E00001F
1212     00000F00000F8000078000078000030011247D9F18>I<FFF8FFF8FFF800380038003800380038
1213     003800380038003800380038003800380038003800380038003800380038003800380038003800
1214     3800380038003800380038FFF8FFF8FFF80D247F9F18>I<018007C01FF07EFCF83EE00E0F067C
1215     9B18>I<7FFF00FFFF80FFFF807FFF0011047D7F18>I<1FE0003FF8007FFC00781E00300E000007
1216     0000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F003FFFF01FFB
1217     F007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E00
1218     0EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E00380F0070
1219     0F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<01FE0007FF001FFF803E07803803
1220     00700000700000E00000E00000E00000E00000E00000E000007000007001C03801C03E03C01FFF
1221     8007FF0001FC0012147D9318>I<001F80003F80001F8000038000038000038000038000038003
1222     E3800FFB801FFF803C1F80380F80700780700380E00380E00380E00380E00380E00380E0038070
1223     0780700780380F803C1F801FFFF00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F00
1224     380780700380700380E001C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03C0
1225     1FFF8007FF0001FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C0
1226     007FFFC0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
1227     0001C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFFF81E
1228     1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E0003800001C
1229     00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800F07E03F01FFFC00F
1230     FF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E00
1231     0EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
1232     0E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18>I<03800007C00007C00007C0000380
1233     000000000000000000000000007FC000FFC0007FC00001C00001C00001C00001C00001C00001C0
1234     0001C00001C00001C00001C00001C00001C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18
1235     >I<0038007C007C007C003800000000000000000FFC1FFC0FFC001C001C001C001C001C001C00
1236     1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C6038F078FFF07FE0
1237     3F800E277E9C18>I<FE0000FE0000FE00000E00000E00000E00000E00000E00000E3FF00E7FF0
1238     0E3FF00E07800E0F000E1E000E3C000E78000EF0000FF8000FFC000F9C000F0E000E0F000E0700
1239     0E03800E03C0FFC7F8FFC7F8FFC7F8151C7F9B18>I<7FE000FFE0007FE00000E00000E00000E0
1240     0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
1241     0000E00000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7CE0E000
1242     FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C
1243     001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F001914
1244     819318>I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E
1245     00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC1714809318>I<01F0000FFE00
1246     1FFF003E0F803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C0
1247     3C07803E0F801FFF000FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F00
1248     700E00700E00380E00380E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF
1249     800E3E000E00000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E809318
1250     >I<01E38007FB801FFF803E1F80380F80700780700780E00380E00380E00380E00380E00380E0
1251     0380700780700780380F803C1F801FFF800FFB8003E38000038000038000038000038000038000
1252     0380000380003FF8003FF8003FF8151E7E9318>I<7F87E0FF9FF07FBFF803F87803F03003E000
1253     03C00003C0000380000380000380000380000380000380000380000380000380007FFE00FFFF00
1254     7FFE0015147F9318>I<07F7003FFF007FFF00780F00E00700E00700E007007C00007FE0001FFC
1255     0003FE00001F00600780E00380E00380F00380F80F00FFFF00FFFC00E7F00011147D9318>I<01
1256     80000380000380000380000380007FFFC0FFFFC0FFFFC003800003800003800003800003800003
1257     80000380000380000380000380400380E00380E00380E001C1C001FFC000FF80003E0013197F98
1258     18>I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
1259     0E00E00E00E00E00E00E01E00F03E007FFFC03FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8F
1260     F01E03C00E03800E03800E0380070700070700070700038E00038E00038E00038E0001DC0001DC
1261     0001DC0000F80000F80000700015147F9318>I<FF8FF8FF8FF8FF8FF83800E03800E03800E01C
1262     01C01C01C01C71C01CF9C01CF9C01CD9C01CD9C00DDD800DDD800DDD800D8D800F8F800F8F8007
1263     070015147F9318>I<7F8FF07F9FF07F8FF0070700078E00039E0001DC0001F80000F800007000
1264     00F00000F80001DC00039E00038E000707000F07807F8FF0FF8FF87F8FF015147F9318>I<7F8F
1265     F0FF8FF87F8FF00E01C00E03800E0380070380070700070700038700038600038E0001CE0001CE
1266     0000CC0000CC0000DC0000780000780000780000700000700000700000F00000E00079E0007BC0
1267     007F80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07001E07003C0700780000F0000
1268     1E00003C0000F80001F00003C0000780000F00701E00703C0070780070FFFFF0FFFFF0FFFFF014
1269     147F9318>I<0007E0001FE0007FE000780000E00000E00000E00000E00000E00000E00000E000
1270     00E00000E00000E00000E00001E0007FC000FF8000FF80007FC00001E00000E00000E00000E000
1271     00E00000E00000E00000E00000E00000E00000E00000E000007800007FE0001FE00007E013247E
1272     9F18>I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
1273     600424769F18>I<7C0000FF0000FFC00003C00000E00000E00000E00000E00000E00000E00000
1274     E00000E00000E00000E00000E00000F000007FC0003FE0003FE0007FC000F00000E00000E00000
1275     E00000E00000E00000E00000E00000E00000E00000E00000E00003C000FFC000FF00007C000013
1276     247E9F18>I<060C1F1E3FBEFBF8F1F060C00F067C9B18>I E /Fp 10 117
1277     df<0000001FFE000060000003FFFFE000E000001FFFFFF801E000007FFFFFFE03E00001FFFC00
1278     FF07E00007FFC0001FCFE0000FFF000007FFE0001FFC000001FFE0003FF0000000FFE0007FE000
1279     00007FE000FFC00000003FE001FF800000001FE003FF000000000FE007FF000000000FE00FFE00
1280     00000007E00FFE0000000007E01FFC0000000003E01FFC0000000003E03FF80000000003E03FF8
1281     0000000001E03FF80000000001E07FF80000000001E07FF80000000001E07FF00000000000007F
1282     F0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000
1283     FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000000000
1284     00FFF0000000000000FFF00000000000007FF00000000000007FF00000000000007FF800000000
1285     00007FF80000000001E03FF80000000001E03FF80000000001E03FF80000000001E01FFC000000
1286     0001E01FFC0000000003C00FFE0000000003C00FFE0000000003C007FF00000000078003FF0000
1287     0000078001FF800000000F0000FFC00000001F00007FE00000003E00003FF00000007C00001FFC
1288     000000F800000FFF000003F0000007FFC0000FE0000001FFFC007F800000007FFFFFFF00000000
1289     1FFFFFFC0000000003FFFFE000000000001FFE0000003B3D7BBB46>67 D<0003FF000300003FFF
1290     E0070000FFFFFC0F0001FFFFFE1F0003FE00FF3F0007F0001FFF000FE00007FF001FC00001FF00
1291     3F800000FF003F800000FF007F0000007F007F0000003F007F0000003F00FF0000001F00FF0000
1292     001F00FF0000001F00FF8000000F00FF8000000F00FFC000000F00FFC000000F00FFF000000000
1293     7FF8000000007FFF800000003FFFF80000003FFFFFC000001FFFFFFC00001FFFFFFF00000FFFFF
1294     FFC00007FFFFFFF00003FFFFFFF80000FFFFFFFC00007FFFFFFE00001FFFFFFE000003FFFFFF00
1295     00001FFFFF80000001FFFF800000000FFFC000000003FFC000000000FFC0000000007FE0000000
1296     007FE0700000003FE0F00000003FE0F00000001FE0F00000001FE0F00000001FE0F80000001FE0
1297     F80000001FC0F80000001FC0FC0000001FC0FC0000003F80FE0000003F80FF0000003F00FFC000
1298     007F00FFE00000FE00FFFC0001FC00FDFFC00FF800F87FFFFFF000F01FFFFFC000E003FFFF0000
1299     C0003FF800002B3D7BBB36>83 D<003FFE00000001FFFFE0000007FFFFF800000FE007FC00000F
1300     F001FE00001FF800FF00001FF8007F80001FF8007FC0001FF8003FC0000FF0003FE00007E0003F
1301     E00003C0003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000FFFFE00000
1302     1FFFFFE000007FF83FE00003FF803FE00007FC003FE0000FF0003FE0001FE0003FE0003FE0003F
1303     E0007FC0003FE0007FC0003FE000FF80003FE000FF80003FE000FF80003FE000FF80003FE000FF
1304     80007FE0007FC0007FE0007FC000DFE0003FE0039FF0001FF80F0FFFE007FFFE0FFFE001FFF807
1305     FFE0003FE000FFE02B267DA52F>97 D<0001FFF000000FFFFE00003FFFFF8000FF801FC001FE00
1306     3FC003FC007FE007F8007FE00FF0007FE01FF0007FE03FE0003FC03FE0001F807FE0000F007FC0
1307     0000007FC00000007FC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FF
1308     C0000000FFC0000000FFC00000007FC00000007FC00000007FE00000007FE00000003FE0000000
1309     3FF00000F01FF00000F00FF80001E007F80001E003FC0003C001FF000F8000FFC03F00003FFFFE
1310     00000FFFF8000001FFC00024267DA52B>99 D<0001FF8000000FFFF000003FFFFC0000FF81FE00
1311     03FE007F8007F8003F800FF8001FC00FF0000FE01FE0000FE03FE0000FF03FE00007F07FC00007
1312     F07FC00007F87FC00007F8FFC00007F8FFC00007F8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFC000
1313     0000FFC0000000FFC0000000FFC00000007FC00000007FC00000007FC00000003FE00000003FE0
1314     0000781FE00000781FF00000780FF00000F007F80001F003FC0003E001FE000FC000FFC07F8000
1315     3FFFFE00000FFFF8000000FFC00025267DA52C>101 D<00FE00000000FFFE00000000FFFE0000
1316     0000FFFE00000000FFFE0000000007FE0000000003FE0000000003FE0000000003FE0000000003
1317     FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000
1318     000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003
1319     FE001FFFF003FE001FFFF003FE001FFFF003FE001FFFF003FE0003FC0003FE0003F00003FE0007
1320     E00003FE001F800003FE003F000003FE007E000003FE00FC000003FE03F8000003FE07E0000003
1321     FE0FC0000003FE1F80000003FE3FC0000003FEFFE0000003FFFFF0000003FFFFF0000003FFFFF8
1322     000003FFCFFC000003FF07FE000003FE03FF000003FC03FF000003FC01FF800003FC00FFC00003
1323     FC007FE00003FC003FE00003FC003FF00003FC001FF80003FC000FFC0003FC0007FC0003FC0007
1324     FE0003FC0003FF00FFFFF01FFFFCFFFFF01FFFFCFFFFF01FFFFCFFFFF01FFFFC2E3C7DBB33>
1325     107 D<00FE00FFFE00FFFE00FFFE00FFFE0007FE0003FE0003FE0003FE0003FE0003FE0003FE00
1326     03FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE00
1327     03FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE00
1328     03FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE00
1329     03FE0003FE0003FE0003FE0003FE00FFFFF8FFFFF8FFFFF8FFFFF8153C7DBB1A>I<0001FFC000
1330     00000FFFF80000007FFFFF000000FF80FF800003FE003FE00007F8000FF0000FF00007F8000FF0
1331     0007F8001FE00003FC003FE00003FE003FE00003FE007FC00001FF007FC00001FF007FC00001FF
1332     007FC00001FF00FFC00001FF80FFC00001FF80FFC00001FF80FFC00001FF80FFC00001FF80FFC0
1333     0001FF80FFC00001FF80FFC00001FF80FFC00001FF807FC00001FF007FC00001FF007FC00001FF
1334     003FE00003FE003FE00003FE001FE00003FC001FF00007FC000FF00007F80007F8000FF00003FE
1335     003FE00000FF80FF8000007FFFFF0000000FFFF800000001FFC0000029267DA530>111
1336     D<003FF07003FFFEF007FFFFF01FC01FF03F0003F03E0001F07C0001F07C0000F0FC0000F0FC00
1337     00F0FE0000F0FF000000FFC00000FFFC00007FFFF0003FFFFE003FFFFF801FFFFFC00FFFFFE003
1338     FFFFF000FFFFF8001FFFFC00007FFC000007FE700001FEF00000FEF000007EF800007EF800007E
1339     FC00007EFC00007CFE0000FCFF0000F8FF8001F0FFF00FE0F9FFFFC0F07FFF00C01FF8001F267D
1340     A526>115 D<000F0000000F0000000F0000000F0000000F0000001F0000001F0000001F000000
1341     1F0000003F0000003F0000007F0000007F000000FF000001FF000003FF000007FF00001FFFFFF0
1342     FFFFFFF0FFFFFFF0FFFFFFF001FF000001FF000001FF000001FF000001FF000001FF000001FF00
1343     0001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF
1344     000001FF000001FF000001FF003C01FF003C01FF003C01FF003C01FF003C01FF003C01FF003C01
1345     FF003C00FF007800FF8078007F80F0003FC1E0001FFFC0000FFF800001FE001E377EB626>I
1346     E end
1347     %%EndProlog
1348     %%BeginSetup
1349     %%Feature: *Resolution 300
1350     TeXDict begin
1351     %%EndSetup
1352     %%Page: 1 1
1353     bop 0 693 a Fp(C)p Fo(++)32 b Fp(So)s(c)m(k)m(et)h(Classes)p
1354     0 726 1950 17 v 1535 774 a Fn(V)l(ersion:)21 b(27Jan94)14 b(1.6)0
1355     2545 y Fm(Gnanasek)l(aran)23 b(Sw)n(aminathan)p 0 2570 1950
1356     9 v eop
1357     %%Page: 2 2
1358     bop 0 2076 a Fn(Cop)o(yrigh)o(t)226 2075 y(c)214 2076 y Fl(\015)15
1359     b Fn(1992,1993,199)o(4)d(Gnanasek)m(aran)j(Sw)o(aminathan)0
1360     2337 y(This)h(is)f(V)l(ersion:)21 b(27Jan94)15 b(1.6)f(of)h(the)g(C)p
1361     Fo(++)g Fn(family)g(of)g(so)q(c)o(k)o(et)g(classes.)0 2599
1362     y(P)o(ermission)g(is)g(gran)o(ted)f(to)g(mak)o(e)g(and)h(distribute)h(v)o
1363     (erbatim)e(copies)i(of)e(this)h(do)q(cumen)o(t)g(pro)o(vided)g(the)g(cop)o
1364     (y-)0 2661 y(righ)o(t)g(notice)h(and)f(this)h(p)q(ermission)g(notice)g(are)f
1365     (preserv)o(ed)h(on)f(all)h(copies.)p eop
1366     %%Page: 1 3
1367     bop 0 -58 a Fn(So)q(c)o(k)o(et)p Fo(++)15 b Fn(Library)g(Cop)o(yrigh)o(t)g
1368     (Notice)1231 b(1)0 183 y Fk(So)r(c)n(k)n(et)p Fj(++)15 b Fk(Library)f(Cop)n
1369     (yrigh)n(t)h(Notice)62 370 y Fn(Cop)o(yrigh)o(t)g(\(C\))f(1992,1993,199)o(4)e
1370     (Gnanasek)m(aran)j(Sw)o(aminathan)62 507 y(P)o(ermission)h(is)g(gran)o(ted)e
1371     (to)h(use)g(at)g(y)o(our)g(o)o(wn)f(risk)i(and)f(distribute)i(this)e(soft)o
1372     (w)o(are)f(in)i(source)f(and)g(binary)0 569 y(forms)j(pro)o(vided)h(the)g(ab)
1373     q(o)o(v)o(e)g(cop)o(yrigh)o(t)f(notice)h(and)g(this)g(paragraph)f(are)h
1374     (preserv)o(ed)g(on)f(all)i(copies.)31 b(This)0 632 y(soft)o(w)o(are)13
1375     b(is)j(pro)o(vided)g Fo(")p Fn(as)f(is)p Fo(")g Fn(with)h(no)f(express)g(or)g
1376     (implied)j(w)o(arran)o(t)o(y)l(.)p eop
1377     %%Page: 2 4
1378     bop 0 -58 a Fn(Ac)o(kno)o(wledgmen)o(ts)1572 b(2)0 183 y Fk(Ac)n(kno)n
1379     (wledgmen)n(ts)62 370 y Fn(Gordon)16 b(Joly)i Fo(<)p Fn(G.Joly)p
1380     Fo(@)p Fn(cs.ucl.ac.uk)p Fo(>)e Fn(for)h(rep)q(orting)g(bugs)f(in)i(pip)q
1381     (estream)g(class)f(implemen)o(tation)h(and)0 432 y(pro)o(viding)c(an)e(ftp)h
1382     (site)g(for)f(the)h(so)q(c)o(k)o(et)p Fo(++)f Fn(library)h(at)f
1383     (cs.ucl.ac.uk:)p Fo(~)p Fn(ftp/coside/gn)o(u/so)q(c)o(k)o(et)p
1384     Fo(++)p Fn(-1.x.tar.gz)e(He)0 495 y(also)15 b(kno)o(ws)g(ho)o(w)f(to)h(mak)o
1385     (e)g(the)g(so)q(c)o(k)o(et)p Fo(++)f Fn(library)i(a)f(shared)h(library)l(.)62
1386     632 y(Jim)g(Anderson)g(for)f(rep)q(orting)g(a)g(bug)g(in)h(so)q(c)o(kinet.C)
1387     62 769 y(Carl)f(Ga)o(y)g Fo(<)p Fn(cga)o(y)p Fo(@)p Fn
1388     (skinner.cs.uoregon.edu)p Fo(>)f Fn(for)h(rep)q(orting)g(a)g(bug)h(and)f(a)g
1389     (\014x)g(in)h(so)q(c)o(kinet.C)62 906 y(Oliv)o(er)j(Im)o(busc)o(h)f
1390     Fo(<)p Fn(\015ab)q(es)p Fo(@)p Fn(parystec.de)p Fo(>)g Fn(for)f(rep)q(orting)
1391     h(a)f(bug)h(in)g(Mak)o(e\014le.in)g(and)g(suggesting)g(sev)o(eral)0
1392     968 y(enhancemen)o(ts)e(for)e(so)q(c)o(kbuf)i(class.)62 1105
1393     y(Dierk)g(W)l(endt)f Fo(<)p Fn(w)o(endt)p Fo(@)p Fn(lam)o(b)q(da.hella.de)p
1394     Fo(>)i Fn(for)d(rep)q(orting)i(errors)e(in)i(the)f(so)q(c)o(k)o(et)p
1395     Fo(++)g Fn(do)q(cumen)o(tation.)62 1242 y(P)o(er)g(Bothner)h
1396     Fo(<)p Fn(b)q(othner)p Fo(@)p Fn(cygn)o(us.com)p Fo(>)f Fn(for)f
1397     (con\014gure,)i(con\014g.sub,)f(con\014g.shared)g(and)h(mo)o(v)o(e-if-c)o
1398     (hange)0 1304 y(\014les)h(that)d(are)i(used)g(to)f(generate)g(Mak)o(e\014le.)
1399     21 b(These)16 b(\014les)h(are)e(tak)o(en)g(from)g(his)h(libg)p
1400     Fo(++)p Fn(-2.4)g(and)f(hence,)i(these)0 1366 y(\014les)f(are)f(go)o(v)o
1401     (erned)g(b)o(y)g(the)g(Cop)o(yrigh)o(t)g(Notice)g(found)h(in)g(the)f(\014le)i
1402     (LICENCE)e(in)h(libg)p Fo(++)p Fn(.)p eop
1403     %%Page: 3 5
1404     bop 0 -58 a Fn(Chapter)15 b(1:)k(Ov)o(erview)d(of)f(So)q(c)o(k)o(et)p
1405     Fo(++)g Fn(Library)1102 b(3)0 183 y Fk(1)41 b(Ov)n(erview)13
1406     b(of)i(So)r(c)n(k)n(et)p Fj(++)f Fk(Library)62 370 y Fn(So)q(c)o(k)o(et)p
1407     Fo(++)h Fn(library)h(de\014nes)g(a)f(family)h(of)f(C)p Fo(++)f
1408     Fn(classes)i(that)f(can)g(b)q(e)h(used)g(more)e(e\013ectiv)o(ely)j(than)e
1409     (directly)0 432 y(calling)h(the)e(underlying)j(lo)o(w-lev)o(el)e(system)f
1410     (functions.)20 b(One)c(distinct)f(adv)m(an)o(tage)f(of)g(the)g(so)q(c)o(k)o
1411     (et)p Fo(++)f Fn(is)i(that)f(it)0 495 y(has)f(the)g(same)f(in)o(terface)i(as)
1412     e(that)g(of)h(the)g(iostream)f(so)h(that)f(the)h(users)g(can)g(p)q(erform)g
1413     (t)o(yp)q(e-safe)g(input)h(output.)0 557 y(See)i(y)o(our)e(lo)q(cal)j
1414     (IOStream)e(library)h(do)q(cumen)o(tation)g(for)e(more)h(information)h(on)f
1415     (iostreams.)62 694 y Fo(streambuf)f Fn(coun)o(terpart)h(of)f(the)i(so)q(c)o
1416     (k)o(et)p Fo(++)e Fn(is)i Fo(sockbuf)p Fn(.)i Fo(sockbuf)d
1417     Fn(is)g(an)g(endp)q(oin)o(t)i(for)d(comm)o(unication)0 756
1418     y(with)k(y)o(et)f(another)g Fo(sockbuf)g Fn(or)g(simply)i(a)e
1419     Fo(socket)g Fn(descriptor.)28 b Fo(sockbuf)16 b Fn(has)i(also)f(metho)q(ds)h
1420     (that)f(act)g(as)0 818 y(in)o(terfaces)d(for)f(most)g(of)h(the)g(commonly)g
1421     (used)h(system)e(calls)i(that)e(in)o(v)o(olv)o(e)i(so)q(c)o(k)o(ets.)j(See)d
1422     (Chapter)f(2)f([so)q(c)o(kbuf)0 881 y(Class],)h(page)i(4,)e(for)h(more)f
1423     (information)i(on)f(the)g(so)q(c)o(k)o(et)g(bu\013er)g(class.)62
1424     1018 y(F)l(or)f(eac)o(h)h(comm)o(unication)g(domain,)g(w)o(e)f(deriv)o(e)i(a)
1425     e(new)h(class)g(from)e Fo(sockbuf)h Fn(that)g(has)g(some)h(additional)0
1426     1080 y(metho)q(ds)h(that)f(are)h(sp)q(eci\014c)i(to)d(that)g(domain.)23
1427     b(A)o(t)15 b(presen)o(t,)h(only)g Fi(unix)k Fn(and)c Fi(inet)i
1428     Fn(domains)e(are)g(supp)q(orted.)0 1142 y Fo(sockunixbuf)d
1429     Fn(class)h(and)h Fo(sockinetbuf)e Fn(class)h(de\014ne)i(the)e
1430     Fi(unix)19 b Fn(and)14 b Fi(inet)i Fn(domain)f(of)f(so)q(c)o(k)o(ets)f(resp)q
1431     (ectiv)o(ely)l(.)0 1204 y(See)h(Chapter)f(6)g([so)q(c)o(kunixbuf)h(Class],)f
1432     (page)g(21,)f(for)h Fi(unix)k Fn(so)q(c)o(k)o(ets)c(and)g(See)h(Chapter)f(4)g
1433     ([so)q(c)o(kinetbuf)h(Class],)0 1267 y(page)h(14,)f(for)h Fi(inet)i
1434     Fn(so)q(c)o(k)o(ets.)62 1404 y(W)l(e)e(also)g(ha)o(v)o(e)g(domain)g(sp)q
1435     (eci\014c)i(so)q(c)o(k)o(et)e(address)g(classes)g(that)f(are)h(deriv)o(ed)h
1436     (from)e(a)h(common)g(base)g(class)0 1466 y(called)g Fo(sockAddr)p
1437     Fn(.)j Fo(sockunixaddr)11 b Fn(class)j(is)g(used)g(for)e Fi(unix)18
1438     b Fn(domain)13 b(addresses)h(and)f Fo(sockinetaddr)f Fn(class)h(is)0
1439     1528 y(used)j(for)f Fi(inet)i Fn(domain)f(addresses.)21 b(F)l(or)15
1440     b(more)g(information)h(on)f(address)h(classes)g(see)g(Chapter)f(3)g([so)q(c)o
1441     (kAddr)0 1590 y(Class],)22 b(page)f(13,)h(Chapter)f(7)g([so)q(c)o(kunixaddr)h
1442     (Class],)g(page)f(25,)h(and)f(Chapter)g(5)g([so)q(c)o(kinetaddr)h(Class],)0
1443     1653 y(page)15 b(19.)120 1790 y Fi(Note)s Fn(:)i Fo(sockAddr)9
1444     b Fn(is)j(not)e(sp)q(elled)j Fo(sockaddr)d Fn(in)h(order)g(to)f(prev)o(en)o
1445     (t)h(name)f(clash)i(with)f(the)g Fo(struct)120 1840 y(sockaddr)j
1446     Fn(declared)i(in)h(`)p Fo(<sys/socket.h>)p Fn('.)62 2051 y(W)l(e)k(noted)f
1447     (earlier)i(that)d(so)q(c)o(k)o(et)p Fo(++)h Fn(pro)o(vides)h(the)f(same)g(in)
1448     o(terface)h(as)f(the)g(iostream)g(library)l(.)37 b(F)l(or)20
1449     b(ex-)0 2114 y(ample,)e(in)f(the)g(in)o(ternet)h(domain,)f(w)o(e)g(ha)o(v)o
1450     (e)f Fo(isockinet)p Fn(,)g Fo(osockinet)p Fn(,)g(and)h Fo(iosockinet)f
1451     Fn(classes)h(that)f(are)0 2176 y(coun)o(terparts)e(to)g Fo(istream)p
1452     Fn(,)f Fo(ostream)p Fn(,)g(and)i Fo(iostream)e Fn(classes)i(of)f(IOStream)h
1453     (library)l(.)21 b(F)l(or)13 b(more)i(details)g(on)0 2238 y
1454     Fo(iosockstream)f Fn(classes)h(see)h(See)g(Chapter)e(8)h([so)q(c)o(kstream)f
1455     (Classes],)h(page)g(26.)62 2375 y(The)c(services)g(of)e Fo(pipe\(\))p
1456     Fn(,)h Fo(socketpair\(\))p Fn(,)f(and)i Fo(popen\(\))e Fn(system)h(calls)h
1457     (are)f(pro)o(vided)h(b)o(y)f(the)g Fo(pipestream)0 2437 y Fn(class.)20
1458     b(See)c(Chapter)f(9)g([pip)q(estream)g(Classes],)g(page)g(33.)p
1459     eop
1460     %%Page: 4 6
1461     bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1408
1462     b(4)0 183 y Fk(2)41 b Fj(sockbuf)14 b Fk(Class)62 383 y Fo(sockbuf)h
1463     Fn(class)g(is)h(deriv)o(ed)h(from)d Fo(streambuf)h Fn(class)g(of)g(the)h
1464     (iostream)f(library)l(.)21 b(Y)l(ou)16 b(can)g(sim)o(ultaneously)0
1465     445 y(read)d(and)h(write)g(in)o(to)f(a)g Fo(sockbuf)f Fn(just)i(lik)o(e)g(y)o
1466     (ou)f(can)h(listen)h(and)e(talk)h(through)f(a)g(telephone.)20
1467     b(T)l(o)14 b(accomplish)0 508 y(the)h(ab)q(o)o(v)o(e)g(goal,)g(w)o(e)g(main)o
1468     (tain)g(t)o(w)o(o)f(indep)q(enden)o(t)k(bu\013ers)d(for)f(reading)i(and)f
1469     (writing.)0 755 y Fm(2.1)33 b(Constructors)62 895 y Fo(sockbuf)13
1470     b Fn(constructors)g(sets)h(up)g(an)g(endp)q(oin)o(t)h(for)e(comm)o
1471     (unication.)20 b(A)14 b Fo(sockbuf)f Fn(ob)s(ject)g(so)h(created)g(can)0
1472     957 y(b)q(e)19 b(read)e(from)h(and)g(written)g(to)f(in)i(linebu\013ered)h(mo)
1473     q(de.)28 b(T)l(o)18 b(c)o(hange)g(mo)q(de,)g(refer)g(to)f Fo(streambuf)g
1474     Fn(class)h(in)0 1020 y(y)o(our)d(IOStream)g(library)l(.)120
1475     1159 y Fi(Note)s Fn(:)20 b(If)c(y)o(ou)f(are)g(using)h(A)l(T&T)g(IOStream)g
1476     (library)l(,)g(then)g(the)g(linebu\013ered)i(mo)q(de)e(is)g(p)q(erma-)120
1477     1209 y(nen)o(tly)g(turned)h(o\013.)k(Th)o(us,)15 b(y)o(ou)h(need)g(to)f
1478     (explicitly)k(\015ush)d(a)g(so)q(c)o(k)o(et)f(stream.)21 b(Y)l(ou)16
1479     b(can)g(\015ush)g(a)120 1259 y(so)q(c)o(k)o(et)f(stream)f(bu\013er)h(in)h
1480     (one)g(of)e(the)i(follo)o(wing)f(four)g(w)o(a)o(ys:)335 1386
1481     y Fo(//)24 b(os)g(is)f(a)h(socket)f(ostream)335 1436 y(os)h(<<)g("this)f(is)g
1482     (a)h(test")f(<<)h(endl;)335 1486 y(os)g(<<)g("this)f(is)g(a)h(test\\n")f(<<)h
1483     (flush;)335 1535 y(os)g(<<)g("this)f(is)g(a)h(test\\n";)f(os.flush)g(\(\);)
1484     335 1585 y(os)h(<<)g("this)f(is)g(a)h(test\\n";)f(os->sync)g(\(\);)62
1485     1802 y(sockbuf)14 b Fn(ob)s(jects)h(are)g(created)g(as)g(follo)o(ws)g(where)
1486     25 1942 y Fl(\000)30 b Fo(s)15 b Fn(and)g Fo(so)g Fn(are)g
1487     Fo(sockbuf)f Fn(ob)s(jects)25 2019 y Fl(\000)30 b Fo(sd)15
1488     b Fn(is)h(an)f(in)o(teger)g(whic)o(h)h(is)g(a)f(so)q(c)o(k)o(et)f(descriptor)
1489     25 2096 y Fl(\000)30 b Fo(af)15 b Fn(and)g Fo(proto)g Fn(are)g(in)o(tegers)g
1490     (whic)o(h)h(denote)f(domain)h(n)o(um)o(b)q(er)g(and)f(proto)q(col)g(n)o(um)o
1491     (b)q(er)h(resp)q(ectiv)o(ely)25 2174 y Fl(\000)30 b Fo(ty)17
1492     b Fn(is)g(a)g Fo(sockbuf::type)e Fn(and)j(m)o(ust)e(b)q(e)i(one)f(of)g
1493     Fo(sockbuf::sock_stream)p Fn(,)d Fo(sockbuf::sock_dgram)p Fn(,)90
1494     2236 y Fo(sockbuf::sock_raw)p Fn(,)e Fo(sockbuf::sock_rdm)p
1495     Fn(,)h(and)i Fo(sockbuf::sock_seqpacket)0 2376 y(sockbuf)f(s\(sd\);)0
1496     2438 y(sockbuf)g(s;)240 2515 y Fn(Set)h(so)q(c)o(k)o(et)g(descriptor)h(of)e
1497     Fo(s)h Fn(to)g Fo(sd)g Fn(\(defaults)g(to)g(-1\).)k Fo(sockbuf)14
1498     b Fn(destructor)h(will)i(close)f Fo(sd)p Fn(.)0 2593 y Fo(sockbuf)e(s\(af,)h
1499     (ty,)f(proto\);)240 2670 y Fn(Set)h(so)q(c)o(k)o(et)g(descriptor)h(of)e
1500     Fo(s)h Fn(to)g Fo(::socket\(af,)e(int\(ty\),)h(proto\);)p eop
1501     %%Page: 5 7
1502     bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1408
1503     b(5)0 183 y Fo(sockbuf)14 b(so\(s\);)240 259 y Fn(Set)h(so)q(c)o(k)o(et)g
1504     (descriptor)h(of)e Fo(so)h Fn(to)g(the)g(so)q(c)o(k)o(et)g(descriptor)g(of)g
1505     Fo(s)p Fn(.)0 334 y Fo(s.open\(ty,)f(proto\))240 409 y Fn(do)q(es)i(nothing)f
1506     (and)h(returns)f(simply)h Fo(0)p Fn(,)f(the)g(n)o(ull)i(p)q(oin)o(ter)e(to)g
1507     Fo(sockbuf)p Fn(.)0 485 y Fo(s.is_open\(\))240 560 y Fn(returns)g(a)g
1508     (non-zero)g(n)o(um)o(b)q(er)h(if)g(the)f(so)q(c)o(k)o(et)g(descriptor)g(is)h
1509     (op)q(en)g(else)g(return)f(0.)0 635 y Fo(s)g(=)g(so;)90 b Fn(return)15
1510     b(a)g(reference)h Fo(s)f Fn(after)f(assigning)i Fo(s)f Fn(with)h
1511     Fo(so)p Fn(.)0 865 y Fm(2.2)33 b(Destructor)62 1002 y Fo
1512     (sockbuf::~sockbuf\(\))14 b Fn(\015ushes)j(output)f(and)g(closes)h(its)f(so)q
1513     (c)o(k)o(et)g(if)g(no)h(other)e(so)q(c)o(kbuf)i(is)f(referencing)i(it)0
1514     1065 y(and)p 91 1065 14 2 v 32 w(S)p 133 1065 V 16 w(DELETE)p
1515     338 1065 V 16 w(DONT)p 491 1065 V 17 w(CLOSE)e(\015ag)f(is)g(not)g(set.)20
1516     b(It)15 b(also)g(deletes)h(its)g(read)f(and)g(write)h(bu\013ers.)62
1517     1202 y(In)g(what)f(follo)o(ws,)25 1340 y Fl(\000)30 b Fo(s)15
1518     b Fn(is)h(a)f Fo(sockbuf)f Fn(ob)s(ject)25 1415 y Fl(\000)30
1519     b Fo(how)10 b Fn(is)g(of)g(t)o(yp)q(e)g Fo(sockbuf::shuthow)e
1520     Fn(and)j(m)o(ust)e(b)q(e)i(one)f(of)g Fo(sockbuf::shut_read)p
1521     Fn(,)e Fo(sockbuf::shut_write)p Fn(,)90 1477 y(and)15 b Fo
1522     (sockbuf::shut_readwrite)0 1615 y(sockbuf::~sockbuf\(\))240
1523     1690 y Fn(\015ushes)i(output)f(and)g(closes)g(its)h(so)q(c)o(k)o(et)e(if)i
1524     (no)f(other)f Fo(sockbuf)g Fn(ob)s(ject)h(is)g(referencing)h(it)g(b)q(efore)
1525     240 1753 y(deleting)f(its)f(read)f(and)h(write)f(bu\013ers.)20
1526     b(If)14 b(the)p 1068 1753 V 31 w(S)p 1109 1753 V 17 w(DELETE)p
1527     1315 1753 V 16 w(DONT)p 1468 1753 V 16 w(CLOSE)i(\015ag)e(is)h(set,)f(then)
1528     240 1815 y(the)h(so)q(c)o(k)o(et)g(is)h(not)e(closed.)0 1890
1529     y Fo(s.close\(\))240 1965 y Fn(closes)d(the)f(so)q(c)o(k)o(et)g(ev)o(en)g(if)
1530     h(it)f(is)h(referenced)g(b)o(y)f(other)g Fo(sockbuf)f Fn(ob)s(jects)g(and)p
1531     1579 1965 V 27 w(S)p 1621 1965 V 17 w(DELETE)p 1827 1965 V
1532     16 w(DONT)p 1980 1965 V 16 w(CLOSE)240 2028 y(\015ag)15 b(is)h(set.)0
1533     2103 y Fo(s.shutdown\(how\))240 2178 y Fn(sh)o(uts)10 b(do)o(wn)g(read)g(if)g
1534     Fo(how)g Fn(is)h Fo(sockbuf::shut_read)p Fn(,)d(sh)o(uts)i(do)o(wn)g(write)g
1535     (if)h Fo(how)e Fn(is)i Fo(sockbuf::shut_write)p Fn(,)240 2241
1536     y(and)k(sh)o(uts)g(do)o(wn)g(b)q(oth)h(read)f(and)g(write)g(if)h
1537     Fo(how)f Fn(is)h Fo(sockbuf::shut_readwrite)o Fn(.)0 2470 y
1538     Fm(2.3)33 b(Reading)15 b(and)h(W)-6 b(riting)62 2608 y Fo(sockbuf)17
1539     b Fn(class)g(o\013ers)g(sev)o(eral)g(w)o(a)o(ys)g(to)f(read)i(and)f(write)h
1540     (and)f(tailors)h(the)f(b)q(eha)o(vior)h(of)f(sev)o(eral)g(virtual)0
1541     2670 y(functions)f(of)f Fo(streambuf)f Fn(for)g(so)q(c)o(k)o(et)h(comm)o
1542     (unication.)p eop
1543     %%Page: 6 8
1544     bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1408
1545     b(6)62 183 y(In)16 b(case)f(of)g(error,)f Fo(sockbuf::error\(const)f(char*\))
1546     h Fn(is)i(called.)62 321 y(In)g(what)f(follo)o(ws,)25 459 y
1547     Fl(\000)30 b Fo(s)15 b Fn(is)h(a)f Fo(sockbuf)f Fn(ob)s(ject)25
1548     535 y Fl(\000)30 b Fo(buf)15 b Fn(is)g(bu\013er)h(of)e(t)o(yp)q(e)i
1549     Fo(char*)25 610 y Fl(\000)30 b Fo(bufsz)14 b Fn(is)i(an)f(in)o(teger)h(and)f
1550     (is)h(less)g(than)f Fo(sizeof\(buf\))25 686 y Fl(\000)30 b
1551     Fo(msgf)15 b Fn(is)g(an)g(in)o(teger)h(and)f(denotes)h(the)f(message)g
1552     (\015ag)25 762 y Fl(\000)30 b Fo(sa)15 b Fn(is)h(of)e(t)o(yp)q(e)i
1553     Fo(sockAddr)25 837 y Fl(\000)30 b Fo(msgh)15 b Fn(is)g(a)g(p)q(oin)o(ter)h
1554     (to)e Fo(struct)h(msghdr)25 913 y Fl(\000)30 b Fo(wp)15 b Fn(is)h(an)f(in)o
1555     (teger)g(and)g(denotes)h(time)f(in)h(seconds)25 988 y Fl(\000)30
1556     b Fo(c)15 b Fn(is)h(a)f(c)o(har)0 1126 y Fo(s.is_open\(\))240
1557     1202 y Fn(returns)g(a)g(non-zero)g(n)o(um)o(b)q(er)h(if)g(the)f(so)q(c)o(k)o
1558     (et)g(descriptor)g(is)h(op)q(en)g(else)g(return)f(0.)0 1278
1559     y Fo(s.is_eof\(\))240 1353 y Fn(returns)g(a)g(non-zero)g(n)o(um)o(b)q(er)h
1560     (if)g(the)f(so)q(c)o(k)o(et)g(has)g(seen)g(EOF)g(while)i(reading)f(else)g
1561     (return)f(0.)0 1429 y Fo(s.write\(buf,)f(bufsz\))240 1505 y
1562     Fn(returns)20 b(an)f(in)o(t)i(whic)o(h)f(m)o(ust)f(b)q(e)i(equal)f(to)g
1563     Fo(bufsz)f Fn(if)h Fo(bufsz)f Fn(c)o(hars)h(in)g(the)g Fo(buf)f
1564     Fn(are)h(written)240 1567 y(successfully)l(.)37 b(It)20 b(returns)g(0)g(if)h
1565     (there)f(is)h(nothing)g(to)e(write)i(or)e(if,)j(in)f(case)f(of)g(timeouts,)h
1566     (the)240 1629 y(so)q(c)o(k)o(et)15 b(is)g(not)g(ready)g(for)g(write)g
1567     (Section)h(2.6)e([Timeouts],)h(page)g(11.)0 1705 y Fo(s.send\(buf,)f(bufsz,)g
1568     (msgf\))240 1780 y Fn(same)20 b(as)g Fo(sockbuf::write)f Fn(describ)q(ed)k
1569     (ab)q(o)o(v)o(e)d(but)g(allo)o(ws)h(the)g(user)g(to)f(con)o(trol)g(the)g
1570     (trans-)240 1843 y(mission)f(of)f(messages)g(using)h(the)g(message)f(\015ag)g
1571     Fo(msgf)p Fn(.)29 b(If)19 b Fo(msgf)f Fn(is)h Fo(sockbuf::msg_oob)d
1572     Fn(and)240 1905 y(the)k(so)q(c)o(k)o(et)f(t)o(yp)q(e)g(of)g
1573     Fo(s)h Fn(is)g Fo(sockbuf::sock_stream)p Fn(,)d Fo(s)j Fn(sends)g(the)f
1574     (message)h(in)g Fi(out-of-band)240 1967 y Fn(mo)q(de.)38 b(If)22
1575     b Fo(msgf)f Fn(is)h Fo(sockbuf::msg_dontroute)p Fn(,)d Fo(s)i
1576     Fn(sends)h(the)f(outgoing)g(pac)o(k)o(ets)g(without)240 2029
1577     y(routing.)29 b(If)18 b Fo(msgf)g Fn(is)g(0,)g(whic)o(h)h(is)g(the)f(default)
1578     h(case,)g Fo(sockbuf::send)d Fn(b)q(eha)o(v)o(es)i(exactly)h(lik)o(e)240
1579     2092 y Fo(sockbuf::write)p Fn(.)0 2167 y Fo(s.sendto\(sa,)14
1580     b(buf,)g(bufsz,)g(msgf\))240 2243 y Fn(same)f(as)h Fo(sockbuf::send)d
1581     Fn(but)j(w)o(orks)f(on)g(unconnected)i(so)q(c)o(k)o(ets.)k
1582     Fo(sa)13 b Fn(sp)q(eci\014es)j(the)e Fi(to)h Fn(address)240
1583     2305 y(for)g(the)g(message.)0 2381 y Fo(s.sendmsg\(msgh,)e(msgf\))240
1584     2456 y Fn(same)i(as)g Fo(sockbuf::send)e Fn(but)i(sends)h(a)f
1585     Fo(struct)f(msghdr)h Fn(ob)s(ject)f(instead.)0 2532 y Fo(s.sys_write\(buf,)f
1586     (bufsz\))240 2608 y Fn(calls)e Fo(sockbuf::write)d Fn(and)j(returns)f(the)g
1587     (result.)19 b(Unlik)o(e)11 b Fo(sockbuf::write)d(sockbuf::sys_write)240
1588     2670 y Fn(is)16 b(declared)g(as)f(a)g(virtual)h(function.)p
1589     eop
1590     %%Page: 7 9
1591     bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1408
1592     b(7)0 183 y Fo(s.read\(buf,)14 b(bufsz\))240 258 y Fn(returns)h(an)g(in)o(t)h
1593     (whic)o(h)g(is)g(the)g(n)o(um)o(b)q(er)f(of)g(c)o(hars)g(read)g(in)o(to)h
1594     (the)f Fo(buf)p Fn(.)20 b(In)c(case)f(of)g(EOF,)g(return)240
1595     320 y(EOF.)c(Here,)h Fo(bufsz)f Fn(indicates)i(the)e(size)i(of)e(the)g
1596     Fo(buf)p Fn(.)19 b(In)12 b(case)f(of)g(timeouts,)h(return)f(0)h(Section)g
1597     (2.6)240 382 y([Timeouts],)i(page)h(11.)0 457 y Fo(s.recv\(buf,)f(bufsz,)g
1598     (msgf\))240 531 y Fn(same)20 b(as)g Fo(sockbuf::read)e Fn(describ)q(ed)23
1599     b(ab)q(o)o(v)o(e)c(but)i(allo)o(ws)f(the)h(user)f(to)g(receiv)o(e)h
1600     Fi(out-of-band)240 594 y Fn(data)14 b(if)h Fo(msgf)f Fn(is)h
1601     Fo(sockbuf::msg_oob)d Fn(or)i(to)g(preview)h(the)g(data)f(w)o(aiting)g(to)g
1602     (b)q(e)h(read)g(if)g Fo(msgf)e Fn(is)240 656 y Fo(sockbuf::msg_peek)p
1603     Fn(.)23 b(If)17 b Fo(msgf)f Fn(is)i(0,)f(whic)o(h)g(is)h(the)f(default)h
1604     (case,)f Fo(sockbuf::recv)e Fn(b)q(eha)o(v)o(es)240 718 y(exactly)h(lik)o(e)g
1605     Fo(sockbuf::read)p Fn(.)0 793 y Fo(s.recvfrom\(sa,)d(buf,)i(bufsz,)f(msgf\))
1606     240 867 y Fn(same)22 b(as)g Fo(sockbuf::recv)f Fn(but)i(w)o(orks)e(on)i
1607     (unconnected)g(so)q(c)o(k)o(ets.)42 b Fo(sa)22 b Fn(sp)q(eci\014es)i(the)f
1608     Fi(from)240 929 y Fn(address)15 b(for)g(the)g(message.)0 1004
1609     y Fo(s.recvmsg\(msgh,)e(msgf\))240 1078 y Fn(same)i(as)g Fo(sockbuf::recv)e
1610     Fn(but)i(reads)g(a)g Fo(struct)g(msghdr)f Fn(ob)s(ject)h(instead.)0
1611     1153 y Fo(s.sys_read\(buf,)e(bufsz\))240 1227 y Fn(calls)e
1612     Fo(sockbuf::read)e Fn(and)h(returns)g(the)g(result.)19 b(Unlik)o(e)11
1613     b Fo(sockbuf::read)e(sockbuf::sys_read)240 1290 y Fn(is)16
1614     b(declared)g(as)f(a)g(virtual)h(function.)0 1364 y Fo
1615     (s.is_readready\(wp_sec,)c(wp_usec\))240 1439 y Fn(returns)g(a)f(non-zero)i
1616     (in)o(t)f(if)g Fo(s)g Fn(has)g(data)f(w)o(aiting)h(to)g(b)q(e)g(read)g(from)f
1617     (the)h(comm)o(unication)h(c)o(hannel.)240 1501 y(If)h Fo(wp_sec)g(>=)h(0)p
1618     Fn(,)e(it)g(w)o(aits)g(for)g Fo(wp_sec)h(10^6)h(+)g(wp_usec)d
1619     Fn(microseconds)i(b)q(efore)f(returning)h(0)f(in)240 1563 y(case)j(there)h
1620     (are)f(no)h(data)e(w)o(aiting)i(to)f(b)q(e)h(read.)24 b(If)16
1621     b Fo(wp_sec)f(<)g(0)p Fn(,)h(then)h(it)g(w)o(aits)e(un)o(til)j(a)e(datum)240
1622     1625 y(arriv)o(es)f(at)g(the)g(comm)o(unication)h(c)o(hannel.)21
1623     b Fo(wp_usec)14 b Fn(defaults)i(to)e(0.)360 1700 y Fi(Please)19
1624     b(Note)s Fn(:)25 b(The)18 b(data)f(w)o(aiting)i(in)f Fo(sockbuf)p
1625     Fn('s)f(o)o(wn)h(bu\013er)g(is)g(di\013eren)o(t)h(from)360
1626     1750 y(the)c(data)g(w)o(aiting)g(in)h(the)f(comm)o(unication)h(c)o(hannel.)0
1627     1824 y Fo(s.is_writeready\(wp_sec,)c(wp_usec\))240 1899 y Fn(returns)19
1628     b(a)h(non-zero)f(in)o(t)h(if)g(data)f(can)h(b)q(e)g(written)f(on)o(to)g(the)g
1629     (comm)o(unication)i(c)o(hannel)f(of)g Fo(s)p Fn(.)240 1961
1630     y(If)f Fo(wp_sec)14 b(>=)h(0)p Fn(,)20 b(it)f(w)o(aits)f(for)g
1631     Fo(wp_sec)d(10^6)f(+)h(wp_usec)j Fn(microseconds)i(b)q(efore)f(returning)g(0)
1632     240 2023 y(in)e(case)g(no)g(data)f(can)g(b)q(e)i(written.)24
1633     b(If)17 b Fo(wp_sec)d(<)h(0)p Fn(,)i(then)g(it)g(w)o(aits)f(un)o(til)i(the)e
1634     (comm)o(unication)240 2086 y(c)o(hannel)g(is)g(ready)f(to)g(accept)g(data.)k
1635     Fo(wp_usec)c Fn(defaults)g(to)g(0.)360 2160 y Fi(Please)f(Note)s
1636     Fn(:)k(The)c(bu\013er)g(of)f(the)h Fo(sockbuf)e Fn(class)i(is)g(di\013eren)o
1637     (t)g(from)f(the)h(bu\013er)f(of)360 2210 y(the)i(comm)o(unication)h(c)o
1638     (hannel)h(bu\013er.)0 2284 y Fo(s.is_exceptionpending\(wp_s)o(ec,)12
1639     b(wp_usec\))240 2359 y Fn(returns)19 b(non-zero)g(in)o(t)f(if)i
1640     Fo(s)e Fn(has)h(an)o(y)f(exception)i(ev)o(en)o(ts)e(p)q(ending.)32
1641     b(If)19 b Fo(wp_sec)c(>=)g(0)p Fn(,)k(it)f(w)o(aits)240 2421
1642     y(for)g Fo(wp_sec)c(10^6)h(+)g(wp_usec)j Fn(microseconds)h(b)q(efore)g
1643     (returning)h(0)e(in)i(case)e Fo(s)h Fn(do)q(es)g(not)f(ha)o(v)o(e)240
1644     2483 y(an)o(y)f(exception)h(ev)o(en)o(ts)f(p)q(ending.)27 b(If)17
1645     b Fo(wp_sec)d(<)h(0)p Fn(,)i(then)h(it)f(w)o(aits)f(un)o(til)j(an)e(exp)q
1646     (ception)h(ev)o(en)o(t)240 2546 y(o)q(ccurs.)i Fo(wp_usec)14
1647     b Fn(defaults)i(to)f(0.)360 2620 y Fi(Please)26 b(Note)s Fn(:)40
1648     b(The)26 b(exceptions)h(that)e Fo(sockbuf::is_exceptionpen)o(ding)d
1649     Fn(is)360 2670 y(lo)q(oking)16 b(for)f(are)g(di\013eren)o(t)g(from)f(the)i(C)
1650     p Fo(++)e Fn(exceptions.)p eop
1651     %%Page: 8 10
1652     bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1408
1653     b(8)0 183 y Fo(s.flush_output\(\))240 259 y Fn(\015ushes)20
1654     b(the)f(output)g(bu\013er)g(and)g(returns)g(the)g(n)o(um)o(b)q(er)g(of)g(c)o
1655     (hars)f(\015ushed.)33 b(In)19 b(case)g(of)g(error,)240 321
1656     y(return)g(EOF.)h Fo(sockbuf::flush_output)c Fn(is)k(a)f(protected)h(mem)o(b)
1657     q(er)f(function)i(and)f(it)f(is)h(not)240 384 y(a)o(v)m(ailable)d(for)d
1658     (general)i(public.)0 459 y Fo(s.doallocate\(\))240 535 y Fn(allo)q(cates)i
1659     (free)g(store)f(for)g(read)g(and)h(write)g(bu\013ers)f(of)h
1660     Fo(s)f Fn(and)h(returns)f(1)h(if)g(allo)q(cation)g(is)h(done)240
1661     598 y(and)13 b(returns)g(0)g(if)h(there)f(is)h(no)f(need.)20
1662     b Fo(sockbuf::doallocate)10 b Fn(is)k(a)f(protected)g(virtual)h(mem)o(b)q(er)
1663     240 660 y(function)i(and)f(it)h(is)g(not)e(a)o(v)m(ailable)j(for)e(general)h
1664     (public.)0 736 y Fo(s.underflow\(\))240 811 y Fn(returns)21
1665     b(the)f(unread)i(c)o(har)e(in)i(the)e(bu\013er)h(as)g(an)f(unsigned)i(c)o
1666     (har)f(if)g(there)g(is)g(an)o(y)l(.)36 b(Else)22 b(re-)240
1667     874 y(turns)e(EOF)f(if)h Fo(s)g Fn(cannot)g(allo)q(cate)g(space)g(for)f(the)h
1668     (bu\013ers,)g(cannot)g(read)g(or)f(p)q(eer)h(is)g(closed.)240
1669     936 y Fo(sockbuf::underflow)11 b Fn(is)j(a)f(protected)g(virtual)h(mem)o(b)q
1670     (er)f(function)i(and)e(it)h(is)g(not)f(a)o(v)m(ailable)i(for)240
1671     998 y(general)h(public.)0 1074 y Fo(s.overflow\(c\))240 1150
1672     y Fn(if)23 b Fo(c==EOF)p Fn(,)f(call)h(and)g(return)f(the)g(result)g(of)g
1673     Fo(flush_output\(\))p Fn(,)g(else)h(if)f Fo(c=='\\n')f Fn(and)i
1674     Fo(s)e Fn(is)240 1212 y(linebu\013ered,)c(call)g Fo(flush_output\(\))c
1675     Fn(and)j(return)g Fo(c)f Fn(unless)i Fo(flush_output\(\))c
1676     Fn(returns)i(EOF,)240 1274 y(in)g(whic)o(h)g(case)f(return)g(EOF.)f(In)i(an)o
1677     (y)e(other)h(case,)g(insert)g(c)o(har)g Fo(c)g Fn(in)o(to)g(the)g(bu\013er)g
1678     (and)g(return)g Fo(c)240 1337 y Fn(as)h(an)h(unsigned)g(c)o(har.)21
1679     b Fo(sockbuf::overflow)13 b Fn(is)j(a)f(protected)h(mem)o(b)q(er)f(virtual)h
1680     (function)h(and)240 1399 y(it)e(is)h(not)f(a)o(v)m(ailable)i(for)d(general)i
1681     (public.)360 1475 y Fi(No)q(de:)k Fn(linebu\013ered)14 b(mo)q(de)f(do)q(es)g
1682     (not)f(w)o(ork)g(with)h(A)l(T&T)g(IOStream)g(library)l(.)20
1683     b(Use)360 1525 y(explicit)d(\015ushing)g(to)d(\015ush)i Fo(sockbuf)p
1684     Fn(.)0 1600 y Fo(s.sync\(\))48 b Fn(calls)22 b Fo(flush_output\(\))d
1685     Fn(and)i(returns)f(the)h(result.)38 b(Useful)21 b(if)h(the)f(user)g(needs)g
1686     (to)f(\015ush)i(the)240 1663 y(output)15 b(without)g(writing)h(newline)h(c)o
1687     (har)e(in)o(to)g(the)g(write)h(bu\013er.)0 1739 y Fo(s.xsputn\(buf,)d
1688     (bufsz\))240 1814 y Fn(write)h Fo(bufsz)f Fn(c)o(hars)g(in)o(to)h(the)g
1689     (bu\013er)g(and)g(returns)g(the)g(n)o(um)o(b)q(er)g(of)f(c)o(hars)h
1690     (successfully)h(written.)240 1877 y(Output)h(is)f(\015ushed)i(if)e(an)o(y)g
1691     (c)o(har)g(in)h Fo(buf[0..bufsz-1])d Fn(is)j Fo('\\n')p Fn(.)0
1692     1952 y Fo(s.recvtimeout\(wp\))240 2028 y Fn(sets)f(the)g(recv)h(timeout)f(to)
1693     f Fo(wp)h Fn(seconds.)20 b(If)c Fo(wp)f Fn(is)h(-1,)e(it)i(is)f(a)g(blo)q(c)o
1694     (k)h(and)g(if)f Fo(wp)g Fn(is)h(0,)e(it)i(is)f(a)g(p)q(oll.)240
1695     2104 y(It)f(a\013ects)f(all)j(read)e(functions.)20 b(If)14
1696     b(the)g(so)q(c)o(k)o(et)g(is)h(not)e(read)h(ready)g(within)i
1697     Fo(wp)d Fn(seconds,)i(the)f(read)240 2166 y(call)j(will)g(return)f(0.)21
1698     b(It)15 b(also)h(a\013ects)f Fo(sockbuf::underflow)p Fn(.)k
1699     Fo(sockbuf::underflow)13 b Fn(will)k(not)240 2229 y(set)e(the)g
1700     Fo(_S_EOF_SEEN)f Fn(\015ag)h(if)g(it)h(is)g(returning)f(EOF)g(b)q(ecause)i
1701     (of)d(timeout.)240 2304 y Fo(sockbuf::recvtimeout)e Fn(returns)j(the)h(old)g
1702     (recv)f(timeout)g(v)m(alue.)0 2380 y Fo(s.sendtimeout\(wp\))240
1703     2456 y Fn(sets)g(the)g(send)g(timeout)g(to)g Fo(wp)f Fn(seconds.)20
1704     b(If)c Fo(wp)e Fn(is)i(-1,)e(it)i(is)f(a)g(blo)q(c)o(k)g(and)h(if)f
1705     Fo(wp)g Fn(is)g(0,)g(it)g(is)g(a)g(p)q(oll.)240 2532 y(It)j(a\013ects)g(all)h
1706     (write)g(functions.)30 b(If)18 b(the)h(so)q(c)o(k)o(et)f(is)g(not)g(write)h
1707     (ready)f(within)i Fo(wp)e Fn(seconds,)h(the)240 2594 y(write)c(call)i(will)f
1708     (return)g(0.)240 2670 y Fo(sockbuf::sendtimeout)c Fn(returns)j(the)h(old)g
1709     (send)f(timeout)h(v)m(alue.)p eop
1710     %%Page: 9 11
1711     bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1408
1712     b(9)0 183 y Fm(2.4)33 b(Establishing)16 b(connections)62 320
1713     y Fn(A)11 b(name)g(m)o(ust)g(b)q(e)g(b)q(ound)h(to)f(a)f Fo(sockbuf)g
1714     Fn(if)i(pro)q(cesses)f(w)o(an)o(t)f(to)g(refer)h(to)f(it)i(and)f(use)g(it)g
1715     (for)g(comm)o(unication.)0 382 y(Names)i(m)o(ust)g(b)q(e)i(unique.)20
1716     b(A)14 b Fi(unix)k Fn(name)13 b(is)h(a)g(3-tuple,)g Fo(<)p
1717     Fi(proto)q(col,)f(lo)q(cal)i(path,)f(p)q(eer)g(path)p Fo(>)p
1718     Fn(.)19 b(An)14 b Fi(inet)h Fn(name)0 445 y(is)k(a)g(5-tuple,)h
1719     Fo(<)p Fi(proto)q(col,)f(lo)q(cal)g(addr,)h(lo)q(cal)f(p)q(ort,)g(p)q(eer)h
1720     (addr,)f(p)q(eer)g(p)q(ort)p Fo(>)p Fn(.)30 b Fo(sockbuf::bind)17
1721     b Fn(is)i(used)h(to)0 507 y(sp)q(ecify)h(the)g(lo)q(cal)g(half)f(of)g(the)g
1722     (name|)p Fo(<)p Fi(lo)q(cal)i(path)p Fo(>)d Fn(for)h Fi(unix)k
1723     Fn(and)c Fo(<)p Fi(lo)q(cal)h(addr,)g(lo)q(cal)h(p)q(ort)p
1724     Fo(>)d Fn(for)h Fi(inet)p Fn(.)0 569 y Fo(sockbuf::connect)d
1725     Fn(and)i Fo(sockbuf::accept)e Fn(are)i(used)h(to)f(sp)q(ecify)h(the)f(p)q
1726     (eer)h(half)g(of)f(the)g(name|)p Fo(<)p Fi(p)q(eer)0 632 y(path)p
1727     Fo(>)c Fn(for)f Fi(unix)20 b Fn(and)15 b Fo(<)p Fi(p)q(eer)h(addr,)f(p)q(eer)
1728     h(p)q(ort)p Fo(>)e Fn(for)h Fi(inet)p Fn(.)62 769 y(In)h(what)f(follo)o(ws,)
1729     25 906 y Fl(\000)30 b Fo(s)15 b Fn(and)g Fo(so)g Fn(are)g Fo(sockbuf)f
1730     Fn(ob)s(jects)25 978 y Fl(\000)30 b Fo(sa)15 b Fn(is)h(a)e
1731     Fo(sockAddr)h Fn(ob)s(ject)25 1051 y Fl(\000)30 b Fo(nc)15
1732     b Fn(is)h(an)f(in)o(teger)g(denoting)h(the)f(n)o(um)o(b)q(er)h(of)f
1733     (connections)h(to)e(allo)o(w)0 1188 y Fo(s.bind\(sa\))240 1260
1734     y Fn(binds)i Fo(sockAddr)f(sa)f Fn(as)h(the)g(lo)q(cal)i(half)e(of)g(the)h
1735     (name)f(for)f Fo(s)p Fn(.)0 1333 y Fo(s.connect\(sa\))240 1405
1736     y(sockbuf::connect)e Fn(uses)j Fo(sa)g Fn(to)f(pro)o(vide)h(the)g(p)q(eer)g
1737     (half)g(of)g(the)g(name)f(for)g Fo(s)h Fn(and)g(to)f(establish)240
1738     1467 y(the)23 b(connection)h(itself.)43 b Fo(sockbuf::connect)20
1739     b Fn(also)j(pro)o(vides)g(the)g(lo)q(cal)h(half)f(of)f(the)h(name)240
1740     1530 y(automatically)d(and)g(hence,)i(the)d(user)h(should)h(not)e(use)h
1741     Fo(sockbuf::bind)e Fn(to)h(bind)i(an)o(y)f(lo)q(cal)240 1592
1742     y(half)c(of)e(the)i(name.)0 1664 y Fo(s.listen\(nc\))240 1737
1743     y Fn(mak)o(es)c Fo(s)g Fn(ready)g(to)g(accept)g(connections.)20
1744     b Fo(nc)12 b Fn(sp)q(eci\014es)j(the)d(maxim)o(um)g(n)o(um)o(b)q(er)h(of)f
1745     (outstanding)240 1799 y(connections)22 b(that)e(ma)o(y)h(b)q(e)g(queued)i
1746     (and)e(m)o(ust)f(b)q(e)i(at)e(least)i(1)e(and)i(less)f(than)g(or)g(equal)h
1747     (to)240 1861 y Fo(sockbuf::somaxconn)13 b Fn(whic)o(h)j(is)f(usually)i(5)e
1748     (on)g(most)f(systems.)0 1934 y Fo(sockbuf)g(so)h(=)g(s.accept\(sa\))0
1749     1996 y(sockbuf)f(so)h(=)g(s.accept\(\))240 2069 y Fn(accepts)e(connections)h
1750     (and)g(returns)f(the)g(p)q(eer)h(address)f(in)h Fo(sa)p Fn(.)19
1751     b Fo(s)13 b Fn(m)o(ust)g(b)q(e)g(a)g(listening)i Fo(sockbuf)p
1752     Fn(.)240 2131 y(See)h Fo(sockbuf::listen)d Fn(ab)q(o)o(v)o(e.)0
1753     2346 y Fm(2.5)33 b(Getting)15 b(and)h(Setting)g(So)r(c)n(k)n(et)f(Options)62
1754     2483 y Fn(So)q(c)o(k)o(et)k(options)g(are)f(used)h(to)g(con)o(trol)f(a)g(so)q
1755     (c)o(k)o(et)h(comm)o(unication.)31 b(New)19 b(options)g(can)g(b)q(e)g(set)f
1756     (and)h(old)0 2545 y(v)m(alue)c(of)e(the)h(options)f(can)h(b)q(e)g(retriv)o
1757     (ed)g(at)f(the)h(proto)q(col)g(lev)o(el)g(or)g(at)e(the)i(so)q(c)o(k)o(et)f
1758     (lev)o(el)i(b)o(y)f(using)g Fo(setopt)f Fn(and)0 2608 y Fo(getopt)j
1759     Fn(mem)o(b)q(er)g(functions.)25 b(In)17 b(addition,)g(y)o(ou)g(can)f(also)h
1760     (use)f(sp)q(ecial)j(mem)o(b)q(er)d(functions)i(to)d(get)i(and)f(set)0
1761     2670 y(sp)q(eci\014c)h(options.)p eop
1762     %%Page: 10 12
1763     bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1386
1764     b(10)62 183 y(In)16 b(what)f(follo)o(ws,)25 323 y Fl(\000)30
1765     b Fo(s)15 b Fn(is)h(a)f Fo(sockbuf)f Fn(ob)s(ject)25 401 y
1766     Fl(\000)30 b Fo(opval)14 b Fn(is)i(an)f(in)o(teger)h(and)f(denotes)g(the)h
1767     (option)f(v)m(alue)25 479 y Fl(\000)30 b Fo(op)15 b Fn(is)h(of)e(t)o(yp)q(e)i
1768     Fo(sockbuf::option)d Fn(and)i(m)o(ust)g(b)q(e)h(one)f(of)127
1769     556 y Fl(\017)30 b Fo(sockbuf::so_error)13 b Fn(used)j(to)e(retriev)o(e)i
1770     (and)f(clear)h(error)e(status)127 634 y Fl(\017)30 b Fo(sockbuf::so_type)13
1771     b Fn(used)j(to)e(retriev)o(e)i(t)o(yp)q(e)f(of)g(the)g(so)q(c)o(k)o(et)127
1772     712 y Fl(\017)30 b Fo(sockbuf::so_debug)13 b Fn(is)j(used)f(to)g(sp)q(ecify)h
1773     (recording)g(of)f(debugging)h(information)127 789 y Fl(\017)30
1774     b Fo(sockbuf::so_reuseaddr)12 b Fn(is)k(used)g(to)e(sp)q(ecify)j(the)e(reuse)
1775     h(of)e(lo)q(cal)j(address)127 867 y Fl(\017)30 b Fo(sockbuf::so_keepalive)12
1776     b Fn(is)k(used)g(to)e(sp)q(ecify)j(whether)e(to)g(k)o(eep)g(connections)i
1777     (aliv)o(e)f(or)e(not)127 945 y Fl(\017)30 b Fo(sockbuf::so_dontroute)12
1778     b Fn(is)k(used)g(to)e(sp)q(ecify)j(whether)e(to)g(route)g(messages)f(or)h
1779     (not)127 1022 y Fl(\017)30 b Fo(sockbuf::so_broadcast)13 b
1780     Fn(is)k(used)g(to)e(sp)q(ecify)i(whether)g(to)e(broadcast)h
1781     Fo(sockbuf::sock_dgram)180 1084 y Fn(messages)f(or)f(not)127
1782     1162 y Fl(\017)30 b Fo(sockbuf::so_oobinline)12 b Fn(is)k(used)g(to)e(sp)q
1783     (ecify)j(whether)e(to)g(inline)j Fi(out-of-band)f Fn(data)d(or)h(not.)127
1784     1240 y Fl(\017)30 b Fo(sockbuf::so_linger)13 b Fn(is)i(used)h(to)f(sp)q
1785     (ecify)h(for)f(ho)o(w)g(long)g(to)g(linger)h(b)q(efore)f(sh)o(utting)h(do)o
1786     (wn)127 1317 y Fl(\017)30 b Fo(sockbuf::so_sndbuf)13 b Fn(is)i(used)h(to)f
1787     (retriev)o(e)g(and)g(to)g(set)g(the)g(size)h(of)f(the)g(send)g(bu\013er)h
1788     (\(comm)o(uni-)180 1380 y(cation)f(c)o(hannel)i(bu\013er)e(not)g
1789     Fo(sockbuf)p Fn('s)f(in)o(ternal)i(bu\013er\))127 1457 y Fl(\017)30
1790     b Fo(sockbuf::so_rcvbuf)13 b Fn(is)j(used)g(to)f(retriev)o(e)h(and)g(to)f
1791     (set)g(the)h(size)g(of)g(the)f(recv)h(bu\013er)g(\(comm)o(uni-)180
1792     1520 y(cation)f(c)o(hannel)i(bu\013er)e(not)g Fo(sockbuf)p
1793     Fn('s)f(in)o(ternal)i(bu\013er\))0 1660 y Fo(s.getopt\(op,)e(&opval,)g
1794     (sizeof\(opval\),)f(oplevel\))240 1737 y Fn(gets)f(the)h(option)g(v)m(alue)h
1795     (of)f(the)g Fo(sockbuf::option)e(op)h Fn(at)g(the)h(option)g(lev)o(el)i
1796     Fo(oplevel)c Fn(in)j Fo(opval)p Fn(.)240 1800 y(It)j(returns)f(the)h(actual)g
1797     (size)h(of)e(the)h(bu\013er)g Fo(opval)f Fn(used.)25 b(The)17
1798     b(default)g(v)m(alue)h(of)e(the)h Fo(oplevel)240 1862 y Fn(is)f
1799     Fo(sockbuf::sol_socket)p Fn(.)0 1940 y Fo(s.setopt\(op,)e(&opval,)g
1800     (sizeof\(opval\),)f(oplevel\))240 2017 y Fn(sets)g(the)g(option)g(v)m(alue)h
1801     (of)f(the)g Fo(sockbuf::option)e(op)i Fn(at)f(the)h(option)g(lev)o(el)i
1802     Fo(oplevel)d Fn(to)g Fo(opval)p Fn(.)240 2079 y(The)j(default)h(v)m(alue)h
1803     (of)d(the)i Fo(oplevel)e Fn(is)i Fo(sockbuf::sol_socket)p Fn(.)0
1804     2157 y Fo(s.gettype\(\))240 2235 y Fn(gets)f(the)g(so)q(c)o(k)o(et)g(t)o(yp)q
1805     (e)g(of)g Fo(s)p Fn(.)k(The)d(return)f(t)o(yp)q(e)g(is)h Fo(sockbuf::type)p
1806     Fn(.)0 2312 y Fo(s.clearerror\(\))240 2390 y Fn(gets)f(and)g(clears)h(the)f
1807     (error)f(status)h(of)g(the)g(so)q(c)o(k)o(et.)0 2468 y Fo(s.debug\(opval\))
1808     240 2545 y Fn(if)20 b Fo(opval)f Fn(is)h(not)f(-1,)h(set)f(the)g
1809     Fo(sockbuf::so_debug)e Fn(option)j(v)m(alue)h(to)d Fo(opval)p
1810     Fn(.)32 b(In)20 b(an)o(y)f(case,)240 2608 y(return)14 b(the)h(old)g(option)g
1811     (v)m(alue)g(of)f Fo(sockbuf::so_debug)e Fn(option.)20 b(The)15
1812     b(default)g(v)m(alue)h(of)e Fo(opval)240 2670 y Fn(is)i(-1.)p
1813     eop
1814     %%Page: 11 13
1815     bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1386
1816     b(11)0 183 y Fo(s.reuseaddr\(opval\))240 255 y Fn(if)14 b Fo(opval)e
1817     Fn(is)i(not)f(-1,)g(set)f(the)i Fo(sockbuf::so_reuseaddr)c
1818     Fn(option)j(v)m(alue)i(to)d Fo(opval)p Fn(.)19 b(In)13 b(an)o(y)g(case,)240
1819     317 y(return)k(the)h(old)g(option)g(v)m(alue)h(of)e Fo(sockbuf::so_reuseaddr)
1820     e Fn(option.)27 b(The)17 b(default)i(v)m(alue)f(of)240 380
1821     y Fo(opval)c Fn(is)i(-1.)0 452 y Fo(s.dontroute\(opval\))240
1822     523 y Fn(if)e Fo(opval)e Fn(is)i(not)f(-1,)g(set)f(the)i Fo
1823     (sockbuf::so_dontroute)c Fn(option)j(v)m(alue)i(to)d Fo(opval)p
1824     Fn(.)19 b(In)13 b(an)o(y)g(case,)240 586 y(return)k(the)h(old)g(option)g(v)m
1825     (alue)h(of)e Fo(sockbuf::so_dontroute)e Fn(option.)27 b(The)17
1826     b(default)i(v)m(alue)f(of)240 648 y Fo(opval)c Fn(is)i(-1.)0
1827     720 y Fo(s.oobinline\(opval\))240 792 y Fn(if)e Fo(opval)e
1828     Fn(is)i(not)f(-1,)g(set)f(the)i Fo(sockbuf::so_oobinline)c
1829     Fn(option)j(v)m(alue)i(to)d Fo(opval)p Fn(.)19 b(In)13 b(an)o(y)g(case,)240
1830     854 y(return)k(the)h(old)g(option)g(v)m(alue)h(of)e Fo(sockbuf::so_oobinline)
1831     e Fn(option.)27 b(The)17 b(default)i(v)m(alue)f(of)240 916
1832     y Fo(opval)c Fn(is)i(-1.)0 988 y Fo(s.broadcast\(opval\))240
1833     1060 y Fn(if)e Fo(opval)e Fn(is)i(not)f(-1,)g(set)f(the)i Fo
1834     (sockbuf::so_broadcast)c Fn(option)j(v)m(alue)i(to)d Fo(opval)p
1835     Fn(.)19 b(In)13 b(an)o(y)g(case,)240 1122 y(return)k(the)h(old)g(option)g(v)m
1836     (alue)h(of)e Fo(sockbuf::so_broadcast)e Fn(option.)27 b(The)17
1837     b(default)i(v)m(alue)f(of)240 1185 y Fo(opval)c Fn(is)i(-1.)0
1838     1257 y Fo(s.keepalive\(opval\))240 1328 y Fn(if)e Fo(opval)e
1839     Fn(is)i(not)f(-1,)g(set)f(the)i Fo(sockbuf::so_keepalive)c
1840     Fn(option)j(v)m(alue)i(to)d Fo(opval)p Fn(.)19 b(In)13 b(an)o(y)g(case,)240
1841     1391 y(return)k(the)h(old)g(option)g(v)m(alue)h(of)e Fo
1842     (sockbuf::so_keepalive)e Fn(option.)27 b(The)17 b(default)i(v)m(alue)f(of)240
1843     1453 y Fo(opval)c Fn(is)i(-1.)0 1525 y Fo(s.sendbufsz\(opval\))240
1844     1597 y Fn(if)i Fo(opval)e Fn(is)i(not)f(-1,)g(set)g(the)g(new)h(send)g
1845     (bu\013er)f(size)h(to)f Fo(opval)p Fn(.)25 b(In)18 b(an)o(y)f(case,)g(return)
1846     g(the)g(old)240 1659 y(bu\013er)e(size)h(of)f(the)g(send)h(bu\013er.)k(The)15
1847     b(default)h(v)m(alue)h(of)d Fo(opval)h Fn(is)h(-1.)0 1731 y
1848     Fo(s.recvbufsz\(opval\))240 1803 y Fn(if)i Fo(opval)f Fn(is)h(not)f(-1,)h
1849     (set)f(the)h(new)f(recv)h(bu\013er)g(size)g(to)f Fo(opval)p
1850     Fn(.)26 b(In)18 b(an)o(y)g(case,)f(return)h(the)f(old)240 1865
1851     y(bu\013er)e(size)h(of)f(the)g(recv)h(bu\013er.)k(The)15 b(default)h(v)m
1852     (alue)g(of)f Fo(opval)f Fn(is)i(-1.)0 1937 y Fo(s.linger\(tim\))240
1853     2009 y Fn(if)k Fo(tim)f Fn(is)h(p)q(ositiv)o(e,)h(set)f(the)f(linger)i(time)f
1854     (to)f(tim)g(seconds.)34 b(If)19 b Fo(tim)h Fn(is)g(0,)g(set)f(the)g(linger)i
1855     (o\013.)240 2071 y(In)c(an)o(y)g(case,)f(return)h(the)g(old)g(linger)h(time)f
1856     (if)g(it)g(w)o(as)f(set)g(earlier.)25 b(Otherwise)18 b(return)f(-1.)24
1857     b(The)240 2133 y(default)16 b(v)m(alue)g(of)f Fo(tim)g Fn(is)g(-1.)0
1858     2346 y Fm(2.6)33 b(Time)15 b(Outs)g(While)i(Reading)e(and)h(W)-6
1859     b(riting)62 2483 y Fn(Time)20 b(outs)f(are)g(v)o(ery)g(useful)i(in)f
1860     (handling)h(data)e(of)g(unkno)o(wn)g(sizes)h(and)g(formats)e(while)j(reading)
1861     f(and)0 2545 y(writing.)39 b(F)l(or)20 b(example,)k(ho)o(w)d(do)q(es)g(one)h
1862     (comm)o(unicate)f(with)h(a)f(so)q(c)o(k)o(et)g(that)f(sends)i(c)o(h)o(unks)g
1863     (of)f(data)f(of)0 2608 y(unkno)o(wn)11 b(size)h(and)f(format?)18
1864     b(If)11 b(only)h Fo(sockbuf::read)d Fn(is)i(used)h(without)f(time)g(out,)g
1865     (it)g(will)i(blo)q(c)o(k)e(inde\014nitely)l(.)0 2670 y(In)16
1866     b(suc)o(h)f(cases,)g(time)h(out)e(facilit)o(y)j(is)e(the)h(only)f(answ)o(er.)
1867     p eop
1868     %%Page: 12 14
1869     bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1386
1870     b(12)62 183 y(The)13 b(follo)o(wing)h(idiom)g(is)g(recommended.)20
1871     b(See)13 b(Chapter)g(15)f([Pitfalls],)i(page)e(48)h(for)f(a)h(complete)g
1872     (example.)215 320 y Fo(int)24 b(old_tmo)f(=)h(s.recvtimeout)e(\(2\))h(//)h
1873     (set)f(time)g(out)h(\(2)f(seconds)g(here\))215 370 y(for)h(\(;;\))f({)h(//)g
1874     (read)f(or)g(write)311 420 y(char)g(buf[256];)311 470 y(int)g(rval)h(=)f
1875     (s.read)g(\(buf,)h(256\);)311 519 y(if)f(\(rval)h(==)f(0)h(||)g(rval)f(==)g
1876     (EOF\))h(break;)311 569 y(//)f(process)g(buf)h(here)215 619
1877     y(})215 669 y(s.recvtimeout)f(\(old_tmo\);)f(//)i(reset)f(time)g(out)62
1878     881 y Fn(In)16 b(what)f(follo)o(ws,)25 1018 y Fl(\000)30 b
1879     Fo(s)15 b Fn(is)h(a)f Fo(sockbuf)f Fn(ob)s(ject)25 1092 y Fl(\000)30
1880     b Fo(wp)15 b Fn(is)h(w)o(aiting)f(p)q(erio)q(d)h(in)h(seconds)0
1881     1229 y Fo(s.recvtimeout\(wp\))240 1304 y Fn(sets)e(the)g(recv)h(timeout)f(to)
1882     f Fo(wp)h Fn(seconds.)20 b(If)c Fo(wp)f Fn(is)h(-1,)e(it)i(is)f(a)g(blo)q(c)o
1883     (k)h(and)g(if)f Fo(wp)g Fn(is)h(0,)e(it)i(is)f(a)g(p)q(oll.)240
1884     1379 y(It)f(a\013ects)f(all)j(read)e(functions.)20 b(If)14
1885     b(the)g(so)q(c)o(k)o(et)g(is)h(not)e(read)h(ready)g(within)i
1886     Fo(wp)d Fn(seconds,)i(the)f(read)240 1441 y(call)j(will)g(return)f(0.)21
1887     b(It)15 b(also)h(a\013ects)f Fo(sockbuf::underflow)p Fn(.)k
1888     Fo(sockbuf::underflow)13 b Fn(will)k(not)240 1503 y(set)e(the)g
1889     Fo(_S_EOF_SEEN)f Fn(\015ag)h(if)g(it)h(is)g(returning)f(EOF)g(b)q(ecause)i
1890     (of)d(timeout.)240 1578 y Fo(sockbuf::recvtimeout)e Fn(returns)j(the)h(old)g
1891     (recv)f(timeout)g(v)m(alue.)0 1653 y Fo(s.sendtimeout\(wp\))240
1892     1727 y Fn(sets)g(the)g(send)g(timeout)g(to)g Fo(wp)f Fn(seconds.)20
1893     b(If)c Fo(wp)e Fn(is)i(-1,)e(it)i(is)f(a)g(blo)q(c)o(k)g(and)h(if)f
1894     Fo(wp)g Fn(is)g(0,)g(it)g(is)g(a)g(p)q(oll.)240 1802 y(It)j(a\013ects)g(all)h
1895     (write)g(functions.)30 b(If)18 b(the)h(so)q(c)o(k)o(et)f(is)g(not)g(write)h
1896     (ready)f(within)i Fo(wp)e Fn(seconds,)h(the)240 1864 y(write)c(call)i(will)f
1897     (return)g(0.)240 1939 y Fo(sockbuf::sendtimeout)c Fn(returns)j(the)h(old)g
1898     (send)f(timeout)h(v)m(alue.)p eop
1899     %%Page: 13 15
1900     bop 0 -58 a Fn(Chapter)15 b(3:)k(so)q(c)o(kAddr)d(Class)1366
1901     b(13)0 183 y Fk(3)41 b(so)r(c)n(kAddr)14 b(Class)62 370 y Fn(Class)h
1902     Fo(sockAddr)f Fn(is)i(an)f(abstract)f(base)h(class)g(for)g(all)h(so)q(c)o(k)o
1903     (et)e(address)i(classes.)k(That)14 b(is,)i(domain)f(sp)q(eci\014c)0
1904     432 y(so)q(c)o(k)o(et)g(address)g(classes)h(are)e(all)j(deriv)o(ed)f(from)e
1905     Fo(sockAddr)g Fn(class.)120 569 y Fi(Note)s Fn(:)22 b Fo(sockAddr)15
1906     b Fn(is)i(not)f(sp)q(elled)j Fo(sockaddr)c Fn(in)j(order)e(to)g(prev)o(en)o
1907     (t)g(name)h(clash)g(with)g Fo(struct)120 619 y(sockaddr)d Fn(declared)i(in)h
1908     (`)p Fo(<sys/socket.h>)p Fn('.)62 831 y(Non-abstract)e(deriv)o(ed)h(classes)g
1909     (m)o(ust)e(ha)o(v)o(e)h(de\014nitions)i(for)d(the)i(follo)o(wing)g
1910     (functions.)0 968 y Fo(sockAddr::operator)d(void*)h(\(\))240
1911     1043 y Fn(should)i(simply)h(return)e Fo(this)p Fn(.)0 1117
1912     y Fo(sockAddr::size\(\))240 1192 y Fn(should)h(return)f Fo(sizeof\(*this\))p
1913     Fn(.)j(The)e(return)f(t)o(yp)q(e)g(is)h Fo(int)p Fn(.)0 1267
1914     y Fo(sockAddr::family\(\))240 1341 y Fn(should)g(return)f(address)f(family)i
1915     (\(domain)f(name\))f(of)h(the)g(so)q(c)o(k)o(et)f(address.)20
1916     b(The)15 b(return)g(t)o(yp)q(e)f(is)240 1404 y Fo(int)p eop
1917     %%Page: 14 16
1918     bop 0 -58 a Fn(Chapter)15 b(4:)k(so)q(c)o(kinetbuf)e(Class)1328
1919     b(14)0 183 y Fk(4)41 b(so)r(c)n(kinetbuf)13 b(Class)62 377
1920     y Fo(sockinetbuf)k Fn(class)h(is)h(deriv)o(ed)g(from)e Fo(sockbuf)g
1921     Fn(class)h(and)g(inherits)i(most)d(of)g(the)h(public)j(functions)d(of)0
1922     439 y Fo(sockbuf)p Fn(.)i(See)c(Chapter)f(2)g([so)q(c)o(kbuf)g(Class],)g
1923     (page)g(4,)g(for)g(more)g(information)g(on)h Fo(sockbuf)p Fn(.)j(In)d
1924     (addition,)h(it)0 502 y(pro)o(vides)d(metho)q(ds)h(for)e(getting)h
1925     Fo(sockinetaddr)e Fn(of)i(lo)q(cal)h(and)f(p)q(eer)h(connections.)20
1926     b(See)15 b(Chapter)f(5)f([so)q(c)o(kine-)0 564 y(taddr)i(Class],)f(page)h
1927     (19,)g(for)f(more)h(information)g(on)g Fo(sockinetaddr)p Fn(.)0
1928     801 y Fm(4.1)33 b(Metho)r(ds)62 940 y Fn(In)16 b(what)f(follo)o(ws,)25
1929     1078 y Fl(\000)30 b Fo(ty)15 b Fn(denotes)g(the)h(t)o(yp)q(e)f(of)g(the)g(so)
1930     q(c)o(k)o(et)f(connection)j(and)e(is)h(of)f(t)o(yp)q(e)g Fo(sockbuf::type)25
1931     1154 y Fl(\000)30 b Fo(proto)14 b Fn(denotes)i(the)f(proto)q(col)g(and)h(is)f
1932     (of)g(t)o(yp)q(e)g(in)o(t)25 1230 y Fl(\000)30 b Fo(si,)15
1933     b(ins)f Fn(are)h Fo(sockbuf)g Fn(ob)s(jects)f(and)i(are)e(in)i
1934     Fi(inet)h Fn(domain)25 1306 y Fl(\000)30 b Fo(adr)15 b Fn(denotes)g(an)g
1935     Fi(inet)i Fn(address)e(in)h(host)f(b)o(yte)g(order)g(and)h(is)f(of)g(t)o(yp)q
1936     (e)g(unsigned)i(long)25 1383 y Fl(\000)30 b Fo(serv)15 b Fn(denotes)g(a)g
1937     (service)h(lik)o(e)g Fo(")p Fn(nn)o(tp)p Fo(")f Fn(and)h(is)f(of)g(t)o(yp)q
1938     (e)g(c)o(har*)25 1459 y Fl(\000)30 b Fo(proto)14 b Fn(denotes)i(a)f(proto)q
1939     (col)g(lik)o(e)h Fo(")p Fn(tcp)p Fo(")f Fn(and)h(is)f(of)g(t)o(yp)q(e)g(c)o
1940     (har*)25 1535 y Fl(\000)30 b Fo(thostname)13 b Fn(is)i(of)e(t)o(yp)q(e)i(c)o
1941     (har*)e(and)i(denotes)f(the)g(name)h(of)e(a)h(host)g(lik)o(e)h
1942     Fo("kelvin.acc.virginia.edu")90 1597 y Fn(or)g Fo("128.143.24.31")p
1943     Fn(.)25 1673 y Fl(\000)30 b Fo(portno)14 b Fn(denotes)i(a)f(p)q(ort)f(in)j
1944     (host)d(b)o(yte)h(order)g(and)h(is)f(of)g(t)o(yp)q(e)g(in)o(t)0
1945     1812 y Fo(sockinetbuf)f(ins\(ty,)g(proto\))240 1888 y Fn(Constructs)21
1946     b(a)g Fo(sockinetbuf)e Fn(ob)s(ject)i Fo(ins)g Fn(whose)g(so)q(c)o(k)o(et)g
1947     (comm)o(unication)h(t)o(yp)q(e)g(is)g Fo(ty)f Fn(and)240 1950
1948     y(proto)q(col)15 b(is)h Fo(proto)p Fn(.)j Fo(proto)14 b Fn(defaults)i(to)f
1949     (0.)0 2026 y Fo(sockinetbuf)f(ins\(si\))240 2102 y Fn(Constructs)g(a)h
1950     Fo(sockinetbuf)f Fn(ob)s(ject)h Fo(ins)f Fn(whic)o(h)i(uses)g(the)f(same)g
1951     (so)q(c)o(k)o(et)g(as)f Fo(si)h Fn(uses.)0 2179 y Fo(ins)g(=)g(si)66
1952     b Fn(p)q(erforms)17 b(the)h(same)g(function)g(as)f Fo(sockbuf::operator=)p
1953     Fn(.)25 b(See)18 b(Chapter)g(2)f([so)q(c)o(kbuf)h(Class],)240
1954     2241 y(page)d(4,)g(for)f(more)h(details.)0 2317 y Fo(ins.open\(ty,)f(proto\))
1955     240 2393 y Fn(create)g(a)f(new)h Fo(sockinetbuf)e Fn(whose)i(t)o(yp)q(e)g
1956     (and)g(proto)q(col)f(are)h Fo(ty)f Fn(and)h Fo(proto)f Fn(resp)q(ectiv)o(ely)
1957     j(and)240 2455 y(assign)f(it)h(to)e Fo(ins)p Fn(.)0 2532 y
1958     Fo(sockinetaddr)g(sina)g(=)h(ins.localaddr\(\))240 2608 y Fn(returns)f(the)f
1959     (lo)q(cal)i Fi(inet)h Fn(address)e(of)f(the)h Fo(sockinetbuf)e
1960     Fn(ob)s(ject)h Fo(ins)p Fn(.)19 b(The)14 b(call)h(will)g(mak)o(e)e(sense)240
1961     2670 y(only)j(after)e(a)h(call)h(to)f(either)h Fo(sockbuf::bind)d
1962     Fn(or)i Fo(sockbuf::connect)p Fn(.)p eop
1963     %%Page: 15 17
1964     bop 0 -58 a Fn(Chapter)15 b(4:)k(so)q(c)o(kinetbuf)e(Class)1328
1965     b(15)0 183 y Fo(sockinetaddr)14 b(sina)g(=)h(ins.peeraddr\(\))240
1966     255 y Fn(returns)f(the)h(p)q(eer)g Fi(inet)h Fn(address)e(of)g(the)g
1967     Fo(sockinetbuf)f Fn(ob)s(ject)h Fo(ins)p Fn(.)19 b(The)14 b(call)i(will)g
1968     (mak)o(e)d(sense)240 318 y(only)j(after)e(a)h(call)h(to)f Fo
1969     (sockbuf::connect)p Fn(.)0 390 y Fo(const)f(char*)h(hn)g(=)g
1970     (ins.localhost\(\))240 462 y Fn(returns)j(the)f(lo)q(cal)i
1971     Fi(inet)g Fn(thostname)e(of)h(the)f Fo(sockinetbuf)g Fn(ob)s(ject)g
1972     Fo(ins)p Fn(.)26 b(The)18 b(call)h(will)g(mak)o(e)240 524 y(sense)d(only)f
1973     (after)g(a)g(call)h(to)f(either)h Fo(sockbuf::bind)d Fn(or)i
1974     Fo(sockbuf::connect)p Fn(.)0 596 y Fo(const)f(char*)h(hn)g(=)g
1975     (ins.peerhost\(\))240 668 y Fn(returns)j(the)g(p)q(eer)h Fi(inet)h
1976     Fn(thostname)d(of)h(the)g Fo(sockinetbuf)f Fn(ob)s(ject)h Fo(ins)p
1977     Fn(.)28 b(The)18 b(call)i(will)f(mak)o(e)240 730 y(sense)d(only)f(after)g(a)g
1978     (call)h(to)f Fo(sockbuf::connect)p Fn(.)0 802 y Fo(int)g(pn)g(=)g
1979     (ins.localport\(\))240 875 y Fn(returns)26 b(the)g(lo)q(cal)h
1980     Fi(inet)h Fn(p)q(ort)d(n)o(um)o(b)q(er)i(of)e(the)h Fo(sockinetbuf)f
1981     Fn(ob)s(ject)g Fo(ins)h Fn(in)h(host)e(b)o(yte)240 937 y(order.)59
1982     b(The)28 b(call)i(will)g(mak)o(e)e(sense)g(only)h(after)f(a)g(call)h(to)f
1983     (either)h Fo(sockbuf::bind)d Fn(or)240 999 y Fo(sockbuf::connect)p
1984     Fn(.)0 1071 y Fo(int)15 b(pn)g(=)g(ins.peerport\(\))240 1143
1985     y Fn(returns)j(the)g(p)q(eer)h Fi(inet)h Fn(p)q(ort)d(n)o(um)o(b)q(er)i(of)f
1986     (the)g Fo(sockinetbuf)e Fn(ob)s(ject)i Fo(ins)f Fn(in)i(lo)q(cal)h(host)d(b)o
1987     (yte)240 1205 y(order.)j(The)15 b(call)h(will)h(mak)o(e)e(sense)h(only)f
1988     (after)g(a)g(call)h(to)f Fo(sockbuf::connect)p Fn(.)0 1278
1989     y Fo(ins.bind)f(\(\))240 1350 y Fn(binds)i Fo(ins)f Fn(to)g(the)g(default)h
1990     (address)f Fi(INADDR)p 1087 1350 14 2 v 17 w(ANY)22 b Fn(and)15
1991     b(the)g(default)h(p)q(ort.)0 1422 y Fo(ins.bind)e(\(adr,)h(portno\))240
1992     1494 y Fn(binds)h Fo(ins)f Fn(to)g(the)g(address)g Fo(adr)g
1993     Fn(and)g(the)h(p)q(ort)f Fo(portno)p Fn(.)0 1566 y Fo(ins.bind)f(\(adr,)h
1994     (serv,)f(proto\))240 1638 y Fn(binds)j Fo(ins)e Fn(to)f(the)i(address,)f
1995     Fo(adr)g Fn(and)h(the)f(p)q(ort)g(corresp)q(onding)i(to)e(the)g(service)h
1996     Fo(serv)f Fn(and)h(the)240 1700 y(proto)q(col)f Fo(proto>)p
1997     Fn(.)0 1772 y Fo(ins.bind)f(\(thostname,)g(portno\))240 1844
1998     y Fn(binds)24 b Fo(ins)f Fn(to)f(the)h(address)g(corresp)q(onding)h(to)f(the)
1999     g(hostname)f Fo(thostname)g Fn(and)h(the)g(p)q(ort)240 1907
2000     y Fo(portno)p Fn(.)0 1979 y Fo(ins.bind)14 b(\(thostname,)g(serv,)g(proto\))
2001     240 2051 y Fn(binds)j Fo(ins)e Fn(to)f(the)i(address)f(corresp)q(onding)i(to)
2002     d(the)i(hostname)f Fo(thostname)f Fn(and)i(the)f(p)q(ort)g(cor-)240
2003     2113 y(resp)q(onding)h(to)f(the)g(service)h Fo(serv)f Fn(and)g(the)h(proto)q
2004     (col)f Fo(proto>)p Fn(.)0 2185 y Fo(ins.connect)f(\(adr,)g(portno\))240
2005     2257 y Fn(connects)i Fo(ins)e Fn(to)h(the)g(address)g Fo(adr)g
2006     Fn(and)h(the)f(p)q(ort)g Fo(portno)p Fn(.)0 2329 y Fo(ins.connect)f(\(adr,)g
2007     (serv,)h(proto\))240 2401 y Fn(connects)i Fo(ins)f Fn(to)g(the)g(address,)h
2008     Fo(adr)f Fn(and)h(the)f(p)q(ort)g(corresp)q(onding)i(to)e(the)g(service)i
2009     Fo(serv)e Fn(and)240 2464 y(the)f(proto)q(col)g Fo(proto>)p
2010     Fn(.)0 2536 y Fo(ins.connect)f(\(thostname,)f(portno\))240
2011     2608 y Fn(connects)18 b Fo(ins)f Fn(to)h(the)f(address)h(corresp)q(onding)h
2012     (to)e(the)h(hostname)f Fo(thostname)g Fn(and)g(the)h(p)q(ort)240
2013     2670 y Fo(portno)p Fn(.)p eop
2014     %%Page: 16 18
2015     bop 0 -58 a Fn(Chapter)15 b(4:)k(so)q(c)o(kinetbuf)e(Class)1328
2016     b(16)0 183 y Fo(ins.connect)14 b(\(thostname,)f(serv,)i(proto\))240
2017     259 y Fn(connects)j Fo(ins)f Fn(to)h(the)f(address)h(corresp)q(onding)h(to)e
2018     (the)h(hostname)f Fo(thostname)g Fn(and)g(the)h(p)q(ort)240
2019     321 y(corresp)q(onding)e(to)f(the)g(service)h Fo(serv)f Fn(and)g(the)g(proto)
2020     q(col)h Fo(proto>)p Fn(.)0 554 y Fm(4.2)33 b Fh(inet)15 b Fm(Datagram)f(So)r
2021     (c)n(k)n(ets)62 692 y Fn(The)i(follo)o(wing)h(t)o(w)o(o)d(programs)h
2022     (illustrates)i(ho)o(w)e(to)g(use)h Fo(sockinetbuf)e Fn(class)i(for)g
2023     (datagram)e(connection)0 754 y(in)20 b Fi(inet)g Fn(domain.)32
2024     b Fo(tdinread.cc)17 b Fn(also)i(sho)o(ws)f(ho)o(w)h(to)f(use)h
2025     Fo(isockinet)f Fn(class)h(and)g Fo(tdinwrite.cc)f Fn(sho)o(ws)0
2026     816 y(ho)o(w)d(to)f(use)i Fo(osockinet)e Fn(class.)0 1032 y
2027     Fg(tdinread.cc)120 1170 y Fo(//)24 b(reads)f(data)g(sent)g(by)h(tdinwrite.cc)
2028     120 1220 y(#include)f(<sockinet.h>)120 1320 y(int)g(main\(int)g(ac,)h(char**)
2029     f(av\))120 1370 y({)311 1419 y(isockinet)46 b(is)24 b
2030     (\(sockbuf::sock_dgram\);)311 1469 y(is->bind\(\);)311 1569
2031     y(cout)f(<<)h("localhost)e(=)i(")g(<<)f(so.localhost\(\))f(<<)i(endl)430
2032     1619 y(<<)g("localport)e(=)i(")g(<<)f(so.localport\(\))f(<<)i(endl;)311
2033     1718 y(char)214 b(buf[256];)311 1768 y(int)238 b(n;)311 1868
2034     y(is)23 b(>>)h(n;)311 1917 y(cout)f(<<)h(av[0])f(<<)h(":)f(";)311
2035     1967 y(while\(n--\))f({)502 2017 y(is)h(>>)h(buf;)502 2067
2036     y(cout)f(<<)h(buf)f(<<)h(')f(';)311 2117 y(})311 2167 y(cout)g(<<)h(endl;)311
2037     2266 y(return)f(0;)120 2316 y(})0 2532 y Fg(tdin)n(write.cc)120
2038     2670 y Fo(//)h(sends)f(data)g(to)h(tdinread.cc)p eop
2039     %%Page: 17 19
2040     bop 0 -58 a Fn(Chapter)15 b(4:)k(so)q(c)o(kinetbuf)e(Class)1328
2041     b(17)120 183 y Fo(#include)23 b(<sockinetbuf.h>)120 233 y(#include)g
2042     (<stdlib.h>)120 333 y(int)g(main\(int)g(ac,)h(char**)f(av\))120
2043     382 y({)311 432 y(if)g(\(ac)h(<)g(3\))f({)502 482 y(cerr)g(<<)h("USAGE:)f(")g
2044     (<<)h(av[0])f(<<)h(")f(thostname)g(port-number)f(")621 532
2045     y(<<)i("data)f(...)g(")h(<<)g(endl;)502 582 y(return)f(1;)311
2046     632 y(})311 731 y(osockinet)g(os)g(\(sockbuf::sock_dgram\);)311
2047     781 y(os->connect)f(\(av[1],)h(atoi\(av[2]\)\);)311 881 y(cout)g(<<)h
2048     ("local:)f(")g(<<)h(so.localport\(\))e(<<)i(')f(')740 930 y(<<)h
2049     (so.localhost\(\))e(<<)i(endl)430 980 y(<<)g("peer:)47 b(")23
2050     b(<<)h(so.peerport\(\))e(<<)i(')f(')740 1030 y(<<)h(so.peerhost\(\))e(<<)i
2051     (endl;)311 1130 y(os)f(<<)h(ac-3;)f(av)h(+=)f(3;)311 1180 y(while\(*av\))f
2052     (os)i(<<)g(*av++)f(<<)g(')h(';)311 1229 y(os)f(<<)h(endl;)311
2053     1329 y(return)f(0;)120 1379 y(})0 1664 y Fm(4.3)33 b Fh(inet)15
2054     b Fm(Stream)g(So)r(c)n(k)n(ets)62 1802 y Fn(The)j(follo)o(wing)g(t)o(w)o(o)e
2055     (programs)h(illustrates)h(the)g(use)f(of)g Fo(sockinetbuf)f
2056     Fn(class)i(for)f(stream)g(connection)h(in)0 1865 y Fi(inet)f
2057     Fn(domain.)j(It)15 b(also)h(sho)o(ws)e(ho)o(w)h(to)f(use)i
2058     Fo(iosockinet)e Fn(class.)0 2083 y Fg(tsinread.cc)120 2222
2059     y Fo(//)24 b(receives)e(strings)h(from)h(tsinwrite.cc)e(and)h(sends)g(the)h
2060     (strlen)120 2271 y(//)g(of)f(each)g(string)h(back)f(to)g(tsinwrite.cc)120
2061     2321 y(#include)190 b(<sockinet.h>)120 2421 y(int)23 b(main\(\))120
2062     2471 y({)311 2521 y(sockinetbuf)118 b(si\(sockbuf::sock_stream\))o(;)311
2063     2570 y(si.bind\(\);)311 2670 y(cout)23 b(<<)h(si.localhost\(\))e(<<)h(')h(')g
2064     (<<)f(si.localport\(\))f(<<)i(endl;)p eop
2065     %%Page: 18 20
2066     bop 0 -58 a Fn(Chapter)15 b(4:)k(so)q(c)o(kinetbuf)e(Class)1328
2067     b(18)311 183 y Fo(si.listen\(\);)311 283 y(iosockinet)22 b(s)i(=)g
2068     (si.accept\(\);)311 333 y(char)238 b(buf[1024];)311 432 y(while)23
2069     b(\(s)h(>>)f(buf\))h({)502 482 y(cout)f(<<)h(buf)f(<<)h(')f(';)502
2070     532 y(s)h(<<)f(::strlen\(buf\))f(<<)i(endl;)311 582 y(})311
2071     632 y(cout)f(<<)h(endl;)311 731 y(return)f(0;)120 781 y(})0
2072     989 y Fg(tsin)n(write.cc)120 1126 y Fo(//)h(sends)f(strings)g(to)g
2073     (tsinread.cc)g(and)g(gets)g(back)h(their)f(length)120 1175
2074     y(//)h(usage:)f(tsinwrite)f(hostname)h(portno)120 1225 y(//)191
2075     b(see)23 b(the)h(output)f(of)g(tsinread)g(for)g(what)h(hostname)e(and)i
2076     (portno)f(to)h(use)120 1325 y(#include)190 b(<sockinet.h>)120
2077     1375 y(#include)g(<stdlib.h>)120 1474 y(int)23 b(main\(int)g(ac,)h(char**)f
2078     (av\))120 1524 y({)311 1574 y(iosockinet)f(sio)i(\(sockbuf::sock_stream\);)
2079     311 1624 y(sio->connect)e(\(av[1],)h(atoi)g(\(av[2]\)\);)311
2080     1723 y(sio)g(<<)h("Hello!)f(This)g(is)h(a)f(test\\n")g(<<)h(flush;)311
2081     1823 y(//)f(terminate)g(the)h(while)f(loop)g(in)h(tsinread.cc)311
2082     1873 y(si.shutdown\(sockbuf::shut)o(_write\);)311 1972 y(int)f(len;)311
2083     2022 y(while)g(\(s)h(>>)f(len\))h(cout)f(<<)g(len)h(<<)g(')f(';)311
2084     2072 y(cout)g(<<)h(endl;)311 2172 y(return)f(0;)120 2221 y(})p
2085     eop
2086     %%Page: 19 21
2087     bop 0 -58 a Fn(Chapter)15 b(5:)k(so)q(c)o(kinetaddr)d(Class)1302
2088     b(19)0 183 y Fk(5)41 b(so)r(c)n(kinetaddr)14 b(Class)62 369
2089     y Fn(Class)c Fo(sockinetaddr)f Fn(is)i(deriv)o(ed)g(from)e
2090     Fo(sockAddr)g Fn(declared)i(in)g Fo(<sockstream.h>)e Fn(and)h(from)f
2091     Fo(sockaddr_in)0 432 y Fn(declared)17 b(in)f Fo(<netinet/in.h>)p
2092     Fn(.)i(Alw)o(a)o(ys)d(use)g(a)g Fo(sockinetaddr)f Fn(ob)s(ject)h(for)f(an)i
2093     (address)f(with)h Fi(inet)h Fn(domain)0 494 y(of)e(so)q(c)o(k)o(ets.)k(See)d
2094     (Section)g(2.4)e([Connection)i(Establishmen)o(t],)f(page)g(9.)62
2095     631 y(In)h(what)f(follo)o(ws,)25 768 y Fl(\000)30 b Fo(adr)15
2096     b Fn(denotes)g(an)g Fi(inet)i Fn(address)e(in)h(host)f(b)o(yte)g(order)g(and)
2097     h(is)f(of)g(t)o(yp)q(e)g(unsigned)i(long)25 842 y Fl(\000)30
2098     b Fo(serv)15 b Fn(denotes)g(a)g(service)h(lik)o(e)g Fo(")p
2099     Fn(nn)o(tp)p Fo(")f Fn(and)h(is)f(of)g(t)o(yp)q(e)g(c)o(har*)25
2100     917 y Fl(\000)30 b Fo(proto)14 b Fn(denotes)i(a)f(proto)q(col)g(lik)o(e)h
2101     Fo(")p Fn(tcp)p Fo(")f Fn(and)h(is)f(of)g(t)o(yp)q(e)g(c)o(har*)25
2102     991 y Fl(\000)30 b Fo(thostname)13 b Fn(is)i(of)e(t)o(yp)q(e)i(c)o(har*)e
2103     (and)i(denotes)f(the)g(name)h(of)e(a)h(host)g(lik)o(e)h Fo
2104     ("kelvin.acc.virginia.edu")90 1054 y Fn(or)g Fo("128.143.24.31")p
2105     Fn(.)25 1128 y Fl(\000)30 b Fo(portno)14 b Fn(denotes)i(a)f(p)q(ort)f(in)j
2106     (host)d(b)o(yte)h(order)g(and)h(is)f(of)g(t)o(yp)q(e)g(in)o(t)0
2107     1265 y Fo(sockinetaddr)f(sina)240 1340 y Fn(Constructs)g(a)h
2108     Fo(sockinetaddr)e Fn(ob)s(ject)h Fo(sina)g Fn(with)i(default)f(address)g
2109     Fi(INADDR)p 1664 1340 14 2 v 17 w(ANY)21 b Fn(and)15 b(de-)240
2110     1402 y(fault)g(p)q(ort)g(n)o(um)o(b)q(er)h(0.)0 1477 y Fo(sockinetaddr)e
2111     (sina\(adr,)f(portno\))240 1551 y Fn(Constructs)g(a)g Fo(sockinetaddr)f
2112     Fn(ob)s(ject)h Fo(sina)g Fn(setting)g(inet)i(address)e(to)g
2113     Fo(adr)g Fn(and)h(the)g(p)q(ort)f(n)o(um-)240 1613 y(b)q(er)j(to)e
2114     Fo(portno)p Fn(.)19 b Fo(portno)c Fn(defaults)g(to)g(0.)0 1688
2115     y Fo(sockinetaddr)f(sina\(adr,)f(serv,)i(proto\))240 1762 y
2116     Fn(Constructs)e(a)g Fo(sockinetaddr)f Fn(ob)s(ject)h Fo(sina)g
2117     Fn(setting)g(inet)i(address)e(to)g Fo(adr)g Fn(and)h(the)g(p)q(ort)f(n)o(um-)
2118     240 1825 y(b)q(er)k(corresp)q(onding)h(to)e(the)h(service)g
2119     Fo(serv)g Fn(and)g(the)f(proto)q(col)h Fo(proto)p Fn(.)24 b(The)17
2120     b(proto)q(col)f(defaults)240 1887 y(to)f Fo(")p Fn(tcp)p Fo(")p
2121     Fn(.)0 1961 y Fo(sockinetaddr)f(sina\(thostname,)f(portno\))240
2122     2036 y Fn(Constructs)29 b(a)g Fo(sockinetaddr)f Fn(ob)s(ject)g
2123     Fo(sina)h Fn(setting)h(inet)g(address)g(to)e(the)i(address)f(of)240
2124     2098 y Fo(thostname)14 b Fn(and)h(the)h(p)q(ort)e(n)o(um)o(b)q(er)i(to)f
2125     Fo(portno)p Fn(.)k Fo(portno)14 b Fn(defaults)i(to)e(0.)0 2173
2126     y Fo(sockinetaddr)g(sina\(thostname,)f(serv,)h(proto\))240
2127     2247 y Fn(Constructs)29 b(a)g Fo(sockinetaddr)f Fn(ob)s(ject)g
2128     Fo(sina)h Fn(setting)h(inet)g(address)g(to)e(the)i(address)f(of)240
2129     2310 y Fo(thostname)20 b Fn(and)i(the)f(p)q(ort)h(n)o(um)o(b)q(er)f(corresp)q
2130     (onding)i(to)e(the)g(service)i Fo(serv)d Fn(and)i(the)g(proto-)240
2131     2372 y(col)16 b Fo(proto)p Fn(.)j(The)c(proto)q(col)g(defaults)h(to)f
2132     Fo(")p Fn(tcp)p Fo(")p Fn(.)0 2446 y Fo(void*)f(a)h(=)g(sina)240
2133     2521 y Fn(returns)g(the)g(address)h(of)e(the)i Fo(sockaddr_in)d
2134     Fn(part)i(of)g Fo(sockinetaddr)e Fn(ob)s(ject)i Fo(sina)f Fn(as)h(v)o(oid*.)0
2135     2595 y Fo(int)g(sz)g(=)g(sina.size\(\))240 2670 y Fn(returns)g(the)g(sizeof)h
2136     Fo(sockaddr_in)e Fn(part)g(of)h Fo(sockinetaddr)f Fn(ob)s(ject)g
2137     Fo(sina)p Fn(.)p eop
2138     %%Page: 20 22
2139     bop 0 -58 a Fn(Chapter)15 b(5:)k(so)q(c)o(kinetaddr)d(Class)1302
2140     b(20)0 183 y Fo(int)15 b(af)g(=)g(sina.family\(\))240 258 y
2141     Fn(returns)g Fo(sockinetbuf::af_inet)d Fn(if)k(all)g(is)g(w)o(ell.)0
2142     333 y Fo(int)f(pn)g(=)g(sina.getport\(\))240 407 y Fn(returns)g(the)g(p)q
2143     (ort)g(n)o(um)o(b)q(er)h(of)f(the)g Fo(sockinetaddr)e Fn(ob)s(ject)i
2144     Fo(sina)g Fn(in)h(host)e(b)o(yte)h(order.)0 482 y Fo(const)f(char*)h(hn)g(=)g
2145     (getthostname\(\))240 557 y Fn(returns)g(the)g(host)g(name)g(of)g(the)g
2146     Fo(sockinetaddr)f Fn(ob)s(ject)g Fo(sina)p Fn(.)p eop
2147     %%Page: 21 23
2148     bop 0 -58 a Fn(Chapter)15 b(6:)k(so)q(c)o(kunixbuf)e(Class)1317
2149     b(21)0 183 y Fk(6)41 b(so)r(c)n(kunixbuf)12 b(Class)62 353
2150     y Fo(sockunixbuf)d Fn(class)i(is)g(deriv)o(ed)g(from)f Fo(sockbuf)g
2151     Fn(class)g(declared)i(in)f Fo(<sockstream.h>)e Fn(and)i(hence,)h(inherits)0
2152     416 y(most)j(of)g(the)h(public)i(mem)o(b)q(er)d(functions)i(of)e
2153     Fo(sockbuf)p Fn(.)20 b(See)d(Chapter)e(2)g([so)q(c)o(kbuf)h(Class],)f(page)g
2154     (4,)g(for)g(more)0 478 y(information)g(on)g Fo(sockbuf)p Fn(.)0
2155     686 y Fm(6.1)33 b(Metho)r(ds)62 823 y Fn(In)16 b(what)f(follo)o(ws,)25
2156     960 y Fl(\000)30 b Fo(ty)15 b Fn(denotes)g(the)h(so)q(c)o(k)o(et)e(t)o(yp)q
2157     (e)h(and)h(is)g(of)e(t)o(yp)q(e)i Fo(sockbuf::type)25 1030
2158     y Fl(\000)30 b Fo(proto)14 b Fn(denotes)i(the)f(proto)q(col)g(n)o(um)o(b)q
2159     (er)h(and)f(is)h(of)f(t)o(yp)q(e)g(in)o(t)25 1101 y Fl(\000)30
2160     b Fo(su)15 b Fn(is)h(a)e Fo(sockbuf)h Fn(and)g(m)o(ust)g(b)q(e)h(in)g
2161     Fi(unix)j Fn(domain)25 1171 y Fl(\000)30 b Fo(path)15 b Fn(is)g(the)h
2162     Fi(unix)j Fn(path)c(name)g(lik)o(e)i Fo(")p Fn(/tmp/unix)p
2163     981 1171 14 2 v 16 w(so)q(c)o(k)o(et)p Fo(")0 1308 y(sockunixbuf)d(uns\(ty,)g
2164     (proto\))240 1379 y Fn(Constructs)k(a)g Fo(sockunixbuf)f Fn(ob)s(ject)h
2165     Fo(uns)g Fn(with)h Fo(ty)f Fn(as)g(its)h(t)o(yp)q(e)g(and)f
2166     Fo(proto)g Fn(as)g(its)h(proto)q(col)240 1441 y(n)o(um)o(b)q(er.)h
2167     Fo(proto)15 b Fn(defaults)g(to)g(0.)0 1512 y Fo(sockunixbuf)f(uns)g(=)h(su)
2168     240 1582 y Fn(Constructs)f(a)h Fo(sockunixbuf)f Fn(ob)s(ject)h
2169     Fo(uns)f Fn(whic)o(h)i(uses)g(the)f(same)g(so)q(c)o(k)o(et)g(as)f(is)i(used)g
2170     (b)o(y)f Fo(su)p Fn(.)0 1653 y Fo(uns)g(=)g(su)66 b(sockunixbuf)14
2171     b Fn(ob)s(ject)h Fo(uns)g Fn(closes)g(its)h(curren)o(t)f(so)q(c)o(k)o(et)g
2172     (if)h(no)f(other)g Fo(sockbuf)f Fn(is)i(referring)g(to)f(it)240
2173     1715 y(and)g(uses)h(the)f(so)q(c)o(k)o(et)g(that)f Fo(sockbuf)g
2174     Fn(ob)s(ject)h Fo(su)g Fn(is)h(using.)0 1786 y Fo(uns.open\(ty,)e(proto\))240
2175     1856 y Fn(create)h(a)h Fo(sockunixbuf)e Fn(ob)s(ject)h(with)h
2176     Fo(ty)f Fn(as)h(its)g(t)o(yp)q(e)f(and)h Fo(proto)f Fn(as)g(its)h(proto)q
2177     (col)g(and)g(assign)240 1919 y(the)f Fo(sockunixbuf)f Fn(ob)s(ject)h(so)f
2178     (created)i(to)e Fo(*this)p Fn(.)19 b(It)d(returns)f Fo(this)p
2179     Fn(.)k Fo(proto)14 b Fn(defaults)i(to)f(0.)0 1989 y Fo(uns.bind\(path\))240
2180     2060 y Fn(binds)h Fo(uns)f Fn(to)g(the)g Fi(unix)k Fn(pathname)d
2181     Fo(path)p Fn(.)0 2130 y Fo(uns.connect\(path\))240 2201 y Fn(connects)g
2182     Fo(uns)e Fn(to)h(the)g Fi(unix)20 b Fn(pathname)15 b Fo(path)p
2183     Fn(.)0 2408 y Fm(6.2)33 b Fh(unix)17 b Fm(Datagram)d(So)r(c)n(k)n(ets)62
2184     2545 y Fn(The)i(follo)o(wing)h(t)o(w)o(o)d(programs)h(illustrates)i(ho)o(w)e
2185     (to)g(use)h Fo(sockunixbuf)e Fn(class)i(for)g(datagram)e(connection)0
2186     2608 y(in)19 b Fi(unix)j Fn(domain.)29 b Fo(tdunread.cc)16
2187     b Fn(also)i(sho)o(ws)g(ho)o(w)f(to)h(use)g Fo(isockunix)f Fn(class)h(and)g
2188     Fo(tdunwrite.cc)f Fn(sho)o(ws)0 2670 y(ho)o(w)e(to)f(use)i
2189     Fo(osockunix)e Fn(class.)p eop
2190     %%Page: 22 24
2191     bop 0 -58 a Fn(Chapter)15 b(6:)k(so)q(c)o(kunixbuf)e(Class)1317
2192     b(22)0 183 y Fg(tdunread.cc)120 321 y Fo(//)24 b(reads)f(data)g(sent)g(by)h
2193     (tdunwrite.cc)120 371 y(#include)f(<sockunix.h>)120 421 y(#include)g
2194     (<unistd.h>)120 471 y(#include)g(<errno.h>)120 570 y(int)g(main\(int)g(ac,)h
2195     (char**)f(av\))120 620 y({)311 670 y(if)g(\(ac)h(!=)g(2\))f({)502
2196     720 y(cerr)g(<<)h("USAGE:)f(")g(<<)h(av[0])f(<<)h(")f(socket_path_name\\n";)
2197     502 770 y(return)g(1;)311 820 y(})311 919 y(//)g(isockunix)g(builds)g(the)h
2198     (sockunixbuf)e(object)311 969 y(isockunix)46 b(su)24 b
2199     (\(sockbuf::sock_dgram\);)311 1069 y(su->bind\(av[1]\);)311
2200     1168 y(cout)f(<<)h("Socket)f(name)g(=)h(")f(<<)h(av[1])f(<<)h(endl;)311
2201     1268 y(if)f(\(chmod\(av[1],)g(0777\))g(==)g(-1\))h({)502 1318
2202     y(perror\("chmod"\);)502 1367 y(return)f(1;)311 1417 y(})311
2203     1517 y(char)g(buf[1024];)311 1567 y(int)g(i;)311 1617 y(su)g(>>)h(i;)311
2204     1666 y(cout)f(<<)h(av[0])f(<<)h(":)f(")h(<<)f(i)h(<<)g(")g(strings:)e(";)311
2205     1716 y(while)h(\(i--\))g({)502 1766 y(su)g(>>)h(buf;)502 1816
2206     y(cout)47 b(<<)24 b(buf)f(<<)h(')f(';)311 1866 y(})311 1915
2207     y(cout)g(<<)h(endl;)311 2015 y(unlink\(av[1]\);)311 2065 y(return)f(0;)120
2208     2115 y(})0 2333 y Fg(tdun)n(write.cc)120 2471 y Fo(//)h(sends)f(data)g(to)h
2209     (tdunread.cc)120 2521 y(#include)f(<sockunix.h>)120 2620 y(int)g(main\(int)g
2210     (ac,)h(char**)f(av\))120 2670 y({)p eop
2211     %%Page: 23 25
2212     bop 0 -58 a Fn(Chapter)15 b(6:)k(so)q(c)o(kunixbuf)e(Class)1317
2213     b(23)311 183 y Fo(if)23 b(\(ac)h(<)g(2\))f({)502 233 y(cerr)g(<<)h("USAGE:)f
2214     (")g(<<)h(av[0])621 283 y(<<)g(")f(socket_path_name)f(data...\\n";)502
2215     333 y(return)h(1;)311 382 y(})311 482 y(osockunix)g(su)g
2216     (\(sockbuf::sock_dgram\);)120 582 y(su->connect)f(\(av[1]\);)311
2217     681 y(su)h(<<)h(ac)g(<<)f(')h(';)311 731 y(while)f(\(*av\))g({)h(su)g(<<)f
2218     (av[i])g(<<)h(')g(';)f(av++;)g(})311 781 y(su)g(<<)h(endl;)311
2219     881 y(return)f(0;)120 930 y(})0 1166 y Fm(6.3)33 b Fh(unix)17
2220     b Fm(Stream)f(So)r(c)n(k)n(ets)62 1304 y Fn(The)g(follo)o(wing)h(t)o(w)o(o)e
2221     (programs)f(illustrates)j(ho)o(w)f(to)f(use)h Fo(sockunixbuf)f
2222     Fn(class)h(for)f(stream)g(connection)i(in)0 1366 y Fi(unix)i
2223     Fn(domain.)i(It)15 b(also)g(sho)o(ws)g(ho)o(w)f(to)h(use)g
2224     Fo(iosockunix)f Fn(class.)0 1585 y Fg(tsunread.cc)120 1724
2225     y Fo(//)24 b(exchanges)e(char)i(strings)e(with)i(tsunwrite.cc)120
2226     1773 y(#include)f(<sockunix.h>)120 1823 y(#include)g(<unistd.h>)120
2227     1873 y(#include)g(<errno.h>)120 1973 y(int)g(main\(int)g(ac,)h(char**)f(av\))
2228     120 2022 y({)311 2072 y(if)g(\(ac)h(!=)g(2\))f({)502 2122 y(cerr)g(<<)h
2229     ("USAGE:)f(")g(<<)h(av[0])f(<<)h(")f(socket_path_name\\n";)502
2230     2172 y(return)g(1;)311 2222 y(})311 2321 y(sockunixbuf)46 b
2231     (su\(sockbuf::sock_stream\);)311 2371 y(su.bind\(av)22 b([1]\);)311
2232     2471 y(cout)h(<<)h("Socket)f(name)g(=)h(")f(<<)h(av[1])f(<<)h(endl;)311
2233     2570 y(if)f(\(chmod\(av[1],)g(0777\))g(==)g(-1\))h({)502 2620
2234     y(perror\("chmod"\);)502 2670 y(return)f(1;)p eop
2235     %%Page: 24 26
2236     bop 0 -58 a Fn(Chapter)15 b(6:)k(so)q(c)o(kunixbuf)e(Class)1317
2237     b(24)311 183 y Fo(})311 283 y(su.listen\(3\);)311 382 y(iosockunix)22
2238     b(ioput)i(=)f(su.accept)g(\(\);)311 432 y(char)166 b(buf[1024];)311
2239     532 y(ioput)23 b(<<)h(av[0])f(<<)g(')h(')g(<<)f(av[1])h(<<)f(endl;)311
2240     582 y(while)g(\()h(ioput)f(>>)h(buf)f(\))h(cout)f(<<)h(av[0])f(<<)g(":)h(")g
2241     (<<)f(buf)h(<<)f(endl;)311 632 y(unlink\(av[1]\);)311 681 y(return)g(0;)120
2242     731 y(})0 939 y Fg(tsun)n(write.cc)120 1076 y Fo(//)h(exchanges)e(char)i
2243     (strings)e(with)i(tsunread.cc)120 1126 y(#include)f(<sockunix.h>)120
2244     1225 y(int)g(main\(int)g(ac,)h(char**)f(av\))120 1275 y({)311
2245     1325 y(if)g(\(ac)h(<)g(2\))f({)502 1375 y(cerr)g(<<)h("USAGE:)f(")g(<<)h
2246     (av[0])621 1424 y(<<)g(")f(socket_path_name)f(data...\\n";)502
2247     1474 y(return)h(1;)311 1524 y(})311 1624 y(iosockunix)f(oput)i
2248     (\(sockbuf::sock_stream\);)311 1673 y(oput->connect)e(\(av)h([1]\);)311
2249     1773 y(char)g(buf[128];)311 1873 y(oput)g(>>)h(buf;)311 1923
2250     y(cout)f(<<)h(buf)f(<<)h(')g(';)311 1972 y(oput)f(>>)h(buf;)311
2251     2022 y(cout)f(<<)h(buf)f(<<)h(endl;)311 2122 y(while)f(\(*av\))g(oput)h(<<)f
2252     (*av++)g(<<)h(')g(';)311 2172 y(oput)f(<<)h(endl;)311 2271
2253     y(return)f(0;)120 2321 y(})p eop
2254     %%Page: 25 27
2255     bop 0 -58 a Fn(Chapter)15 b(7:)k(so)q(c)o(kunixaddr)e(Class)1290
2256     b(25)0 183 y Fk(7)41 b(so)r(c)n(kunixaddr)13 b(Class)62 370
2257     y Fn(Class)e Fo(sockunixaddr)e Fn(is)j(deriv)o(ed)g(from)e(class)h
2258     Fo(sockAddr)f Fn(declared)i(in)f Fo(<sockstream.h>)e Fn(and)i(from)f(struct)0
2259     432 y Fo(sockaddr_un)15 b Fn(declared)i(in)h Fo(<sys/un.h>)p
2260     Fn(.)k(Alw)o(a)o(ys)16 b(use)g Fo(sockunixaddr)f Fn(ob)s(jects)h(for)g
2261     (addresses)g(with)h Fi(unix)0 495 y Fn(domain)f(of)e(so)q(c)o(k)o(ets.)20
2262     b(See)15 b(Section)i(2.4)d([Connection)h(Establishmen)o(t],)g(page)g(9.)62
2263     632 y(In)h(what)f(follo)o(ws,)25 769 y Fl(\000)30 b Fo(path)15
2264     b Fn(is)g(the)h Fi(unix)j Fn(path)c(name)g(lik)o(e)i Fo(")p
2265     Fn(/tmp/unix)p 981 769 14 2 v 16 w(so)q(c)o(k)o(et)p Fo(")0
2266     906 y(sockunixaddr)d(suna\(path\))240 980 y Fn(Constructs)g(a)h
2267     Fo(sockunixaddr)f Fn(ob)s(ject)g Fo(suna)h Fn(with)h Fo(path)e
2268     Fn(as)h(the)g Fi(unix)20 b Fn(path)15 b(name.)0 1055 y Fo(void*)f(a)h(=)g
2269     (suna)240 1130 y Fn(returns)g(the)g(address)h(of)e(the)i Fo(sockaddr_un)d
2270     Fn(part)i(of)g Fo(sockunixaddr)e Fn(ob)s(ject)i Fo(suna)f Fn(as)h(v)o(oid*.)0
2271     1204 y Fo(int)g(sz)g(=)g(suna.size\(\))240 1279 y Fn(returns)g(the)g(sizeof)h
2272     Fo(sockaddr_un)e Fn(part)g(of)h Fo(sockunixaddr)f Fn(ob)s(ject)g
2273     Fo(suna)p Fn(.)0 1354 y Fo(int)h(af)g(=)g(suna.family\(\))240
2274     1429 y Fn(returns)g Fo(sockunixbuf::af_unix)d Fn(if)k(all)g(is)g(w)o(ell.)p
2275     eop
2276     %%Page: 26 28
2277     bop 0 -58 a Fn(Chapter)15 b(8:)k(so)q(c)o(kstream)c(Classes)1296
2278     b(26)0 183 y Fk(8)41 b(so)r(c)n(kstream)15 b(Classes)62 360
2279     y Fn(so)q(c)o(kstream)k(classes)i(are)f(designed)h(in)g(suc)o(h)g(a)f(w)o(a)o
2280     (y)f(that)g(they)i(pro)o(vide)f(the)g(same)g(in)o(terface)h(as)e(their)0
2281     422 y(stream)e(coun)o(terparts)g(do.)28 b(W)l(e)18 b(ha)o(v)o(e)g
2282     Fo(isockstream)e Fn(deriv)o(ed)j(from)e Fo(istream)g Fn(and)i
2283     Fo(osockstream)d Fn(deriv)o(ed)0 485 y(from)e Fo(ostream)p
2284     Fn(.)19 b(W)l(e)d(also)f(ha)o(v)o(e)g Fo(iosockstream)e Fn(whic)o(h)j(is)g
2285     (deriv)o(ed)g(from)f Fo(iostream)p Fn(.)62 622 y(Eac)o(h)f(domain)h(also)f
2286     (has)g(its)h(o)o(wn)e(set)h(of)g Fo(stream)g Fn(classes.)20
2287     b(F)l(or)13 b(example,)i Fo(unix)f Fn(domain)g(has)h Fo(isockunix)p
2288     Fn(,)0 684 y Fo(osockunix)p Fn(,)e(and)h Fo(iosockunix)e Fn(deriv)o(ed)j
2289     (from)f Fo(isockstream)p Fn(,)e Fo(osockstream)p Fn(,)g(and)j
2290     Fo(iosockstream)d Fn(resp)q(ec-)0 746 y(tiv)o(ely)l(.)21 b(Similarly)l(,)c
2291     Fo(inet)e Fn(domain)g(has)g Fo(isockinet)p Fn(,)f Fo(osockinet)p
2292     Fn(,)f(and)j Fo(iosockinet)p Fn(.)0 960 y Fm(8.1)33 b(ioso)r(c)n(kstreams)0
2293     1158 y Fg(8.1.1)d(iso)r(c)n(kstream)16 b(Class)62 1295 y Fn(Since)i
2294     Fo(isockstream)d Fn(is)j(publicly)h(deriv)o(ed)f(from)d Fo(istream)p
2295     Fn(,)h(most)g(of)g(the)h(public)h(functions)g(of)e Fo(istream)0
2296     1357 y Fn(are)f(also)g(a)o(v)m(ailable)i(in)f Fo(isockstream)p
2297     Fn(.)62 1494 y Fo(isockstream)h Fn(rede\014nes)i Fo(rdbuf\(\))f
2298     Fn(de\014ned)h(in)g(its)g(virtual)g(base)f(class)h Fo(ios)p
2299     Fn(.)29 b(Since,)20 b Fo(ios::rdbuf\(\))c Fn(is)0 1557 y(not)f(virtual,)h
2300     (care)g(m)o(ust)f(b)q(e)h(tak)o(en)g(to)f(call)h(the)g(correct)g
2301     Fo(rdbuf\(\))e Fn(through)i(a)f(reference)h(or)f(a)h(p)q(oin)o(ter)g(to)f(an)
2302     0 1619 y(ob)s(ject)g(of)f(class)i Fo(isockstream)p Fn(.)62
2303     1756 y(In)g(what)f(follo)o(ws,)25 1893 y Fl(\000)30 b Fo(sb)15
2304     b Fn(is)h(a)e Fo(sockbuf)h Fn(ob)s(ject)25 1965 y Fl(\000)30
2305     b Fo(sbp)15 b Fn(is)g(a)g(p)q(oin)o(ter)h(to)f(a)f Fo(sockbuf)h
2306     Fn(ob)s(ject)0 2102 y Fo(isockstream)f(is\(sb\))240 2174 y
2307     Fn(Constructs)g(an)i Fo(isockstream)d Fn(ob)s(ject)i Fo(is)g
2308     Fn(with)g Fo(sb)g Fn(as)g(its)g Fo(sockbuf)p Fn(.)0 2247 y
2309     Fo(isockstream)f(is\(sbp\))240 2319 y Fn(Constructs)g(an)i
2310     Fo(isockstream)d Fn(ob)s(ject)i Fo(is)g Fn(with)g Fo(*sbp)g
2311     Fn(as)g(its)g Fo(sockbuf)p Fn(.)0 2391 y Fo(sbp)g(=)g(is.rdbuf\(\))240
2312     2463 y Fn(returns)g(a)g(p)q(oin)o(ter)h(to)e(the)h Fo(sockbuf)g
2313     Fn(of)f(the)i Fo(isockstream)d Fn(ob)s(ject)i Fo(is)p Fn(.)0
2314     2535 y Fo(isockstream::operator)d(->)j(\(\))240 2608 y Fn(returns)f(a)f(p)q
2315     (oin)o(ter)h(to)f(the)h Fo(isockstream)p Fn('s)e Fo(sockbuf)h
2316     Fn(so)g(that)g(the)h(user)g(can)f(use)i Fo(isockstream)240
2317     2670 y Fn(ob)s(ject)g(as)f(a)h Fo(sockbuf)g Fn(ob)s(ject.)p
2318     eop
2319     %%Page: 27 29
2320     bop 0 -58 a Fn(Chapter)15 b(8:)k(so)q(c)o(kstream)c(Classes)1296
2321     b(27)455 183 y Fo(is->connect)23 b(\(sa\);)g(//)h(same)f(as)g
2322     (is.rdbuf\(\)->connect)f(\(sa\);)0 392 y Fg(8.1.2)30 b(oso)r(c)n(kstream)15
2323     b(Class)62 529 y Fn(Since)j Fo(osockstream)d Fn(is)j(publicly)h(deriv)o(ed)f
2324     (from)d Fo(ostream)p Fn(,)h(most)g(of)g(the)h(public)h(functions)g(of)e
2325     Fo(ostream)0 591 y Fn(are)f(also)g(a)o(v)m(ailable)i(in)f Fo(osockstream)p
2326     Fn(.)62 728 y Fo(osockstream)h Fn(rede\014nes)i Fo(rdbuf\(\))f
2327     Fn(de\014ned)h(in)g(its)g(virtual)g(base)f(class)h Fo(ios)p
2328     Fn(.)29 b(Since,)20 b Fo(ios::rdbuf\(\))c Fn(is)0 791 y(not)f(virtual,)h
2329     (care)g(m)o(ust)f(b)q(e)h(tak)o(en)g(to)f(call)h(the)g(correct)g
2330     Fo(rdbuf\(\))e Fn(through)i(a)f(reference)h(or)f(a)h(p)q(oin)o(ter)g(to)f(an)
2331     0 853 y(ob)s(ject)g(of)f(class)i Fo(osockstream)p Fn(.)62 990
2332     y(In)g(what)f(follo)o(ws,)25 1127 y Fl(\000)30 b Fo(sb)15 b
2333     Fn(is)h(a)e Fo(sockbuf)h Fn(ob)s(ject)25 1202 y Fl(\000)30
2334     b Fo(sbp)15 b Fn(is)g(a)g(p)q(oin)o(ter)h(to)f(a)f Fo(sockbuf)h
2335     Fn(ob)s(ject)0 1339 y Fo(osockstream)f(os\(sb\))240 1414 y
2336     Fn(Constructs)g(an)i Fo(osockstream)d Fn(ob)s(ject)i Fo(os)g
2337     Fn(with)g Fo(sb)g Fn(as)g(its)g Fo(sockbuf)p Fn(.)0 1489 y
2338     Fo(osockstream)f(os\(sbp\))240 1564 y Fn(Constructs)g(an)i
2339     Fo(osockstream)d Fn(ob)s(ject)i Fo(os)g Fn(with)g Fo(*sbp)g
2340     Fn(as)g(its)g Fo(sockbuf)p Fn(.)0 1639 y Fo(sbp)g(=)g(os.rdbuf\(\))240
2341     1713 y Fn(returns)g(a)g(p)q(oin)o(ter)h(to)e(the)h Fo(sockbuf)g
2342     Fn(of)f(the)i Fo(osockstream)d Fn(ob)s(ject)i Fo(os)p Fn(.)0
2343     1788 y Fo(osockstream::operator)d(->)j(\(\))240 1863 y Fn(returns)f(a)f(p)q
2344     (oin)o(ter)h(to)f(the)h Fo(osockstream)p Fn('s)e Fo(sockbuf)h
2345     Fn(so)g(that)g(the)h(user)g(can)f(use)i Fo(osockstream)240
2346     1925 y Fn(ob)s(ject)g(as)f(a)h Fo(sockbuf)g Fn(ob)s(ject.)455
2347     2000 y Fo(os->connect)23 b(\(sa\);)g(//)h(same)f(as)g(os.rdbuf\(\)->connect)f
2348     (\(sa\);)0 2209 y Fg(8.1.3)30 b(ioso)r(c)n(kstream)15 b(Class)62
2349     2346 y Fn(Since)e Fo(iosockstream)c Fn(is)j(publicly)i(deriv)o(ed)e(from)e
2350     Fo(iostream)p Fn(,)g(most)h(of)f(the)h(public)j(functions)d(of)g
2351     Fo(iostream)0 2408 y Fn(are)k(also)g(a)o(v)m(ailable)i(in)f
2352     Fo(iosockstream)p Fn(.)62 2545 y Fo(iosockstream)f Fn(rede\014nes)j
2353     Fo(rdbuf\(\))d Fn(de\014ned)j(in)g(its)f(virtual)g(base)g(class)g
2354     Fo(ios)p Fn(.)23 b(Since,)c Fo(ios::rdbuf\(\))14 b Fn(is)0
2355     2608 y(not)h(virtual,)h(care)g(m)o(ust)f(b)q(e)h(tak)o(en)g(to)f(call)h(the)g
2356     (correct)g Fo(rdbuf\(\))e Fn(through)i(a)f(reference)h(or)f(a)h(p)q(oin)o
2357     (ter)g(to)f(an)0 2670 y(ob)s(ject)g(of)f(class)i Fo(iosockstream)p
2358     Fn(.)p eop
2359     %%Page: 28 30
2360     bop 0 -58 a Fn(Chapter)15 b(8:)k(so)q(c)o(kstream)c(Classes)1296
2361     b(28)62 183 y(In)16 b(what)f(follo)o(ws,)25 321 y Fl(\000)30
2362     b Fo(sb)15 b Fn(is)h(a)e Fo(sockbuf)h Fn(ob)s(ject)25 397 y
2363     Fl(\000)30 b Fo(sbp)15 b Fn(is)g(a)g(p)q(oin)o(ter)h(to)f(a)f
2364     Fo(sockbuf)h Fn(ob)s(ject)0 535 y Fo(iosockstream)f(io\(sb\))240
2365     611 y Fn(Constructs)g(an)i Fo(iosockstream)d Fn(ob)s(ject)i
2366     Fo(io)g Fn(with)g Fo(sb)g Fn(as)g(its)g Fo(sockbuf)p Fn(.)0
2367     687 y Fo(iosockstream)f(io\(sbp\))240 763 y Fn(Constructs)g(an)i
2368     Fo(iosockstream)d Fn(ob)s(ject)i Fo(io)g Fn(with)g Fo(*sbp)g
2369     Fn(as)g(its)g Fo(sockbuf)p Fn(.)0 838 y Fo(sbp)g(=)g(io.rdbuf\(\))240
2370     914 y Fn(returns)g(a)g(p)q(oin)o(ter)h(to)e(the)h Fo(sockbuf)g
2371     Fn(of)f(the)i Fo(iosockstream)d Fn(ob)s(ject)i Fo(io)p Fn(.)0
2372     990 y Fo(iosockstream::operator)d(->)j(\(\))240 1066 y Fn(returns)10
2373     b(a)g(p)q(oin)o(ter)g(to)g(the)g Fo(iosockstream)p Fn('s)e
2374     Fo(sockbuf)h Fn(so)h(that)g(the)g(user)g(can)g(use)h Fo(iosockstream)240
2375     1128 y Fn(ob)s(ject)k(as)f(a)h Fo(sockbuf)g Fn(ob)s(ject.)455
2376     1204 y Fo(io->connect)23 b(\(sa\);)g(//)h(same)f(as)g(io.rdbuf\(\)->connect)f
2377     (\(sa\);)0 1438 y Fm(8.2)33 b(ioso)r(c)n(kinet)15 b(Stream)h(Classes)62
2378     1576 y Fn(W)l(e)g(discus)g(only)g Fo(isockinet)e Fn(class)i(here.)21
2379     b Fo(osockinet)14 b Fn(and)i Fo(iosockinet)e Fn(are)h(similar)h(and)g(are)f
2380     (left)h(out.)0 1638 y(Ho)o(w)o(ev)o(er,)e(they)h(are)g(co)o(v)o(ered)g(in)h
2381     (the)f(examples)h(that)f(follo)o(w.)0 1855 y Fg(8.2.1)30 b(iso)r(c)n(kinet)62
2382     1993 y Fo(isockinet)19 b Fn(is)h(used)g(to)f(handle)i(in)o(terpro)q(cess)g
2383     (comm)o(unication)f(in)h Fi(inet)g Fn(domain.)34 b(It)20 b(is)g(deriv)o(ed)h
2384     (from)0 2055 y Fo(isockstream)f Fn(class)j(and)f(it)g(uses)g(a)g
2385     Fo(sockinetbuf)e Fn(as)h(its)h(stream)g(bu\013er.)39 b(See)23
2386     b(Section)g(8.1.3)d([ioso)q(c)o(k-)0 2118 y(stream],)13 b(page)g(27,)h(for)f
2387     (more)h(details)h(on)f Fo(isockstream)p Fn(.)j(See)e(Chapter)f(4)f([so)q(c)o
2388     (kinetbuf)i(Class],)e(page)h(14,)g(for)0 2180 y(information)h(on)g
2389     Fo(sockinetbuf)p Fn(.)62 2318 y(In)h(what)f(follo)o(ws,)25
2390     2456 y Fl(\000)30 b Fo(ty)17 b Fn(is)g(a)g Fo(sockbuf::type)e
2391     Fn(and)j(m)o(ust)e(b)q(e)i(one)f(of)g Fo(sockbuf::sock_stream)p
2392     Fn(,)d Fo(sockbuf::sock_dgram)p Fn(,)90 2518 y Fo(sockbuf::sock_raw)p
2393     Fn(,)e Fo(sockbuf::sock_rdm)p Fn(,)h(and)i Fo(sockbuf::sock_seqpacket)25
2394     2594 y Fl(\000)30 b Fo(proto)14 b Fn(denotes)i(the)f(proto)q(col)g(n)o(um)o
2395     (b)q(er)h(and)f(is)h(of)f(t)o(yp)q(e)g(in)o(t)25 2670 y Fl(\000)30
2396     b Fo(sb)15 b Fn(is)h(a)e Fo(sockbuf)h Fn(ob)s(ject)f(and)i(m)o(ust)e(b)q(e)i
2397     (in)g Fi(inet)h Fn(domain)p eop
2398     %%Page: 29 31
2399     bop 0 -58 a Fn(Chapter)15 b(8:)k(so)q(c)o(kstream)c(Classes)1296
2400     b(29)25 183 y Fl(\000)30 b Fo(sinp)15 b Fn(is)g(a)g(p)q(oin)o(ter)h(to)e(an)i
2401     (ob)s(ject)e(of)h Fo(sockinetbuf)0 323 y(isockinet)f(is)h(\(ty,)f(proto\))240
2402     401 y Fn(constructs)k(an)g Fo(isockinet)g Fn(ob)s(ject)g Fo(is)g
2403     Fn(whose)g Fo(sockinetbuf)f Fn(bu\013er)h(is)h(of)g(the)f(t)o(yp)q(e)h
2404     Fo(ty)f Fn(and)240 463 y(has)d(the)g(proto)q(col)h(n)o(um)o(b)q(er)f
2405     Fo(proto)p Fn(.)k(The)d(default)f(proto)q(col)h(n)o(um)o(b)q(er)f(is)h(0.)0
2406     540 y Fo(isockinet)e(is)h(\(sb\))240 618 y Fn(constructs)c(a)f
2407     Fo(isockinet)g Fn(ob)s(ject)h Fo(is)f Fn(whose)h Fo(sockinetbuf)f
2408     Fn(is)h Fo(sb)p Fn(.)18 b Fo(sb)11 b Fn(m)o(ust)g(b)q(e)g(in)h
2409     Fi(inet)h Fn(domain.)0 696 y Fo(isockinet)h(is)h(\(sinp\))240
2410     773 y Fn(constructs)g(a)g Fo(isockinet)f Fn(ob)s(ject)g Fo(is)h
2411     Fn(whose)g Fo(sockinetbuf)f Fn(is)i Fo(sinp)p Fn(.)0 851 y
2412     Fo(sinp)f(=)g(is.rdbuf)f(\(\))240 928 y Fn(returns)h(a)g(p)q(oin)o(ter)h(to)e
2413     (the)h Fo(sockinetbuf)f Fn(of)h Fo(isockinet)f Fn(ob)s(ject)g
2414     Fo(is)p Fn(.)0 1006 y Fo(isockinet::operator)f(->)240 1083
2415     y Fn(returns)h Fo(sockinetbuf)e Fn(of)i Fo(sockinet)e Fn(so)i(that)f(the)h
2416     Fo(sockinet)f Fn(ob)s(ject)g(acts)h(as)f(a)h(smart)e(p)q(oin)o(ter)240
2417     1146 y(to)j Fo(sockinetbuf)p Fn(.)551 1223 y Fo(is->localhost)22
2418     b(\(\);)h(//)h(same)f(as)h(is.rdbuf)f(\(\)->localhost)f(\(\);)0
2419     1456 y Fg(8.2.2)30 b(ioso)r(c)n(kinet)15 b(examples)62 1596
2420     y Fn(The)f(\014rst)g(pair)g(of)f(examples)i(demonstrates)e(datagram)f(so)q(c)
2421     o(k)o(et)i(connections)h(in)f(the)g Fi(inet)i Fn(domain.)k(First,)0
2422     1658 y Fo(tdinread)g Fn(prin)o(ts)h(its)g(lo)q(cal)h(host)e(and)h(lo)q(cal)h
2423     (p)q(ort)f(on)g(stdout)f(and)h(w)o(aits)f(for)h(input)h(in)f(the)g
2424     (connection.)0 1721 y Fo(tdinwrite)c Fn(is)h(started)f(with)i(the)f(lo)q(cal)
2425     h(host)e(and)h(lo)q(cal)i(p)q(ort)d(of)h Fo(tdinread)f Fn(as)g(argumen)o(ts.)
2426     27 b(It)18 b(sends)h(the)0 1783 y(string)c Fo(")p Fn(Ho)o(w)g(do)g(y)o(e)g
2427     (do!)p Fo(")f Fn(to)h Fo(tdinread)f Fn(whic)o(h)i(in)g(turn)f(reads)g(the)h
2428     (string)f(and)g(prin)o(ts)h(on)f(its)g(stdout.)120 1923 y Fo(//)24
2429     b(tdinread.cc)120 1973 y(#include)f(<sockinet.h>)120 2072 y(int)g(main)h
2430     (\(\))120 2122 y({)215 2172 y(char)g(buf[256];)215 2222 y(isockinet)f(is)h
2431     (\(sockbuf::sock_dgram\);)215 2271 y(is->bind)f(\(\);)215 2371
2432     y(cout)h(<<)f(is->localhost\(\))f(<<)i(')f(')h(<<)g(is->localport\(\))e(<<)h
2433     (endl;)215 2471 y(is.getline)g(\(buf\);)215 2521 y(cout)h(<<)f(buf)h(<<)f
2434     (endl;)215 2620 y(return)g(0;)120 2670 y(})p eop
2435     %%Page: 30 32
2436     bop 0 -58 a Fn(Chapter)15 b(8:)k(so)q(c)o(kstream)c(Classes)1296
2437     b(30)120 183 y Fo(//)24 b(tdinwrite.cc--tdinwrite)c(hostname)j(portno)120
2438     233 y(#include)g(<sockinet.h>)120 283 y(#include)g(<stdlib.h>)120
2439     382 y(int)g(main)h(\(int)f(ac,)h(char**)f(av\))120 432 y({)215
2440     482 y(osockinet)g(os)h(\(sockbuf::sock_dgram\);)215 532 y(os->connect)f
2441     (\(av[1],)g(atoi\(av[2]\)\);)215 582 y(os)h(<<)g("How)f(do)h(ye)f(do!")g(<<)h
2442     (endl;)215 632 y(return)f(0;)120 681 y(})62 933 y Fn(The)15
2443     b(next)f(example)h(comm)o(unicates)g(with)g(an)f(nn)o(tp)g(serv)o(er)g
2444     (through)g(a)g Fo(sockbuf::sock_stream)e Fn(so)q(c)o(k)o(et)0
2445     995 y(connection)k(in)h Fi(inet)g Fn(domain.)k(After)15 b(establishing)i(a)e
2446     (connection)i(to)d(the)i(nn)o(tp)f(serv)o(er,)g(it)h(sends)g(a)f
2447     Fo(")p Fn(HELP)p Fo(")0 1057 y Fn(command)g(and)g(gets)g(bac)o(k)g(the)g
2448     (HELP)h(message)f(b)q(efore)g(sending)i(the)e Fo(")p Fn(QUIT)p
2449     Fo(")g Fn(command.)120 1214 y Fo(//)24 b(tnntp.cc)120 1264
2450     y(#include)f(<sockinet.h>)120 1363 y(int)g(main)h(\(\))120
2451     1413 y({)215 1463 y(char)48 b(buf[1024];)215 1513 y(iosockinet)23
2452     b(io)h(\(sockbuf::sock_stream\);)215 1563 y(io->connect)f
2453     (\("murdoch.acc.virginia.ed)o(u",)e("nntp",)i("tcp"\);)215
2454     1613 y(io.getline)g(\(buf,)g(1024\);)g(cout)g(<<)h(buf)g(<<)f(endl;)215
2455     1662 y(io)h(<<)g("HELP\\r\\n")e(<<)i(flush;)215 1712 y(io.getline)f(\(buf,)g
2456     (1024\);)g(cout)g(<<)h(buf)g(<<)f(endl;)215 1762 y(while)h(\(io.getline)e
2457     (\(buf,)h(1024\)\))311 1812 y(if)g(\(buf[0])g(==)h('.')f(&&)h(buf[1])f(==)h
2458     ('\\r'\))f(break;)311 1862 y(else)g(if)h(\(buf[0])f(==)g('.')h(&&)f(buf[1])g
2459     (==)h('.'\))f(cout)h(<<)f(buf+1)g(<<)h(endl;)311 1911 y(else)f(cout)h(<<)f
2460     (buf)h(<<)f(endl;)215 1961 y(io)h(<<)g("QUIT\\r\\n")e(<<)i(flush;)215
2461     2011 y(io.getline)f(\(buf,)g(1024\);)g(cout)g(<<)h(buf)g(<<)f(endl;)215
2462     2061 y(return)g(0;)120 2111 y(})0 2513 y Fm(8.3)33 b(ioso)r(c)n(kunix)16
2463     b(Classes)62 2670 y Fn(W)l(e)g(discuss)g(only)g Fo(isockunix)d
2464     Fn(here.)21 b Fo(osockunix)14 b Fn(and)h Fo(iosockunix)f Fn(are)h(similar.)p
2465     eop
2466     %%Page: 31 33
2467     bop 0 -58 a Fn(Chapter)15 b(8:)k(so)q(c)o(kstream)c(Classes)1296
2468     b(31)0 183 y Fg(8.3.1)30 b(iso)r(c)n(kunix)16 b(class)62 323
2469     y Fo(isockunix)i Fn(is)h(used)h(to)e(handle)i(in)o(terpro)q(cess)f(comm)o
2470     (unication)h(in)f Fi(unix)k Fn(domain.)32 b(It)19 b(is)g(deriv)o(ed)h(from)0
2471     385 y Fo(isockstream)11 b Fn(class)i(and)f(it)h(uses)g(a)f
2472     Fo(sockunixbuf)e Fn(as)j(its)f(stream)g(bu\013er.)19 b(See)13
2473     b(Section)g(8.1.3)e([ioso)q(c)o(kstream],)0 447 y(page)16 b(27,)g(for)g(more)
2474     g(details)i(on)e Fo(isockstream)p Fn(.)23 b(See)17 b(Chapter)f(6)h([so)q(c)o
2475     (kunixbuf)g(Class],)f(page)h(21,)f(for)g(infor-)0 509 y(mation)f(on)g
2476     Fo(sockunixbuf)p Fn(.)62 649 y(In)h(what)f(follo)o(ws,)25 788
2477     y Fl(\000)30 b Fo(ty)17 b Fn(is)g(a)g Fo(sockbuf::type)e Fn(and)j(m)o(ust)e
2478     (b)q(e)i(one)f(of)g Fo(sockbuf::sock_stream)p Fn(,)d Fo(sockbuf::sock_dgram)p
2479     Fn(,)90 850 y Fo(sockbuf::sock_raw)p Fn(,)e Fo(sockbuf::sock_rdm)p
2480     Fn(,)h(and)i Fo(sockbuf::sock_seqpacket)25 927 y Fl(\000)30
2481     b Fo(proto)14 b Fn(denotes)i(the)f(proto)q(col)g(n)o(um)o(b)q(er)h(and)f(is)h
2482     (of)f(t)o(yp)q(e)g(in)o(t)25 1004 y Fl(\000)30 b Fo(sb)15 b
2483     Fn(is)h(a)e Fo(sockbuf)h Fn(ob)s(ject)f(and)i(m)o(ust)e(b)q(e)i(in)g
2484     Fi(unix)k Fn(domain)25 1081 y Fl(\000)30 b Fo(sinp)15 b Fn(is)g(a)g(p)q(oin)o
2485     (ter)h(to)e(an)i(ob)s(ject)e(of)h Fo(sockunixbuf)0 1221 y(isockunix)f(is)h
2486     (\(ty,)f(proto\))240 1298 y Fn(constructs)k(an)g Fo(isockunix)g
2487     Fn(ob)s(ject)g Fo(is)g Fn(whose)g Fo(sockunixbuf)f Fn(bu\013er)h(is)h(of)g
2488     (the)f(t)o(yp)q(e)h Fo(ty)f Fn(and)240 1360 y(has)d(the)g(proto)q(col)h(n)o
2489     (um)o(b)q(er)f Fo(proto)p Fn(.)k(The)d(default)f(proto)q(col)h(n)o(um)o(b)q
2490     (er)f(is)h(0.)0 1437 y Fo(isockunix)e(is)h(\(sb\))240 1514
2491     y Fn(constructs)22 b(a)g Fo(isockunix)f Fn(ob)s(ject)h Fo(is)g
2492     Fn(whose)h Fo(sockunixbuf)d Fn(is)j Fo(sb)p Fn(.)42 b Fo(sb)22
2493     b Fn(m)o(ust)g(b)q(e)h(in)g Fi(unix)240 1576 y Fn(domain.)0
2494     1653 y Fo(isockunix)14 b(is)h(\(sinp\))240 1730 y Fn(constructs)g(a)g
2495     Fo(isockunix)f Fn(ob)s(ject)g Fo(is)h Fn(whose)g Fo(sockunixbuf)f
2496     Fn(is)i Fo(sinp)p Fn(.)0 1807 y Fo(sinp)f(=)g(is.rdbuf)f(\(\))240
2497     1884 y Fn(returns)h(a)g(p)q(oin)o(ter)h(to)e(the)h Fo(sockunixbuf)f
2498     Fn(of)h Fo(isockunix)f Fn(ob)s(ject)g Fo(is)p Fn(.)0 1961 y
2499     Fo(isockunix::operator)f(->)240 2038 y Fn(returns)h Fo(sockunixbuf)e
2500     Fn(of)i Fo(sockunix)e Fn(so)i(that)f(the)h Fo(sockunix)f Fn(ob)s(ject)g(acts)
2501     h(as)f(a)h(smart)e(p)q(oin)o(ter)240 2101 y(to)j Fo(sockunixbuf)p
2502     Fn(.)551 2178 y Fo(is->localhost)22 b(\(\);)h(//)h(same)f(as)h(is.rdbuf)f
2503     (\(\)->localhost)f(\(\);)0 2406 y Fg(8.3.2)30 b(ioso)r(c)n(kunix)16
2504     b(examples)62 2545 y Fo(tsunread)h Fn(listens)j(for)d(connections.)30
2505     b(When)18 b Fo(tsunwrite)f Fn(requests)h(connection,)h Fo(tsunread)e
2506     Fn(accepts)i(it)0 2608 y(and)14 b(w)o(aits)e(for)h(input.)20
2507     b Fo(tsunwrite)12 b Fn(sends)i(the)g(string)f Fo(")p Fn(Hello!!!)p
2508     Fo(")g Fn(to)g Fo(tsunread)p Fn(.)18 b Fo(tsunread)12 b Fn(reads)i(the)f
2509     (string)0 2670 y(sen)o(t)i(b)o(y)g Fo(tsunwrite)f Fn(and)h(prin)o(ts)h(on)f
2510     (its)g(stdout.)p eop
2511     %%Page: 32 34
2512     bop 0 -58 a Fn(Chapter)15 b(8:)k(so)q(c)o(kstream)c(Classes)1296
2513     b(32)120 183 y Fo(//)24 b(tsunread.cc)120 233 y(#include)f(<sockunix.h>)120
2514     283 y(#include)g(<unistd.h>)120 382 y(int)g(main)h(\(\))120
2515     432 y({)215 482 y(sockunixbuf)f(sunb)g(\(sockbuf::sock_stream\);)215
2516     532 y(sunb.bind)g(\("/tmp/socket+-"\);)215 582 y(sunb.listen)g(\(2\);)215
2517     632 y(isockunix)g(is)h(=)f(sunb.accept)g(\(\);)215 681 y(char)h(buf[32];)215
2518     731 y(is)g(>>)g(buf;)f(cout)g(<<)h(buf)f(<<)h(endl;)215 781
2519     y(unlink)f(\("/tmp/socket+-"\);)215 831 y(return)g(0;)120 881
2520     y(})120 1018 y(//)h(tsunwrite.cc)120 1067 y(#include)f(<sockunix.h>)120
2521     1117 y(int)g(main)h(\(\))120 1167 y({)215 1217 y(osockunix)f(os)h
2522     (\(sockbuf::sock_stream\);)215 1267 y(os->connect)f(\("/tmp/socket++"\);)215
2523     1316 y(os)h(<<)g("Hello!!!\\n")e(<<)h(flush;)215 1366 y(return)g(0;)120
2524     1416 y(})p eop
2525     %%Page: 33 35
2526     bop 0 -58 a Fn(Chapter)15 b(9:)k(pip)q(estream)d(Classes)1297
2527     b(33)0 183 y Fk(9)41 b(pip)r(estream)14 b(Classes)62 370 y
2528     Fo(pipestream)e Fn(stream)h(classes)h(pro)o(vide)f(the)h(services)g(of)f(the)
2529     g Fi(UNIX)19 b Fn(system)13 b(calls)h Fo(pipe)f Fn(and)g Fo(socketpair)0
2530     432 y Fn(and)g(the)g(C)g(library)h(function)g Fo(popen)p Fn(.)k
2531     Fo(ipipestream)p Fn(,)12 b Fo(opipestream)p Fn(,)f(and)i Fo(iopipestream)f
2532     Fn(are)g(obtained)i(b)o(y)0 495 y(simply)k(deriving)h(from)d
2533     Fo(isockstream)p Fn(,)f Fo(osockstream)h Fn(and)h Fo(iosockstream)e
2534     Fn(resp)q(ectiv)o(ely)l(.)27 b(See)18 b(Chapter)e(8)0 557 y([so)q(c)o
2535     (kstream)e(Classes],)g(page)h(26)g(for)g(details.)62 694 y(In)h(what)f(follo)
2536     o(ws,)25 831 y Fl(\000)30 b Fo(ip)15 b Fn(is)h(an)f Fo(ipipestream)e
2537     Fn(ob)s(ject)25 905 y Fl(\000)30 b Fo(op)15 b Fn(is)h(an)f
2538     Fo(opipestream)e Fn(ob)s(ject)25 980 y Fl(\000)30 b Fo(iop)15
2539     b Fn(is)g(an)h Fo(iopipestream)d Fn(ob)s(ject)25 1055 y Fl(\000)30
2540     b Fo(cmd)15 b Fn(is)g(a)g(c)o(har*)g(denoting)h(an)f(executable)h(lik)o(e)h
2541     Fo(")p Fn(w)o(c)p Fo(")25 1130 y Fl(\000)30 b Fo(ty)15 b Fn(is)h(of)e(t)o(yp)
2542     q(e)i Fo(sockbuf::type)d Fn(indicating)k(the)e(t)o(yp)q(e)h(of)e(the)i
2543     (connection)25 1204 y Fl(\000)30 b Fo(proto)14 b Fn(is)i(an)f
2544     Fo(int)g Fn(denoting)h(a)f(proto)q(col)g(n)o(um)o(b)q(er)0
2545     1341 y Fo(ipipestream)f(ip\(cmd\))240 1416 y Fn(construct)22
2546     b(an)f Fo(ipipestream)g Fn(ob)s(ject)g Fo(ip)g Fn(suc)o(h)h(that)g(the)f
2547     (output)h(of)f(the)h(command)g Fo(cmd)f Fn(is)240 1478 y(a)o(v)m(ailable)c
2548     (as)e(input)h(through)f Fo(ip)p Fn(.)0 1553 y Fo(opipestream)f(op\(cmd\))240
2549     1628 y Fn(construct)h(an)g Fo(opipestream)e Fn(ob)s(ject)h
2550     Fo(op)h Fn(suc)o(h)g(that)f(the)i(input)f(for)g(the)g(command)g
2551     Fo(cmd)f Fn(can)h(b)q(e)240 1690 y(send)h(through)f Fo(op)p
2552     Fn(.)0 1765 y Fo(iopipestream)f(iop\(cmd\))240 1839 y Fn(construct)22
2553     b(an)f Fo(iopipestream)f Fn(ob)s(ject)i Fo(iop)f Fn(suc)o(h)h(that)f(the)h
2554     (input)h(and)f(the)g(output)g(to)f(the)240 1902 y(command)15
2555     b Fo(cmd)g Fn(can)g(b)q(e)h(sen)o(t)f(and)g(receiv)o(ed)i(through)e
2556     Fo(iop)p Fn(.)0 1976 y Fo(iopipestream)f(iop\(ty,)g(proto\))240
2557     2051 y Fn(construct)20 b(a)h Fo(iopipestream)e Fn(ob)s(ject)h
2558     Fo(iop)g Fn(whose)h(so)q(c)o(k)o(et)f(is)h(a)g(so)q(c)o(k)o(etpair)f(of)g(t)o
2559     (yp)q(e)h Fo(ty)g Fn(with)240 2113 y(proto)q(col)15 b(n)o(um)o(b)q(er)g
2560     Fo(proto)p Fn(.)k Fo(ty)c Fn(defaults)h(to)e Fo(sockbuf::sock_stream)e
2561     Fn(and)k Fo(proto)e Fn(defaults)i(to)240 2176 y(0.)k(Ob)s(ject)15
2562     b Fo(iop)g Fn(can)g(b)q(e)h(used)g(either)f(as)g(a)g Fo(pipe)g
2563     Fn(or)f(as)h(a)g Fo(socketpair)p Fn(.)0 2250 y Fo(iop.pid)f(\(\))240
2564     2325 y Fn(return)g(the)g(pro)q(cess)g(id)h(of)f(the)g(c)o(hild)h(if)g(the)f
2565     (curren)o(t)g(pro)q(cess)g(is)g(the)g(paren)o(t)g(or)g(return)f(0.)20
2566     b(If)14 b(the)240 2387 y(pro)q(cess)h(has)h(not)e(fork)o(ed)h(y)o(et,)f
2567     (return)i(-1.)0 2462 y Fo(iopipestream::fork)d(\(\))240 2537
2568     y(fork\(\))k Fn(is)i(a)e(static)h(function)h(of)e(class)i Fo(iopipestream)p
2569     Fn(.)26 b Fo(fork\(\))17 b Fn(forks)h(the)g(curren)o(t)g(pro)q(cess)240
2570     2599 y(and)13 b(appropriately)h(sets)e(the)h Fo(cpid)f Fn(\014eld)i(of)f(the)
2571     g Fo(iopipestream)e Fn(ob)s(jects)h(that)g(ha)o(v)o(e)h(not)f(fork)o(ed)240
2572     2661 y(y)o(et.)p eop
2573     %%Page: 34 36
2574     bop 0 -58 a Fn(Chapter)15 b(9:)k(pip)q(estream)d(Classes)1297
2575     b(34)0 183 y Fm(9.1)33 b(pip)r(estream)15 b(as)g(pip)r(e)62
2576     321 y Fo(pipe)g Fn(is)h(used)f(to)g(comm)o(unicate)g(b)q(et)o(w)o(een)h
2577     (paren)o(t)f(and)g(c)o(hild)i(pro)q(cesses)f(in)g(the)f Fi(unix)k
2578     Fn(domain.)62 458 y(The)d(follo)o(wing)h(example)g(illustrates)g(ho)o(w)e(to)
2579     h(use)g Fo(iopipestream)e Fn(class)j(as)e(a)h Fo(pipe)p Fn(.)22
2580     b(The)16 b(paren)o(t)f(sends)0 521 y(the)g(string)h Fo(")p
2581     Fn(I)f(am)g(the)h(paren)o(t)p Fo(")f Fn(to)f(the)i(c)o(hild)h(and)e(receiv)o
2582     (es)h(the)g(string)f Fo(")p Fn(I)h(am)f(the)g(c)o(hild)p Fo(")i
2583     Fn(from)e(c)o(hild.)22 b(The)0 583 y(c)o(hild,)e(in)e(turn,)g(receiv)o(es)h
2584     (the)f(string)g Fo(")p Fn(I)g(am)f(the)h(paren)o(t)p Fo(")f
2585     Fn(from)g(paren)o(t)h(and)g(sends)g(the)g(string)f Fo(")p Fn(I)i(am)e(the)0
2586     645 y(c)o(hild)p Fo(")j Fn(to)e(the)h(paren)o(t.)30 b(Note)18
2587     b(the)h(same)g Fo(iopipestream)e Fn(ob)s(ject)h(is)h(used)g(for)f(input)i
2588     (and)f(output)f(in)i(eac)o(h)0 708 y(pro)q(cess.)120 845 y
2589     Fo(#include)j(<pipestream.h>)120 945 y(int)g(main\(\))120 995
2590     y({)311 1044 y(iopipestream)f(p;)311 1094 y(if)h(\()h(p.fork\(\))f(\))h({)502
2591     1144 y(char)f(buf[128];)502 1194 y(p)h(<<)f("I)h(am)f(the)h(parent\\n")e(<<)i
2592     (flush;)502 1244 y(cout)f(<<)h("parent:)e(";)502 1293 y(while\(p)h(>>)g
2593     (buf\))693 1343 y(cout)g(<<)h(buf)f(<<)h(')f(';)502 1393 y(cout)g(<<)h(endl;)
2594     311 1443 y(}else)f({)502 1493 y(char)g(buf[128];)502 1542 y(p.getline\(buf,)f
2595     (127\);)502 1592 y(cout)h(<<)h("child:)f(")g(<<)h(buf)f(<<)h(endl;)502
2596     1642 y(p)g(<<)f("I)h(am)f(the)h(child\\n")f(<<)g(flush;)311
2597     1692 y(})311 1742 y(return)g(0;)120 1792 y(})0 2021 y Fm(9.2)33
2598     b(pip)r(estream)15 b(as)g(so)r(c)n(k)n(etpair)62 2159 y Fn(Lik)o(e)23
2599     b(pip)q(es,)j(so)q(c)o(k)o(etpairs)c(also)g(allo)o(w)g(comm)o(unication)h(b)q
2600     (et)o(w)o(een)g(paren)o(t)f(and)g(c)o(hild)i(pro)q(cesses.)42
2601     b(But)0 2221 y(so)q(c)o(k)o(etpairs)15 b(are)f(more)h(\015exible)i(than)e
2602     (pip)q(es)h(in)g(the)f(sense)g(that)f(they)h(let)h(the)f(users)g(c)o(ho)q
2603     (ose)g(the)g(so)q(c)o(k)o(et)f(t)o(yp)q(e)0 2283 y(and)h(proto)q(col.)62
2604     2421 y(The)f(follo)o(wing)h(example)g(illustrates)g(the)f(use)g(of)g
2605     Fo(iopipestream)e Fn(class)j(as)e(a)h Fo(socketpair)e Fn(whose)i(t)o(yp)q(e)g
2606     (is)0 2483 y Fo(sockbuf::sock_dgram)p Fn(.)i(The)d(paren)o(t)f(sends)h(the)f
2607     (string)h Fo(")p Fn(I)f(am)g(the)h(paren)o(t)p Fo(")f Fn(to)f(the)i(c)o(hild)
2608     h(and)f(receiv)o(es)g(the)0 2545 y(string)h Fo(")p Fn(I)h(am)f(the)g(c)o
2609     (hild)p Fo(")i Fn(from)e(the)g(c)o(hild.)21 b(The)15 b(c)o(hild,)h(in)f
2610     (turn,)f(receiv)o(es)h(and)g(sends)g(the)f(strings)g Fo(")p
2611     Fn(I)h(am)f(the)0 2608 y(paren)o(t)p Fo(")i Fn(and)g Fo(")p
2612     Fn(I)g(am)g(the)g(c)o(hild)p Fo(")i Fn(resp)q(ectiv)o(ely)g(from)d(and)i(to)e
2613     (the)i(paren)o(t.)22 b(Note)16 b(in)h(the)f(follo)o(wing)h(example)0
2614     2670 y(that)d(the)i(same)f Fo(iopipestream)e Fn(ob)s(ject)i(is)h(used)f(for)g
2615     (b)q(oth)g(the)g(input)i(and)e(the)g(output)g(in)h(eac)o(h)g(pro)q(cess.)p
2616     eop
2617     %%Page: 35 37
2618     bop 0 -58 a Fn(Chapter)15 b(9:)k(pip)q(estream)d(Classes)1297
2619     b(35)120 183 y Fo(#include)23 b(<pipestream.h>)120 283 y(int)g(main\(\))120
2620     333 y({)311 382 y(iopipestream)f(p\(sockbuf::sock_dgram\);)311
2621     432 y(if)h(\()h(iopipestream::fork\(\))d(\))j({)502 482 y(char)f(buf[128];)
2622     502 532 y(p)h(<<)f("I)h(am)f(the)h(parent\\n")e(<<)i(flush;)502
2623     582 y(p.getline\(buf,)e(127\);)502 632 y(cout)h(<<)h("parent:)e(")i(<<)g(buf)
2624     f(<<)h(endl;)311 681 y(}else)f({)502 731 y(char)g(buf[128];)502
2625     781 y(p.getline\(buf,)f(127\);)502 831 y(cout)h(<<)h("child:)f(")g(<<)h(buf)f
2626     (<<)h(endl;)502 881 y(p)g(<<)f("I)h(am)f(the)h(child\\n")f(<<)g(flush;)311
2627     930 y(})311 980 y(return)g(0;)120 1030 y(})0 1276 y Fm(9.3)33
2628     b(pip)r(estream)15 b(as)g(p)r(op)r(en)62 1415 y Fo(popen)c
2629     Fn(is)h(used)f(to)g(call)h(an)g(executable)g(and)f(send)h(inputs)h(and)e
2630     (outputs)g(to)g(that)f(executable.)20 b(F)l(or)10 b(example,)0
2631     1477 y(the)15 b(follo)o(wing)h(example)g(executes)g Fo(")p
2632     Fn(/bin/date)p Fo(")p Fn(,)f(gets)g(its)g(output,)g(and)g(prin)o(ts)g(it)h
2633     (to)f(stdout.)120 1617 y Fo(#include)23 b(<pipestream.h>)120
2634     1716 y(int)g(main)h(\(\))120 1766 y({)215 1816 y(char)g(buf[128];)215
2635     1866 y(ipipestream)f(p\("/bin/date"\);)215 1965 y(p.getline)g(\(buf,)g
2636     (127\);)215 2015 y(cout)h(<<)f(buf)h(<<)f(endl;)215 2065 y(return)g(0;)120
2637     2115 y(})62 2331 y Fn(Here)16 b(is)f(an)h(example)g(that)e(prin)o(ts)h
2638     Fo(")p Fn(Hello)i(W)l(orld!!)p Fo(")d Fn(on)i(stdout.)j(It)c(uses)h
2639     Fo(opipestream)d Fn(ob)s(ject.)120 2471 y Fo(#include)23 b(<pipestream.h>)120
2640     2570 y(int)g(main)h(\(\))120 2620 y({)215 2670 y(opipestream)f
2641     (p\("/bin/cat"\);)p eop
2642     %%Page: 36 38
2643     bop 0 -58 a Fn(Chapter)15 b(9:)k(pip)q(estream)d(Classes)1297
2644     b(36)215 183 y Fo(p)24 b(<<)g("Hello)f(World!!\\n")f(<<)i(endl;)215
2645     233 y(return)f(0;)120 283 y(})62 495 y Fn(The)16 b(follo)o(wing)g(example)g
2646     (illustrates)g(the)f(use)h(of)e Fo(iopipestream)g Fn(for)h(b)q(oth)g(input)h
2647     (and)f(output.)120 632 y Fo(#include)23 b(<pipestream.h>)120
2648     731 y(int)g(main\(\))120 781 y({)311 831 y(char)g(buf[128];)311
2649     881 y(iopipestream)f(p\("lpc"\);)311 930 y(p)i(<<)f("help\\nquit\\n")f(<<)i
2650     (flush;)311 980 y(while)f(\()h(p.getline\(buf,)e(127\))h(\))h(cout)f(<<)h
2651     (buf)f(<<)h(endl;)311 1030 y(return)f(0;)120 1080 y(})p eop
2652     %%Page: 37 39
2653     bop 0 -58 a Fn(Chapter)15 b(10:)k(F)l(ork)c(Class)1440 b(37)0
2654     183 y Fk(10)41 b(F)-7 b(ork)15 b(Class)62 370 y Fn(Y)l(ou)h(can)f(e\013ectiv)
2655     o(ely)i(use)f(the)f Fo(Fork)g Fn(wrapp)q(er)g(class)h(to)f(create)g(c)o(hild)
2656     i(pro)q(cesses.)k(Y)l(ou)16 b(can)f(use)h(the)g Fo(Fork)0 432
2657     y Fn(class,)f(instead)h(of)f(directly)h(using)g(the)g(system)e(call)j(fork)d
2658     (\(\),)g(if)i(y)o(ou)f(desire)h(the)f(follo)o(wing:)37 569
2659     y Fl(\017)30 b Fn(Av)o(oid)16 b(zom)o(bie)f(pro)q(cesses)37
2660     644 y Fl(\017)30 b Fn(Optionally)17 b(kill)g(c)o(hild)g(pro)q(cesses)e(when)h
2661     (the)f(paren)o(t)g(pro)q(cess)h(terminates.)37 719 y Fl(\017)30
2662     b Fn(W)l(an)o(t)14 b(to)h(kno)o(w)g(the)g(reason)g(for)f(abnormal)i
2663     (termination)f(of)g(c)o(hild)i(pro)q(cesses.)62 930 y(In)f(what)f(follo)o
2664     (ws,)25 1067 y Fl(\000)30 b Fo(killchild)14 b Fn(is)i(an)f(in)o(teger.)25
2665     1142 y Fl(\000)30 b Fo(reason)14 b Fn(is)i(an)f(in)o(teger.)25
2666     1217 y Fl(\000)30 b Fo(signo)14 b Fn(is)i(a)f(v)m(alid)i(signal.)25
2667     1291 y Fl(\000)30 b Fo(f)15 b Fn(is)h(a)f Fo(Fork)f Fn(ob)s(ject.)0
2668     1428 y Fo(Fork)h(f\(killchild,)e(reason\))240 1503 y Fn(constructs)i(a)g
2669     Fo(Fork)g Fn(ob)s(ject)f Fo(f)p Fn(.)20 b(The)c(constructor)e(creates)h(a)g
2670     (c)o(hild)i(pro)q(cess.)j(When)c(the)f(paren)o(t)240 1565 y(pro)q(cess)h
2671     (terminates,)g(it)h(will)g(kill)h(the)e(c)o(hild)i(pro)q(cess)e(if)h
2672     Fo(killchild)e Fn(is)h(not)g(0.)22 b(Otherwise,)17 b(the)240
2673     1628 y(paren)o(t)c(pro)q(cess)g(will)i(w)o(ait)d(un)o(til)j(all)f(its)f(c)o
2674     (hild)i(pro)q(cesses)e(die.)20 b(If)14 b Fo(reason)e Fn(is)i(not)e(0,)h(then)
2675     g(it)h(giv)o(es)240 1690 y(the)h(reason)g(for)g(a)g(c)o(hild)h(pro)q(cess's)f
2676     (death)h(on)f(the)g(stderr.)0 1765 y Fo(f.is_child)f(\(\))240
2677     1839 y Fn(returns)j(1)f(if)i(the)f(curren)o(t)g(pro)q(cess)g(is)g(the)g(c)o
2678     (hild)i(pro)q(cess)e(follo)o(wing)h(the)f(fork)f(in)i(constructing)240
2679     1902 y(the)d Fo(Fork)g Fn(ob)s(ject)g Fo(f)p Fn(.)k(Otherwise,)d(return)f(0.)
2680     0 1976 y Fo(f.is_parent)f(\(\))240 2051 y Fn(returns)g(1)h(if)g(the)f(curren)
2681     o(t)h(pro)q(cess)g(is)g(the)f(paren)o(t)h(pro)q(cess)f(follo)o(wing)i(the)e
2682     (fork)g(in)i(constructing)240 2113 y(the)f Fo(Fork)g Fn(ob)s(ject)g
2683     Fo(f)p Fn(.)k(Otherwise,)d(return)f(0.)0 2188 y Fo(f.process_id)f(\(\))240
2684     2263 y Fn(returns)h(the)f(pro)q(cess)h(id)h(of)e(the)h(c)o(hild)h(pro)q
2685     (cess,)f(if)g(the)g(curren)o(t)g(pro)q(cess)g(is)g(the)g(paren)o(t)f(pro)q
2686     (cess.)240 2325 y(Returns)i(0,)e(if)i(the)f(curren)o(t)g(pro)q(cess)h(is)f
2687     (the)h(c)o(hild)h(pro)q(cess.)j(Returns)15 b(-1,)g(if)h(fork)e(failed.)0
2688     2400 y Fo(Fork::suicide_signal)e(\(signo\))240 2474 y Fn(is)k(a)f(static)h
2689     (function.)22 b(Up)q(on)16 b(the)f(reciept)i(of)e(the)h(signal)g
2690     Fo(signo)p Fn(,)f(the)h(curren)o(t)f(pro)q(cess)h(will)h(kill)240
2691     2537 y(all)e(its)f(c)o(hild)i(pro)q(cesses)e(created)g(through)g
2692     Fo(Fork::Fork\(int,)f(int\))h Fn(irresp)q(ectiv)o(e)h(of)f(the)g(v)m(alue)240
2693     2599 y(of)h(the)h Fo(killchild)f Fn(\015ag)g(used)h(in)h(the)f(construction)g
2694     (of)f(the)h Fo(Fork)f Fn(ob)s(jects.)21 b Fo(signo)15 b Fn(defaults)i(to)240
2695     2661 y(SIGTERM)e(signal.)p eop
2696     %%Page: 38 40
2697     bop 0 -58 a Fn(Chapter)15 b(10:)k(F)l(ork)c(Class)1440 b(38)0
2698     183 y Fm(10.1)32 b(F)-6 b(ork)17 b(Example)62 336 y Fn(The)g(follo)o(wing)g
2699     (example)g(illustrates)h(the)e(use)h(of)f(the)h Fo(Fork)e Fn(class)i(to)f
2700     (create)g(c)o(hild)i(pro)q(cesses.)24 b(First,)16 b(w)o(e)0
2701     398 y(set)e(up)i Fi(SIGTERM)j Fn(signal)d(handler)g(to)e(kill)i(all)g(the)f
2702     (c)o(hild)h(pro)q(cesses,)f(b)o(y)g(callling)i Fo(Fork::suicide_signal)0
2703     460 y(\(\))p Fn(.)j(Second,)15 b(w)o(e)g(create)g(sev)o(eral)g(c)o(hild)i
2704     (and)f(grandc)o(hild)g(pro)q(cesses.)62 612 y(Y)l(ou)g(can)f(kill)j(the)d
2705     (top)g(most)g(paren)o(t)g(pro)q(cess)g(and)h(all)g(its)g(c)o(hildren)h(b)o(y)
2706     e(sending)i(a)e Fi(SIGTERM)20 b Fn(signal)d(to)0 675 y(the)e(top)g(most)f
2707     (paren)o(t)h(pro)q(cess.)120 827 y Fo(//)24 b(tfork.C)120 877
2708     y(#include)f(<iostream.h>)120 927 y(#include)g(<Fork.h>)120
2709     1026 y(static)g(void)g(print)h(\(char*)f(name,)g(pid_t)g(child\))120
2710     1076 y({)168 1126 y(if)g(\(child\))215 1176 y(cerr)h(<<)f("Parent)g(")h(<<)g
2711     (getppid)e(\(\))i(<<)g(";)f(")263 1225 y(<<)h(name)f(<<)h(')f(')h(<<)g
2712     (getpid)f(\(\))g(<<)h(";)g(Child)f(")g(<<)h(child)f(<<)h(";\\n";)120
2713     1275 y(})120 1375 y(int)f(main)h(\(int)f(ac,)h(char**)f(av\))120
2714     1425 y({)168 1474 y(Fork::suicide_signal)e(\(SIGTERM\);)168
2715     1574 y(Fork)i(a\(0,)g(1\);)168 1674 y(print)g(\("a",)g(a.process_id)f
2716     (\(\)\);)168 1773 y(if)h(\(a.is_child)g(\(\)\))g({)215 1823
2717     y(sleep)h(\(3000\);)168 1873 y(})f(else)h(if)f(\(a.is_parent)g(\(\)\))g({)215
2718     1923 y(Fork)h(b)f(\(1,)h(1\);)215 1973 y(print)g(\("b",)f(b.process_id)f
2719     (\(\)\);)215 2022 y({)263 2072 y(Fork)h(c)h(\(b.is_parent)e(\(\),)i(1\);)263
2720     2122 y(if)g(\(b.is_child)e(\(\)\))120 2172 y(print)h(\("cchild",)g
2721     (c.process_id)f(\(\)\);)263 2222 y(else)120 2271 y(print)h(\("cparent",)g
2722     (c.process_id)f(\(\)\);)263 2321 y(if)i(\(c.is_child)e(\(\)\))i({)120
2723     2371 y(sleep)f(\(3000\);)120 2421 y(return)g(0;)263 2471 y(})215
2724     2521 y(})215 2570 y(if)h(\(b.is_child)e(\(\)\))i({)263 2620
2725     y(sleep)f(\(120\);)263 2670 y(return)g(0x8;)p eop
2726     %%Page: 39 41
2727     bop 0 -58 a Fn(Chapter)15 b(10:)k(F)l(ork)c(Class)1440 b(39)215
2728     183 y Fo(})168 233 y(})168 333 y(return)23 b(0;)120 382 y(})p
2729     eop
2730     %%Page: 40 42
2731     bop 0 -58 a Fn(Chapter)15 b(11:)k(Class)c(proto)q(col)1368
2732     b(40)0 183 y Fk(11)41 b(Class)15 b(proto)r(col)62 382 y Fo(protocol)i
2733     Fn(class)h(is)h(the)f(base)g(class)g(for)f(all)i(the)f(other)f(application)j
2734     (proto)q(col)e(classes)g(lik)o(e)h Fo(echo)p Fn(,)f Fo(smtp)p
2735     Fn(,)0 444 y(etc.)h Fo(protocol)13 b Fn(is)i(deriv)o(ed)f(publicly)j(from)c
2736     Fo(iosockstream)p Fn(.)18 b(It)c(uses)g Fo(protocolbuf)e Fn(class,)i(a)g
2737     (nested)g(class)g(of)0 506 y Fo(protocol)p Fn(,)g(as)g(its)i(stream)e
2738     (bu\013er.)62 646 y(The)g Fo(protocol)e Fn(class)h(is)h(an)f(abstract)g
2739     (class)g(and)h(th)o(us,)f(y)o(ou)g(cannot)g(instan)o(tiate)g(an)g(ob)s(ject)g
2740     (of)f Fo(protocol)p Fn(.)0 891 y Fm(11.1)32 b(Class)14 b(proto)r(col::proto)r
2741     (colbuf)62 1030 y Fo(protocol::protocolbuf)i Fn(class)k(is)f(publicly)j
2742     (deriv)o(ed)e(from)e Fo(sockinetbuf)g Fn(and)h(th)o(us,)g(it)h(inherits)g
2743     (all)0 1093 y(the)c(latter's)f(public)j(mem)o(b)q(er)e(functions.)23
2744     b(In)16 b(addition,)h(the)f Fo(protocolbuf)e Fn(de\014nes)j(the)f(follo)o
2745     (wing)h(mem)o(b)q(er)0 1155 y(functions.)62 1294 y(In)f(what)f(follo)o(ws,)25
2746     1434 y Fl(\000)30 b Fo(p)15 b Fn(is)h(an)f(ob)s(ject)f(of)h(a)g(non-abstract)
2747     g(class)g(deriv)o(ed)h(from)f Fo(protocolbuf)p Fn(.)25 1511
2748     y Fl(\000)30 b Fo(pname)14 b Fn(is)i(the)f(transp)q(ort)g(proto)q(col)g(name)
2749     g(whic)o(h)h(is)g(either)g Fo(protocol::tcp)d Fn(or)i Fo(protocol::udp)p
2750     Fn(.)25 1588 y Fl(\000)30 b Fo(addr)15 b Fn(is)g(an)g(unsigned)i(long)f
2751     (denoting)f(the)h(v)m(alid)h(address)e(of)g(a)f(mac)o(hine)j(in)f(host)e(b)o
2752     (yte)h(order.)25 1665 y Fl(\000)30 b Fo(host)15 b Fn(is)g(a)g(c)o(har)g
2753     (string)g(denoting)h(the)f(name)h(of)e(a)h(mac)o(hine)h(lik)o(e)h
2754     Fo(")p Fn(k)o(elvin.seas.virginia.edu)p Fo(")p Fn(.)25 1742
2755     y Fl(\000)30 b Fo(portno)14 b Fn(is)i(an)f(in)o(t)h(and)f(denotes)g(the)h(p)q
2756     (ort)f(n)o(um)o(b)q(er)g(in)h(host)f(b)o(yte)g(order.)0 1881
2757     y Fo(protocol::protocolbuf::pro)o(tocolbu)o(f)e(\(pname\))240
2758     1958 y Fn(constructs)i Fo(protocolbuf)e Fn(ob)s(ject)i(with)h(the)f(transp)q
2759     (ort)f(proto)q(col)h(set)g(to)g Fo(pname)p Fn(.)0 2036 y Fo(p.protocol_name)e
2760     (\(\))240 2113 y Fn(returns)i(the)g(name)h(of)e(the)i(transp)q(ort)e(proto)q
2761     (col)h(of)g Fo(p)g Fn(as)g(a)g(c)o(har)f(string.)0 2190 y Fo(p.rfc_name)g
2762     (\(\))240 2267 y Fn(returns)25 b(the)h(name)f(of)g(the)g(application)i(proto)
2763     q(col)f(name)f(of)g Fo(p)g Fn(as)g(a)g(c)o(har)g(string.)51
2764     b Fo(pro-)240 2329 y(tocolbuf::rfc_name)13 b(\(\))26 b Fn(is)h(a)f(pure)h
2765     (virtual)g(function;)32 b(th)o(us,)d(an)o(y)d(class)g(deriv)o(ed)i(from)240
2766     2391 y Fo(protocol::protocolbuf)12 b Fn(should)k(pro)o(vide)g(a)f
2767     (de\014nition)i(for)e Fo(protocolbuf::rfc_name)d(\(\))p Fn(.)0
2768     2468 y Fo(p.rfc_doc)i(\(\))240 2545 y Fn(returns)21 b(the)g(RF)o(C)f(do)q
2769     (cumen)o(t)i(name)f(of)f(the)h(application)i(proto)q(col)d(of)h
2770     Fo(p)g Fn(as)f(a)h(c)o(har)f(string.)240 2608 y Fo(protocolbuf::rfc_doc)12
2771     b(\(\))22 b Fn(is)g(a)g(pure)g(virtual)h(function;)j(th)o(us,)d(an)o(y)e
2772     (class)i(deriv)o(ed)g(from)240 2670 y Fo(protocol::protocolbuf)12
2773     b Fn(should)k(pro)o(vide)g(a)f(de\014nition)i(for)e Fo(protocolbuf::rfc_doc)d
2774     (\(\))p Fn(.)p eop
2775     %%Page: 41 43
2776     bop 0 -58 a Fn(Chapter)15 b(11:)k(Class)c(proto)q(col)1368
2777     b(41)0 183 y Fo(p.serve_clients)13 b(\(portno\))240 258 y Fn(con)o(v)o(erts)j
2778     Fo(p)g Fn(in)o(to)g(a)g(serv)o(er.)23 b(Use)17 b(the)g(p)q(ort)f(sp)q
2779     (eci\014ed)i(in)f Fo(/etc/services)e Fn(for)h(the)g(application)240
2780     320 y(if)i Fo(portno)f(<)g Fn(0.)26 b(Use)18 b(a)f(default)h(p)q(ort)f(if)h
2781     Fo(0)d(<=)g(portno)f(<=)h(1024)p Fn(.)26 b(Otherwise,)19 b(use)f
2782     Fo(portno)e Fn(as)240 382 y(the)e(p)q(ort)g(to)g(accept)g(clien)o(ts)i
2783     (requesting)f(service.)20 b Fo(protocolbuf::serve_clients\(\))11
2784     b Fn(is)j(pure)240 445 y(virtual)h(function;)g(th)o(us,)f(an)o(y)g(class)h
2785     (deriv)o(ed)g(from)f Fo(protocol::protocolbuf)d Fn(should)k(pro)o(vide)240
2786     507 y(a)g(de\014nition)i(for)d Fo(protocolbuf::serve_clients\(\))p
2787     Fn(.)240 582 y(Please)i(do)f(not)g(c)o(hange)g(the)g(meaning)h(of)f
2788     Fo(portno)f Fn(when)i(y)o(ou)f(deriv)o(e)h(y)o(our)e(o)o(wn)h(class.)0
2789     656 y Fo(p.bind)f(\(\))34 b Fn(same)15 b(as)g Fo(p.serve_clients)e(\(-1\))p
2790     Fn(.)0 731 y Fo(p.connect)h(\(\))240 806 y Fn(connects)i(to)e(the)h(lo)q(cal)
2791     i(host's)d(serv)o(er)h(for)f(the)i(application.)21 b Fo(p)15
2792     b Fn(acts)g(as)g(the)g(clien)o(t.)0 881 y Fo(p.connect)f(\(addr\))240
2793     955 y Fn(connects)h(to)e(the)h(serv)o(er)g(running)h(at)f(the)g(mac)o(hine)h
2794     (with)g(address,)f Fo(addr)p Fn(.)k Fo(p)c Fn(acts)g(as)g(the)g(clien)o(t.)0
2795     1030 y Fo(p.connect)g(\(host\))240 1105 y Fn(connects)i(to)e(the)h(serv)o(er)
2796     g(running)i(at)d(the)h(mac)o(hine,)h Fo(host)p Fn(.)j Fo(p)c
2797     Fn(acts)g(as)g(the)g(clien)o(t.)0 1180 y Fo(p.connect)f(\(host,)g(portno\))
2798     240 1254 y Fn(connects)19 b(to)e(the)i(serv)o(er)f(servicing)i(clien)o(ts)f
2799     (at)f Fo(portno)f Fn(at)h(the)g(mac)o(hine,)i Fo(host)p Fn(.)29
2800     b(Unlik)o(e)20 b(this)240 1316 y(connect)13 b(call,)g(the)f(other)g(v)m
2801     (arian)o(ts)g(of)g(connect)g(uses)g(the)h(p)q(ort)e(sp)q(eci\014ed)k(in)e
2802     (the)f Fo(/etc/services)240 1379 y Fn(\014le.)p eop
2803     %%Page: 42 44
2804     bop 0 -58 a Fn(Chapter)15 b(12:)k(Ec)o(ho)c(Class)1433 b(42)0
2805     183 y Fk(12)41 b(Ec)n(ho)15 b(Class)62 374 y Fn(The)g Fo(echo)g
2806     Fn(class)g(implemen)o(ts)h(RF)o(C)f(862.)j(An)e Fo(echo)e Fn(ob)s(ject,)g(as)
2807     g(a)h(clien)o(t,)h(will)g(get)f(bac)o(k)g(what)f(ev)o(er)h(data)0
2808     437 y(it)f(sends)f(to)g(an)g Fo(echo)g Fn(serv)o(er.)19 b(Similarly)l(,)c(an)
2809     f Fo(echo)e Fn(ob)s(ject,)h(as)g(a)g(serv)o(er,)g(will)i(ec)o(ho)e(bac)o(k)h
2810     (the)f(data)g(it)g(receiv)o(es)0 499 y(from)h(its)i(clien)o(t.)62
2811     637 y(The)i Fo(echo)f Fn(class)h(is)g(deriv)o(ed)g(from)f Fo(protocol)g
2812     Fn(class,)h(and)f(uses)h Fo(echo::echobuf)e Fn(as)h(its)h(stream)e(bu\013er.)
2813     0 699 y Fo(echo::echobuf)d Fn(is)j(in)g(turn)f(is)h(deriv)o(ed)g(from)f
2814     Fo(protocol::protcolbuf)p Fn(.)62 837 y(In)h(what)f(follo)o(ws,)25
2815     975 y Fl(\000)30 b Fo(e)15 b Fn(is)h(a)f Fo(echo)f Fn(ob)s(ject.)25
2816     1051 y Fl(\000)30 b Fo(pname)14 b Fn(is)i(a)f(transp)q(ort)f(proto)q(col)h
2817     (name)h(and)f(m)o(ust)g(b)q(e)h(either)f Fo(protocol::tcp)f
2818     Fn(or)h Fo(protocol::udp)p Fn(.)0 1188 y Fo(echo)g(e)g(\(pname\))240
2819     1264 y Fn(constructs)g(the)g Fo(echo)g Fn(ob)s(ject,)f Fo(e)h
2820     Fn(with)g Fo(pname)g Fn(as)g(its)g(transp)q(ort)f(proto)q(col)i(name.)0
2821     1340 y Fo(echo::operator)d(->)i(\(\))240 1415 y Fn(an)g Fo(echo)g
2822     Fn(ob)s(ject)f(is)i(a)f(smart)f(p)q(oin)o(ter)i(for)e(the)i(underlying)h
2823     Fo(echobuf)p Fn(.)0 1631 y Fg(12.0.1)29 b(tsec)n(ho.C)120 1769
2824     y Fo(//)24 b(echo)f(server.)g(Serves)g(clients)g(at)g(port)h(4000.)120
2825     1818 y(#include)f(<echo.h>)120 1868 y(#include)g(<stdlib.h>)120
2826     1968 y(int)g(main)h(\(\))120 2018 y({)168 2068 y(echo)f(server)g
2827     (\(protocol::tcp\);)168 2117 y(server->serve_clients)e(\(4000\);)168
2828     2167 y(return)i(1;)120 2217 y(})0 2432 y Fg(12.0.2)29 b(tcec)n(ho.C)120
2829     2570 y Fo(//)24 b(echo)f(client.)g(Sends)g("mary)g(had)h(a)f(litte)h(lamb")f
2830     (to)g(the)h(server)120 2620 y(#include)f(<echo.h>)120 2670
2831     y(#include)g(<stdlib.h>)p eop
2832     %%Page: 43 45
2833     bop 0 -58 a Fn(Chapter)15 b(12:)k(Ec)o(ho)c(Class)1433 b(43)120
2834     233 y Fo(int)23 b(main)h(\(\))120 283 y({)168 333 y(echo)f
2835     (e\(protocol::tcp\);)168 432 y(e->connect)f(\("kelvin.seas.virginia.edu",)e
2836     (4000\);)168 532 y(cout)j(<<)h(e->rfc_name)e(\(\))i(<<)f(')h(')g(<<)f
2837     (e->rfc_doc)g(\(\))g(<<)h(endl;)168 632 y(e)f(<<)h("mary)f(had)h(a)f(little)g
2838     (lamb\\r\\n")g(<<)h(flush;)168 731 y(char)f(buf)g([256];)168
2839     781 y(e.getline)f(\(buf,)i(255\);)168 881 y(cout)f(<<)h("got)f(back:)g(")h
2840     (<<)f(buf)h(<<)f(endl;)168 930 y(return)g(0;)120 980 y(})p
2841     eop
2842     %%Page: 44 46
2843     bop 0 -58 a Fn(Chapter)15 b(13:)k(SMTP)c(Class)1400 b(44)0
2844     183 y Fk(13)41 b(SMTP)15 b(Class)62 359 y Fn(The)k Fo(smtp)f
2845     Fn(class,)i(whic)o(h)f(is)h(deriv)o(ed)f(from)f Fo(protocol)g
2846     Fn(class,)i(implemen)o(ts)f(RF)o(C)g(821.)29 b(It)19 b(can)g(b)q(e)g(used)0
2847     422 y(only)d(as)f(a)f(clien)o(t.)22 b(Serv)o(er)15 b(function)h(is)f(not)g(y)
2848     o(et)g(implemen)o(ted.)62 559 y Fo(smtp)h Fn(uses)g Fo(smtp::smtpbuf)f
2849     Fn(as)g(its)i(underlying)h(stream)d(bu\013er.)23 b(Also,)16
2850     b(lik)o(e)i(the)e Fo(protocol)f Fn(class,)i Fo(smtp)0 621 y
2851     Fn(is)f(a)f(smart)f(p)q(oin)o(ter)h(class)h(for)f(it)g(is)h
2852     Fo(smtp::smtpbuf)p Fn(.)62 758 y(In)g(what)f(follo)o(ws,)25
2853     895 y Fl(\000)30 b Fo(s)15 b Fn(is)h(an)f Fo(smtp)f Fn(ob)s(ject.)25
2854     967 y Fl(\000)30 b Fo(sb)15 b Fn(is)h(an)f Fo(smtp::smtpbuf)e
2855     Fn(ob)s(ject.)25 1039 y Fl(\000)30 b Fo(io)15 b Fn(is)h(a)e(p)q(oin)o(ter)i
2856     (to)f(an)g Fo(ostream)p Fn(.)25 1111 y Fl(\000)30 b Fo(buf)15
2857     b Fn(is)g(a)g(c)o(har)g(bu\013er)g(of)g(length)h Fo(buflen)p
2858     Fn(.)25 1183 y Fl(\000)30 b Fo(str,)15 b(str0,)f(str1,)h(...)f
2859     Fn(are)h(all)h(c)o(har)f(strings.)0 1320 y Fo(smtp)g(s)g(\(io\))240
2860     1392 y Fn(constructs)e(an)h Fo(smtp)e Fn(clien)o(t,)j Fo(s)p
2861     Fn(.)k(An)o(y)14 b(resp)q(onse)g(the)f(clien)o(t)i(gets)e(from)g(the)h(serv)o
2862     (er)f(is)h(sen)o(t)f(to)g(the)240 1455 y(ostream,)h Fo(io)p
2863     Fn(.)0 1527 y Fo(sb.get_response)f(\(\))240 1599 y Fn(gets)i(the)g(serv)o(er)
2864     g(resp)q(onse)h(and)f(sends)h(it)f(to)g Fo(io)f Fn(of)h(the)h
2865     Fo(smtpbuf)p Fn(.)0 1671 y Fo(sb.send_cmd)e(\(str0,)g(str1,)g(str2\))240
2866     1743 y Fn(concatenates)k(strings)g Fo(str0)p Fn(,)g Fo(str1)p
2867     Fn(,)g(and)h Fo(str2)e Fn(and)i(sends)f(the)h(concatenated)f(string)g(to)g
2868     (the)240 1805 y(serv)o(er)d(b)q(efore)g(getting)g(its)h(resp)q(onse.)0
2869     1877 y Fo(sb.send_buf)e(\(buf,)g(buflen\))240 1949 y Fn(sends)i(the)f(con)o
2870     (ten)o(ts)g(of)f(the)i Fo(buf)e Fn(to)h(the)g(serv)o(er.)0
2871     2021 y Fo(sb.helo)f(\(\))0 2093 y(sb.help)g(\(str\))0 2165
2872     y(sb.quit)g(\(\))0 2238 y(sb.turn)g(\(\))0 2310 y(sb.rset)g(\(\))0
2873     2382 y(sb.noop)g(\(\))0 2454 y(sb.data)g(\(\))0 2526 y(sb.vrfy)g(\(str\))0
2874     2598 y(sb.expn)g(\(str\))240 2670 y Fn(implemen)o(ts)i(the)g(resp)q(ectiv)o
2875     (e)g Fi(sm)o(tp)g Fn(commands.)k(See)15 b(RF)o(C)g(821)g(for)f(the)h(meaning)
2876     h(of)f(eac)o(h.)p eop
2877     %%Page: 45 47
2878     bop 0 -58 a Fn(Chapter)15 b(13:)k(SMTP)c(Class)1400 b(45)0
2879     183 y Fo(sb.mail)14 b(\(str\))240 257 y Fn(sends)22 b(the)f(mail)g(command)g
2880     (to)g(the)g(serv)o(er.)37 b Fo(str)20 b Fn(is)i(the)f(the)g(rev)o(erse)g
2881     (path)g(or)f(the)h Fi(FR)o(OM)240 319 y Fn(address.)0 393 y
2882     Fo(sb.rcpt)14 b(\(str\))240 466 y Fn(sends)g(the)f(recipien)o(t)i(command)e
2883     (to)f(the)h(serv)o(er.)19 b Fo(str)13 b Fn(is)h(the)f(forw)o(ard)f(path)h(or)
2884     f(the)i Fi(TO)h Fn(address.)0 540 y Fo(sb.data)f(\(buf,)h(buflen\))240
2885     614 y Fn(sends)f(the)g(con)o(ten)o(ts)f(of)g(the)h(bu\013er,)f
2886     Fo(buf)g Fn(as)g(the)h(mail)g(data)f(to)g(the)h(recipien)o(t)h(previously)g
2887     (estab-)240 676 y(lished)i(through)e Fo(smtpbuf::rcpt\(\))e
2888     Fn(calls.)0 749 y Fo(sb.data)h(\(filename\))240 823 y Fn(sends)19
2889     b(the)g(con)o(ten)o(ts)f(of)g(the)g(\014le,)i Fo(filename)e
2890     Fn(as)g(the)h(mail)g(data)f(to)g(the)h(recipien)o(t)h(previously)240
2891     885 y(established)d(through)e Fo(smtpbuf::rcpt\(\))e Fn(calls.)0
2892     1088 y Fg(13.0.1)29 b(tcsm)n(tp.C)120 1225 y Fo(//)24 b(smtp)f(client.)120
2893     1275 y(//)h(The)f(president)g(sends)g(a)h(message)e(to)i(gs4t@virginia.edu.)
2894     120 1325 y(#include)f(<smtp.h>)120 1375 y(#include)g(<stdio.h>)120
2895     1425 y(#include)g(<pwd.h>)120 1474 y(#include)g(<unistd.h>)120
2896     1574 y(int)g(main)h(\(\))120 1624 y({)168 1674 y(smtp)f(client)g(\(&cout\);)
2897     168 1773 y(//)g(establish)g(connection)168 1823 y(client->connect)f
2898     (\("fulton.seas.virginia.)o(edu"\);)168 1873 y(client->helo)g(\(\);)168
2899     1973 y(//)h(get)h(help)168 2022 y(client->help)e(\(\);)168
2900     2122 y(//)h(setup)g(the)h(FROM)f(address)168 2172 y(client->mail)f
2901     (\("president@whitehouse.gov)o("\);)168 2271 y(//)h(setup)g(the)h(TO)g
2902     (address)168 2321 y(client->rcpt)e(\("gs4t@virginia.edu"\);)168
2903     2421 y(//)h(send)h(the)f(message)168 2471 y(client->data)f(\(\);)168
2904     2521 y(client)h(<<)g("Hi)h(Sekar,)f(I)h(appoint)e(you)i(as)g(the)f(director)g
2905     (of)g(NASA\\r\\n")g(<<)h(flush;)168 2570 y(client)f(<<)g(")96
2906     b(-Bill,)23 b(Hill,)g(and)g(Chel\\r\\n")g(<<)h(flush;)168 2620
2907     y(cout)f(<<)h(client;)f(//)g(get)h(the)f(server)g(response.)p
2908     eop
2909     %%Page: 46 48
2910     bop 0 -58 a Fn(Chapter)15 b(13:)k(SMTP)c(Class)1400 b(46)168
2911     183 y Fo(//)23 b(finally)g(quit)168 233 y(client->quit)f(\(\);)168
2912     333 y(return)h(0;)120 382 y(})p eop
2913     %%Page: 47 49
2914     bop 0 -58 a Fn(Chapter)15 b(14:)k(Error)14 b(Handling)1349
2915     b(47)0 183 y Fk(14)41 b(Error)15 b(Handling)62 370 y Fn(Eac)o(h)k(class)h(in)
2916     g(the)f(So)q(c)o(k)o(et)p Fo(++)g Fn(library)h(uses)f Fo(error\(const)14
2917     b(char*\))k Fn(mem)o(b)q(er)i(function)g(to)e(rep)q(ort)h(an)o(y)0
2918     432 y(errors)g(that)f(ma)o(y)h(o)q(ccur)g(during)i(a)e(system)g(call.)33
2919     b(It)19 b(\014rst)g(calls)i Fo(perror\(\))d Fn(to)g(rep)q(ort)h(the)h(error)e
2920     (message)0 495 y(for)h(the)h Fo(errno)g Fn(set)f(b)o(y)h(the)g(system)g
2921     (call.)35 b(It)20 b(then)h(calls)g Fo(sock_error)14 b(\(const)g(char*)g(nm,)h
2922     (const)g(char*)0 557 y(errmsg\))f Fn(where)i Fo(nm)f Fn(is)g(the)h(name)f(of)
2923     f(the)i(class.)62 694 y(The)g Fo(sock_error\(\))d Fn(function)j(simply)h
2924     (prin)o(ts)e(the)g Fo(nm)g Fn(and)h(the)f Fo(errmsg)f Fn(on)h(the)h
2925     Fi(stderr)p Fn(.)p eop
2926     %%Page: 48 50
2927     bop 0 -58 a Fn(Chapter)15 b(15:)k(Pitfalls)1510 b(48)0 183
2928     y Fk(15)41 b(Pitfalls)62 374 y Fn(Deadlo)q(c)o(ks)19 b(in)g(datagram)e(so)q
2929     (c)o(k)o(ets)h(are)g(the)h(most)f(common)g(mistak)o(es)g(that)g(no)o(vices)h
2930     (mak)o(e.)29 b(T)l(o)18 b(allevi-)0 436 y(ate)i(the)g(problem,)i
2931     Fo(sockbuf)d Fn(class)h(pro)o(vides)h(timeout)f(facilities)i(that)e(can)g(b)q
2932     (e)h(used)g(e\013ectiv)o(ely)g(to)e(a)o(v)o(oid)0 498 y(deadlo)q(c)o(ks.)62
2933     636 y(Consider)14 b(the)g(follo)o(wing)h(simple)g(tsm)o(tp)d(example)j(whic)o
2934     (h)f(sends)h(the)e(HELP)h(command)g(to)f(a)g(sm)o(tp)g(serv)o(er)0
2935     698 y(and)18 b(gets)g(bac)o(k)f(the)h(help)i(message.)27 b(Supp)q(ose)19
2936     b(it)g(do)q(es)f(not)f(kno)o(w)h(the)g(size)h(of)e(the)h(help)i(message)d
2937     (nor)h(the)0 761 y(format)c(of)h(the)h(message.)k(In)d(suc)o(h)f(cases,)f
2938     (the)g(timeout)h(facilities)i(of)d Fo(sockbuf)f Fn(class)i(pro)o(vides)g(the)
2939     g(required)0 823 y(to)q(ols.)62 961 y(The)i(example)h(terminates)f(the)g
2940     (help)h(message)e(reception)i(if)g(the)f(there)g(is)g(no)g(input)h(activit)o
2941     (y)f(from)f(the)0 1023 y(sm)o(tp)e(serv)o(er)f(for)h(10)g(seconds.)0
2942     1237 y Fg(tsm)n(tp.cc)120 1375 y Fo(#include)23 b(<sockinet.h>)120
2943     1474 y(int)g(main\(\))120 1524 y({)120 1574 y(iosockinet)70
2944     b(sio\(sockbuf::sock_stream\);)120 1674 y(sio->connect\("kelvin.seas.)o
2945     (virgini)o(a.edu",)20 b("smtp",)j("tcp"\);)120 1773 y(char)g(buf[512];)120
2946     1823 y(sio.getline\(buf,)f(511\);)h(cout)g(<<)h(buf)f(<<)h(endl;)120
2947     1873 y(sio)f(<<)h("HELO)f(kelvin\\n")g(<<)g(flush;)120 1923
2948     y(sio.getline\(buf,)f(511\);)h(cout)g(<<)h(buf)f(<<)h(endl;)120
2949     2022 y(sio)f(<<)h("HELP\\n")f(<<)g(flush;)311 2122 y(//)g(set)h(the)f
2950     (receive)g(timeout)g(to)h(10)f(seconds)311 2172 y(int)g(tmo)h(=)g
2951     (sio->recvtimeout\(10\);)120 2271 y(while)f(\()h(sio.getline\(buf,)e(511\))h
2952     (\))h(cout)f(<<)h(buf)f(<<)h(endl;)120 2321 y(//)g(if)f(the)h(above)f(while)g
2953     (loop)g(terminated)g(due)g(to)h(timeout)120 2371 y(//)g(clear)f(the)g(state)g
2954     (of)h(sio.)120 2421 y(if)g(\()f(!sio->is_eof\(\))f(\))120 2471
2955     y(sio.clear\(\);)120 2521 y(sio->recvtimeout\(tmo\);)f(//)i(reset)h(the)f
2956     (receive)g(timeout)g(time)120 2620 y(sio)g(<<)h("QUIT\\n")f(<<)g(flush;)120
2957     2670 y(sio.getline\(buf,)f(511\);)h(cout)g(<<)h(buf)f(<<)h(endl;)p
2958     eop
2959     %%Page: 49 51
2960     bop 0 -58 a Fn(Chapter)15 b(15:)k(Pitfalls)1510 b(49)311 183
2961     y Fo(return)23 b(0;)120 233 y(})p eop
2962     %%Page: 50 52
2963     bop 0 -58 a Fn(Index)1795 b(50)0 183 y Fk(Index)0 416 y Fm(A)0
2964     482 y Ff(accepting)15 b(connections)7 b Fe(:)h(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)
2965     g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
2966     (:)g(:)g(:)20 b Ff(9)0 540 y(ac)o(kno)o(wledgmen)o(ts)13 b
2967     Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
2968     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23
2969     b Ff(2)0 667 y Fm(B)0 734 y Ff(base)14 b(address)g(class)5
2970     b Fe(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
2971     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)17
2972     b Ff(13)0 792 y(binding)f(addresses)8 b Fe(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)
2973     g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
2974     (:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Ff(9)0 919 y Fm(C)0 985 y Ff(class)14
2975     b(iso)q(c)o(kinet)f Fe(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
2976     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
2977     (:)g(:)g(:)g(:)g(:)24 b Ff(28)0 1043 y(class)14 b(iso)q(c)o(kunix)6
2978     b Fe(:)j(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
2979     (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19
2980     b Ff(31)0 1102 y(class)14 b(so)q(c)o(kbuf)5 b Fe(:)i(:)f(:)g(:)g(:)g(:)g(:)g
2981     (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
2982     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)17 b
2983     Ff(4)0 1160 y(common)d(mistak)o(es)6 b Fe(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
2984     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
2985     (:)g(:)g(:)g(:)g(:)g(:)19 b Ff(48)0 1218 y(connect)6 b Fe(:)h(:)f(:)g(:)h(:)f
2986     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
2987     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
2988     (:)g(:)19 b Ff(9)0 1276 y(connection)c(establishmen)o(t)t Fe(:)9
2989     b(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
2990     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Ff(9)0 1334 y(Cop)o(yrigh)o(t)t
2991     Fe(:)7 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
2992     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
2993     (:)f(:)g(:)g(:)g(:)g(:)16 b Ff(1)0 1392 y(cop)o(yrigh)o(t)f(notice)t
2994     Fe(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
2995     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)16
2996     b Ff(1)0 1519 y Fm(D)0 1586 y Ff(datagram)e(inet)d Fe(:)6 b(:)h(:)f(:)g(:)g
2997     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
2998     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23 b Ff(16)0
2999     1644 y(datagram)14 b(unix)6 b Fe(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3000     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3001     (:)g(:)g(:)g(:)g(:)g(:)h(:)18 b Ff(21)0 1771 y Fm(E)0 1837
3002     y Ff(ec)o(ho)13 b(class)t Fe(:)8 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
3003     g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3004     (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)17 b Ff(42)0 1895
3005     y Fd(echo::echo)t Fe(:)s(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3006     g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3007     (:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Ff(42)0 1953 y Fd(echo::oper)o(at)o(or-)o(>)6
3008     b Fe(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3009     (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19
3010     b Ff(42)0 2012 y(error)13 b(handling)g Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3011     (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3012     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Ff(47)0 2139 y
3013     Fm(F)0 2205 y Ff(\015ushing)15 b(bu\013ers)d Fe(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g
3014     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3015     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Ff(4)0 2263
3016     y(\015ushing)15 b(output)d Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3017     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3018     (:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Ff(8)0 2321 y(fork)13 b(class)8
3019     b Fe(:)f(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3020     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3021     (:)g(:)g(:)g(:)g(:)21 b Ff(37)0 2379 y(fork)13 b(example)t
3022     Fe(:)7 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3023     (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3024     (:)g(:)16 b Ff(38)0 2438 y Fd(Fork::Fork)t Fe(:)s(:)7 b(:)f(:)g(:)g(:)g(:)g
3025     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3026     (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
3027     Ff(37)0 2496 y Fd(Fork::is)p 162 2496 12 2 v 11 w(child)10
3028     b Fe(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3029     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
3030     b Ff(37)0 2554 y Fd(Fork::is)p 162 2554 V 11 w(parent)8 b Fe(:)e(:)g(:)g(:)g
3031     (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3032     (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Ff(37)0 2612
3033     y Fd(Fork::proc)o(es)o(s)p 260 2612 V 11 w(id)9 b Fe(:)c(:)h(:)g(:)g(:)h(:)f
3034     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3035     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Ff(37)0 2670 y Fd(Fork::suic)o(id)o(e)p
3036     260 2670 V 11 w(signal)t Fe(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3037     (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
3038     b Ff(37)1015 416 y Fm(G)1015 482 y Fd(getpeername)9 b(\(see)i(sockinetbu)o
3039     (f::)o(pee)o(ra)o(ddr)o(\))6 b Fe(:)g(:)g(:)g(:)g(:)g(:)g(:)23
3040     b Ff(15)1015 540 y Fd(getsockname)9 b(\(see)i(sockinetbu)o(f::)o(loc)o(al)o
3041     (add)o(r\))c Fe(:)s(:)g(:)f(:)g(:)g(:)21 b Ff(14)1015 598 y(getso)q(c)o(k)o
3042     (opt)6 b Fe(:)i(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3043     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3044     (:)g(:)g(:)g(:)h(:)f(:)19 b Ff(10)1015 725 y Fm(I)1015 792
3045     y Ff(inet)14 b(address)g(class)9 b Fe(:)f(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3046     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3047     (:)h(:)f(:)g(:)g(:)22 b Ff(19)1015 850 y(inet)14 b(domain)s
3048     Fe(:)8 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3049     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3050     (:)f(:)g(:)16 b Ff(14)1015 908 y Fd(iopipestrea)o(m:)o(:fo)o(rk)s
3051     Fe(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3052     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Ff(33)1015
3053     966 y Fd(iopipestrea)o(m:)o(:io)o(pip)o(es)o(tre)o(am)7 b Fe(:)f(:)g(:)g(:)g
3054     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24
3055     b Ff(33)1015 1024 y Fd(iopipestrea)o(m:)o(:pi)o(d)5 b Fe(:)s(:)h(:)g(:)g(:)g
3056     (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3057     (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18 b Ff(33)1015 1082 y(ioso)q(c)o(kinet)e
3058     (example)5 b Fe(:)j(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3059     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)18
3060     b Ff(17)1015 1140 y(ioso)q(c)o(kinet)e(examples)6 b Fe(:)i(:)e(:)g(:)g(:)g(:)
3061     g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3062     (:)g(:)g(:)g(:)h(:)f(:)g(:)19 b Ff(29)1015 1198 y(ioso)q(c)o(kstream)c(class)
3063     d Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3064     g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24
3065     b Ff(27)1015 1256 y(ioso)q(c)o(kstream)15 b(classes)s Fe(:)8
3066     b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3067     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)16 b Ff(26)1015
3068     1315 y Fd(iosockstrea)o(m:)o(:io)o(soc)o(ks)o(tre)o(am)7 b
3069     Fe(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3070     g(:)g(:)24 b Ff(28)1015 1373 y Fd(iosockstrea)o(m:)o(:op)o(era)o(to)o(r->)t
3071     Fe(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3072     (:)g(:)g(:)g(:)g(:)g(:)18 b Ff(28)1015 1431 y Fd(iosockstrea)o(m:)o(:rd)o
3073     (buf)7 b Fe(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3074     (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Ff(28)1015
3075     1489 y(ioso)q(c)o(kunix)16 b(class)5 b Fe(:)j(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3076     (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3077     (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18 b Ff(30)1015 1547 y(ioso)q(c)o(kunix)e
3078     (example)9 b Fe(:)f(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3079     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
3080     b Ff(23)1015 1605 y(ioso)q(c)o(kunix)16 b(examples)c Fe(:)6
3081     b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3082     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)23 b Ff(31)1015
3083     1663 y Fd(ipipestream)o(::)o(ipi)o(pes)o(tr)o(eam)t Fe(:)s(:)6
3084     b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3085     (:)g(:)g(:)18 b Ff(33)1015 1721 y(iso)q(c)o(kinet)e(class)c
3086     Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3087     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)24
3088     b Ff(28)1015 1779 y(iso)q(c)o(kinet)16 b(example)6 b Fe(:)h(:)g(:)f(:)g(:)g
3089     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3090     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)19 b Ff(16)1015 1838
3091     y Fd(isockinet::)o(is)o(ock)o(ine)o(t)6 b Fe(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3092     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3093     (:)23 b Ff(29)1015 1896 y Fd(isockinet::)o(op)o(era)o(tor)o(->)7
3094     b Fe(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3095     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Ff(29)1015 1954 y Fd(isockinet::)o
3096     (rd)o(buf)5 b Fe(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3097     (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)19
3098     b Ff(29)1015 2012 y(iso)q(c)o(kstream)c(class)s Fe(:)7 b(:)g(:)f(:)g(:)g(:)g
3099     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3100     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)16 b Ff(26)1015 2070
3101     y Fd(isockstream)o(::)o(iso)o(cks)o(tr)o(eam)t Fe(:)s(:)6 b(:)g(:)g(:)g(:)g
3102     (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18
3103     b Ff(26)1015 2128 y Fd(isockstream)o(::)o(ope)o(rat)o(or)o(->)5
3104     b Fe(:)s(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3105     (:)g(:)g(:)g(:)g(:)g(:)g(:)19 b Ff(26)1015 2186 y Fd(isockstream)o(::)o(rdb)o
3106     (uf)s Fe(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3107     g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
3108     b Ff(26)1015 2244 y(iso)q(c)o(kunix)f(class)6 b Fe(:)h(:)g(:)f(:)g(:)g(:)g(:)
3109     g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3110     (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)19 b Ff(31)1015
3111     2303 y(iso)q(c)o(kunix)d(example)c Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3112     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3113     (:)g(:)g(:)g(:)g(:)23 b Ff(21)1015 2361 y Fd(isockunix::)o(is)o(ock)o(uni)o
3114     (x)6 b Fe(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3115     (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Ff(31)1015
3116     2419 y Fd(isockunix::)o(op)o(era)o(tor)o(->)7 b Fe(:)t(:)f(:)g(:)g(:)g(:)g(:)
3117     g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3118     (:)22 b Ff(31)1015 2477 y Fd(isockunix::)o(rd)o(buf)5 b Fe(:)t(:)h(:)g(:)g(:)
3119     g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3120     (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)19 b Ff(31)1015 2604 y Fm(L)1015
3121     2670 y Ff(listening)9 b Fe(:)g(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
3122     g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3123     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)21 b Ff(9)p
3124     eop
3125     %%Page: 51 53
3126     bop 0 -58 a Fn(Index)1795 b(51)0 183 y Fm(N)0 250 y Ff(names)10
3127     b Fe(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3128     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3129     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Ff(9)0 367 y Fm(O)0
3130     433 y Fd(opipestrea)o(m:)o(:op)o(ip)o(est)o(rea)o(m)t Fe(:)s(:)6
3131     b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3132     (:)g(:)g(:)17 b Ff(33)0 492 y(option)d(getting)s Fe(:)8 b(:)e(:)g(:)g(:)g(:)g
3133     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3134     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16 b
3135     Ff(9)0 550 y(option)e(setting)5 b Fe(:)j(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3136     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3137     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Ff(9)0 608 y(oso)q(c)o(kinet)d
3138     (example)d Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3139     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23
3140     b Ff(16)0 666 y(oso)q(c)o(kstream)14 b(class)7 b Fe(:)h(:)e(:)g(:)g(:)g(:)g
3141     (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3142     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)20 b Ff(27)0 724 y Fd(osockstrea)o(m:)o
3143     (:op)o(er)o(ato)o(r->)5 b Fe(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
3144     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19 b Ff(27)0
3145     782 y Fd(osockstrea)o(m:)o(:os)o(oc)o(kst)o(rea)o(m)t Fe(:)s(:)6
3146     b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3147     (:)g(:)g(:)17 b Ff(27)0 840 y Fd(osockstrea)o(m:)o(:rd)o(bu)o(f)t
3148     Fe(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3149     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)16 b Ff(27)0
3150     898 y(oso)q(c)o(kunix)f(example)6 b Fe(:)i(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3151     g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3152     (:)g(:)h(:)f(:)18 b Ff(21)0 956 y(o)o(v)o(erview)c(of)f(so)q(c)o(k)o(et)p
3153     Fd(++)c Fe(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3154     g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22
3155     b Ff(3)0 1074 y Fm(P)0 1140 y Fd(pipe)t Fe(:)5 b(:)h(:)g(:)g(:)g(:)g(:)g(:)g
3156     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3157     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3158     (:)17 b Ff(33)0 1198 y(pip)q(e)d(example)d Fe(:)6 b(:)g(:)h(:)f(:)g(:)g(:)g
3159     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3160     (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)22 b Ff(34)0
3161     1256 y(pip)q(estream)15 b(classes)c Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3162     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3163     (:)h(:)f(:)g(:)g(:)22 b Ff(33)0 1315 y(pip)q(estream)15 b(examples)5
3164     b Fe(:)i(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3165     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Ff(33)0
3166     1373 y(pitfalls)t Fe(:)8 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
3167     g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3168     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)16 b Ff(48)0
3169     1431 y Fd(popen)s Fe(:)t(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3170     g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3171     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16 b Ff(33)0
3172     1489 y(p)q(op)q(en)e(example)f Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3173     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3174     (:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Ff(35)0 1547 y Fd(protcolbuf)o(::)o(pro)o(to)
3175     o(col)p 397 1547 12 2 v 10 w(name)6 b Fe(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3176     (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19 b
3177     Ff(40)0 1605 y(proto)q(col)14 b(class)7 b Fe(:)g(:)f(:)g(:)h(:)f(:)g(:)g(:)g
3178     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3179     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)19 b Ff(40)0 1663
3180     y(proto)q(colbuf)c(class)5 b Fe(:)i(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3181     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3182     (:)g(:)g(:)g(:)g(:)18 b Ff(40)0 1721 y Fd(protocolbu)o(f:)o(:bi)o(nd)t
3183     Fe(:)s(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3184     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
3185     Ff(41)0 1779 y Fd(protocolbu)o(f:)o(:co)o(nn)o(ect)6 b Fe(:)g(:)g(:)g(:)g(:)g
3186     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3187     (:)h(:)f(:)g(:)22 b Ff(41)0 1838 y Fd(protocolbu)o(f:)o(:pr)o(ot)o(oco)o(lbu)
3188     o(f)t Fe(:)s(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3189     g(:)g(:)g(:)h(:)f(:)g(:)g(:)17 b Ff(40)0 1896 y Fd(protocolbu)o(f:)o(:rf)o(c)
3190     p 319 1896 V 11 w(doc)t Fe(:)5 b(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3191     (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
3192     b Ff(40)0 1954 y Fd(protocolbu)o(f:)o(:rf)o(c)p 319 1954 V
3193     11 w(name)9 b Fe(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3194     (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Ff(40)0
3195     2012 y Fd(protocolbu)o(f:)o(:se)o(rv)o(e)p 358 2012 V 11 w(clients)5
3196     b Fe(:)s(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3197     (:)g(:)g(:)h(:)17 b Ff(41)0 2129 y Fm(R)0 2196 y Ff(read)c(timeouts)5
3198     b Fe(:)j(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3199     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3200     (:)18 b Ff(11)0 2313 y Fm(S)0 2379 y Ff(setso)q(c)o(k)o(opt)8
3201     b Fe(:)f(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3202     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3203     (:)g(:)g(:)g(:)21 b Ff(10)0 2438 y(sm)o(tp)13 b(class)c Fe(:)e(:)f(:)g(:)g(:)
3204     g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3205     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
3206     b Ff(44)0 2496 y Fd(smtp::smtp)t Fe(:)s(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3207     (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3208     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Ff(44)0 2554
3209     y Fd(smtpbuf::g)o(et)p 240 2554 V 10 w(response)8 b Fe(:)f(:)f(:)g(:)g(:)g(:)
3210     g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3211     (:)g(:)24 b Ff(44)0 2612 y Fd(smtpbuf::s)o(en)o(d)p 260 2612
3212     V 11 w(buf)8 b Fe(:)d(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3213     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20
3214     b Ff(44)0 2670 y Fd(smtpbuf::s)o(en)o(d)p 260 2670 V 11 w(cmd)8
3215     b Fe(:)d(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3216     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b
3217     Ff(44)1015 183 y(so)q(c)o(kAddr)14 b(class)5 b Fe(:)j(:)e(:)g(:)g(:)g(:)g(:)g
3218     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3219     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18 b Ff(13)1015
3220     241 y Fd(sockAddr::f)o(am)o(ily)5 b Fe(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3221     g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3222     (:)g(:)h(:)f(:)19 b Ff(13)1015 299 y Fd(sockAddr::o)o(pe)o(rat)o(or)9
3223     b(void*)f Fe(:)t(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3224     (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Ff(13)1015 358 y Fd(sockAddr::s)o(iz)o(e)
3225     9 b Fe(:)s(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
3226     g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22
3227     b Ff(13)1015 416 y(so)q(c)o(kbuf)14 b(class)5 b Fe(:)j(:)e(:)g(:)g(:)g(:)g(:)
3228     g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3229     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
3230     Ff(4)1015 474 y(so)q(c)o(kbuf)c(constructors)9 b Fe(:)f(:)e(:)g(:)g(:)g(:)g
3231     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3232     (:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Ff(4)1015 532 y(so)q(c)o(kbuf)14
3233     b(destructor)9 b Fe(:)f(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3234     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3235     (:)22 b Ff(5)1015 590 y(so)q(c)o(kbuf)14 b(reading)7 b Fe(:)h(:)f(:)f(:)g(:)g
3236     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3237     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)20 b Ff(5)1015
3238     648 y(so)q(c)o(kbuf)14 b(writing)d Fe(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3239     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3240     (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 b Ff(5)1015 706 y Fd(sockbuf::~s)o(oc)o
3241     (kbu)o(f)6 b Fe(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3242     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)19
3243     b Ff(5)1015 764 y Fd(sockbuf::ac)o(ce)o(pt)8 b Fe(:)s(:)e(:)g(:)g(:)h(:)f(:)g
3244     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3245     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Ff(9)1015 823 y Fd(sockbuf::bi)o(nd)8
3246     b Fe(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3247     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24
3248     b Ff(9)1015 881 y Fd(sockbuf::br)o(oa)o(dca)o(st)s Fe(:)s(:)6
3249     b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3250     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Ff(11)1015 939
3251     y Fd(sockbuf::cl)o(ea)o(rer)o(ror)7 b Fe(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3252     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3253     (:)24 b Ff(10)1015 997 y Fd(sockbuf::cl)o(os)o(e)7 b Fe(:)f(:)g(:)g(:)g(:)g
3254     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3255     (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Ff(5)1015
3256     1055 y Fd(sockbuf::co)o(nn)o(ect)6 b Fe(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3257     (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3258     (:)g(:)h(:)f(:)g(:)g(:)20 b Ff(9)1015 1113 y Fd(sockbuf::de)o(bu)o(g)9
3259     b Fe(:)s(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3260     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22
3261     b Ff(10)1015 1171 y Fd(sockbuf::do)o(al)o(loc)o(ate)r Fe(:)t(:)6
3262     b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3263     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)16 b Ff(8)1015 1229
3264     y Fd(sockbuf::do)o(nt)o(rou)o(te)s Fe(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3265     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3266     (:)g(:)g(:)17 b Ff(11)1015 1287 y Fd(sockbuf::fl)o(us)o(h)p
3267     1295 1287 V 11 w(output)t Fe(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3268     g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
3269     b Ff(8)1015 1346 y Fd(sockbuf::ge)o(to)o(pt)7 b Fe(:)s(:)f(:)g(:)g(:)g(:)h(:)
3270     f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3271     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Ff(10)1015 1404 y Fd(sockbuf::ge)o(tt)o
3272     (ype)5 b Fe(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3273     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)19
3274     b Ff(10)1015 1462 y Fd(sockbuf::is)p 1236 1462 V 10 w(eof)10
3275     b Fe(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
3276     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24
3277     b Ff(6)1015 1520 y Fd(sockbuf::is)p 1236 1520 V 10 w(exceptionpe)o(nd)o(ing)r
3278     Fe(:)s(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3279     (:)g(:)g(:)16 b Ff(7)1015 1578 y Fd(sockbuf::is)p 1236 1578
3280     V 10 w(open)6 b Fe(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3281     h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)18
3282     b Ff(5,)13 b(6)1015 1636 y Fd(sockbuf::is)p 1236 1636 V 10
3283     w(readready)s Fe(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3284     g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
3285     b Ff(7)1015 1694 y Fd(sockbuf::is)p 1236 1694 V 10 w(writeready)7
3286     b Fe(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3287     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Ff(7)1015 1752 y Fd(sockbuf::ke)o(ep)
3288     o(ali)o(ve)s Fe(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3289     (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
3290     b Ff(11)1015 1810 y Fd(sockbuf::li)o(ng)o(er)7 b Fe(:)s(:)f(:)g(:)g(:)g(:)h
3291     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3292     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Ff(11)1015 1869 y Fd(sockbuf::li)o
3293     (st)o(en)8 b Fe(:)s(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3294     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3295     (:)22 b Ff(9)1015 1927 y Fd(sockbuf::ms)o(gf)o(lag)8 b Fe(:)e(:)g(:)g(:)g(:)g
3296     (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3297     (:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Ff(6,)13 b(7)1015 1985 y Fd(sockbuf::oo)o(bi)
3298     o(nli)o(ne)s Fe(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3299     (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
3300     b Ff(11)1015 2043 y Fd(sockbuf::op)o(en)8 b Fe(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)
3301     g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3302     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Ff(5)1015 2101
3303     y Fd(sockbuf::op)o(er)o(ato)o(r=)t Fe(:)s(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3304     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3305     (:)g(:)g(:)g(:)18 b Ff(5)1015 2159 y Fd(sockbuf::ov)o(er)o(flo)o(w)6
3306     b Fe(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3307     (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)19
3308     b Ff(8)1015 2217 y Fd(sockbuf::rc)o(vb)o(uf)7 b Fe(:)s(:)f(:)g(:)g(:)g(:)h(:)
3309     f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3310     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Ff(11)1015 2275 y Fd(sockbuf::re)o(ad)8
3311     b Fe(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3312     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24
3313     b Ff(7)1015 2334 y Fd(sockbuf::re)o(cv)8 b Fe(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3314     (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3315     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Ff(7)1015 2392
3316     y Fd(sockbuf::re)o(cv)o(fro)o(m)6 b Fe(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3317     h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3318     (:)g(:)g(:)g(:)19 b Ff(7)1015 2450 y Fd(sockbuf::re)o(cv)o(msg)6
3319     b Fe(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3320     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)20
3321     b Ff(7)1015 2508 y Fd(sockbuf::re)o(cv)o(tim)o(eou)o(t)5 b
3322     Fe(:)s(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3323     g(:)g(:)g(:)h(:)f(:)g(:)g(:)18 b Ff(8,)13 b(12)1015 2566 y
3324     Fd(sockbuf::re)o(us)o(ead)o(dr)s Fe(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3325     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3326     (:)g(:)17 b Ff(11)1015 2624 y Fd(sockbuf::se)o(nd)8 b Fe(:)e(:)g(:)g(:)g(:)g
3327     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3328     (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Ff(6)p
3329     eop
3330     %%Page: 52 54
3331     bop 0 -58 a Fn(Index)1795 b(52)0 183 y Fd(sockbuf::s)o(en)o(dms)o(g)7
3332     b Fe(:)s(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3333     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20
3334     b Ff(6)0 241 y Fd(sockbuf::s)o(en)o(dti)o(me)o(out)t Fe(:)t(:)6
3335     b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3336     (:)g(:)g(:)g(:)g(:)18 b Ff(8,)13 b(12)0 299 y Fd(sockbuf::s)o(en)o(dto)8
3337     b Fe(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3338     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
3339     b Ff(6)0 358 y Fd(sockbuf::s)o(et)o(opt)6 b Fe(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)
3340     g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3341     (:)g(:)h(:)f(:)g(:)g(:)g(:)20 b Ff(10)0 416 y Fd(sockbuf::s)o(hu)o(tdo)o(wn)5
3342     b Fe(:)s(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3343     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19
3344     b Ff(5)0 474 y Fd(sockbuf::s)o(hu)o(tho)o(w)7 b Fe(:)s(:)f(:)g(:)g(:)g(:)g(:)
3345     h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3346     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Ff(5)0 532 y Fd(sockbuf::s)o(nd)o(buf)6
3347     b Fe(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3348     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)20
3349     b Ff(11)0 590 y Fd(sockbuf::s)o(oc)o(kbu)o(f)7 b Fe(:)s(:)f(:)g(:)g(:)g(:)g
3350     (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
3351     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Ff(4)0 648 y Fd(sockbuf::s)o(yn)o(c)8
3352     b Fe(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3353     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24
3354     b Ff(8)0 706 y Fd(sockbuf::s)o(ys)p 240 706 12 2 v 10 w(read)9
3355     b Fe(:)c(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3356     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)21
3357     b Ff(7)0 764 y Fd(sockbuf::s)o(ys)p 240 764 V 10 w(write)7
3358     b Fe(:)e(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3359     (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b
3360     Ff(6)0 823 y Fd(sockbuf::t)o(yp)o(e)8 b Fe(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
3361     f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3362     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Ff(4)0 881 y Fd(sockbuf::u)o(nd)o
3363     (erf)o(lo)o(w)5 b Fe(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
3364     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)17
3365     b Ff(8)0 939 y Fd(sockbuf::w)o(ri)o(te)6 b Fe(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3366     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3367     (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Ff(6)0 997 y Fd(sockbuf::x)o(sp)o
3368     (utn)8 b Fe(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3369     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
3370     b Ff(8)0 1055 y(so)q(c)o(k)o(et)13 b(options)h Fe(:)6 b(:)g(:)g(:)g(:)g(:)g
3371     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3372     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Ff(9)0
3373     1113 y Fd(socketpair)t Fe(:)s(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3374     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3375     (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Ff(33)0 1171 y(so)q(c)o(k)o(etpair)d
3376     (example)s Fe(:)8 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
3377     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)16
3378     b Ff(34)0 1229 y(so)q(c)o(kinetaddr)f(class)s Fe(:)8 b(:)e(:)g(:)g(:)g(:)g(:)
3379     g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3380     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)16 b Ff(19)0 1287 y Fd(sockinetad)o(dr)o(::f)o
3381     (am)o(ily)6 b Fe(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3382     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Ff(20)0
3383     1346 y Fd(sockinetad)o(dr)o(::g)o(et)o(por)o(t)8 b Fe(:)s(:)e(:)g(:)g(:)h(:)f
3384     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3385     (:)g(:)21 b Ff(20)0 1404 y Fd(sockinetad)o(dr)o(::g)o(et)o(tho)o(stn)o(am)o
3386     (e)7 b Fe(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3387     (:)f(:)g(:)g(:)23 b Ff(20)0 1462 y Fd(sockinetad)o(dr)o(::o)o(pe)o(rat)o(or)9
3388     b(void*)h Fe(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3389     (:)g(:)g(:)24 b Ff(19)0 1520 y Fd(sockinetad)o(dr)o(::s)o(iz)o(e)t
3390     Fe(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3391     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)16 b Ff(19)0
3392     1578 y Fd(sockinetad)o(dr)o(::s)o(oc)o(kin)o(eta)o(dd)o(r)7
3393     b Fe(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3394     (:)g(:)g(:)23 b Ff(19)0 1636 y(so)q(c)o(kinetbuf)15 b(class)6
3395     b Fe(:)h(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3396     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19
3397     b Ff(14)0 1694 y(so)q(c)o(kinetbuf)c(dgram)e(example)f Fe(:)6
3398     b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3399     (:)g(:)g(:)g(:)23 b Ff(16)0 1752 y(so)q(c)o(kinetbuf)15 b(stream)e(example)7
3400     b Fe(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3401     (:)g(:)h(:)f(:)g(:)g(:)19 b Ff(17)0 1810 y Fd(sockinetbu)o(f:)o(:bi)o(nd)t
3402     Fe(:)s(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3403     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
3404     Ff(15)0 1869 y Fd(sockinetbu)o(f:)o(:co)o(nn)o(ect)6 b Fe(:)g(:)g(:)g(:)g(:)g
3405     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3406     (:)h(:)f(:)g(:)22 b Ff(15)0 1927 y Fd(sockinetbu)o(f:)o(:lo)o(ca)o(lad)o(dr)7
3407     b Fe(:)s(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3408     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Ff(14)0 1985 y Fd(sockinetbu)o(f:)o(:lo)o
3409     (ca)o(lho)o(st)7 b Fe(:)s(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3410     (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Ff(15)0
3411     2043 y Fd(sockinetbu)o(f:)o(:lo)o(ca)o(lpo)o(rt)7 b Fe(:)s(:)f(:)g(:)g(:)g(:)
3412     g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3413     (:)20 b Ff(15)1015 183 y Fd(sockinetbuf)o(::)o(ope)o(n)5 b
3414     Fe(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
3415     g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18 b Ff(14)1015
3416     241 y Fd(sockinetbuf)o(::)o(ope)o(rat)o(or)9 b(=)g Fe(:)d(:)g(:)g(:)g(:)g(:)g
3417     (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22
3418     b Ff(14)1015 299 y Fd(sockinetbuf)o(::)o(pee)o(rad)o(dr)7 b
3419     Fe(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
3420     g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Ff(15)1015 358 y Fd(sockinetbuf)o(::)o
3421     (pee)o(rho)o(st)7 b Fe(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
3422     f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Ff(15)1015
3423     416 y Fd(sockinetbuf)o(::)o(pee)o(rpo)o(rt)7 b Fe(:)t(:)f(:)g(:)g(:)g(:)g(:)g
3424     (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3425     (:)22 b Ff(15)1015 474 y Fd(sockinetbuf)o(::)o(soc)o(kin)o(et)o(buf)t
3426     Fe(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3427     (:)g(:)g(:)g(:)g(:)g(:)18 b Ff(14)1015 532 y(so)q(c)o(kstream)c(classes)d
3428     Fe(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3429     (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23
3430     b Ff(26)1015 590 y(so)q(c)o(kunixadd)q(r)15 b(class)7 b Fe(:)h(:)e(:)g(:)g(:)
3431     g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3432     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)20 b Ff(25)1015 648 y Fd(sockunixadd)o(r:)
3433     o(:fa)o(mil)o(y)6 b Fe(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3434     g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23
3435     b Ff(25)1015 706 y Fd(sockunixadd)o(r:)o(:op)o(era)o(to)o(r)10
3436     b(void*)f Fe(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3437     (:)g(:)g(:)25 b Ff(25)1015 764 y Fd(sockunixadd)o(r:)o(:si)o(ze)s
3438     Fe(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3439     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Ff(25)1015
3440     823 y Fd(sockunixadd)o(r:)o(:so)o(cku)o(ni)o(xad)o(dr)7 b Fe(:)f(:)g(:)g(:)g
3441     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24
3442     b Ff(25)1015 881 y(so)q(c)o(kunixbuf)16 b(class)11 b Fe(:)6
3443     b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3444     (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b
3445     Ff(21)1015 939 y(so)q(c)o(kunixbuf)16 b(example)5 b Fe(:)j(:)e(:)g(:)g(:)g(:)
3446     g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3447     (:)g(:)g(:)h(:)f(:)g(:)18 b Ff(23)1015 997 y Fd(sockunixbuf)o(::)o(bin)o(d)5
3448     b Fe(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3449     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18 b
3450     Ff(21)1015 1055 y Fd(sockunixbuf)o(::)o(con)o(nec)o(t)6 b Fe(:)g(:)h(:)f(:)g
3451     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3452     (:)g(:)g(:)g(:)g(:)23 b Ff(21)1015 1113 y Fd(sockunixbuf)o(::)o(ope)o(n)5
3453     b Fe(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3454     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18 b
3455     Ff(21)1015 1171 y Fd(sockunixbuf)o(::)o(ope)o(rat)o(or)9 b(=)g
3456     Fe(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3457     g(:)g(:)g(:)g(:)g(:)h(:)22 b Ff(21)1015 1229 y Fd(sockunixbuf)o(::)o(soc)o
3458     (kun)o(ix)o(buf)t Fe(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
3459     g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Ff(21)1015 1287
3460     y(stream)c(inet)8 b Fe(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
3461     g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3462     (:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Ff(17)1015 1346 y(stream)14
3463     b(unix)s Fe(:)8 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3464     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3465     (:)g(:)g(:)g(:)g(:)17 b Ff(23)1015 1473 y Fm(T)1015 1539 y
3466     Ff(timeout)d(example)6 b Fe(:)i(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3467     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3468     (:)g(:)g(:)g(:)19 b Ff(48)1015 1597 y(timeouts)5 b Fe(:)j(:)e(:)g(:)g(:)g(:)g
3469     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3470     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)18
3471     b Ff(11)1015 1725 y Fm(U)1015 1791 y Ff(unix)d(address)f(class)t
3472     Fe(:)7 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3473     (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)17
3474     b Ff(25)1015 1849 y(unix)e(domain)7 b Fe(:)g(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3475     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3476     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)20 b Ff(21)1015
3477     1977 y Fm(W)1015 2043 y Ff(write)14 b(timeouts)7 b Fe(:)g(:)f(:)g(:)g(:)h(:)f
3478     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3479     (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20 b Ff(11)p
3480     eop
3481     %%Page: -1 55
3482     bop 1937 -58 a Fn(i)0 183 y Fk(T)-7 b(able)15 b(of)g(Con)n(ten)n(ts)0
3483     358 y Fm(So)r(c)n(k)n(et)p Fc(++)22 b Fm(Library)j(Cop)n(yrigh)n(t)f(Notice)
3484     14 b Fb(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3485     (:)h(:)f(:)g(:)36 b Fm(1)0 498 y(Ac)n(kno)n(wledgmen)n(ts)14
3486     b Fb(:)c(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3487     (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3488     (:)h(:)f(:)36 b Fm(2)0 638 y(1)67 b(Ov)n(erview)23 b(of)f(So)r(c)n(k)n(et)p
3489     Fc(++)g Fm(Library)c Fb(:)10 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
3490     h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fm(3)0 778 y(2)67
3491     b Fc(sockbuf)21 b Fm(Class)6 b Fb(:)i(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h
3492     (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f
3493     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fm(4)149
3494     856 y Fn(2.1)45 b(Constructors)10 b Fa(:)c(:)h(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
3495     g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3496     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3497     (:)f(:)g(:)g(:)g(:)h(:)24 b Fn(4)149 918 y(2.2)45 b(Destructor)11
3498     b Fa(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3499     (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3500     (:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)26
3501     b Fn(5)149 980 y(2.3)45 b(Reading)16 b(and)g(W)l(riting)10
3502     b Fa(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3503     (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3504     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)24 b Fn(5)149 1043 y(2.4)45
3505     b(Establishing)17 b(connections)5 b Fa(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
3506     h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3507     (:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)19 b
3508     Fn(9)149 1105 y(2.5)45 b(Getting)15 b(and)g(Setting)h(So)q(c)o(k)o(et)f
3509     (Options)g Fa(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3510     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)28
3511     b Fn(9)149 1167 y(2.6)45 b(Time)16 b(Outs)f(While)i(Reading)f(and)f(W)l
3512     (riting)9 b Fa(:)g(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
3513     f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)24 b Fn(11)0 1292
3514     y Fm(3)67 b(so)r(c)n(kAddr)23 b(Class)10 b Fb(:)f(:)h(:)g(:)g(:)g(:)h(:)f(:)g
3515     (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3516     (:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)32 b Fm(13)0 1432
3517     y(4)67 b(so)r(c)n(kinetbuf)23 b(Class)8 b Fb(:)h(:)i(:)f(:)g(:)g(:)g(:)h(:)f
3518     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3519     (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)31 b Fm(14)149 1510 y Fn(4.1)45
3520     b(Metho)q(ds)10 b Fa(:)e(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3521     (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3522     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3523     (:)g(:)g(:)h(:)f(:)25 b Fn(14)149 1572 y(4.2)45 b Fi(inet)17
3524     b Fn(Datagram)c(So)q(c)o(k)o(ets)e Fa(:)c(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3525     (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3526     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)26 b
3527     Fn(16)149 1634 y(4.3)45 b Fi(inet)17 b Fn(Stream)e(So)q(c)o(k)o(ets)10
3528     b Fa(:)c(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3529     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3530     (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25 b Fn(17)0 1759 y Fm(5)67
3531     b(so)r(c)n(kinetaddr)24 b(Class)15 b Fb(:)8 b(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g
3532     (:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3533     (:)h(:)f(:)g(:)g(:)g(:)38 b Fm(19)0 1899 y(6)67 b(so)r(c)n(kunixbuf)24
3534     b(Class)13 b Fb(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h
3535     (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f
3536     (:)36 b Fm(21)149 1977 y Fn(6.1)45 b(Metho)q(ds)10 b Fa(:)e(:)f(:)g(:)g(:)g
3537     (:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3538     (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3539     (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)25 b
3540     Fn(21)149 2039 y(6.2)45 b Fi(unix)19 b Fn(Datagram)14 b(So)q(c)o(k)o(ets)5
3541     b Fa(:)h(:)h(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3542     (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3543     (:)h(:)f(:)g(:)g(:)g(:)20 b Fn(21)149 2101 y(6.3)45 b Fi(unix)19
3544     b Fn(Stream)c(So)q(c)o(k)o(ets)e Fa(:)7 b(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3545     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g
3546     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)28
3547     b Fn(23)0 2226 y Fm(7)67 b(so)r(c)n(kunixaddr)25 b(Class)7
3548     b Fb(:)h(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g
3549     (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)30
3550     b Fm(25)0 2366 y(8)67 b(so)r(c)n(kstream)21 b(Classes)10 b
3551     Fb(:)f(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
3552     f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)33
3553     b Fm(26)149 2444 y Fn(8.1)45 b(ioso)q(c)o(kstreams)11 b Fa(:)6
3554     b(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3555     (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3556     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fn(26)299
3557     2506 y(8.1.1)44 b(iso)q(c)o(kstream)15 b(Class)10 b Fa(:)d(:)g(:)h(:)f(:)g(:)
3558     g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3559     (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)25 b
3560     Fn(26)299 2568 y(8.1.2)44 b(oso)q(c)o(kstream)14 b(Class)5
3561     b Fa(:)i(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3562     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3563     (:)f(:)20 b Fn(27)299 2630 y(8.1.3)44 b(ioso)q(c)o(kstream)14
3564     b(Class)9 b Fa(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
3565     f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3566     (:)f(:)g(:)24 b Fn(27)p eop
3567     %%Page: -2 56
3568     bop 1925 -58 a Fn(ii)149 42 y(8.2)45 b(ioso)q(c)o(kinet)16
3569     b(Stream)f(Classes)e Fa(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3570     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3571     (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fn(28)299 104 y(8.2.1)44
3572     b(iso)q(c)o(kinet)8 b Fa(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3573     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3574     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)23
3575     b Fn(28)299 166 y(8.2.2)44 b(ioso)q(c)o(kinet)16 b(examples)10
3576     b Fa(:)e(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3577     (:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)25
3578     b Fn(29)149 228 y(8.3)45 b(ioso)q(c)o(kunix)16 b(Classes)5
3579     b Fa(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3580     (:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3581     (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)20 b Fn(30)299 291
3582     y(8.3.1)44 b(iso)q(c)o(kunix)17 b(class)10 b Fa(:)d(:)g(:)h(:)f(:)g(:)g(:)g
3583     (:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3584     (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25
3585     b Fn(31)299 353 y(8.3.2)44 b(ioso)q(c)o(kunix)16 b(examples)t
3586     Fa(:)9 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3587     (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)19
3588     b Fn(31)0 477 y Fm(9)67 b(pip)r(estream)23 b(Classes)10 b Fb(:)e(:)i(:)h(:)f
3589     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g
3590     (:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fm(33)149 555
3591     y Fn(9.1)45 b(pip)q(estream)16 b(as)f(pip)q(e)10 b Fa(:)f(:)e(:)g(:)g(:)h(:)f
3592     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3593     (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h
3594     (:)f(:)g(:)25 b Fn(34)149 617 y(9.2)45 b(pip)q(estream)16 b(as)f(so)q(c)o(k)o
3595     (etpair)e Fa(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
3596     g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3597     (:)g(:)g(:)h(:)f(:)g(:)28 b Fn(34)149 680 y(9.3)45 b(pip)q(estream)16
3598     b(as)f(p)q(op)q(en)e Fa(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3599     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3600     (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fn(35)0
3601     804 y Fm(10)66 b(F)-6 b(ork)24 b(Class)13 b Fb(:)c(:)i(:)f(:)g(:)g(:)g(:)h(:)
3602     f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3603     (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)36
3604     b Fm(37)149 882 y Fn(10.1)45 b(F)l(ork)14 b(Example)6 b Fa(:)i(:)f(:)h(:)f(:)
3605     g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3606     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3607     (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)21 b Fn(38)0 1007 y Fm(11)66
3608     b(Class)22 b(proto)r(col)11 b Fb(:)f(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3609     (:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3610     (:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fm(40)149 1084 y Fn(11.1)45
3611     b(Class)15 b(proto)q(col::proto)q(colbuf)10 b Fa(:)c(:)i(:)f(:)g(:)g(:)g(:)h
3612     (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3613     (:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)24 b Fn(40)0
3614     1209 y Fm(12)66 b(Ec)n(ho)23 b(Class)8 b Fb(:)h(:)h(:)h(:)f(:)g(:)g(:)h(:)f
3615     (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g
3616     (:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)31
3617     b Fm(42)299 1287 y Fn(12.0.1)43 b(tsec)o(ho.C)10 b Fa(:)c(:)i(:)f(:)g(:)g(:)h
3618     (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3619     (:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3620     (:)g(:)h(:)24 b Fn(42)299 1349 y(12.0.2)43 b(tcec)o(ho.C)8
3621     b Fa(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3622     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3623     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)23 b Fn(42)0 1474 y
3624     Fm(13)66 b(SMTP)23 b(Class)9 b Fb(:)g(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3625     (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g
3626     (:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)32 b Fm(44)299 1551
3627     y Fn(13.0.1)43 b(tcsm)o(tp.C)13 b Fa(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
3628     f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3629     (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)28
3630     b Fn(45)0 1676 y Fm(14)66 b(Error)24 b(Handling)7 b Fb(:)12
3631     b(:)e(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g
3632     (:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)30
3633     b Fm(47)0 1816 y(15)66 b(Pitfalls)11 b Fb(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3634     (:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3635     (:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)34
3636     b Fm(48)0 1956 y(Index)7 b Fb(:)12 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3637     (:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3638     (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3639     (:)g(:)h(:)f(:)30 b Fm(50)p eop
3640     %%Trailer
3641     end
3642     userdict /end-hook known{end-hook}if
3643     %%EOF