Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 18 Feb 2001 20:02:46 +0000
From:      Nik Clayton <nik@freebsd.org>
To:        doc@freebsd.org
Subject:   Image support:  as close as I'm going to get
Message-ID:  <20010218200246.A453@canyon.nothing-going-on.org>

index | next in thread | raw e-mail

[-- Attachment #1 --]
Hi folks,

Executive summary:  I think I've got image support in the doc toolchain
to the point where it can be committed, and textproc/docproj can be
updated to pull in the dependencies.  Attached are patches to the .mk
files and the DSSSL stylesheet to support this, and what follows is a
discussion of the requirements, and the steps necessary to add an image.
I've also attached a quick demonstration article.

The support that's in at the moment used ImageMagick, which has a long
list of additional dependencies, which are think are too onerous for the
average author.  Remember that the source formats for images in the
repository are PNG and EPS, I've got the requirements list down to:

                                   Output Format

        HTML                     Postscript             PDF
      --------------------------------------------------------------------
        graphics/eps2png         graphics/netpbm        print/tetex
        print/ghostscript6       graphics/tiff
	graphics/jpeg            graphics/jpeg
	graphics/png		 graphics/png

I'm ignoring RTF for the time being -- I don't have easy access to
something that can preview the output.

For HTML output, eps2png is required to convert EPS files to PNG,
suitable for putting on a web page.  eps2png in turn requires
Ghostscript and it's support for PNG as an output format.

For Postscript output we need to be able to convert PNG images to EPS,
which requires graphics/netpbm, and it's list of dependencies.

For PDF output we need to be able to convert EPS to PDF.  teTeX (which
the user must already have installed) has epstopdf, which does this
nicely.  All told, that's another 10MB for a user to download.  Over
half of which is Ghostscript.

If anyone knows a simpler way to convert EPS to PNG, please let me know.

So I propose listing graphics/eps2png and graphics/netpbm as
requirements in textproc/docproj.  Moving forward, we might
conditionalise this on a 'want graphic support' tweakable knob, but
frankly, I want to get this support in now, and get people to start
using it, and refine small details like this later.

Using images in documentation
-----------------------------

Very simple (after applying the attached patches, and installing the
applications above).

  1.  Create your images as either EPS or PNG files, depending on whether
      they are vector or bitmaps.

  2.  List each image in your document's Makefile in the IMAGES
      variable.  For example, if you foo.png and bar.eps, write

         IMAGES=  foo.png bar.eps

  3.  Use the following markup to include an image in your document.

      <mediaobject>
        <imageobject>
	  <imagedata fileref="foo" format="PNG">
        </imageobject>

	<textobject>
	  <literallayout class="monospaced">
...
          </literallayout>
        </textobject>

	<textobject>
	  <phrase>Some text</phrase>
        </textobject>
      </mediaobject>

      The important entries are

         ImageData	Points to the image.  The 'fileref' attribute 
	 		should contain the image file name (without the
			extension).  The 'format' attribute should
			contain the image's *source* format, either
			"PNG" or "EPS".  Case is important.

         TextObject #1  Will become an ASCII art representation of the 
	                image when/if the document is built without
			image support.  Please use your best efforts to
			do this.

         TextObject #2  Will become the 'alt' attribute of the 'img'
	                element in the HTML version of the document.

      You can also add a <caption> element, if appropriate.  It may also
      be necessary (depending on context) to wrap the <mediaobject>
      inside a <figure> element.

  4.  Run make(1).

Comments appreciated.

N
-- 
Internet connection, $19.95 a month.  Computer, $799.95.  Modem, $149.95.
Telephone line, $24.95 a month.  Software, free.  USENET transmission,
hundreds if not thousands of dollars.  Thinking before posting, priceless.
Somethings in life you can't buy.  For everything else, there's MasterCard.
  -- Graham Reed, in the Scary Devil Monastery

[-- Attachment #2 --]
Index: doc.images.mk
===================================================================
RCS file: /home/ncvs/doc/share/mk/doc.images.mk,v
retrieving revision 1.6
diff -u -r1.6 doc.images.mk
--- doc.images.mk	2001/02/12 17:03:54	1.6
+++ doc.images.mk	2001/02/15 17:38:22
@@ -68,25 +68,14 @@
 
 .for _curimage in ${IMAGES_GEN_PNG}
 ${_curimage}: ${_curimage:S/.png$/.eps/}
-	convert -antialias -density 108x108 ${_curimage:S/.png$/.eps/} ${_curimage}
+	eps2png ${.ALLSRC}
 .endfor
 
 .for _curimage in ${IMAGES_GEN_EPS}
 ${_curimage}: ${_curimage:S/.eps$/.png/}
-	convert -antialias -density 108x108 ${_curimage:S/.eps$/.png/} ${_curimage}
+	pngtopnm ${.ALLSRC} | pnmtops -noturn > ${.TARGET}
 .endfor
 
-#
-# Trial and error here with the options to ImageMagick.
-#
-#  -density  seems to smooth out the images.  Something to do with the source
-#            images being different from the 72dpi that ImageMagick wants.
-#
-#  -crop 0x0 forces the images to be trimmed to the minimum size.  Otherwise
-#            each image takes up a full page, which is bad.
-#
-#  epdf:     forces the output format to be encapsulated PDF
-#
 .for _curimage in ${IMAGES_GEN_PDF}
 ${_curimage}: ${_curimage:S/.pdf$/.eps/}
 	epstopdf ${_curimage:S/.pdf$/.eps/}

[-- Attachment #3 --]
Index: freebsd.dsl
===================================================================
RCS file: /home/ncvs/doc/share/sgml/freebsd.dsl,v
retrieving revision 1.21
diff -u -r1.21 freebsd.dsl
--- freebsd.dsl	2001/02/13 19:21:31	1.21
+++ freebsd.dsl	2001/02/18 19:55:58
@@ -184,6 +162,39 @@
                  filename
                  (string-append filename "." %graphic-default-extension%))))
 
+        ;; Including bitmaps in the PS and PDF output tends to scale them
+        ;; horribly.  The solution is to scale them down by 50%.
+        ;;
+        ;; You could do this with 'imagedata scale="50"'  in the source,
+        ;; but that will affect all the output formats that we use (because
+        ;; there is only one 'imagedata' per image).
+        ;;
+        ;; Solution is to have the authors include the "FORMAT" attribute,
+        ;; set to PNG or EPS as appropriate, but to omit the extension.
+	;; If we're using the tex-backend, and the FORMAT is PNG, and the
+        ;; author hasn't already set a scale, then set scale to 0.5.
+        ;; Otherwise, use the supplied scale, or 1, as appropriate.
+        (define ($graphic$ fileref
+                           #!optional (display #f) (format #f)
+                                      (scale #f)   (align #f))
+          (let* ((graphic-format (if format format ""))
+                 (graphic-scale  (if scale
+                                     (/  (string->number scale) 100)
+                                     (if (and tex-backend
+                                              (equal? graphic-format "PNG"))
+                                          0.5 1)))
+                 (graphic-align  (cond ((equal? align (normalize "center"))
+                                        'center)
+                                       ((equal? align (normalize "right"))
+                                        'end)
+                                       (else
+                                        'start))))
+           (make external-graphic
+              entity-system-id: (graphic-file fileref)
+              notation-system-id: graphic-format
+              scale: graphic-scale
+              display?: display
+              display-alignment: graphic-align)))
       ]]>
 
       <![ %output.print.pdf; [

[-- Attachment #4 --]
:*:test.tar\0*qumDQP:XC2H
{Y{]{Ŏ
biM	swι{V2y>Nrwl׎RPg;gǙ<]ݝ]=<wOv
?1F@Q
/#0|VoxHw?ҕ?KTށ](k'n
pr
@p*98<r:'A0wAl(-+w(tC`Pq>Dk:ꌬex4Q9G&(꣤(wCg/~e턯*-"
I(#XoZ'vxEC9pA	~#"X
KpL<2ZL/'*eʿv~.6Gp-
S!AG˨Y
gfH,	WմZ`AkMd
Fo1pŋ('pzVe4+(2+wkHl$X0PġX8pDDCG3p#&w?k;Ww \\\=TKš(5rbt#:l߾]wxH.1ܞrLh頧Z*@vزR-_RQQ*u
1G.”ykPh޽Gv	үkhhNzM%Ti4h	#-i[u2_@`'GGJ#SiLjn9V;
6	Qo q9jO"7ѿҿ?u
eC5{S(*d
V	\7W"wGuяRRGި3ϸ	&o6~fN;s.,dYd~gw݇O?	?gN^8s~\~:ܾ~=ytɣ'IƋy{y/KgE5ňʕ+-ԣ7~=jS7g5ofVDURd*f߿V1+-*ܱz]KQbDSf
jb
s}7sjܩzlm)zzW8Y1=WQ\yB7[Vt^垯-?*S؂Tl~fo\lxPT(~,*
k+RT0+*(JfzՆWȪP=Q{)6T(WU**LW<>Y1Bm+LXj2Y
^U5h!Q?Tsfj7뗚VN1<ⓩ*VxƩ3OZeJYz
3QHB(<GEö?*K.cU~[|Ņ?Q?9-B9jS:F~Q]uޕ~FvZo7*sa.!M@p׭VE6Ț黥RĚޤ/.iKWӗe-ȧ^}8*v^۱G^y[V+7<{loai|}fT48;cU6Oxsz?[}.
nt(=%euuWL&%~[:g1MݫV-*tIɜV_YcIGv_}z{qQ957ovXOzߚcߥNΟ鐽>1mDʷF,zw՞/ޝy:mqJ썃ҒrS+jXe5ܻfs~합a#'wf#$/+SLM9*aOfBMq}Jk[ͳ[g|~z|4r_tP.f\B~’Ewd}4qfE]Fɭk'֜E	|b>T/2}.N+7
ռTתq+%?7ÏcǾfRˊӖ>z:/33~XNRVrw>ܫSckS(bjV)WM3F:?Hzg9MՂTsU_R*̺ymX2L0N
3;'\)\/N̷RFUI_.{kƦy	u>A':}rчij[U|%sWɞ}źu*<ljW揯}`9[*-Le?=FƭeY4fZ*,}s(;1^aىC|
M|9:v;nξkcϗ|^oҢTՌ.л'6]tɜ+opjjqj⚾r͌=WtgsFlܙHk~Nw_V|3Y/=Yߣ{ve|,ܽG߿"c>;
sb\O#IwMڱng[G>)J>|]\˹^*YvÉvMɸt#8?8>D#.իJ;Ɣ6i5;j.ߕ+<(^Ģk>wnj/4WJZܑ;Qx\bMRI\BqKR(-muޥ>PQ^Q>96hʺ7
ScflLoߍ_<{>Fvw+Jp|Za	4y7wiۭcwo=+za洎#,*>QY~}y.Zzy}ZUsQWb},7wVV^@s5u:6FP׺sf:/HɁŏ/vlpEݽA%4sb^ѡ)FM<Y׽nDW4”}:)<gy럫Qyy3{5{˶̾:X͙l9dvе6<kN7Nt5o_wm%y>W2^gi&kũgX[Bf<Yp5)W_
!QQ-7FfZ/5&W˛3nl͵i~.l͉7[	nO3O	Vz)s&Oʪߩa!W\\Tea}I29mֲ5F5cͧx+kҔFŧaOҳk۲vyXʡKRzÆU>٬;ܼQG:CvSWʋ9Kn|wLa~6x0z9S|{n餫:~ѡ9ZjGf6ZpJUwҙUǣnWޤe'zh§/
U3bm7[7F׉sUߣM~%]~JWש<Ҙ6Mlrk|?ḽt5vGۮ~?xm|"j[nQ%sR[疻C*q.#:~ysE|滧?lsV0L0G^0[sMq~G]1sZz@ԧɒM5M%Yxk;B힝⎧UOp C=3whl^xb'2Kw"L)&|`KIPpԜbhU{>kݺQo>M~Cd*<_{fH2gwjN#k5c?ncMn]]05,74xE۬m&vTm!Z]s͓Wm=~eݏC3tōxإoǍ65c)ZC}53h6|k|Ֆg')k|^vpH5/S&-IgτZ+6\:V+/&ΙZJI=Ulc=ᵓ7=ړۡdgij׎̱?[}jVH\v,ZySQO:E^W3>Ň%u6LnѶLCnS^2_4.XP9g|ЎK~PPK֭K9{S{;νÕ뙕_.3Z+/C/j_82`vq1	4.9ty\RأbirTWWnߥ튦;Xl	C]GFUix MjA9
Z왙sғdž
Rs~}6h|K<Q}r.!/>qo식y?9{6z<a8k77a7vvՎ3=xs5K9{jH-zTĽ_\Jn:ugZykTxg_跻oozʮSzFkm-Ƕ55<qtK9}67Y݁6P
QwQkw&挈w̕[5oW)~,zm쾤!^Wusc{KBլ[x*v&;wV?vΎ[Ev6!Dmn{恗.\ZSmƭ?x뒐~|;wJA-Wxb
5<zu֪f d~VJ?Xnf$zLjx>_^ΎέZv>6uoE3dF7>>lo\<zuU7A>=﷾Y?.Hw82n}ݞj0y536l:/w:}}u;[V՟'g,Yz[>{{;Ǚ563Fs/?W!V0uOԟd-6){L~w?nsڒƓOz⁹}G-YtM5tjgY]lqӸwr+mqsW}i'oyZkϢ\8678mk2$lߗ-or7ϼrכ{rk\.
U0۞{#I.cCeu;zw?3ե*
\6)KU/3f?p=:`^K=6jUz.H[zJ99i5\%^VvYsM=w{λ]zka7B[,Zŋn6_I:gE>]^͘>;wJ񥃇lۏ矸khun6[Iƽ`Qd3uln_Fͯy*4߸xbeo[MyiXÛmQݢ_u9R;8tag҅j$vʰ`xDޗ=8.rF5OYkҐ醪Gi<vQ<.GyO̗
sn`A~խVoXUN=[8MZ^iBaFsa#V[_?uRH׼#/oVh1G	AvOz[x59j3`!u6Wbpxc3NٙPæ;n2v%9\gw;=r~
[=z'ք^MM߫;Y7V6x
W{D#n=?h3	sL3rku(9hy׫FN|/WbUf+N59EoM*8$"˽s<M_ܦ-xxgZ[5Ԯͫϸe7d!|Sy8lҬRK7"{q2'=ehp=V!ԞP28Ums
Sk˭g:$w!*T:Z>xGK*nD}pJkRȆZ9Þٻhu];qZzU?uaDub';y?:۵׍6TOe9!Vyه>77ҊSWoH?mȊvn…|an.]:-%C1hi2_<$5cغ.oyxn)lp
LfōvJO06r8rzDhS՗Y;{ؕטfO/hxS:|yQc۴F~]'~K93(D}ǂK{/+PWz7Jn^>j;KjS40]ېڶrxVK^\{Joл~{s2$/zZ]+XPpёEUz_{l~iVwPϿ?7eSaw
gj]M٨Ӟ}bz/uހO4w\31M笩71<ziKuNX91flܣׄ#Ε3F&poaC\oX3ORt_qfؕת6ݷE!6wԔ]q'_Ჷgq#6]Rn&sy:NO/>7ςO請UmV87J)V5QmNA/6>쯳>Kz]J5^6W'c~s
!ɾsT~WZnؐ?Ϲ/tŃ{)?48u?H{Gdm<oe#'N&wK?+bZ=~#3$	UdqIx[W>e{|wy4WħWy3ʹ+7\mwB|ËO)7ͮXV8gMfL?{o$=O)ZQYi7XMH,YT&y`ȋKSc2J^y+16Hhq.{2¦s>K4څ7DVY[j|/G md%So~HW]_aȡo+9kp{M>’?t~椂[i3.!C|EOJ%֏h~wWy_[_m8z|/$Oz?>pw>LvCwq^c׵d]MNݱߴ(%anm5"jSha+
Ku50eylmVz;7=~X/tItڃO:9.Y|SXѽO'mIϮ̪IC}{-YꏟmEfZ@}6C_Ltd^*nkfl[><nK6}rI{揰\oC×I;M|c~aĕ79u(T4**i?h!M^WnaYKkoOylC}O=8_x-<ieL]qM]_Uz0"jTXv.nk}ܬUEІ
MGλQ#~WyI?Ϩ:wnӐii??<+cwO-+R]4pUXiAÏ]wѷh%mͺZ50!iuwqSEnC
\mxο-yܱRyzumox-ѡC;]sAl}vC

&|빸n)|.<
i:ޤćG=$فvTk?,{y#<t/e\?tUǮWJٵGm/9e[lk>spLinnם;rpO?ȭ	
sXZa9<̈vgvwK[?baM<5لz~o[.˪}6?lY&o;6<9=l/;qJ*n}!u˯|_.gDwZ|i
[V[lhmW7gCsi9/KܘREw[\m8>龻+:,5R=hK<-δ!;1d籁+k4iq`IА}VÑ,b6t̍#ӂk2A*}i3kZv.vӟZgJ1j~3ş9۲o6ݖY3^'GsfݧE*Ϻյb͙<g)
xߪwܻ'>t?y
bC|훼)z`[66nJ6}<ybQQO90WV}W'fP#Aţ^J7m_Z>!#TǕ7>ԛQ2um>|bV
)
[ߚs+ϺWl{ϸQ珏\MΞ߿J_1M/ßrr6jZ'l+طI<2)b$U;/{U
lɀ_cTvmзCé#ܓSr]v7u#ހ'R*y׬XӛM}e^t1$$yrpW	Ҵqs7h<8Fk{/Nu=)x
w/
޼mk
4fΝw>}1e/;e^O1]Ma^/7ƳY8k]5**z}”1û-Ӿ4~l0SMyjzZ-Ϻ|
e_J:7PN?O޹ӑ
WV}%~=ORo{:Ϧpw=i͵;yusfx;Xl'q]]z-e:'d*ߑAwVdzg+~Ƚx2<GKrw0U3)PsU7ew5Jή5kssg~yt6hD籥gz~l8dM/'ԹF|6km3	X|mmg^GjyPg™mnzlkiޏ~ѶcVtI==&!kkuϋCw~yi!yɩ9[^3gɪ}Ka{qOG=أc[}y[tߪO3g9fKI5yI`=
k$Hӿ-N[B1`A~yvMO%]qlin#~׹xAwaO;3|xװHs6n)z34.7$waAQU7ٟl6lMX]hU:sά$mŔgvW_N^M.uղ
<dn?
=+)*-ꜭ4AE߭m_2	
Ōx?yM:.hgVHZ~ó˵BԄ|JHTa
|mUVCd8X1kS+G^^
aI)Er@:ndw!}ZaɺgK˼Q7n?_8%֭[=]jxHTuJfGW[)48oɞ;\.>}*JϨD]v󿤌Ovnb3toc<$Oͅ30)CicF{lLicF΀j cBUQ&PF	5`Ph;w/v(o
SU.9gV!
b)oL:5ݟt<ځ_Б:6Uɽ(Gg<MW2:#tjU`A`f"p&ɾ;i8JK
l7N*NBuxipVFߜOpjJ_^>\up_fy7sƺ#kgy7;/vס}ʇW޵щsC
]\}nҍpu߾]7+;7Qvodz:i^#:i߼oRvoյص[٩kWt2-.ud<x[Ս[ލ˻t#^oyY}{"Q2:c(=QZ.1rkXr/.Mx=Ұztpqw˵C{_ u.мeN*=5V|\~&pF#iFr<w!زrPc^XUחuXm
\岢(.F.2Fih |-ee&~l`3ph,.0j?PGۿ cK,ڃ9?&=2@(w2p
݅bTQo
 &
E1GGe#,Y-KH%5DꌌQ UdOM<kq+!
	|Ro>s\Z<a?Jo<@*
i!*=1*u40(wi)wvo
C;7$:LA>N6VI/nx|	#x	Yԃ]N̗4G(\@BhQ)[?;rp`CfS(Sx⿟G[]]s;wsvTn\\k%r|Aeb(P]ܽ]@)%LMGv:K+mAO$΢<b4r=P\ebD(C`X@,P';zp*Zui@	byM<5<PNO<9THRB~#)l2~lgt(VCi{*3&8	Pdh48Ri0xNP*<
Qp(

VHEA]GTPP:61(Zh\4c1XG`4ЖBciJ@8	,EzoAB-4QS
J+8t,lPOQWf:,\Rzo
2j7p|<؆mGUxp!@7ؙ7CFRZI8ZɁQZVd:	}H(s&MkHϭyx	@[*0]B^ieD"%Д3
.km!y_0c"ux~7¦&a<e@|=(C31EXyg$'N+XI_5l4Cbh}20p,6ӰSςFcu!:I$a""	$/7a"i
Xbʒ<H.pk_o
װ|09E8ƛqL@ώLM'(Q먦-+N>BA}69AaEZ2&W2pZ
2at,efq``r
OIT	cɀJぅLN&LAC0!D0<A%<a`!+6Zֈx1W?d)8SQ CRxEh>Fm/Q2 pE@F4֡A!F
Dj$a}ZEg1D 	F"fU	Clb
>0pHFxtԈiE\c56,dYxy3I6e_c?HsPѩE@rg:3bؘDnHfT8 !\a.fdaXTawZSVxlRL@|H{G
(ߌhH&v5<&(lCs``b@KDbh4dҲQF9AdfG1.CQNgAaFR 4~A3c0@(RXJD/4PF3$/Y)=<"07$.)<4{P47\,Zi
dhZaH1&1dp pެº^F.@L+-8vdt)2
9y! Ո4C	=%RP##%xI
j
Nj
`@ӆ1q`,"69p@uB:LEFf "8ֳj7Q!"ZȗZu"ny VbA w
 	Ӫ?(8z(4'E
#Aej4hFZ9YVDpOI pd<#
ZlѨ"90^`<6<<uh`G$2EG$BO *WmІhьGWhMw(,XF`ڌNWGf[T=dB`Hr[op[XKc[JXҦB-,{	`IflpF^@pƀz!ZzR7d(А``#A80l4fpJ`82a΋T8
*Lk3aec!!d%˃hD"ł@

}`@ӈÏ"Zrݳa#2Nř4H
VFOc9`Ќs
N
e֨(h	H9:[SEX4jz`y"cƨV@h.y,"DH>'Gi#')6\FA3CL
l3@tx)
EDPb`YQ_{ =Ӽ(&ށ,Vv3ՠ*Nr%q<}^Ţqhߞ
!<ZԳIYSƠEJ @ZM#S(kT^Gx~222Zy!bf^!jX,h	l53grq/)PAFQF^ЌE|<)1d܀ X/m4	.IƋ6T7k3B0(%=8r
rw=2 `BI4t
jD{m
 )4<2f@ŀI

+3CQw;u3
(rq)\Dm@DZxD# 8r!!%ڀ]i m/5 $A/Pcu*SMU1FpVe׋ASB}#U
QF0H9#̈GGCBQ2xP%[ S;h\HIR2"X9tvHcΌjD9@%@&e59r"sh0ک"}TE[W3d@NQȂ '-qX$ XF'/X//[SE2YB`+.l'b$/QLN()Hi&=E&Gcb:aXrbA]OKɠNZ>+Oq1`BHt0"i=Mvh4&yKG[vBs<e"
r$HVAC10D!G2 (ES4Fp\Ɉ0ghɅ ld,k"B_+xGbNlh͐S©$[Ah.fZ-a"v`AFqb!፴$̱?Enx	82d9e2YM@
C:1ر`Txҝz bHȌp!It8ҢF쥁R\2:c	s7l .A%"4^8#-!<T>iLMS1:d"E',Equɂ
akD&EҞ݃lO(ȡo`5Yɱ:q(
<ےB@UAY3f
pw	}mF$^xwJBen┻
		dd#500E^h&91#c5&)c	ޒ	Ŕ\gĄMAbK2cɉY	a?@dG
+MvȣBCH/y?#<IH-sHAyBG?_=/ȅ'`Y""JФ(59KCIaWGe6\ytfH
4-'E\6h",d(Qh
ŲRb0O2)%׿:{
3(l2^Ʈ3X@bJf@-|@-c $_<x%u-'9@|<юL^;fp6aXpw$
C{jfOuyY!\ɗbh`+X
c*
\9$d>m,?m(g{,-}tXhh<"n1E~A7-D6=:8@DFfhI':$Fg,#9]k@"j
טTtX2D}	ѯ$$8q$2	-"QAGǹ53hϼk(1u#2]k(ZAE'^hv:dbtU!r>/e.B4tj&U1eÒf+A2
܀
nQmjf]\ˢ(6PIk1*}ClkiUimkf 
V,H1paK7LJVo<E(
rU65P}e,..pa_bVh9`cw#zrS#-7QƴM
K_+ZU=Gj5!+!(0)j ~dR
Q:.2WqF)KS0Xk(Z#ʱ0!D`7)CN4g?('ɊSeS9Mz=mi-sh""%m
ٯ
b^(|4%MěxŌx-}"pAn|QU2bēsC`EDO
h8EC"Puq'֑<L.|瑷"A7@:$&Eiۈ uC4Ma
嘀hGF`%9˳gꢐ0=.:-PQ`VCo`X3'E6.Bnk1Ѐ(E"0\kAJGP$P"AhMCh=Đ50D0}؅8+AH,<̗Aj*Ad
"9
擫(
mN \?b^L-.%l3Sx#?FP2`I@y-05	e[D6J/^.#q|e23r׉/P<&ɜ҆!GyQħhC_h(;''p
I>pm(Z
62II.v @Mrა7ED*DA3y!h(<	%F%9|@V!!GJ`kC=C-[Bntqqw#ˠ;,D1NJ4
F6Bl8?^ 2t3	a]\bjVr6ȢX .bS^2[)LAE5D@/(t7gH6ҙC6OΝ5b/h,#:lKF	/ș/aP!$sI3
+Eep6!<JI-Ё !F(02]h(os4F^$m	AntSxT1xh`9ܥ,qQ;Dž.ZQaoafq45'hpo`8@QHK|s r@„^,*#"Rs2|RnY}>le摖	tl@Ia'E
DLc2͠jl8L!	;!*k7Kch"Y<DSF)X
&s	,ih…X,\"ĥfyi]eupH:Feb%'RID0[#
Q!8qɲD3-I


@g4AEZ)DƁ
xA`#[YCnxZ 7%EIwp: ,-,=aCĚѳR
mBԾ<P#o+ؖ#,JyFbQSeM䐈z+[Mn?*s<
f|,/Kr	KDaC8%CJ%H@tca8pKkc!!JUd1:"qK^4ߖ;:ԕ`T@j;I<4%rs;Q Zl3S'H'!)I9ﰪ$l[$UbbBd@Hp(Gч6)&a#Oki$RVaP<p!/mP;$bQPs)-'q&}쥚9
a;/{F/Sr,%+sJk\4ҾavI,'5̭q8
UhXR-0-k<_0+Ģ9;Pb֦@y1KYJjKPb.몐$UI|̆pZb~Arr	`>(sKvnXőQQU9Ҋe0szYPʥCP&-"H,W᛬A܂w0/pJܚa%i"W8E`ڨ<ؖc=(W:~,ɂHp(Kwl
a0h޴N"#Y!|E3Qi22n,7 
N['mCkHY'#"&F4;7CdB#!
 e^'D,0/R9BBtS`*N׃ψ8f:asבdQ"H
VJT5-c8V-j-#Y#ap([R\ ܮ
J0G\fLm(
%Y,Bj@,W	s	pAH
?.yoȣJ1tj/Ң[.T#F6&-KOaai.isqA?E*T;nǰq/A(#0$c|WK"+"C9x-H	p30
@k$P#ÐIFΛEc7	?nN.H(cnk
bhVP@PP
9W"eЀkKUfC&B0o,rԌQ%1%V|2b!)*#Y!}ŠrJ25'ڍv ORhe8{В}:Ab4!+QxM04p6L:!NJ
d(^(EHHRyA\9Tdt0AX|ALA/YTgP̘@f5h
_c'"Cm&2(h%dH' P7ٶAHJ1qMMJ;xiB7,CL:Yy!9#qhufQeZ^DV%fؿ
R8!Lya2T@˖$÷%%@@b\Aw8=v5R|́XR'd--1r@~pU0@	Fu,ʺE9xظ͒p)jm9:;`VRF\5>t9/h0YpLtRB	)Ś;YS1SB(10bDђ@&%	0>e&HZ3+q&}dNJyI>V@;Y}PaU8aU^a]JxTзW=AZ@?PU"AޔA8JN
Az{|:"qk)ɽzn/$푐ΔVњ4b1-6M:agbD!z|
J!l<lؿCʒmE,X	rb	"+H[&BfN0Dr&^WQ"
KRCG7I
`8f&:CMY,e:
inCf&R}ؙfD_DAj0|ab%E{'C@g"[92B3c"J,$FPdpHYHAAgu
.`
aBh-Ea7QҨDlI0?`eKG<M/3ET%A$(_d0ЇP)0Kr@ZRLy՗WB?BS}
R3 %[hb0hb4$5.#Q;HT~p(H`۠}I1p#1R -܈A
q[PLI=LhH# B~	2{̚!D7Li_G?&E0ĺ2Ӊ"0K[,xtxnWZ$(QjP2/s!Q9$E9f┗B8%o
+.R!oex@o5np=9neamqV(VMɺ)".}Aqc]Y, 7oAMHf<Ada"@@`@:5z=ʆeւe*0ySd&*3NlUzIfQTA2H{*\4~#9UDVaxN!F$\?%!#=cuPL H[-;ȡ*$%ڟ'El#%zpQ"-e2K
㍸5I tBK\xY#B0B-#4`
UV0apQx@0(LaD#F3`äCY:<DC9:
EaRB
]lp"<<i"+lL@R
v20cC?+10he*5=*]b! KRZDcw)$?=.Dr^-b0nbO6,M Dkq-IHSKACT(+>3pzT'<
.J7eꡅ^ž	Hnc\Q0lcMBiKM`=
G]N=<M7Qj	`>,X)(&Pa˘] M H֨AO4=G,ɢ(5#Jd+HB:e3odc2G&:T[b8=YB(hpP81Z(qV.2_7`Bż<1U.?Ljļ{>X𭞝\7Ӝ ,JC((RSC
0"ʫ.{H
`5F:vF8ҥgP F-5Tv-!iyBh*#y;h	(s/BLF(u
$X]#, ,,
85Q5`Kge1\8v\#
(NƢkV-%I/!Jie3u2Uދ6i@L	yBI<]-4ԡI=‡fd<yC=#)A2~pK񣌼+ \#h42`hb5, GX6]fr۾u9p%䬑[ٜ
i*tvb!)VP=jHx-E^ҢI9pF\J='h;÷36BcuҫIhu#>௓UXa ` mEBz$4r KJ+	}BP׃X2˰4#n@6ay#AI$X֛T$d/7a[]{"!gY%b尙(CV7(("VG3=%VkstvFV"F;A+ӲmƲXQl**("9A,hoEAmuȁ6"e7+B
M`adRيavY|bh%ж3_`x!eб/	
̾,O~kعQr	k+?h	O*9LN〻X:'6I@"3":p^`|
b_;3]n?!/'lUFr"V'YtxkƢ]ĆTAB<CA@=\a+<E6MSޤg
#c@;{In6}xc*P^"۫&2bL+7
F7lqSF("#|u^A<<CwJ_AkA`5ʂW`H:LsG|hC)SHH~fJY0[y 5,ҩ%]OKJXJпպ]j2cy1Wi	B"lR"&ojq-~uqn++4NSf)_YO+':A<WZ5Nq
tQ2A"1y8:.%G"5,2sHAo}l!2QFx9rT`JM)"J
Ăy7=͡o'` n:EUr)s Tp<_$/Q1H	%T{JBA'›VIPj01]%u#0UNŢpض6E}<F!E}kj\x%ok,M4!Uąe($YeG{bKF*Kĕ:8bV໮ʴ&M6\<*C)CDw:[䫉n2&	#r5t2	$x^WV(ǒ|*YZ{hE> x ,DG/&v4wu	3tқ6ah	 ţAA[DFȫH~ؾ
uH\r}_;~0b'l{"0@)0@i5	ı IOtKP;Xʢ)-64/r?wtHZÁ1\DU(5(hFp>&ռ,eVdo$գp yTbQ
'to:)z"]~Wo;S
R,*6e_(Җx+0C'<$v_bOH;9z?)/̒ѻaE^)8]1*]'ČJtِǖE¯F0y>EocFu,v*JD<wJ:\TNlwmmG
T$@ɒ,İlT(KJ:L/`3eRt✇ٹ|ߌxC~xSгնZYP`s	یC6y
W^XZdp~dĘ}NpTew%(4dn0=9BmJ.&wSG:HVH;,$--FBזdv
!Bq,W&Y<H~u6רy5ޥɼo[SH2!RXmD1QLeJ i#{"6rdPDꊂ7篁i9R׭U~ņ;\
/pu}HKug߆R(p|s,O2EUd(g/o	d@H(j>

jj
}Nnt(2e_wzp(0ӷWM4YFieہ>\Eq	=6{&"NPxvEN4H`ۄ}
T2a'HXMBa1K:q$Zi^QEv;^?HhoV1oYϓpڨcb6|#PTz)\j ZOWǾZVW?QW8we)AJ$xO#6	zvZQE>idpdg.$0frvЫP{sZM`or`:<Chuk"GD9ċM)#(|dT9Wvqt=BA		VY:{X}$X1h)Erp[i~&e
);#N9G^,F{\6tuXK,84!v0B<|C)JQ	̧f`m9@#Ц톙,C_
Fvc"]&Zi7.|VX-&-vE6%u$tAn񂥛m](sj/i?!@:D@%z?Z8LQMu&$|αϠ)=P:|9*1L_UGso'm!XO9.WjZ#J8SMdgCAI#5yjy>ME+IQSr)}q1|T:ClRfA=znTgn-R<6kq:>]\!`Z249uh3MoĬzv
I+BTϫ^rQ?IrR*mU
&hcZ^P~C]}рRFXzgL)
2v%mg@UK@D:SͳvftzNx$kZѡ[ʳq ə)mc3 yʺ~yecMk¡W41fwKU}L~eޮg4`̄o< {O%҆]KFͣ{ړ%nuͲ6x#ơChl8+H_!"Su>	f}G"D*"zۃK̵}(Pp-od]Sދ4I8韽>=>{}fFǻt5}/%LGoWK'@ͤjPjX17셐GJ
\x̽m^"dd)5oAk"p
<s(g9e5gz&aI6RkqD1_o]HϞ=,I*k'^Jl,%w10BqfYCS#(Nϊ9mjwDE{Q`݂HǏVNObeJTf޺73f@HPhP{FD[cfD(,6c-u(X~[Pt&K\3?v<
ϊCZU?NDygFN|ѻ>h7Kѷi^$\"Ͼ¬G$&Ȩ䤋їۏf	li)
xډ"HA*d< YUsBR%]T6C!7wvj$FigYJ47L)V^z*u1U^1V;jI=e)ٿu78Fy);B39p7.uP$62W7~k#-u]s֤ŗq[z<%oȖ^WoaT1{QQn[S	9 1rptaVYq@."Є#JsU!/^0j@jaˋ^ 1VT1vpM26*jh$d|K8O٣b`l_*`_ac䲐-i0G0f2aOĩ.QeTKPT r50y[ͰHU
T#X:qL#}>)o dYBwI4n1”
-xL	2L,ۭ[6M
8tIgdJ܎(
{YSo5sVջJ*fd	6A|ORKfXܘdꢔIBt-ǻ|ݲ^h|EȬgYrM<Lz<2xg&f2:mE#OT/Fy@DCހ?^
*
0__>k5?M#Kef.Dtl|_F;+eF"/3ŭ`P
SYѭ]"a|٢8ab?;MDk*Ln36,"y\f\!v6gX6m[Jwaڦ|?RxTī;?.I
]!5'B	BX5>x7g,.B4A$ޜLV!'Oqbѿi|+{~ũt?-d/篾/__`ZY4SE/>+ՄojHuz1`^C9֫*1Y6e^Fh
40vRQ>seF1.Ø!aOW3Y
KsfJPz]ڔ<sֳRw˒̎MrmkX^l2>'{J8̠%1A<ILju~
HlQO	m&
WU=I9E=ː^B"OO_7>'Q3
UfX5.kȮBb5)HmWz#aZM	ir
8yL.0p*ars+	T@enXLMt+od2ƐCJLUa4Y*20KAk-\J^|KwꠄbӧΨ}2ۚb*H`|1IfB0y,\{o(L,HY1Stf"O4+I[֊PC7]vY؜:M!Ŗ&#GjÁuiG:sZ9f\
@$;o'[UwX$G*ɹ!iE夕{LFb"Z:7űJ5F8WFD@<7gn&jqiL}U4-Huy%!E^'.VK	&xAAe6,r#	VKNc2ŷ/>A
3֓6EaWtAL_YwNR*oV:YvtN32Z?J#K`7ǚ2DT3Jםxtwx52mA,++>p
ɕۙ(5B&2҄(mhhɏ"-gc4;HpՅzmZ1\*TByzTH	b{{{{{{{{{{{{{{{{
help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010218200246.A453>